程序包含相同/相似的语句块,或多次需要多次调用的函数,可以应用模块化技术,避免代码冗余。
1.源代码块
(1)宏定义
①定义
DEFINE <macro>.
<statements>
END-OF DEFINITION.
在宏中最多可以包含九个占位符(&1,&2,…,&9)。
②调用
<macro> [<p1><p2>…<p9>].
在生成程序期间,系统用已定义得语句替换<macro>,用<Pi>替换每个占位符&i。可以从宏中调用另一个宏,但宏不能调用自己。
(2)INCLUDE程序
包含程序不能独立运行,必须内置到可执行程序中,或者嵌套包含程序
INCLUDE PROGRAM_NAME.
2.DIALOG屏幕逻辑流
① PROCESS BEFORE OUTPUT(PBO):在屏幕事件发生前的处理逻辑
② PROCESS AFTER INPUT(PAI):在屏幕事件发生后的处理逻辑
③ PROCESS ON HELP-REQUEST(POH):当用户查看帮助信息(F1键)时被触发,事件结束后将继续处理当前屏幕
④ PROCESS ON VALUE-REQUEST(POV):当用户按下查询帮助按钮(F4键)时被触发,事件结束后将继续处理当前屏幕
3.FORM子程序
(1)定义
FORM <程序名> [<参数>].
<statement block>
ENDFORM.
(2)调用
① 内部调用:PERFORM <程序名> [<参数>].
② 外部调用:PERFORM <程序名>(<外部程序名>)[<参数>] [IF FOUND].
注意:[IF FOUND],当外部程序中没有所要调用的子程序时,系统忽略PERFORM语句。
(3)参数传递
① 引用传递:FORM SUBR USING P1 CHANGING P1.
② 值传递:FORM SUBR USING VALUE(P1).
③ 值传递并返回最终值:FORM SUBR CHANGING VALUE(P1).
4.函数
函数是存储在*库内的特殊外部子程序,可调用,也可以自己创建。将可能被重复使用的功能代码放在一个模块里,提高程序透明度。
(1)创建函数组
(2)调用函数