17.1.3 引数の受け渡しの規則

引数の受け渡しの規則について,説明します。

<この項の構成>
(1) CALL文での引数の整合性チェック
(2) CALL文での定数指定の引数
(3) INVOKE文での定数指定の引数
(4) INVOKE文でBY指定を省略した場合

(1) CALL文での引数の整合性チェック

プログラムのコンパイル時に引数の適合チェックのオプション(-DebugCompati,または-TDInf)を指定すると,CALL文でのプログラム間の引数の整合性をチェックできます。ただし,INVOKE文では有効となりません。

引数の整合性チェックについては,「36.5 プログラム間整合性チェック」を参照してください。

(2) CALL文での定数指定の引数

値渡し(BY VALUE指定)のCALL文では,引数に定数を指定できます。

COBOLプログラム間で定数の引数を渡す場合の型の対応について,次に示します。

表17-1 COBOLプログラム間でのデータ項目の型の対応

受け取り側作用対象送り出し側作用対象
呼び出し元に指定された定数
数字定数英数字定数浮動小数点数字定数ZERONULL
固定長集団項目× ×× 
英字項目 ×  
英数字項目 ×  
英数字編集項目  ×  
外部10進項目 ×  
内部10進項目  ×  
2進項目 × 
数字編集項目  ×  
指標データ項目× ××
オブジェクト参照× ×× 
外部浮動小数点数字項目  ×  
単精度内部浮動小数点数字項目×××××
倍精度内部浮動小数点数字項目××××
アドレスデータ項目× ××
日本語項目  ×  
日本語編集項目  ×  
外部ブール項目  ×  
内部ブール項目  ×  
ポインタ項目× ××
(凡例)
○:指定できる
空白:受け渡しできるかどうかはプラットフォームに依存するため,動作保証についてはユーザ責任とする
×:指定してはならない(指定したときの結果は保証しない)
注※
UNIX32の場合は「空白」になります。

(3) INVOKE文での定数指定の引数

値渡し(BY VALUE指定)のINVOKE文では,引数に定数を指定できます。

INVOKE文に指定された実引数と呼び起こされるメソッドの仮引数は,適合していなければなりません。双方が適合している場合,実引数のデータ属性は,仮引数に指定されたデータ属性と同様になります。

(4) INVOKE文でBY指定を省略した場合

INVOKE文でBY指定を省略した場合,指定された引数の属性,および呼び出し先メソッドに定義された引数の情報によって,仮定されるBY指定が異なります。INVOKE文でBY指定を省略した場合に仮定されるBY指定の内容について,次に示します。