RPG程序代码解析及输入输出数据相关疑问求助
RPG程序代码解析
一、ACCS、ACCT、ACC11的输入位置
程序的输入文件定义段(I-spec)里明确了这三个字段在输入记录中的位置:
ACCS:输入记录的第19-28位,对应代码行:07022I 19 280ACCSACCT:输入记录的第29-38位,对应代码行:07022I 29 380ACCTACC11:输入记录的第39-48位,对应代码行:07022I 39 480ACC11
这些字段属于90字节的INPUT磁盘文件(DISK30),程序通过I-spec定义直接读取对应位置的数据。
二、输入到输出的生成流程
1. 初始化与日期处理
程序启动后先执行Y2K子过程:
- 调用
DATT2获取系统日期存入DATEU - 设置日期分隔符
SEP1、SEP2为Z,并打开20号指示器
2. 分支范围交互
程序先进入控制台交互流程:
- 向控制台(
DISPFIL)显示提示,要求输入分支的起始(FROM)和结束(TO)编号 - 校验输入是否为5位数字,无效则直接终止程序
- 若起始编号大于结束编号,提示错误并重新进入输入环节
3. 输入记录筛选
处理INPUT文件每条记录时,会进行双重筛选:
- 检查记录的
BR字段是否在用户输入的FROM和TO范围内 - 检查
GR00字段是否等于520或550 - 同时满足两个条件的记录,才会进入输出环节(65号指示器开启)
4. 输出生成
符合条件的记录会生成两类输出:
- 打印机输出(SYS008):
依次打印页眉(含日期、分支号)、表头、分隔线,最后打印记录的GR00、ACC00、ACCS、ACCT、ACC11等字段 - 磁盘输出(OUT):
将符合条件的整行输入记录(REC1,90字节)直接写入磁盘输出文件
5. 程序终止
所有记录处理完成后,程序自动结束。
内容的提问来源于stack exchange,提问作者Maryam_92k
相关产品推荐
相关产品推荐

