構造化フィールド配列は、呼び出し先プログラムに渡すことができます。 call ステートメント内と、呼び出し先プログラムのパラメーター・リスト内の両方で、特殊規則に従う必要があります。
Record MyRecordPart type basicRecord
10 myInt INT[5];
10 myChar CHAR(1);
end
myRecord MyRecordPart;
call MyProgram( myRecord.myInt[*] );
大括弧で囲んだアスタリスク ([*]) は、「先行する変数を構造化フィールド配列として扱う」ということを意味します。 myRecord.myInt を大括弧なしで指定する場合、myRecord.myInt[1] をコーディングした場合のように、プログラムは配列内の最初の要素のみを受け取ります。
Program MyProgram type BasicProgram ( myInt INT[5]! )
end
感嘆符は、先行する変数が、呼び出し先プログラム内でサイズ変更可能な動的配列ではなく、構造化フィールド配列であることを示します。 配列サイズおよび感嘆符は、それぞれの配列次元の後に必要です。
Record X type BasicRecord
10 myChar CHAR(4)[2];
20 mySubChar01 char(2);
20 mySubChar02 char(2);
end
mySubChar01 または mySubChar02 配列を渡す場合、フィールドは、連続的に保管されていない場合でも、連続的なメモリー・ブロックで渡されます。 データはコピーする必要があり、余分の処理時間がかかります。
多次元構造化フィールド配列の保管方法について詳しくは、『配列』を参照してください。