定義仕様書の INZ キーワードを使用して、実行時配列に初期値を割り当ていることが できます。 入力仕様書または演算仕様書によって実行時配列に初期値を割り当てることもで きます。 この 2 番目の方式を使用すれば、データを他のタイプの配列に入れることもでき ます。
たとえば、演算仕様書を使用して、MOVE 命令で配列の各要素 (または選択した要 素) に 0 を入れることができます。
入力仕様書を使用して、ファイルからのデータを配列に埋め込むことができます。 以下の項では、ファイルのレコードからこのデータを検索する際の詳細が示され ています。
配列情報が 1 つのレコードに入っている場合には、その情報がレコード中で連続 した区域を占めていても、あるいはレコード全体に散在していても差し支えあり ません。
配列要素が入力レコード上で連続している場合には、単一の入力仕様書でその配列 をロードすることができます。 図 66 は、ファイル ARRFILE の 単一のレコードから 6 つの要素 (それぞれが 12 文字) の配列 INPARR をロードする ための仕様を示しています。
*...1....+....2....+....3....+....4....+....5....+....6....+....7... DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++ DINPARR S 12A DIM(6) IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................ I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr.... IARRFILE AA 01 I 1 72 INPARR
配列要素がレコード全体に散在している場合には、1 つの仕様行に 1 つの要素を 記述して、一度に 1 つずつ定義し、ロードすることができます。 図 67 は、ファイル ARRFILE の単一のレコードからそれぞれ が 12 文字の 6 つの要素の配列 ARRX をロードするための仕様を示しています。 各要素は、相互にブランクによって区切られます。
*...1....+....2....+....3....+....4....+....5....+....6....+....7... DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++ DARRX S 12A DIM(6) IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................ I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr.... IARRFILE AA 01 I 1 12 ARRX(1) I 14 25 ARRX(2) I 27 38 ARRX(3) I 40 51 ARRX(4) I 53 64 ARRX(5) I 66 77 ARRX(6)
配列情報が複数のレコードに入っている場合には、各種の方式を使用して配列を ロードすることができます。 使用する方式は、配列のサイズや、配列要素が入力 レコード中で連続しているかどうかによって異なります。 ILE RPG プログラムでは、一度に 1 つのレコードが処理されます。したがって、配列情報の入っているレコードがすべて読み取られ、それらの情報 が配列フィールドに転送されるまで、配列全体の処理は行われません。 配列全体がプログラムに読み込まれるまで、演算および出力操作を抑制すること が必要な場合があります。
実行時配列の順序は検査されません。 SORTA (配列の分類) 命令を処理する場合に は、配列は、その配列を定義する定義仕様書に指定された順序 (ASCEND または DESCEND キーワード) に分類されます。 順序が指定されない場合には、配列は昇順に分類されます。 LOOKUP 命令で高位 (演算仕様書の 71 から 72 桁目) または低位 (演算仕様書の 73 から 74 桁目) の標識を 使用する場合には、配列の順序を指定しなければなりません。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.