作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么方法可以指定程序源,在编译期间应该使用哪些激活组选项?
在 as/400 上的大多数程序中,我们需要更改激活组的处理(因为默认行为根本没有用...)。每次我编译其中一个程序时,我都必须记住设置编译器选项(在 PDM 中:输入 14
,点击 F4
,更改 DFTACTGRP
从 *YES
到 *NO
,点击 enter
,将 ACTGRP
更改为 *NEW
或 *CALLER
,具体取决于程序)。所以我们有很多程序在开头都有注释,有很多感叹号,提醒程序员这样做。是的,有时您会忘记。
有没有什么技巧,让自己不用记住自己?
最佳答案
您可以在 RPGLE 或 CLLE 程序源中设置这些编译器选项。
在 RPG 中,您可以在源代码顶部使用 H-Specs 来设置编译器选项。像这样:
HDFTACTGRP(*NO) ACTGRP(*CALLER)
只需将它添加到您那里的任何其他内容,例如:
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.
在CL中,有一个特殊的命令DCLPRCOPT
,它实际上不是命令(因为它不在运行时执行),而是一种设置编译器选项的方法。
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*CALLER)
只需将它放在程序的顶部即可。我通常将它放在变量声明之后和任何实际命令之前。我还添加了一个简短的评论,因为我认为可能正确我的代码的每个人都不会理解那里所做的事情:
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
现在,当您编译程序时(只需在 PDM 中输入 14
并按回车键),它会以您在源代码中指定的激活组行为结束。没有任何东西可以让您记住自己。
关于ibm-midrange - 如何为 RPG 或 CL 程序中的激活组设置编译器选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11562194/
我是一名优秀的程序员,十分优秀!