初期値(および RESET ステートメント)

このドキュメントでは、ユーザー定義変数のデフォルトの初期値、ユーザー定義変数への初期値の割り当て方法、およびフィールド値をデフォルトの初期値または DEFINE DATA ステートメントで定義した初期値に戻すための RESET ステートメントの使用方法について説明します。

このドキュメントでは、次のトピックについて説明します。

注意:
例えば、配列に初期値を割り当てる定義については、『ステートメント』ドキュメントの「例 2 - DEFINE DATA(配列の定義/初期化)」を参照してください。


ユーザー定義変数/配列のデフォルトの初期値

フィールドに初期値を指定しない場合、そのフォーマットに応じたデフォルトの初期値でフィールドは初期化されます。

Format デフォルトの初期値
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 システム変数の割り当て

フィールドの初期値として、Natural システム変数の値を指定することもできます。

例:

以下の例では、システム変数 *DATX が初期値を指定するために使用されています。

DEFINE DATA LOCAL 
1 #MYDATE (D) INIT <*DATX> 
END-DEFINE 
...

英数字/Unicode 変数の初期値としての文字列の割り当て

初期値として、特定の文字列を変数の全体または一部に挿入できます(Natural データフォーマット A または U の変数でのみ可能)。

  • フィールド全体を埋める場合
    FULL LENGTH <character-string> オプションを使用して、フィールド全体を特定の文字で埋めます。

    以下の例では、フィールド全体をアスタリスク(*)で埋めています。

    DEFINE DATA LOCAL 
    1 #FIELD (A25) INIT FULL LENGTH <'*'> 
    END-DEFINE 
    ...
  • フィールドの最初の n 文字を埋める場合
    LENGTH n <character-string> オプションを使用して、フィールドの先頭 n 文字を特定の文字で埋めます。

    以下の例では、フィールドの先頭 4 文字を感嘆符(!)で埋めています。

    DEFINE DATA LOCAL 
    1 #FIELD (A25) INIT LENGTH 4 <'!'> 
    END-DEFINE 
    ...

ユーザー定義変数の初期値へのリセット

RESET ステートメントは、フィールドの値をリセットするために使用します。以下の 2 つのオプションを使用できます。

注意:

  1. DEFINE DATA ステートメントで CONSTANT 節を指定して宣言したフィールドは、内容を変更できないので、RESET ステートメントで参照できません。
  2. レポーティングモードでは、プログラムに DEFINE DATA LOCAL ステートメントが含まれていなければ、RESET ステートメントを使用して変数を定義することもできます。

デフォルトの初期値へのリセット

RESETINITIAL なし)は、指定された各フィールドの内容をフォーマットに依存したデフォルトの初期値に設定します。

例:

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 
... 

DEFINE DATA で定義した初期値へのリセット

RESET INITIAL は、指定された各フィールドを DEFINE DATA ステートメントのフィールド定義に従った初期値に設定します。

DEFINE DATA ステートメントで INIT 節を指定せずに宣言したフィールドに対して、RESET INITIALRESETINITIAL なし)と同じ効果があります。

例:

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
...