错误!未指定书签。
3. 代码规范
使用统一编代码规范主要是使程序的结构和代码风格标准化,以便于阅读和理解。规范的代码规范可使源代码严谨、可读性强,易维护。
3.1. 数据文件
3.1.1. 数据字典
在同一个项目中,多个程序或文件用到的一些特定的字段,建立一个数据字典,对字段进行统一管理,常用的字段定义统一由数据字典定义,减少共性字段的重复性输入工作,提高了代码的正确率,避免一个相同功能的字段出现不同定义,也方便对字段定义的修改。
3.1.2. 物理文件(Physical File)
物理文件创建规则:
1. 所有物理文件都使用DDS(Data Description Specifications)方式建立后编译产生,有利于查
看及修改。
2. 对物理文件DDS的源文件成员的类型使用PF。
3. 创建的物理文件目标的名字与它的DDS源文件成员的名字一致。
4. 同一文件中对于字段级关键字项(例如,DFT、TEXT、CLOHDG)使用一致的顺序。
5. 在编译物理文件时,必须指定属性参数(Initial number of records)为*NOMAX,如果程序处
理中无须用到物理顺序,则建议指定属性参数(Reuse deleted records)为*YES。
6. 对于以后有可能扩展且使用范围比较广的物理文件:在设计时,建议预留一些备用字段,以方便
以后的使用,这样可以避免修改大量的程序。
同一字段在不同物理文件中的定义规则:
1. 字段名的后3位需相同。 2. 定义字段长度需相同:
在A表中如字段定义为8位长度,相同字段在B表中应该也定义为8位长度,若在B表相同字段长度定义过长或过短,可能会使数据记录出现不一致或部分内容丢失的情况出现。如是数字型字
第 11 页 共 41 页
错误!未指定书签。
段,小数位长度也需相同。 3. 定义字段类型需相同:
在A表中如字段定义为字符型,相同字段在B表中应该也定义为字符型;如在B表相同字段定义为数字型或其它类型,可能会使数据由于类型不匹配而记录失败。 4. 定义字段说明需相同:
字段说明(包括字段描述和列标头)在不同表中应相同;如不相同可能会出现对字段理解出现歧异。
5. 定义字段NULL属性需相同:
在A表字段定义为NULL,在B表相同字段应该也定义为NULL;
如在B表相同字段定义为NOT NULL,则可能出现数据NULL属性定义不匹配而记录失败。 6. 定义字段显示属性需相同:
如A表中日期字段显示属性定义为‘ / / ’,在B表中也应定义相同显示属性以方便查看。
3.1.3. 逻辑文件(Logical File)
逻辑文件创建规则:
1. 所有逻辑文件都使用DDS方式建立后编译产生。 2. 对逻辑文件DDS的源文件成员的类型使用LF。
3. 创建的逻辑文件目标的名字与它的DDS源文件成员的名字一致。 4. 逻辑文件的记录格式名称与其所关联的物理文件的记录格式名称一致。 5. 禁止在逻辑文件中改变字段的名称和属性。 6. 禁止一个逻辑文件有多个记录格式。
7. 由于逻辑文件太多会影响到文件读取效率,因此物理文件对应的逻辑文件不能超过7个。
3.1.4. 显示文件(Display File)
显示文件创建规则:
1. 所有显示文件都使用DDS方式(可通过STRSDA进行屏幕设计后,自动生成DDS源文件成员)建
立后编译产生。
2. 对显示文件DDS的源文件成员的类型使用DSPF。
3. 创建的显示文件目标的名字与它的DDS源文件成员的名字一致。
第 12 页 共 41 页
错误!未指定书签。
3.1.5. 报表文件(Printer File)
报表文件创建规则:
1. 所有报表文件都使用DDS方式(可通过STRRLU进行屏幕设计后,自动生成DDS源文件成员)建
立后编译产生。
2. 对报表文件DDS的源文件成员的类型使用PRTF。
3. 创建的报表文件目标的名字与它的DDS源文件成员的名字一致。
4. 报表文件记录分布合理:头记录、明细记录、小计记录、总计记录、尾记录,其中小计记录和总
计记录可根据具体情况决定是否需要。
3.2. RPGLE(RPG)代码规范
3.2.1. 注意事项
1. 在程序中,禁止指定库名和更改库列表。例外情况:使用临时库时,需指定库名QTEMP。 2. 程序必须有结束语句:RETURN或打开指示器LR。 3. 程序、目标名、字段名及变量名中不能出现“¥”。 4. 在程序中,禁止写死科目、金额限制。
5. 所有的常量和变量都在D表中定义,禁止在程序处理的C表中定义变量。 6. 所有的变量定义后使用前,必须对变量进行初始化。 7. 禁止变量在初始化后使用前被重复赋值。
8. 在处理子文件时,必须进行子文件记录溢出(超过9999条记录)控制。 9. 物理文件或逻辑文件重新编译后,须对文件所涉及程序进行重新编译。 10. 禁止不同文件用同一名称。 11. 尽量避免同一文件存在于不同库下。
12. 尽量不使用数据文件中的字段名作键值列表(KLIST)中变量名使用,键值列表定义的KFLD必须
与物理文件或逻辑文件的KFLD一致。
13. 在对物理文件记录进行搜索时,尽可能使用适合的逻辑文件,并通过KLIST进行搜索记录。 14. 如果数据文件内容不常改变且数据量比较少,程序长期运行,则建议将文件记录通过数组存到内
存。
15. 如果只是读取文件记录,无须修改,则以不锁方式进行读取,以免造成锁记录。
第 13 页 共 41 页
错误!未指定书签。
16. 当读文件下笔记录且读不到时,文件字段的值会遗留着最近的内容,须清空变量的内容,再重新
赋值。
17. DIV语句的除数不能为0。
18. TESTN语句不能检测到字符所有位置是否为数字(最后一位A-R也当成数字)。 19. 每一个程序模块只允许一个出口,程序段中一般不建议使用GOTO 语句。 20. 在子过程中不能使用GOTO语句转到其他子过程或主过程中。 21. 不使用过多的嵌套语句。
22. 不使用多于三个的IF嵌套, 可用SELCET CASE代替。 23. IF不使用反逻辑,而使用IF ESLE (Proc) ENDIF。
24. 程序调用下层程序时,上下层程序的参数个数和属性必须一致。
25. 在一个CALL程序链中对同一个文件的UPDATE只有一个,避免LOCK文件。
26. 单个程序尽可能功能清晰明确,在同一程序中完成相同功能的代码以子过程的方式实现。 27. 单个EXSR执行的过程不含注释程序行数不超过100行,超过时应再细分成多个功能子程序。 28. 禁止使用SQLRPGLE(SQLRPG)程序,因为SQLRPGLE(SQLRPG)程序运行时间比RPGLE(RPG)程
序长。
29. 禁止程序对视图操作,因为文件数据量越大,建立视图的条件越复杂,程序对视图操作效率就越
低。
30. 在程序中,尽可能使用RPG命令,少用兼容性强的命令。(因为兼容性越强,资源开销越大。比
如语句“VC_FLD IFEQ 1”的效率比语句“IF (VC_FLD=1)”高。)
31. 对于运行效率、速度要求比较高的程序要尽量减少读、写文件,打开或关闭文件,访问磁盘对象
等的动作,特别是数据量比较大的文件,频繁读、写文件肯定对程序效率、运行速度有影响。 32. 对于处理压力比较大的程序,尽量多考虑作业程序多作业并行处理,以减少作业程序的处理压力。 33. 对于多作业并发处理,要考虑后来的数据先到的情况,比如请求正在处理,并因为某个环节故障,
而在等待,这时冲正有可能先到。
34. 在文件的使用上,尽量要考虑文件记录可能会被多个作业同时使用的问题,特别是序号类的文件。
3.2.2. F表定义
1. F表定义顺序: (1) 定义数据文件。 (2) 定义显示文件。
第 14 页 共 41 页
错误!未指定书签。
(3) 定义报表打印文件。 2. 文件打开方式定义规则:
(1) 以只读文件应该以I方式打开,如为只读的新增记录则为“A”。 (2) 只新增记录的应以O方式打开。
(3) 尽量不要用“U”方式打开,除非为修改记录或删除记录。 (4) 关键字每行写一个。
(5) 如果程序中定义了同一个文件的物理文件和逻辑文件或者两个以上(包括两个)逻辑文件,
则保留一个文件的记录格式名,其他逻辑文件的记录格式名须重命名为记录格式名+逻辑文件顺序号。
3. 必须确保同一程序打开的文件不能出现相同字段,如有则在F表里使用PREFIX修改文件字段的
前缀。
3.2.3. D表定义(RPGLE)
1. 所有的常量和变量都在D表中定义,禁止在程序处理的C表中定义变量。 2. 变量定义的顺序: (1) 字符常量。 (2) 字符变量。 (3) 数字变量。 (4) 数组。
(5) 组合变量,组合变量中的变量相对组合变量名要缩进两位书写。 例如:
D VDS_STU DS D ST_NAME 1 10 D ST_NUM 11 18 0 D ST_AGE 19 21 0
3. 所有的变量定义后使用前,都必须对变量进行初始化。
3.2.4. E表定义(RPG)
1. 定义数组变量。 2. 变量定义的顺序: (1) 字符数组。
第 15 页 共 41 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库AS400编码规范文档(3)在线全文阅读。
相关推荐: