Loops 如何在RPG free中循环X次而不创建变量?
我有一段我正试图转换的旧代码 非常简单,只需循环10次Loops 如何在RPG free中循环X次而不创建变量?,loops,recursion,procedure,rpgle,Loops,Recursion,Procedure,Rpgle,我有一段我正试图转换的旧代码 非常简单,只需循环10次 C DO 10 C* code C ENDDO 为了在自由语法中使用for循环,需要创建一个变量。例如: FOR I = 1 TO 10; // code ENDFOR; 不需要创建新变量就可以实现这一点吗?没有,但在RPG IV中,这不一定是个问题。在RPG IV中,您可以使用过程,并且过程可以有局部变量。RPG 400及之前仅允许
C DO 10
C* code
C ENDDO
为了在自由语法中使用for
循环,需要创建一个变量。例如:
FOR I = 1 TO 10;
// code
ENDFOR;
不需要创建新变量就可以实现这一点吗?没有,但在RPG IV中,这不一定是个问题。在RPG IV中,您可以使用过程,并且过程可以有局部变量。RPG 400及之前仅允许全局变量。但是,如果在RPG IV程序中使用子例程,则仍然必须使用全局变量 你还没有使用子程序,是吗 以下是语法上的区别: 自由状态下的子例程:
exsr mysubroutine;
...
begsr mysubroutine;
...
endsr;
用最少的子过程看它是什么样子
myProcedure();
...
dcl-proc myProcedure;
...
end-proc;
如果不传递参数,则严格来说不需要在过程名称后加上()
,但我还是这样做了,因为它提示我这是一个过程,而不是一个随机变量或单独在一行上的其他名称,甚至在表达式中
程序的优点
Gotchas#2和#3意味着最好将所有子例程转换为过程。这样做不会有任何副作用。这真是个好主意。我将尝试使用正在进行的程序。毫无疑问,对于我来说,所有遗留代码都是一项太大的任务,无法转换为过程。我也不会转换东西,除非我有理由这样做。