RPG IIIでは、巨大な配列をファイルに格納する必要があります。最大フィールド長は256であるため、それぞれ250文字の長さの16フィールドでファイルを定義しました。移動せずに配列の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
逆に読んでください。