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