【COBOL Compiler Enterprise Edition】SQL文の展開による引数の数が異なるコンパイルエラーについて
質問内容
SQLで記述したプログラムをコンパイルするとエラーが出力されます。
000003 EXEC SQL
000004 SELECT COUNT(*)
000005 INTO :H-CNT
000006 FROM テーブル名
000007 WHERE 項目1 = :ホスト変数1
000008 END-EXEC
000009 W-CNT
COBOL85 for IPFではコンパイルエラーは出力されませんでした。
なぜコンパイルエラーが出力されるようになったのでしょうか。
回答内容
ソース中のSQL記述(03 EXEC SQL ~ 08 END-EXEC)をPro*COBOLで展開すると、「CALL "SQLBEX" USING A B C」のようなCOBOLソースになります。
これに続けて変数名(W-CNT)が記述されていると、「CALL "SQLBEX" USING A B C W-CNT」のように SQLBEXを4つの引数でCALLしていると解釈され個数の不一致になります。
プログラム中に引数の個数のパターンが複数ある際に、COBOL85 for IPFはエラーにしていないのに対し、COBOL V1はエラーにするように仕様が変更されたためコンパイルエラーが出力されるようになりました。
09行目を削除することによりコンパイルエラーは解消されます。
【確認済みのバージョン】すべて
【確認済みの対象OS】Red Hat Linux
製品名カテゴリ
-
コンテンツID:
3150106347
-
公開日:
2013年10月25日
-
最終更新日:2013年10月25日
アンケート
サポート情報充実のためアンケートにご協力をお願いいたします。
コメント欄: