在 RPG III 中,我需要在文件中存储一个巨大的数组。最大字段长度为 256,因此我用 16 个字段定义了文件,每个字段长度为 250 个字符。有没有办法将数组的 1000 个值放入 16 个字段而不移动?就像 COBOL 中的 REDEFINES 一样?
程序中的数组:
E MPDV 1000 4
文件规范:
D000001 1 4 WRPMOD
D000002 5 254 W01PDV
... etc. until
D000017 37554004 W16PDV
在 Cobol 我会写:
01 MPDV-TOP.
03 MPDV-ARR OCCURS 1000.
05 MPDV PIC X(4).
01 WRPREC REDEFINES MPDV-TOP.
03 W01PDV PIC X(250).
.... ETC. UNTIL
03 W16PDV PIC X(250).
读取文件我得到数组 MPDV 及其值和 MPDV 中的值我可以写入文件。
我的解决方案如下所示:一个额外的数组
E MPX 16250 MPDV REDEF
和很多动作:
C MOVELMMEMOD WRPMOD
C MOVEAMPDV MPX
C MOVELMPX,1 W01PDV
C MOVELMPX,2 W02PDV
.... etc until
C MOVELMPX,16 W16PDV
C WRITEWRPASM
并反向阅读。