Hitachi

COBOL2002 Professional Tool Kit COBOLソース解析ガイド


10.2 制限がある構文

COBOLソース解析で制限があるCOBOL2002の構文および機能について説明します。

制限の対象になる構文を含むCOBOLソースファイルを解析したときに,ソース解析情報が生成されるとエラーメッセージは出力されます。ソース解析情報が生成されないときは,エラーメッセージは出力されません。

COBOLソース解析で制限になる構文を次の表に示します。

表10‒2 COBOLソース解析で制限になる構文

項番

制限の対象

COBOLソース解析の動作

1

次に示す文のファイルアクセス情報

  • CLOSE

  • MERGE

  • OPEN

  • RELEASE

  • RETURN

  • START

  • SORT

  • USE

  • UNLOCK

解析を継続します。

ソース解析情報に生成されません。

ファイルアクセス情報の対象となる文を次に示します。

  • READ

  • WRITE

  • REWRITE

  • DELETE

2

「データベース操作シミュレーション機能」のINCLUDE

解析を継続します。

表名情報を出力する「SQLデータ操作機能」として認識します。

3

アドレス名および指標名

解析を継続します。

データ項目として認識しません。

4

節がコメントで終了しているCOBOLソースファイル

解析を継続します。

節コメント行の文字列を取得できません。

5

ASSIGN句の定数に,Windowsのフォルダ名に使用できない文字列(¥/:*?<>|など)を指定している

解析を継続します。

生成結果は不正になることがあります。

6

必須語の予約語が固定継続標識で複数行にわたって記述されているとき

構文が認識できないため,構文に関連する情報が正しく抽出されません。該当する場合でも処理は継続します。

  • 埋め込みSQL文の必須語EXEC SQL/END-EXECの場合

    埋め込みSQL文の開始と終了が認識できないため,表(DB)のアクセス情報(CRUD情報)が抽出されません。

  • ファイル入出力文の必須語READ/WRITE/REWRITE/DELETEの場合

    入出力文を認識できないため,ファイルのアクセス情報が抽出されません。

7

利用者定義語以外のCOBOLの語に全角文字を使用

全角文字を使用するとソースファイルが登録されないことがあります。また,ソースが登録できても予約語が認識されないで,ソース解析情報が正しく生成されないことがあります。

8

PROGRAM-IDを行の先頭から始めていないとき

プログラムの登録時にプログラム名を取得できないため,エラーになります。

9

ENTRY文で定義した入口名

ENTRY文で定義した入口名は,解析/生成の対象にしません。

10

数字編集項目の小数部に浮動挿入文字が存在

数字編集項目の小数部に,次に示す浮動挿入文字があると,[プログラムデータ]画面の「ファイル節,作業場所節,連絡節のデータ定義」属性欄の浮動挿入文字は「9」と表示されます。

  • ¥

  • +

  • -

正しい属性は,ソース表示のデータ定義を参照してください。

(例)

「PIC ¥.¥¥」は「¥.99」と表示

「PIC +.++」は「+.99」と表示

「PIC -.--」は「-.99」と表示

11

報告書節のデータ項目数と記述項数

報告書節がある場合,報告書節のデータ項目は,[プログラム詳細]画面の「プログラム概要」のデータ項目数と記述項数に加算されません。

12

節見出しで始まらない手続き部先頭の節

次に示す節を仮定して解析を継続します。

  • 節名:{PROCEDURE_START}

  • 節の開始行:手続き部の最初の実行文または段落の開始行

COBOLソース解析時の注意事項を次に示します。

  • 節{PROCEDURE_START}の節コメント行は抽出できません。

  • -SQL,XDMコンパイラオプションが指定されている場合,埋め込みSQL文(EXEC SQL〜END-EXEC)は,一律,覚え書きの実行文として扱われます。このため,実行文でないDECLARE CURSOR文や埋め込み例外宣言も,節見出しのない手続き部先頭に記述されていれば,節{PROCEDURE_START}の先頭として扱われます。

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

見出しの必須語が省略されているとき

構文が認識できないため,構文に関連する情報が正しく抽出されません。該当する場合でも処理は継続します。

  • 見出しEND DECLARATIVESの必須語DECLARATIVESが省略されている場合

    見出しEND DECLARATIVESを認識できませんが,手続き部分の最初の節の前にある原文語ENDを含む行を見出しEND DECLARATIVESの行と見なした解析情報が表示/出力されます。

18

次の見出しが行先頭から始まっていない場合

  • 部見出し

  • 節見出し

  • 段落見出し

  • END PROGRAM

見出しは,常に行先頭から始まっているものとして処理します。

部の終わりは,次の部見出しまたはEND PROGRAMの1つ前の行として処理します。

節の終わりは,次の節見出し,部見出しまたはEND PROGRAMの1つ前の行として処理します。

段落の終わりは,次の段落見出し,節見出し,部見出しまたはEND PROGRAMの1つ前の行として処理します。

このため,例に示すように節や段落を同一行に複数書いた場合,処理結果は期待どおりになりません。

(例)

節1 SECTION. 段落1. 実行文… 節2 SECTION. 段落2. …

この例では,行内の最後の節見出しより前に書かれた節見出しの節1は,開始行より終了行が前となるため空の扱いとなり,その節に属する段落1はないものとして扱われます。また,その節に属するすべての実行文は,行の最後の節に属するものとして扱われます。