RPG
76. CALLB と CALLP との違い
ILEでサブ・プロシージャーを呼び出す命令として CALLBCALLP とがある。
どちらもサブ・プロシージャーを呼び出す命令なので どのように違うのか、やや紛らわしい点がある。
簡単に言ってしまえば、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')


PREVIOUS INDEX NEXT
HOME