循环编程
当系统处理数据时,它必须按特定顺序执行处理。 此逻辑顺序由以下人员提供:
- ILE RPG 编译器
- 程序代码
编译器提供的逻辑称为 程序循环。 当您让编译器为您的程序提供逻辑时,它称为 循环编程。
程序循环是程序重复的一系列步骤,直到达到文件结束条件为止。 根据您编码的规范,程序可能使用也可能不使用循环中的每个步骤。
如果要使文件由循环控制,那么在源程序中对 RPG 规范编码的信息无需指定何时读取这些文件的记录。 编译器在编译源程序时提供这些操作和某些输出操作的逻辑顺序。
如果不想让文件由循环控制,那么必须以其他方式结束程序,方法是通过在最后一个记录 (LR) 指示符上设置来创建文件结束条件,通过在返回 (RT) 指示符上设置来创建返回条件,或者通过使用 RETURN 操作直接返回。
注: 不会为子过程生成循环代码,也不会在控制规范上指定 MAIN 或 NOMAIN 时生成循环代码。 查看
图 1 显示 RPG 程序周期的常规流程中的特定步骤。

- 1
- RPG 处理所有标题和详细信息行 (输出规范的位置 17 中的 H 或 D)。
- 2
- RPG 读取下一条记录并在记录标识和控制级别指示符上设置。
- 3
- RPG 处理总计算 (由控制级别指示符 L1 到 L9, LR 指示符或 L0 条目调节)。
- 4
- RPG 处理所有总输出行 (由输出规范位置 17 中的 T 标识)。
- 5
- RPG 确定 LR 指示符是否开启。 如果已开启,那么程序将结束。
- 6
- 所选输入记录的字段将从记录移至处理区域。 关于字段指示符的 RPG 集。
- 7
- RPG 处理所有详细信息计算 (不受计算规范位置 7 和 8 中的控制级别指示符的限制)。 它在循环开始时使用记录中的数据。
第一个循环
第一次和最后一次通过程序循环与其他循环有一些不同。 在阅读第一次记录第一次通过循环之前,程序做了三件事:
- 处理输入参数,打开文件,初始化程序数据
- 写入以 1P (第一页) 指示符为条件的记录
- 处理所有标题和详细信息输出操作。
例如,在读取第一个记录之前打印的标题行可能由常量或页标题信息或特殊字段 (例如 PAGE 和 *DATE) 组成。 该程序还会在第一个周期中绕过总计算和总输出步骤。
上一个周期
上一次程序通过循环时,当没有更多可用记录时,程序会将 LR (上一个记录) 指示符和 L1 到 L9 (控制级别) 指示符设置为 在。 程序处理总计算和总输出,然后关闭所有文件,然后程序结束。