ILEでサブ・プロシージャーを呼び出す命令としてCALLB
と CALLP
とがある。
どちらもサブ・プロシージャーを呼び出す命令なのでどのように違うのか、やや紛らわしい点がある。
簡単に言ってしまえば、CALLB
が古くて、CALLP
が新しい命令である。
IBM は最初に CALLB
を発表したが、すぐに CALLP
を追加した。
CALLB
とはプロシージャーのプロトタイプを宣言しない呼び出しであり、CALLP
は
プロシージャーのプロトタイプを宣言してからプロシージャーを呼び出す方法である。
また、CALLB
はプロシージャー・パラメータの最後に戻り値を定義するがCALLP
は結果の
フィールドとして定義する。よって CALLB
による呼び出しでは CALLP
に比べて指定する
パラメータがひとつ余分に必要となる。
パラメータや戻り値を持たないプロシージャーの呼び出しは、どちらもほとんど見た目に
変わりが無い。
ただし米国雑誌などでは CALLP
の使用を強く推薦しているようである。
【 CALLB の例 】
C CALLB 'CGIPARM' C PARM 'SHCODE' FLD C PARM VALUE
【 CALLP の例 】
D*( CGIPARM のプロトタイプ宣言 ) D CGIPARM PR 256A D FLDNAM 10A Value C EVAL VALUE = CGIPARM('SHCODE')