CALLP 命令の使用

ユーザーは CALLP (プロトタイプ・プロシージャーの呼び出し) 命令を使って、任意の言語で書かれたプロトタイプ・プログラムまたはプロシージャーを呼び出すことができます。CALLP 命令は次の拡張因子 2 構文を使用します。
     C                   CALLP     NAME{ (PARM1 {:PARM2 ...}) }
自由形式演算では、命令拡張がない場合には CALLP を省略することができます。自由形式命令は次の形式のいずれかを使用することができます。
      /free
          callp name { (parm1 { :parm2 ...} ) };
          name( {parm1 {:parm2 ... }} );
      /end-free
プロトタイプ・プログラムまたはプロシージャーを呼び出すためには、次の概略ステップに従ってください。
  1. 呼び出されるプログラムまたはプロシージャーのプロトタイプを定義仕様書に 組み込んでください。このステップは、プロシージャーが呼び出しと同じモジュールに存在し、かつプロシージャーを呼び出すモジュールがほかにない場合はオプションです。
  2. 拡張演算項目 2 フィールドに、プログラムまたはプロシージャーの プロトタイプ名を入力し、パラメーターがあれば括弧に入れて、これに続けます。 パラメーターはコロン (:) で区切ります。 演算項目 1 はブランクでなければなりません。
次の例は、プロシージャー Switch の呼び出しを示します。このプロシージャーは、渡される 標識 (この場合には *IN10) の状態を変更します。
     C                   CALLP     Switch(*in10)

プログラム呼び出しでは、最大 255 パラメーターを使用することができ、 プロシージャー呼び出しでは、最大 399 パラメーターを使用することができます。

モジュール内のどこからでも CALLP を使用することができます。 プロトタイプにキーワード EXTPGM が指定されている場合には、呼び出しは動的外部 呼び出しになります。そうでない場合には、これはバインド・プロシージャー呼び出しです。

CALLP を使用して値を戻すプロシージャーを呼び出した場合には、その値 は呼び出し側には使用できないことに注意してください。 値が必要な場合は、式の中でプロトタイプ・プロシージャーを呼び出します。