错误!未指定书签。
3.2.12. 调用API程序操作
1. 注意事项 API程序名 参数取值 QSNDDTAQ 数据队列名:是长度为10的字符型。 库名:是长度为10的字符型,数据队列所在的库,一般为*LIBL。 发送长度:是长度为5的数字型,必须为发送数据实际长度,且不能超过数据队列定义的最大长度。 发送数据队列数据:是长度为发送长度的字符型,它包含了具体发送给数据队列的数据。 关键字长度:是长度为3的数字型,它说明了传送给数据队列的关键字长度。 关键字数据:是长度为关键字长度的字符型,它包含了传送给数据队列的关键字数据。 注:后两个参数可以自选,如果说明了一个,则必须说明另一个。 QRCVDTAQ 数据队列名:是长度为10的字符型。 库名:是长度为10的字符型,数据队列所在的库,一般为*LIBL。 接收长度:是长度为5的数字型,接收数据队列的长度。除非要求设定具体值,否则默认为0。 关键字长度:是长度为接收长度的字符型,它包含了从数据队列中接收到的具体数据。 等待时间:是长度为5的数字型,它说明了等待接收数据的时间。负数表示无限制的等待;零表示不等待;正数示要等待的秒数,最大值是9999。这个参数只有在数据队列中无满足条件的数据时,才起作用。除非要求设定具体值,否则默认为-1。 关键字接收数据的条件:是长度为2的字符型,可用的字符值是:GT、LT、EQ、GE、LE。 关键字长度:是长度为3的数字型,它说明了接收数据队列的关键字长度。 关键字数据:是长度为关键字长度的字符型,它标识了用于从数据队列中接收数据的关键字变量。 发送者标识的长度:是长度为3的数字型。 发送者标识的数据:是长度为发送者标识的长度的字符型。 注:如果建立 DTAQ 时,如果是不带KEY 值的DTAQ,那么后五个参数都不加,否则后五个参数都要加。 QCLRDTAQ 数据队列名:是长度为10的字符型。 库名:是长度为10的字符型,数据队列所在的库,一般为*LIBL。 第 36 页 共 41 页
错误!未指定书签。 QMHQRDQD 数据队列属性:是长度为数据队列属性长度的字符型,它标识了含有数据队列性的变量。一般为80位字符型。 数据队列属性长度:是长度为4的二进制型。一般为X'00000050'。 接收模版格式:是长度为8的字符型,一般为“RDQD0100”。 数据队列和所在库:是长度为20的字符型,前十个字符是队列名,后十个字符是库名。 QCMDEXC 命令内容:是长度为命令长度的字符型。 命令长度:是长度15的数字型,有两位小数位。
3.2.13. 数据维护程序的选项规则
数据维护时输入功能选项只能是‘1’、‘2’、‘3’,‘4’,‘5’中的一个。 其中 ‘1’—新增 ‘2’—修改 ‘3’—拷贝 ‘4’—删除 ‘5’—显示
3.3. CLP代码规范
3.3.1. 注意事项
1. 在程序中,禁止指定库名和更改库列表。例外情况:使用临时库时,需指定库名QTEMP。 2. 程序、目标名、字段名及变量名中不能出现“¥”。
3. 主机PF文件与DOC文件转换标准(CPYFRMPCD、CPYTOPCD):TRNTBL为*DFT,TRNIGC为*DFT。 4. 关于CL命令参数的使用:一般情况下,除了必须要填写的参数以外,其它的参数都使用默认值。 5. 由于通过命令OPNQRYF有条件地打开物理文件的效率比通过RPGLE直接打开逻辑文件进行条件判
断的效率低,且数据量越大差距越明显,所以尽量不用命令OPNQRYF有条件地打开文件。 6. 先通过CPYF命令将物理文件中符合条件记录拷贝临时文件,然后通过命令OPNQRYF打开临时文
件进行处理的效率比通过RPGLE直接打开逻辑文件进行条件判断的效率低,且数据量越大差距越明显,尽量采用第二种方法。
第 37 页 共 41 页
错误!未指定书签。
3.3.2. 代码结构化
为了CLP源代码的方便阅读,语句的书写应有层次感,有必要的缩进,每个语句的命令操作符要对齐,第一个关键字也对齐,不能一行写完的代码,换行后的代码应该缩进书写。标签从第3列开始书写,命令操作符从第14列开始书写,关键字从25列开始书写,一行代码不能超过70列,多于一行显示时,在上一语句一个参数结束后用“+”号,剩余的语句在下一行27列开始。
程序结构: 程序开始 变量定义 CL处理命令 逻辑控制命令 内部函数 程序控制命令 程序结束 例如:
*.....1 ....+.... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
PGM PARM(&CUSER &COBJ)
DCL VAR(&CUSER) TYPE(*CHAR) LEN(10)
??
CRTDTAARA DTAARA(CUST) TYPE(*DEC) LEN(5 0) +
TEXT('Next customer number')
RTVDTAARA DTAARA(CUST (1 1)) RTNVAR(&TYPE)
START: ??
ENDPGM
3.3.3. 条件语句结构化
1) 多个IF条件语句嵌套时,内IF语句要缩进书写;
2) 符合条件的执行语句要写在DO-ENDDO语句内,ENDDO与相对的IF对齐,DO组内的命令相对于关
键字缩进两位书写。 例如:
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... * START: SNDRCVF RCDFMT(MENU)
IF (&CRESP=1) THEN(DO)
IF (&CRESP=2) THEN(DO)
第 38 页 共 41 页
错误!未指定书签。
CALL PGMA
CHGVAR &CA &CB ENDDO ENDDO
3.3.4. 程序运行环境设置
在调用某些程序前,CLP对程序运行的环境做了改变,要求在调用程序后,对改变的环境进行恢复,以免不可预知错误的发生。
1. 使用OVR*命令去约束文件,完成后须使用DLTOVR命令。 2. 使用OPN*命令去打开文件,完成后须使用CLOF命令。 3. 使用ALCOBJ命令加锁,完成后须使用DLCOBJ命令。 例如:
正确写法:
PGM
??
OVRDBF FILE(XXUSRPF) TOFILE(&FLIB/XXUSRPF) MBR(MBR2) CALL XXRPG
DLTOVR FILE(XXUSRPF) ?? ENDPGM 不正确写法:
PGM
??
OVRDBF FILE(XXUSRPF) TOFILE(&FLIB/XXUSRPF) MBR(MBR2) CALL XXRPG ?? ENDPGM
3.4. 指示器定义规范
01—24 :功能键指示器;
01:帮助;
03:退出; 04:提示; 05:刷新;
06:新增;
第 39 页 共 41 页
错误!未指定书签。
07:向上翻页; 08:向下翻页; 09:查找; 12:返回; 24:统计;
30—49 :显示文件覆盖字段控制;
50—59 :字段信息指示器;
60—69 :子文件指示器;
60:子文件显示指示器; 61:子文件清除指示器; 62:子文件控制记录显示指示器; 63:子文件结束指示器;
70—79 :打印文件指示器;
70:打印文件溢出指示器;
80—89 :程序内部控制使用指示器; 90—99 :文件指示器。
4. 效率原则
程序效率三个原则:
1. 效率是性能的要求,需求分析时就应确定。 2. 效率是靠设计提高的。
3. 程序的效率和程序的简单是一致的。
4. 在程序运行效率方面,程序代码写得越简单效率就越高;相反,越参数化、兼容性越强、控制越
严、判断越多,效率就越低。所以在写程序时,要考虑程序的功能、目的及实际情况,在效率与其它方面去衡量。一般交易处理程序,运行压力就相对大,效率要求高,这类程序就尽量少读档案;对与维护程序,效率要求不高,但控制、条件要求严密,这类程序在控制方面的要求比运行效率、速度更重要。
第 40 页 共 41 页
错误!未指定书签。
减少运行时间:
1. 写程序前先简化算术和逻辑表达式。
2. 仔细研究嵌套的循环,以确定是否有语句从内层移到外层。 3. 尽量避免使用多维数组。 4. 尽量避免使用复杂的表。 5. 使用执行时间短的算术运算。 6. 不要混合使用不同的数据类型。 7. 尽量使用整数运算和布尔表达式。
第 41 页 共 41 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库AS400编码规范文档(8)在线全文阅读。
相关推荐: