HLASM ソースの解釈
HLASM コピーブックを処理するために、File Manager は HLASM コンパイラーを呼び出します。次に、対応する DS または DC フィールドと一緒に見つかった DSECT ごとにレコード・レイアウト (またはセグメント・レイアウト) を生成します。File Manager は、DS および DC フィールドを、ここに示すように解釈します。
- ブランク・フィールド名
- DS または DC ステートメントにフィールド名がない場合は、それに名前「*」が割り当てられます。
- 複数オペランド
- DS または DC ステートメントに複数のオペランドがある場合、フィールドはグループ・フィールドとして定義され、接尾部が「_On」(n はオペランドの相対番号) のオペランドごとに子エレメントが作成されます。例:
以下のように生成されます。REC_TYPE01 DSECT FIELD1 DS F,H,CL1
Ref Field Name Picture Type Start End Length **** Top of data **** 1 1 REC_TYPE01 AN 1 7 7 2 2 FIELD1 F,H,CL1 AN 1 7 7 3 3 FIELD1_O1 BI 1 4 4 4 3 FIELD1_O2 BI 5 6 2 5 3 FIELD1_O3 AN 7 7 1 **** End of data ****
- 複数値
- DS または DC オペランドに複数の値が割り当てられている場合は、接尾部が「_Vn」(n は値の相対番号) のオペランドごとに子エレメントと一緒にグループ・フィールドが定義されます。例:
以下のように生成されます。REC_TYPE01 DSECT FIELD1 DS F'1,2,3',H,CL1
Ref Field Name Picture Type Start End Length **** Top of data **** 1 1 REC_TYPE01 AN 1 15 15 2 2 FIELD1 F'1,2,3',H,CL1 AN 1 15 15 3 3 FIELD1_O1 AN 1 12 12 4 4 FIELD1_O1_V1 BI 1 4 4 5 4 FIELD1_O1_V2 BI 5 8 4 6 4 FIELD1_O1_V3 BI 9 12 4 7 3 FIELD1_O2 BI 13 14 2 8 3 FIELD1_O3 AN 15 15 1 **** End of data ****
- 複写因数
- DS または DC オペランドに 1 より大きい複写因数がある場合、結果のフィールドは、複写因数によって指定される回数だけ実行される単一次元フィールドとして扱われます。例:
以下のように生成されます。REC_TYPE01 DSECT FIELD1 DS 5F
Ref Field Name Picture Type Start End Length **** Top of data **** 1 1 REC_TYPE01 AN 1 20 20 2 2 FIELD1(5) F BI 1 4 4 **** End of data ****
- ビット長さ指定
- DS または DC にビット長さ指定がある場合、それはフィールド・タイプとは関係なくビット・フィールドとして定義されます。例:
以下のように生成されます。REC_TYPE01 DSECT FIELD1 DS AL.5
Ref Field Name Picture Type Start End Length **** Top of data **** 1 1 REC_TYPE01 AN 1 1 1 2 2 FIELD1 AL.5 BT 1 1 1 **** End of data ****
- DSECT またはレイアウト長さ
- レベル 1 フィールドは、どのフィールドについても必ず最大最終桁に設定されます。
- 再定義/範囲指定
- 拡張コピーブック選択を使用してテンプレートを作成する場合は、X 接頭部コマンドによって、COBOL REDEFINES または PL/I UNION ステートメントと同じ方法で、ORG フィールド名を解釈できます。