kra*_*nko 2 rpg compiler-flags rpgle compiler-options ibm-midrange
有没有办法为程序源指定,在编译期间应该使用哪些激活组选项?
在as/400上的大多数程序中,我们需要更改激活组的处理(因为默认行为根本没有用...).每次我编的程序之一,我一定要记得设置编译器选项(这是在PDM:进入14,打F4,变化DFTACTGRP来自*YES于*NO,打enter,变化ACTGRP到*NEW或者*CALLER,这取决于程序).因此,我们在开始时有很多带有注释的程序,有大量的惊叹号,提醒程序员这样做.是的,有时候你会忘记.
有没有诀窍,所以你不必记住自己?
您可以在RPGLE或CLLE程序源中设置这些编译器选项.
在RPG中,您可以使用源代码顶部的H-Specs来设置编译器选项.像这样:
HDFTACTGRP(*NO) ACTGRP(*CALLER)
Run Code Online (Sandbox Code Playgroud)
只需将其添加到您拥有的任何其他内容中,例如:
H DEBUG DATEDIT(*YMD)
H DFTACTGRP(*NO) ACTGRP(*CALLER)
H BNDDIR('SRVBNDDIR')
H MAIN(main)
F OUTPUT O F 3000 DISK USROPN
D ...
* procedures, etc.
Run Code Online (Sandbox Code Playgroud)
在CL中,有一个特殊的命令DCLPRCOPT,它实际上不是一个命令(因为它在运行时没有执行),而是一种设置编译器选项的方法.
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*CALLER)
Run Code Online (Sandbox Code Playgroud)
只需将它放在程序的顶部即可.我通常把它放在变量声明之后和任何真正的命令之前.我还添加了一个简短的评论,因为我不认为每个可能正确我的代码的人都会理解在那里做了什么:
PGM PARM(&SOMEPARM)
DCL VAR(&SOMEPARM) TYPE(*CHAR) LEN(*64)
DCL VAR(&COUNTER) TYPE(*DEC) LEN(5 0)
/* Setting options for compilation of this program */
/* This is a permanent job, so we want a *NEW activation group. */
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*NEW)
/* do actual work here in a loop */
/* ..... */
ENDPGM
Run Code Online (Sandbox Code Playgroud)
现在,当您编译程序时(只需输入14PDM并按Enter键),它将以您在源中指定的激活组行为结束.没有什么可以在那里记住自己.
| 归档时间: |
|
| 查看次数: |
4700 次 |
| 最近记录: |