10.2 制限がある構文
COBOLソース解析で制限があるCOBOL2002の構文および機能について説明します。
制限の対象になる構文を含むCOBOLソースファイルを解析したときに,ソース解析情報が生成されるとエラーメッセージは出力されます。ソース解析情報が生成されないときは,エラーメッセージは出力されません。
COBOLソース解析で制限になる構文を次の表に示します。
項番 |
制限の対象 |
COBOLソース解析の動作 |
---|---|---|
1 |
次に示す文のファイルアクセス情報
|
解析を継続します。 ソース解析情報に生成されません。 ファイルアクセス情報の対象となる文を次に示します。
|
2 |
「データベース操作シミュレーション機能」のINCLUDE |
解析を継続します。 表名情報を出力する「SQLデータ操作機能」として認識します。 |
3 |
アドレス名および指標名 |
解析を継続します。 データ項目として認識しません。 |
4 |
節がコメントで終了しているCOBOLソースファイル |
解析を継続します。 節コメント行の文字列を取得できません。 |
5 |
ASSIGN句の定数に,Windowsのフォルダ名に使用できない文字列(¥/:*?<>|など)を指定している |
解析を継続します。 生成結果は不正になることがあります。 |
6 |
必須語の予約語が固定継続標識で複数行にわたって記述されているとき |
構文が認識できないため,構文に関連する情報が正しく抽出されません。該当する場合でも処理は継続します。
|
7 |
利用者定義語以外のCOBOLの語に全角文字を使用 |
全角文字を使用するとソースファイルが登録されないことがあります。また,ソースが登録できても予約語が認識されないで,ソース解析情報が正しく生成されないことがあります。 |
8 |
PROGRAM-IDを行の先頭から始めていないとき |
プログラムの登録時にプログラム名を取得できないため,エラーになります。 |
9 |
ENTRY文で定義した入口名 |
ENTRY文で定義した入口名は,解析/生成の対象にしません。 |
10 |
数字編集項目の小数部に浮動挿入文字が存在 |
数字編集項目の小数部に,次に示す浮動挿入文字があると,[プログラムデータ]画面の「ファイル節,作業場所節,連絡節のデータ定義」属性欄の浮動挿入文字は「9」と表示されます。
正しい属性は,ソース表示のデータ定義を参照してください。 (例) 「PIC ¥.¥¥」は「¥.99」と表示 「PIC +.++」は「+.99」と表示 「PIC -.--」は「-.99」と表示 |
11 |
報告書節のデータ項目数と記述項数 |
報告書節がある場合,報告書節のデータ項目は,[プログラム詳細]画面の「プログラム概要」のデータ項目数と記述項数に加算されません。 |
12 |
節見出しで始まらない手続き部先頭の節 |
次に示す節を仮定して解析を継続します。
COBOLソース解析時の注意事項を次に示します。
|
13 |
同一プログラム内で01レベルデータ項目の名前(ファイルレコードの場合はファイル名で修飾した名前)が重複(参照されていない場合) |
最初のデータ項目の名前はそのままで解析し,2番目以降のデータ項目の名前には"(n)"の重複番号(n=2〜)を付加して解析を継続します。 |
14 |
特殊名段落でCURRENCY SIGN句を指定した場合のPICTURE文字列中の通貨編集用文字 |
PICTURE文字列中の通貨編集用文字は常に通貨記号(¥)で表示されます。 (例)特殊名段落でCURRENCY SIGN IS '$'が指定されている場合 「PIC $$$,$$$,$$$」は「¥¥¥,¥¥¥,¥¥¥」と表示されます。 |
15 |
定数の連結式 |
定数の連結式は,順番に評価して1つの定数に変換します。 (例1) 'A' & 'B' & 'C' → 'ABC' 'A' & X'42' & 'C' → 'ABC' X'41' & 'B' & X'43' → 'ABC' '41' & X'42' & X'43' → X'414243' N'あい' & N'う' → N'あいう' NX'82a082a2' & N'う' → NX'82a082a282a4' N'あいう' & NX'4142' → N'あいうAB' ただし,連結後の英数字定数や日本語定数が非印字可能文字(制御文字や非シフトSJIS文字)を含む場合は,それぞれ16進英数字定数や16進日本語定数に変換します。また,-JPNコンパイラオプション指定時に日本語の定数(日本語定数および16進日本語定数)と,英数字の定数(英数字定数および16進英数字定数)を連結した場合,連結後の日本語定数や16進日本語定数のバイトサイズが奇数になる場合は,それぞれ英数字定数,16進英数字定数に変換します。 (例2)連結後の英数字定数や日本語定数が非印字可能文字を含む場合 'ABC' & X'00' → X'41424300' N'あいう' & NX'0020' → NX'82a082a282a40020' (例3)日本語の定数と英数字の定数を連結した場合 'あいう' & 'AB' → N'あいうAB' N'あいう' & 'ABC' → 'あいうABC' NX'82a082a282a4' & 'AB' → NX'82a082a24142' NX'82a082a282a4' & 'ABC' → X'82a082a2414243' |
16 |
連絡節に指定されたLIMIT指定のない動的長基本項目のサイズ |
連絡節に指定されたLIMIT指定のない動的長基本項目は実行時までサイズが決定しません。このため,文字列長を0として,動的長英数字項目の場合は1,動的長日本語項目の場合は2がサイズとして表示されます。 |
17 |
見出しの必須語が省略されているとき |
構文が認識できないため,構文に関連する情報が正しく抽出されません。該当する場合でも処理は継続します。
|
18 |
次の見出しが行先頭から始まっていない場合
|
見出しは,常に行先頭から始まっているものとして処理します。 部の終わりは,次の部見出しまたはEND PROGRAMの1つ前の行として処理します。 節の終わりは,次の節見出し,部見出しまたはEND PROGRAMの1つ前の行として処理します。 段落の終わりは,次の段落見出し,節見出し,部見出しまたはEND PROGRAMの1つ前の行として処理します。 このため,例に示すように節や段落を同一行に複数書いた場合,処理結果は期待どおりになりません。
この例では,行内の最後の節見出しより前に書かれた節見出しの節1は,開始行より終了行が前となるため空の扱いとなり,その節に属する段落1はないものとして扱われます。また,その節に属するすべての実行文は,行の最後の節に属するものとして扱われます。 |