エレメント、配列、および大構造体または複数の共用体は、常に連結ストレージに割り振られます。 非連結ストレージへの参照は、より大きな集合からの不連続項目から構成される集合へ参照を行う場合にのみ行われます (配列のクロスセクションを参照。) 例えば、次の構造体では、介在配列 A.B および A.C は、 両方とも非連結ストレージにあります。
1 A(10),
2 B,
2 C;
|
省略形: CONN、NONCONN
CONNECTED 属性は、被制御集合パラメーターにしか適用されず、レベル 1 の 名前でしか指定することができません。 この属性によって、パラメーターの参照が連結ストレージに限られます。 そのため、パラメーターをレコード単位の入出力のターゲットまたはソースとして使 用するか、もしくはストリング・オーバーレイ定義の基数として使用することができ ます。 パラメーターが連結であり、CONNECTED 属性が使用される場合、この連結パラメ ーターへの参照用に、より効率の良いオブジェクト・コードが生成されます。
パラメーターが不連続ストレージを占有している場合、NONCONNECTED を指定しなければなりません。 次の例では、NONCONNECTED 属性は、sum_Slice ルーチンが、連続していない可能性のあるエレメントを持つ 1 次元の配列を処理することを示しています。 最初の呼び出しでは、sum_Slice は最初の行に渡されます。これは連結ストレージにあります。 しかし、2 番目の呼び出しでは、sum_Slice は最初の列に渡されます。これは非連結ストレージにあります。
dcl A(10,10) fixed bin(31);
display( sum_Slice( A(1,*) ) ); /* first row */
display( sum_Slice( A(*,1) ) ); /* first column */
sum_Slice:proc(X) returns(fixed bin(31));
dcl X (*) fixed bin(31) nonconnected; /* default */
return(sum(X) );
end;