大型开发项目,要有合理的架构设计。为使程序简洁,需要统一规划,有一部分程序可以作为公共程序,供应用程序加载,这样能简化应用程序的代码。用来加载公共程序的指令有/COPY和/INCLUDE。下面先分析一下这两个指令。
二者用法基本一致,支持多层嵌套,嵌套深度由关键字COPYNEST决定,没有指定时最大嵌套数为32,设计时要防止嵌套无数次的情况。加载格式如:“/COPY Library file,member”。不同之处在于/COPY被扩展到了SQL预处理器中,可以使用嵌入SQL语句和主机变量,而/INCLUDE不可。
看到这里,有人会问只用/COPY不就行了?其实只用/COPY还是会出现一些问题:首先SQL预处理器不允许嵌套使用/COPY,还有它不能保证正确编译条件编译命令。所以当使用嵌入SQL语句和主机变量时,需要用/COPY,倘若还需要嵌套的话,就要用/INCLUDE。如果不涉及使用嵌入SQL语句和主机变量,那么这两个指令就可以随便用了。
条件编译指令有两个:/DEFINE和/UNDEFINE。首先要明白预处理定义列表这个概念,条件编译控制就是根据这个列表进行的。/DEFINE可以把定义的条件加入列表,/UNFINE可以把定义的条件从列表中删除。有一些RPG编译器早已定义好的预定义条件,/DEFINE和/UNDEFINE对这些条件无效。如 *ILERPG,*CRTBNDRPG,*CRTBNDMOD,*VxRxMx。
判断条件指令有:/IF,/ELSEIF,/ELSE,/ENDIF,/EOF。其中/EOF的作用是编译器不编译整个源文件在/EOF之后的内容。利用/EOF可以优化编译速度,比如当一个源文件被/COPY很多次,但只会被使用一次的情况。需要注意的是:一个IF组内最多有一个/ELSE,/ELSEIF不能在/ELSE之后。还有一个IF组内的指令必须在同一个源文件中。
阅读(2254) | 评论(0) | 转发(0) |