EXPAND |
|
dynamic-clause |
|
[GIVINGoperand5] |
| array-clause |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:ダイナミック変数または X-array のメモリ管理制御
EXPAND ステートメントは、次を拡張するために使用します。
ダイナミック変数(dynamic-clause)の割り当てられた長さ、または
X-array(array-clause)のオカレンス数
詳細については、『プログラミングガイド』の次のセクションを参照してください。
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
S | A | A | U | B | × | × | ||||||||||||||
operand2 |
C | S | I | × | × | ||||||||||||||||
operand3 |
A | G | A | U | N | P | I | F | B | D | T | L | C | G | O | ○ | × | ||||
operand4 |
C | S | N | P | I | × | × | ||||||||||||||
operand5 |
S | I4 | × | ○ | |||||||||||||||||
構文要素の説明:
| 構文要素 | 説明 |
|---|---|
dynamic-clause |
Dynamic 節:
|
operand1 |
ダイナミック変数:
|
operand2 |
ダイナミック変数のターゲット長:
|
array-clause |
Array 節:
|
operand3 |
X-array:
|
dim
|
次元:
X-array 拡張の上下限表記( |
GIVING
operand5 |
GIVING 節:
|
[SIZE
OF] DYNAMIC [VARIABLE] operand1TO operand2 |
EXPAND DYNAMIC VARIABLE ステートメントは、ダイナミック変数(operand1)の割り当てられているサイズを、operand2 で指定した値に拡張します。
operand2 が、現在割り当てられている operand1 の長さよりも小さい場合、このダイナミック変数に関してステートメントは無視されます。現在割り当てられているダイナミック変数のサイズ(*LENGTH)は修正されません。
[AND RESET] [OCCURRENCES OF] ARRAY operand3 TO (dim[,dim [,dim]]) |
EXPAND ARRAY ステートメントは、X-array(operand3)のオカレンス数を、TO (dim
[,dim[,dim]]) で指定した上下限の範囲内で増加させます。
RESET オプションは、拡張した X-array のすべてのオカレンスをデフォルトのゼロ値にリセットします。デフォルト(RESET オプションなし)では、実際の値は保持され、拡張した(新しい)オカレンスがリセットされます。
EXPAND ステートメントを使用する場合は、オカレンス数を増やすことだけが可能です。要求した数が現在割り当てられているオカレンス数よりも小さい場合は、無視されます。
EXPAND ステートメントで使用される上限または下限は、配列に定義された対応する上限または下限と正確に同じである必要があります。
例:
DEFINE DATA LOCAL
1 #a(I4/1:*)
1 #g(1:*)
2 #ga(I4/1:*)
1 #i(i4)
END-DEFINE
...
/* allocating #a(1:10)
EXPAND ARRAY #a TO (1:10) /* #a is allocated 10
EXPAND ARRAY #a TO (*:10) /* occurrences.
/* allocating #ga(1:10,1:20)
EXPAND ARRAY #g TO (1:10) /* 1st dimension is set to (1:10)
EXPAND ARRAY #ga TO (*:*,1:20) /* 1st dimension is dependent and
/* therefore kept with (*:*)
/* 2nd dimension is set to (1:20)
EXPAND ARRAY #a TO (5:10) /* This is rejected because the lower index
/* must be 1 or *
EXPAND ARRAY #a TO (#i:10) /* This is rejected because the lower index
/* must be 1 or *
EXPAND ARRAY #ga TO (1:10,1:20) /* (1:10) for the 1st dimension is rejected
/* because the dimension is dependent and
/* must be specified with (*:*).
詳細については、『プログラミングガイド』の次のトピックを参照してください。
Array 節で指定する各次元(dim)は、次の構文を使用して定義します。
|
|
* |
|
||||||
|
|
|
|
: |
|
|
|
||
X-array 拡張の上下限表記(operand4 またはアスタリスク)は、ここで指定します。現在の上下限の値を使用する必要がある場合は、operand4 の代わりにアスタリスク(*)を指定できます。また、*:* の代わりに、1 つのアスタリスクを指定することもできます。
次元数(dim)は、X-array(1、2、または 3)と正確に一致している必要があります。
指定した次元のオカレンス数が、現在割り当てられているオカレンス数より小さい場合は、対応する次元のオカレンス数は変更されません。