4.5.1 COBOL登録集原文ファイルの規則
COBOL登録集原文ファイルからのバイナリフォーマット定義ファイルの生成機能で使用できるCOBOL登録集原文ファイルの記述形式について説明します。
この機能では,COBOL85言語の利用を前提としています。しかし,ここで説明する規則および形式に従って記述されたCOBOL登録集原文ファイルであれば使用できます。COBOL85言語の機能および文法については,マニュアル「COBOL85 言語」を参照してください。また,COBOL85言語の規則に従っている形式のほかに,サービスプラットフォームで独自に拡張した形式(構文拡張したCOBOL登録集原文)もあわせて使用することができます。
(1) 指定できるファイル形式
この機能で使用できるCOBOL登録集原文ファイルは,固定形式(拡張子:.cbf以外)だけです。フリー形式(拡張子:.cbf)のファイルはサポートしていません。
(2) COBOL登録集原文ファイルの記述規則
この機能で使用できるCOBOL登録集原文ファイルは,次の記述規則に従います。
-
COBOL登録集原文ファイルの文字コードはMS932である必要があります。
-
構文として正しいものを使用している必要があります。コンパイラが出力するメッセージに「重大エラー」または「警告エラー」が含まれていないことが前提です。
-
1〜6カラム目は,行番号としては使用されないで,6桁の半角空白(0x20)として扱われます。エラー情報に出力される行番号としても使用されません。
-
コメント行(7カラム目が「*」,「/」)は無視されます。
-
73カラム目以降のコメントは無視されます。
-
デバッグ行(7カラム目が「D」および「d」の行)は無視されます。
-
通常のCOBOLと同様に,7カラム目が「-」の行は継続行として扱われます。
-
タブ文字は1個の空白文字として扱われます。
-
全角空白文字は分離符として扱われますが,「;」および「,」は分離符として扱われません。
-
拡張コード文字と標準コード文字は非等価として扱われます。
-
次の語は予約語として扱われます。それ以外の語は利用者語として扱われます。
-
COMP
-
COMP-3
-
COMPUTATIONAL
-
COMPUTATIONAL-3
-
DISPLAY
-
FILLER
-
IS
-
NATIONAL
-
OCCURS
-
PIC
-
PICTURE
-
TIMES
-
USAGE
-
(3) 構文拡張したCOBOL登録集原文を使用する場合の記述規則の変更点
サービスプラットフォームで独自に構文拡張したCOBOL登録集原文を使用する場合,COBOL登録集原文(COBOL85言語の形式)の記述規則とは異なります。
以降で,COBOL登録集原文(COBOL85言語の形式)の記述規則との変更点を説明します。
(a) プログラム識別番号領域の撤廃
プログラム識別番号領域の撤廃によって,73カラム目以降もソースコードを記述できます。
COBOL登録集原文では,73カラム目以降はプログラム識別番号領域と呼ばれ,この領域に記述したコメントは無視されます。しかし,構文拡張したCOBOL登録集原文を使用する場合,次のことを考慮し,プログラム識別番号領域を撤廃しています。
-
指定できるオプションの増加に伴い,コード量が増加する。
-
COBOL登録集原文ファイルをExcelファイルから生成する場合,1行が短いと生成処理の難易度が高くなる。
(b) 予約語の追加
COBOL登録集原文の構文拡張に伴い,予約語を追加しています。
追加した予約語を次に示します。
-
BINARY
-
BIT
-
BY
-
COMMA
-
DATA
-
DELETE
-
DEPENDING
-
JUST
-
JUSTIFIED
-
LEFT
-
NULL
-
OF
-
ON
-
RIGHT
-
SIGN
-
SIZE
-
SPACE
-
STRING
-
TO
-
UNTIL
-
ZERO
(c) 構文拡張したCOBOL登録集原文共通の記述規則
各構文で共通の記述規則を次に示します。
- ●文字列定数の記述規則
-
文字列定数は,次のように文字列を「'」で囲みます。
'文字列'
なお,「'」自身を指定する場合は,「''」と記述してください。
- ●16進定数の記述規則
-
16進定数は,次のように16進数を「X'」と「'」で囲みます。
X'16進数'
- ●ノードとして指定するデータ項目の記述規則
-
ノードとして指定するデータ項目は,次のように記述します。
データ名A (OF データ名B)*
この記述は,データAがデータB内に存在することを意味しています。データBはデータAの親だけではなく,先祖のデータ項目を指定できます。ただし,データAを一意に特定できない場合はエラーになります。
これを基に,データA,データBおよびデータCが次に示す関係の場合のOFを用いた定義例を次に示します。
- パターン1
C └B └A
定義例
定義の可否
A
定義できる
A OF B
定義できる
A OF C
定義できる
A OF B OF C
定義できる
A OF C OF B
定義できない(CはBの子孫でないためエラーになる)
- パターン2
C └A └B └A
定義例
定義の可否
A
定義できない(Aを一意に特定できないためエラーになる)
A OF B
定義できる
A OF C
定義できない(Aを一意に特定できないためエラーになる)
A OF B OF C
定義できる
A OF C OF B
定義できない(CはBの子孫でないためエラーになる)
(d) データ名の最大長の拡張
データ名の最大長はCOBOLの仕様に合わせて30文字としていましたが,バイナリフォーマット定義のノード名と同様に256文字に拡張しました。
ノード名の最大長の拡張に伴い,構文チェックも次のように変更になります。
-
COBOL登録集原文のデータ名が256文字を超えている場合は構文エラーになります。
-
COBOL登録集原文を解析した結果,データ名が重複している場合,データ項目設定ページでデータ名が重複しないように別名が付加されます。この別名はデータ名に連番を付与して作成されます。別名の付加によって256文字を超えてしまう場合,データ名の種別によって別名の付加方法が次のとおり異なります。
データ名の種別
別名の付加方法
NCName型
別名を付加しません。※1
NCName型以外
データ名のうち,NCName型に適応しない文字を'_'に変更し,別名を付加します。※2
ただし,連番は付与されません。
(e) データ項目名の設定
数字だけの文字列は指定できません。指定した場合は,構文エラーとなります。