自由形式の定義ステートメント
自由形式のデータ定義ステートメントは、宣言命令コードの 1 つで 始まり、その後に名前が続くか、項目に名前がない場合は *N が続き、 さらにその後にキーワードが続き、最後はセミコロンで終わります。
宣言命令コードは次のとおりです。
- DCL-C
- 名前付き定数を定義します
- DCL-DS
- データ構造を定義します
- END-DS
- データ構造を終了します
- {DCL-PARM}
- パラメーターを定義します
- DCL-PI
- プロシージャー・インターフェースを定義します
- END-PI
- プロシージャー・インターフェースを終了します
- DCL-PR
- プロトタイプを定義します
- END-PR
- プロトタイプを終了します
- DCL-S
- 独立フィールドを定義します
- {DCL-SUBF}
- サブフィールドを定義します
必要な場合、定義を複数行に分割してもかまいません。
以下は等価な定義です。
- 定義は 1 行に指定されています。
- 定義は複数行に分割されています。
- 名前は 2 行に分割されていて、キーワードは名前の 2 つ目の部分と同じ行に指定されています。
- 名前は 2 行に分割されていて、キーワードは名前の 2 つ目の部分の次の行に指定されています。
注: 名前の最後の部分の後には省略符号は使用されません。 自由形式の仕様書では、省略符号は、名前が 2 つの部分に分かれていて別々の行に指定されている場合に、それら 2 つの部分を 結合するためにのみ使用されます。 名前をステートメントの残りの部分に結合するためには使用されません。
DCL-S abcdefghij CHAR(10); 1
DCL-S 2
abcdefghij
CHAR
(
10
)
;
DCL-S abcde... 3
fghij CHAR(10);
DCL-S abcde... 4
fghij
CHAR(10);
自由形式のデータ定義ステートメントの内部で使用を許可されている指示は、
/IF、/ELSEIF、/ELSE、および /ENDIF のみです。
DCL-S G_Working_Date DATE(*ISO)
/IF DEFINED(main_module)
EXPORT INZ(*SYS)
/ELSE
IMPORT
/ENDIF
;
注: 項目の名前が、自由形式演算内で使用を許可されている命令コードのいずれかと同じである場合を除いて、
DCL-PARM または DCL-SUBF は任意指定です。
LIKEREC および LIKEDS キーワードなしで定義されるデータ構造
が自由形式ステートメントで始まっているか、または、
サブフィールドのどれかが自由形式ステートメントで指定されている場合、
そのデータ構造は END-DS ステートメントで終わる必要があります。
DCL-DS ds1;
subf1 CHAR(10);
END-DS;
D ds2 DS
subf2 CHAR(10);
END-DS;
DCL-DS ds3;
D subf3 10a
END-DS;
同様に、プロトタイプまたはプロシージャー・インターフェース
が自由形式ステートメントで始まっているか、パラメーターのどれかが自由形式ステートメント
で指定されている場合、そのプロトタイプまたはプロシージャー・インターフェース
は END-PR または END-PI ステートメントで終わる必要があります。
DCL-PR pr1;
subf1 CHAR(10);
END-PR;
D pr2 PR
parm2 CHAR(10);
END-PR;
DCL-PI pi3;
D parm3 10a
END-PI;
サブフィールドのないデータ構造の場合、END-DS を DCL-DS ステートメントの
一部として、セミコロンの直前に指定できます。
DCL-DS ds1 LEN(100) END-DS;
同様に、プロシージャー・インターフェースまたはプロトタイプにパラメーターがない場合、
END-PI または END-PR を DCL-PI または DCL-PR ステートメントの
一部として、セミコロンの直前に指定できます。
DCL-PR pr1 INT(10) END-PR;
