如何在不创建变量的情况下免费在 RPG 中循环 X 次?
How to loop X amount of times in RPG free without creating variables?
我有一段旧代码正在尝试转换
很简单,循环10次就可以了
C DO 10
C* code
C ENDDO
为了在自由语法中使用for
循环,需要创建一个变量。例如:
FOR I = 1 TO 10;
// code
ENDFOR;
有什么方法可以在不需要创建新变量的情况下完成此操作?
不,但在角色扮演游戏 IV 中,这不一定是个大问题。在 RPG IV 中,您可以使用过程,而过程可以有局部变量。 RPG 400 及之前的版本只允许使用全局变量。但是,如果您在 RPG IV 程序中使用子例程,您仍然必须使用全局变量。
你不会还在使用子程序吧?
语法差异如下:
免费子程序:
exsr mysubroutine;
...
begsr mysubroutine;
...
endsr;
最小化的样子 sub-procedures;
myProcedure();
...
dcl-proc myProcedure;
...
end-proc;
如果你不传递参数,你绝对不需要在过程名称后面加上 ()
,但我还是这样做了,因为它告诉我它是一个过程而不是随机变量或其他名称单独坐在一行中,甚至在表达式中。
程序的优点?
- 您可以为这些循环声明局部变量。
- 您仍然可以使用您的子例程使用的所有全局变量。
- 可以传递参数。
- 您可以 return 一个值并在表达式中使用该过程。
- 过程可以递归调用。
陷阱?
- 您仍然可以使用您的子例程使用的所有全局变量。
- 您不能从过程中调用子例程,除非它是在过程中定义的。
- 不能从过程外部调用过程内部定义的子例程。
陷阱 #2 和 #3 意味着最好将所有子例程转换为过程。你可以做到没有任何副作用。
我有一段旧代码正在尝试转换
很简单,循环10次就可以了
C DO 10
C* code
C ENDDO
为了在自由语法中使用for
循环,需要创建一个变量。例如:
FOR I = 1 TO 10;
// code
ENDFOR;
有什么方法可以在不需要创建新变量的情况下完成此操作?
不,但在角色扮演游戏 IV 中,这不一定是个大问题。在 RPG IV 中,您可以使用过程,而过程可以有局部变量。 RPG 400 及之前的版本只允许使用全局变量。但是,如果您在 RPG IV 程序中使用子例程,您仍然必须使用全局变量。
你不会还在使用子程序吧?
语法差异如下:
免费子程序:
exsr mysubroutine;
...
begsr mysubroutine;
...
endsr;
最小化的样子 sub-procedures;
myProcedure();
...
dcl-proc myProcedure;
...
end-proc;
如果你不传递参数,你绝对不需要在过程名称后面加上 ()
,但我还是这样做了,因为它告诉我它是一个过程而不是随机变量或其他名称单独坐在一行中,甚至在表达式中。
程序的优点?
- 您可以为这些循环声明局部变量。
- 您仍然可以使用您的子例程使用的所有全局变量。
- 可以传递参数。
- 您可以 return 一个值并在表达式中使用该过程。
- 过程可以递归调用。
陷阱?
- 您仍然可以使用您的子例程使用的所有全局变量。
- 您不能从过程中调用子例程,除非它是在过程中定义的。
- 不能从过程外部调用过程内部定义的子例程。
陷阱 #2 和 #3 意味着最好将所有子例程转换为过程。你可以做到没有任何副作用。