COBOL2002 使用の手引 手引編


36.5.1 整合性チェックの内容

-DebugCompatiまたは-TDInfオプションを指定すると,次の項目についてプログラム間の整合性をチェックできます。

コンパイラオプションと整合性チェックの関係

呼び出し元プログラム,呼び出し先プログラムのコンパイル時に指定したオプションと,整合性チェックの関係を次に示します。

呼び出し先

呼び出し元

-DebugCompati

-TDInf

-DebugCompati,-TDInfなし

-DebugCompati

×

-TDInf

×

-DebugCompati,-TDInfなし

×

×

×

(凡例)

○:整合性チェックが行われる

△:テストデバッガを使用したデバッグ時だけ,整合性チェックが行われる

×:整合性チェックは行われない

規則

プログラム間の整合性チェックに関する規則を次に示します。

  • 整合性チェックでプログラム間で受け渡す引数および返却項目に矛盾がある場合は,メッセージが出力され,プログラムが異常終了します。

    ただし,-DebugCompatiオプションの指定がないプログラムをテストデバッグする場合は,環境変数CBLPRMCHKWにYESを指定すると処理を続行できます。また,環境変数CBLPRMCHKWにNOCHKを指定すると,-DebugCompatiオプション指定時およびテストデバッグ時に,プログラム間整合性チェックで不整合があってもエラーとしないで,処理を続行できます。詳細は,「36.5.2 整合性チェックの警告エラー出力」を参照してください。

  • 整合性をチェックするのは,CALL文でCOBOLプログラムを呼び出すときで,実行時にチェックします。

  • CALL定数で内側のプログラムを呼び出す場合,-DebugCompatiオプションまたは-TDInfオプションの指定がないときも,翻訳時に整合性をチェックします。

  • COBOLプログラムとCプログラムとの間のチェックはしません。

  • 引数が可変長項目のとき,引数の長さはチェックしません。

  • -Main,System,-Main,V3オプションを指定したプログラムに対しては,引数の長さ,引数の個数をチェックしません。

  • -SimMainオプションを指定した実行可能ファイルで,最初に制御が渡るプログラムでの引数チェックはしません。

  • BY VALUE指定の浮動小数点項目は,送り出し側作用対象と受け取り側作用対象で同じ属性でなければなりません。属性が異なる場合,整合性チェックでエラーとなります。

  • -DebugCompatiオプションを指定すると,一部の例外名に対するTURN指令が無効となります。詳細は「21.8.2 例外検出での注意事項」の「(4) コンパイラオプションとの関連性」を参照してください。

  • 引数が動的長基本項目の場合,送り出し側作用対象と受け取り側作用対象がともに動的長基本項目で,かつその字類が一致しなければなりません。また,LIMIT指定が双方に指定されている場合は,その値が一致していなければなりません。