このドキュメントでは、ユーザー定義変数のデフォルトの初期値、ユーザー定義変数への初期値の割り当て方法、およびフィールド値をデフォルトの初期値または DEFINE DATA
ステートメントで定義した初期値に戻すための RESET
ステートメントの使用方法について説明します。
このドキュメントでは、次のトピックについて説明します。
フィールドに初期値を指定しない場合、そのフォーマットに応じたデフォルトの初期値でフィールドは初期化されます。
フォーマット | デフォルトの初期値 |
---|---|
B、F、I、N、P | 0 |
A、U | blank |
L | F(ALSE) |
D | D' ' |
T | T'00:00:00' |
C | (AD=D )
|
オブジェクトハンドル | NULL-HANDLE |
DEFINE DATA
ステートメントでは、ユーザー定義変数に初期値を割り当てることができます。 初期値が英数字の場合、アポストロフィで囲む必要があります。
変更可能な初期値を変数/配列に割り当てる場合、DEFINE DATA
ステートメントの変数定義の後に、キーワード INIT
とともに山カッコ(< と >)で囲んだ初期値を指定します。 割り当てられた値は、変数/配列が参照されるたびに使用されます。 割り当てられた値は、プログラムの実行中に変更できます。
例:
DEFINE DATA LOCAL 1 #FIELDA (N3) INIT <100> 1 #FIELDB (A20) INIT <'ABC'> END-DEFINE ...
変数/配列を名前付き定数として扱う場合、DEFINE DATA
ステートメントの変数定義の後に、キーワード CONSTANT
とともに山カッコ(< と >)で囲んだ初期値を指定します。 割り当てられた定数値は、変数/配列が参照されるたびに使用されます。 割り当てられた値は、プログラムの実行中には変更できません。
例:
DEFINE DATA LOCAL 1 #FIELDA (N3) CONST <100> 1 #FIELDB (A20) CONST <'ABC'> END-DEFINE ...
フィールドの初期値として、Natural システム変数の値を指定することもできます。
例:
以下の例では、システム変数 *DATX
が初期値を指定するために使用されています。
DEFINE DATA LOCAL 1 #MYDATE (D) INIT <*DATX> END-DEFINE ...
初期値として、特定の 1 文字または文字列で、変数全体または変数の一部を埋めることができます(英数字変数にのみ有効)。
フィールド全体を埋める場合
FULL LENGTH <character(s)>
オプションを使用して、フィールド全体を特定の文字(列)で埋めます。
以下の例では、フィールド全体をアスタリスク(*)で埋めています。
DEFINE DATA LOCAL 1 #FIELD (A25) INIT FULL LENGTH <'*'> END-DEFINE ...
フィールドの最初の n 文字を埋める場合
LENGTH n <character(s)>
オプションを使用して、フィールドの先頭 n 文字を特定の文字(列)で埋めます。
以下の例では、フィールドの先頭 4 文字を感嘆符(!)で埋めています。
DEFINE DATA LOCAL 1 #FIELD (A25) INIT LENGTH 4 <'!'> END-DEFINE ...
RESET
ステートメントは、フィールドの値をリセットするために使用します。 以下の 2 つのオプションを使用できます。
注意:
DEFINE DATA
ステートメントで CONSTANT
節を指定して宣言したフィールドは、内容を変更できないので、RESET
ステートメントで参照できません。
DEFINE DATA LOCAL
ステートメントが含まれていなければ、RESET
ステートメントを使用して変数を定義することもできます。
RESET
(INITIAL
なし)は、指定された各フィールドの内容をフォーマットに依存したデフォルトの初期値に設定します。
例:
DEFINE DATA LOCAL 1 #FIELDA (N3) INIT <100> 1 #FIELDB (A20) INIT <'ABC'> 1 #FIELDC (I4) INIT <5> END-DEFINE ... ... RESET #FIELDA /* resets field value to default initial value ...
RESET INITIAL
は、指定された各フィールドを DEFINE DATA
ステートメントのフィールド定義に従った初期値に設定します。
DEFINE DATA
ステートメントで INIT
節を指定せずに宣言したフィールドに対して、RESET INITIAL
は RESET
(INITIAL
なし)と同じ効果を持ちます。
例:
DEFINE DATA LOCAL 1 #FIELDA (N3) INIT <100> 1 #FIELDB (A20) INIT <'ABC'> 1 #FIELDC (I4) INIT <5> END-DEFINE ... RESET INITIAL #FIELDA #FIELDB #FIELDC /* resets field values to initial values as defined in DEFINE DATA ...