Smart/400开发上手1:入门
1.介绍
Smart/400是在AS/400之上的开发平台,管理开发、运维的全生命周期。
2.设计基础
Introducing Fields
Smart通过字段字典Field Dictionary来存储Field,所有的字段都存在这个大字典里,为了方便Cobol程序的调用,必须事先定义Field。
注意事项:
- 不要删除字段
- 字段后缀不能是数字,某些数字结尾的字段是系统定义字段
- 开发新程序不一定要新建字段,因为已有程序很可能早已定义好了
- 不超过8个字符
字段类型. Valid values are:
A - Alphanumeric
C - Currency and monetary amount
D - Date
E - Currency amount
M - Monetary
N - Unsigned numeric
S - Signed numeric
T - Time
V - Variable length
Z - Date/Time stamp
实用快速搜索field的小技巧:
- 使用 “?ACC” 来模糊定位所有以ACC开头的字段;
- 在HELP系统也可以查询字段;
Using a Table or Data Set to Hold Data
使用表格和数据集存储数据
- 表是用来包含引用或“规则”信息的。该信息是静态的。在表项上有最小的验证,比如公司代码是一个典型的表项目。
- 数据集用来处理业务功能数据,特性是不断变化的数据。
可以把数据集看成物理文件Physical File。
在设计完Data Sets后,需要编译。
Compiling the Physical File
编译物理文件
编译物理文件的目的是使400系统感知Data Sets的更改,这么说可能比较形象,就是有点类似从源代码java文件转换为class文件。
命令 : CB xxxxpf pf
如果您修改了现有的数据集,则将:
- 删除使用数据集的所有逻辑文件LF(LF逻辑文件可以认为是视图文件,是和Cobol沟通的文件)
- 建立新版本的数据集
- 将旧数据集的数据复制到新的字段
- 删除旧的数据集
- 重建以前已删除的逻辑文件LF
逻辑文件
LF逻辑文件可以认为是视图文件
Select/Omit Specification
Test的项:
- EQ Equal
- NE Not equal
- GT Greater than
- LT Less than
- GE Greater than or equal to
- LE Less than or equal to
- RG Range
- VAL Absolute value
Logical View Database Files:
- DTVHPF Logical View Header
- DTVFPF Logical View Fields
- DTVRPF Logical View Record Format (multi-format)
- DTVIPF Logical View Key Fields
- DTVSPF Logical View Select/Omit
- DTVJPF Logical View Join Details
编译逻辑文件
Compiling the Logical File: CB XXXX *LF
编译后:
- The Logical file DDS source is generated and placed in the XXXXXXGEN library, where XXXXXX is the development environment level identifier. This source is
deleted when the logical file is PROMOTEd or deleted using the DLTOBJLVL/DLTOBJREL command.Each logical file has two separate open data paths (ODPs): read and update. A third open data path accommodates direct access. Each open data path makes available a file area through which the data is transferred, and a file pointer. - · The I/O module XXXXIO, where XXXX is the name of the logical file. A Cobol program which interfaces between the data set and the application program. The
application program calls the I/O module each time access to data is required. - · Copybooks XXXXSKM and XXXXKEY, where XXXX is the name of the logical file. These two copybooks are used to ensure the correct format of the file is accessed in the application programs. The Schema copybook holds the parameters required to call the I/O module, and is copied into the working storage of the application program.The Key copybook contains the key fields only and is available to be used in working storage in application programs, i.e. if you are saving a key, use this copybook, thereby ensuring that, if the key changes, the correct version of it will be picked up by the Cobol program. The copybooks are placed in XXXXXXCPY/QLBLSRC (where XXXXXX is the development environment level id).
在线程序开发
Coding an On-line Program
标准程序(Non Client/Server)
标准程序做的事情:
- 检索数据库信息和屏幕上显示的信息
- 从屏幕上输出。
- 验证在屏幕上输入的信息,并显示错误。
- 输入,并更新数据库。
- 显示下一个屏幕。
需要的区域:
- 1000-INITIALISE
- 2000-SCREEN-EDIT
- 3000-UPDATE
- 4000-WHERE-NEXT
包含:
- Working Storage:
VARCOM - common variables 通用变量
SYSERRREC - record layout for system errors 系统错误的记录布局
- Linkage Section:
WSSPCOMN - linkage area to be passed between each mainline program
WSSPxxxxx - linkage area used for all 'xxxxx' programs (for example,'xxxxx' may
be WINDOW)
SCRNPARAMS - screen parameters record
- Procedure Division:
MAINF - main controlling logic 主要的控制逻辑
The 1000 Section
- 初始化变量
- 控制屏幕输出
- 通常情况下,涉及到数字域和日期域初始化
- 读取数据库,并将其移动到屏幕连接区域
The 2000 Section
- 2000节将执行到一个标志位:WSSP-EDTERROR is O-K(O-K是所有程序中定义的标准变量)
- MAINF sets the SCRN-FUNCTION to INIT or NORML. INIT writes the screen without PUTOVR; NORML writes it with
PUTOVR. - YOU MUST NEVER OVERRIDE THE SCREEN FUNCTION SET BY MAINF, UNLESS IT IS TO WRITE THE SCREEN FULLY PROTECTED
- 在屏幕上书写,标准节200-SCREEN-ERRORS必须执行。执行语句必须是在调用后立即的下一个语句屏幕I / O模块。本节用于捕获屏幕错误。
一个例子
CALL 'SxxxxIO' USING SCRN-SCREEN-PARAMS
Sxxxx-DATA-AREA.
PERFORM 200-SCREEN-ERRORS.
执行到这里,WSSP-EDTERROR 标志位被设置为 O-K
The 3000 Section
MAINF一旦检测到WSSP-EDTERROR 是 O-K,,它将执行3000部。此部分必须包含更新数据库的代码。通常情况下,进行查询事务,本节将不包含任何代码。
The 4000 Section
最后,MAINF将执行4000部分。4000部分是用来控制的程序传递。变量WSSP-PROGRAM-PTR用于驱动来执行程序堆栈中的下一个程序。在程序体内,你不必写任何EXIT语句
文件类型
*CBL Cobol program
*CL Control Language job stream
*CLP Control Language program
*CMD Command
*CPY Copybook
*DSPF Display file
*INS Scribe Insert document
*LF Logical file
*LFU Logical file (used by)
*ORD Ordinary transaction screen
*PARM Parameter screen
*PF Physical file
*PRTF Printer file
*SFL Subfile screen
*SPF Scribe parameter file
*SUB Submenu screen
*TXT Scribe text document
*WORK Work Unit
*XDD Extra data dated screen
*XDM Extra data multiple screen
*XDPT Extra data print routine
*XDS Extra data screen
Smart/400开发上手1:入门的更多相关文章
- Smart/400开发上手3: 练习实践
练习题 在2006年1月1日之前入职且在职的营销员,给予年资补贴2000元: 符合以上条件的,再按以下标准一次性发放职级补贴: 职级代码 简称 补偿金额 A1 AD 6000 B1 SBM 5000 ...
- Smart/400开发上手2: COBOL批处理程序处理过程
开发目的:1.建立DB2数据库表:2.建立逻辑视图:3.通过Cobol程序将一个源数据表的数据通过一定公式计算后导出到另一个目的数据库表源数据表:TIM3PF目的数据表:TIM4PF4.在AS400中 ...
- Smart/400开发上手5: Cobol开发标准
ENVIRONMENT DIVISION. CONFIGURATION SECTION.SOURCE-COMPUTER. IBM-AS400.OBJECT-COMPUTER. IBM-AS400. 这 ...
- Smart/400开发上手4: 调试Cobol代码 (DEBUG with QBATCH)
Step1:Compile Cobol source CB TIM07 using *SRCDBG option例如:CB MEMBER(TIM07) OPTION(*SRCDBG) WORKU(TI ...
- 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
[推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...
- 要web开发精品教程吗?免费无广告一百期连讲的那种-逐浪CMS前端开发100期入门教程全面开放
要web开发精品教程吗?免费无广告一百期连讲的那种-逐浪CMS前端开发100期入门教程全面开放 大师主讲 经验难得 由逐浪CMS首席架构师发哥老师,亲自主理讲解. 历时一年精心打造, 汇聚了互联网诞生 ...
- 云小课|DGC数据开发之基础入门篇
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:欢迎来到DGC数据 ...
- iOS开发-UI 从入门到精通(三)
iOS开发-UI 从入门到精通(三)是对 iOS开发-UI 从入门到精通(一)知识点的综合练习,搭建一个简单地登陆界面,增强实战经验,为以后做开发打下坚实的基础! ※在这里我们还要强调一下,开发环境和 ...
- iOS开发-UI 从入门到精通(二)
iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...
随机推荐
- 22.上传app一些相关问题
1.截取上传的各个屏幕尺寸 1.按最大尺寸截取,快捷键 command+s 2.在模拟器上截取 3. 截图 iphone4 : 640x960 或者 960x640 phone5 640 x 1 ...
- 2018.11.02 洛谷P2831 愤怒的小鸟(状压dp)
传送门 状压一眼题. 直接f[i]f[i]f[i]表示未选择状态为iii时的最小次数. 然后考虑现在怎么转移. 显然可以直接枚举消掉某一个点或者某两个点,复杂度O(n22n)O(n^22^n)O(n2 ...
- 2018.10.25 bzoj4350: 括号序列再战猪猪侠(区间dp)
传送门 区间dp好题. 首先我们并不用把右括号拿进来一起dpdpdp,而是直接用左括号来dpdpdp. 然后定义状态fi,jf_{i,j}fi,j表示区间[l,r][l,r][l,r]的合法方案数. ...
- idea下启动tomcat时,打印的日志中文乱码
idea2018.2+tomcat8+java8+win10 异常:将编码方式全都修改为UTF-8后,且tomcat的VM启动参数中配置了:-Dfile.encoding=UTF-8.导致控制台日志打 ...
- Win7 MinGW环境测试SDL2.0.3
下载MinGW版的文件 http://www.libsdl.org/release/SDL2-devel-2.0.3-mingw.tar.gz 解压放到mysys下面 运行Makefile mysys ...
- JDK线程池的使用
转载自:https://my.oschina.net/hosee/blog/614319: 摘要: 本系列基于炼数成金课程,为了更好的学习,做了系列的记录. 本文主要介绍: 1. 线程池的基本使用 2 ...
- java高精度实数和小数
java 高精度实数和小数 String s = "1231222222222222222222222222222222222222222222222222222222"; Big ...
- kettle之时间字段默认值为空或’0000-00-00’问题
今天使用kettle从mysql导数到oracle,发现只导了7行后,数据传输就终止了,查看日志信息,报错如下: 报:Couldn't get row from result set问题. 发现从这行 ...
- MATLAB二分法函数求根
function xc = bisect(f,a,b,tol) ind = b-a; while ind > tol xx = (a+b)/; b = xx; else a = xx; end ...
- 堆操作,malloc
PS:堆空间缺省值都是cd,栈空间缺省值都是cc 内存有四区:栈.全局(静态).常量.除此以外的空间暂时不能随意使用,但是通过malloc函数申请就可以使用了. 利用malloc申请一个int变量,注 ...