已定义变量的自由格式原型?

Free-format prototype with variables already defined?

我有一个 RPGLE 程序,我正在尝试将其从固定格式转换为自由格式。一般来说,我知道定义入口变量是使用这样的原型完成的:

dcl-pr myprogram;
  I#Entry1 char(5);
end-pr;
dcl-pi myprogram;
  InEntry1 char(5);
end-pi;

但我不知道如何在字段已经定义的情况下执行此操作。我们有一个标准定义文件,我们将其复制到程序中,例如我正在编写的程序,其中包含我用作已定义并复制的输入变量的字段。在固定格式中,这只是

C     *Entry        PList
C                   Parm                    InEntry1

我已经尝试过只在原型条目之前进行复制并将规范留空,但这会导致错误。我知道我可以只使用 'LIKE' 关键字并更改变量名称,但为了便于阅读,我宁愿避免这样做,而且我不知道可能会导致什么问题。

为了以防万一,我尝试输入两个变量:一个数据结构和一个分区小数。

如何在自由格式 RPGLE 中使用已定义为入口变量的变量,无论是使用原型还是其他我不知道的方式?

如果不使用 like 声明另一个变量,则无法找到解决方案。并在程序开始时将新变量赋值给旧变量,反之亦然。

处理这个问题的“正确”方法是创建一个新版本的标准定义文件 (StdDefs==>StdDefs2) 以新名称(可能带有 _t 后缀)和 TEMPLATE 声明变量关键字。

然后在重构的 PR/PI 中使用 LIKE 或 LIKEDS。

所以你原来的程序看起来像

 /copy StdDefs
C     *Entry        PList
C                   Parm                    InEntry1

你重构后 PR/PI 看起来像

 /copy StdDefs2
 /copy Mypr
  dcl-pi myprogram;
    InEntry1 like(inEntry_t);
  end-pi;

请注意,最佳做法是将 PR 放在一个单独的成员中,该成员 /COPY 到调用者和被调用者中。