プロシージャー・ポインター・データ・タイプ

プロシージャー・ポインターは、プロシージャーまたは関数を指すために使 用されます。 プロシージャー・ポインターは、プログラムにバインドされた入り口点を指します。 プロシージャー・ポインターは、定義仕様書で定義されます。

プロシージャー・ポインター・フィールドは 16 バイトの長さでなければなら ず、16 バイト境界で位置合わせされていなければなりません。 境界位置合わせについてのこの要件によって、データ構造のポインター・サブフィ ールドが前のフィールドに直接続かない原因となったり、また、複数オカレンス・データ 構造で発生が連続しない原因となる可能性があります。 サブフィールドの位置合わせの詳細については、データ構造サブフィールドの位置合わせを参照して ください。

プロシージャー・ポインターのデフォルトの初期化値は *NULL です。

図 98. ポインターの定義
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
  *
  * 基本ポインター・フィールドを定義し、データ構造 My_Struct の
  * アドレスに初期化します。
  *
 D  My_Struct      DS
 D   My_array                    10    DIM(50)
 D
 D Ptr1            S             16*   INZ(%ADDR(My_Struct))
  *
  * 同様に、長さが定義されない場合にはデフォルトの長さ 16 が使用されます。
  *
 D Ptr1            S               *   INZ(%ADDR(My_Struct))
  *
  * プロシージャー・ポインター・フィールドを定義し、NULL に初期化します。
  *
 D Ptr1            S             16*   PROCPTR INZ(*NULL)
  *
  * プロシージャー・ポインター・フィールドを定義し、
  * プロシージャー My_Proc のアドレスに初期化します。
  *
 D Ptr1            S             16*   PROCPTR INZ(%PADDR(My_Proc))
  *
  * 複数回繰返しデータ構造でのポインターを定義し、
  * ストレージの計画を立てます。
  *
 DDataS           DS                   OCCURS(2)
 D ptr1                            *
 D ptr2                            *
 D Switch                         1A
REQTEXT