%PADDR (プロシージャー・アドレスの検索)
%PADDR(string|prototype)
%PADDR はプロシージャー・ポインター・タイプの値を戻します。 この値は、引数として指定された入り口点のアドレスです。
%PADDR はプロシージャー・ポインター・タイプの項目とだけ比較することが でき、プロシージャー・ポインター・タイプの項目にだけ割り当てることができ ます。
%PADDR に対するパラメーターは、文字定数またはプロトタイプ名でなければなりません。 プロシージャーのプロトタイプが、そのプロシージャー・インターフェースから暗黙的に定義されている場合、 プロトタイプ名はプロシージャー名と同じです。
文字定数は、文字リテラルまたは 16 進数リテラル、あるいは文字リテラル または 16 進数リテラルを表す定数名でなければなりません。 文字定数が使用される場合、これは名前によって入り口点を示しています。
プロトタイプは、結合呼び出し用のプロトタイプでなければなりません。EXTPGM キーワードは使用できません。プロトタイプによって示される入り口点は、プロトタイプの EXTPROC キーワードに指定されているプロシージャーになります。EXTPROC キーワードが指定されていない場合は、入り口点はプロトタイプ名 (英大文字) と同じになります。
図 1. 入り口点のある %PADDR の例
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
D
D PROC S * PROCPTR
D INZ (%PADDR ('FIRSTPROG'))
D PROC1 S * PROCPTR
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++
*
* The following statement calls procedure 'FIRSTPROG'.
*
C CALLB PROC
*-----------------------------------------------------------------
* The following statements call procedure 'NextProg'.
* This a C procedure and is in mixed case. Note that
* the procedure name is case sensitive.
*
C EVAL PROC1 = %PADDR ('NextProg')
C CALLB PROC1