17.1.3 引数の受け渡しの規則
引数の受け渡しの規則について,説明します。
(1) CALL文での引数の整合性チェック
プログラムのコンパイル時に引数の適合チェックのオプション(-DebugCompati,または-TDInf)を指定すると,CALL文でのプログラム間の引数の整合性をチェックできます。ただし,INVOKE文では有効となりません。
引数の整合性チェックについては,「36.5 プログラム間整合性チェック」を参照してください。
(2) CALL文での定数指定の引数
値渡し(BY VALUE指定)のCALL文では,引数に定数を指定できます。
-
数字定数,およびZEROは4バイトの2進形式として設定されます。
-
浮動小数点数字定数は,倍精度浮動小数点形式として設定されます。
-
AIX(32),Linux(x86)の場合,NULLはポインタ(4バイト2進形式)として設定されます。
-
AIX(64),Linux(x64)の場合,NULLはポインタ(8バイト2進形式)として設定されます。
COBOLプログラム間で定数の引数を渡す場合の型の対応について,次に示します。
- (凡例)
-
○:指定できる
空白:受け渡しできるかどうかはプラットフォームに依存するため,動作保証についてはユーザ責任とする
×:指定してはならない(指定したときの結果は保証しない)
- 注※
-
AIX(32),Linux(x86)の場合は「空白」になります。
(3) INVOKE文での定数指定の引数
値渡し(BY VALUE指定)のINVOKE文では,引数に定数を指定できます。
INVOKE文に指定された実引数と呼び起こされるメソッドの仮引数は,適合していなければなりません。双方が適合している場合,実引数のデータ属性は,仮引数に指定されたデータ属性と同様になります。
(4) INVOKE文でBY指定を省略した場合
INVOKE文でBY指定を省略した場合,指定された引数の属性,および呼び出し先メソッドに定義された引数の情報によって,仮定されるBY指定が異なります。INVOKE文でBY指定を省略した場合に仮定されるBY指定の内容について,次に示します。
-
INVOKE文にクラス名を指定した場合,または指定した一意名のデータ項目が普遍的オブジェクト参照でない場合は,次の表に示すBY指定が仮定されます。
表17‒2 INVOKE文でBY指定を省略した場合に仮定されるBY指定の属性 INVOKE文でBY指定を省略した引数の種別
呼ばれるメソッド定義の引数のBY指定
REFERENCE
VALUE
ADDRESS OF 一意名
REFERENCE
REFERENCE
ファクトリ定義,オブジェクト定義
CONTENT
VALUE
プログラム定義
関数定義
メソッド定義
ファイル節※
作業場所節※
局所場所節
連絡節
通信節※
REFERENCE
VALUE
画面節(WINDOW SECTION)※
サブスキーマ節※
CONTENT
VALUE
- 注※
-
メソッド定義には指定できません。
-
INVOKE文に指定した一意名のデータ項目が普遍的オブジェクト参照の場合,BY REFERENCEが仮定されます。