ファイルから複数のレコードを読み込んで実行時配列をロードする

データベース・ファイルの単一のレコードからだけでは配列のデータを取得できない場合、データベース・ファイルから複数のレコードを読み込んで、配列をロードしなければなりません。 それぞれのレコードによって、配列の要素 (単一または複数) にデータを提供します。 ILE RPG プログラムは、レコードを一度に 1 つずつ処理します。 したがって、配列全体の処理が行われるのは、配列情報の入っているレコードがすべて読み取られて、その情報が配列要素に転送された後になります。 配列全体がプログラムに読み込まれるまで、演算および出力操作を抑制すること が必要な場合があります。

例えば、ファイル ARRFILE2 の各レコードの桁 1 から 12 に、ある配列要素に関する情報が含まれているものとします。 このような場合には、変数指標を使用して、その配列要素の入力仕様をコーディングすることができます。 図 1 にあるように、レコードが読み込まれる前に、プログラムによって指標が設定されます。

図 1. ファイルからの配列のロード (1 レコードにつき 1 要素)
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
DARRX             S             12A   DIM(6)
DN                S              5P 0 INZ(1)
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................
I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr....
IARRFILE2  AA  01
I                                  1   12  ARRX(N)
CL0N01Factor1+++++++Opcode&ExtFactor2;+++++++Result++++++++Len++D+HiLoEq
C                   IF        N = %ELEM(ARR) * The array has been loaded
 ..... process the array
 * Set the index to 1 to prepare for the next complete array
C                   EVAL      N = 1
C                   ELSE * Increment the index so the next input operation will fill
 * the next array element
C                   EVAL      N = N + 1
C                   ENDIF