ポインターと LENGTH OF 特殊レジスターの併用

LENGTH OF 特殊レジスターには、ID によって使用されるバイト数が入れられます。 このレジスターは、ポインター・データ項目やプロシージャー・ポインター・データ項目の値 16 を戻します。

手続き部で、LENGTH OF 特殊レジスターの暗黙定義と同じ定義の数値データ項目が使用される場所ならどこでも LENGTH OF を使用できます。 ただし、LENGTH OF を添え字または受け取りデータ項目として使用することはできません。 LENGTH OF には、次の暗黙の定義があります。

USAGE IS BINARY, PICTURE 9(9)

次の例で、ポインターと LENGTH OF を併用する方法を示します。

 WORKING-STORAGE SECTION.
  77  APTR  USAGE POINTER.
  01  AB.
      05  BPTR  USAGE PROCEDURE-POINTER.
      05  BVAR  PIC S9(3) PACKED-DECIMAL.
      05  CVAR  PIC S9(3) PACKED-DECIMAL.
 PROCEDURE DIVISION.
      MOVE LENGTH OF AB TO BVAR.
      MOVE LENGTH OF BPTR TO CVAR.

この例では、グループ項目 AB の長さが変数 BVAR に移動されます。 BPTR の長さは 16 バイトで、BVAR 変数と CVAR 変数の長さは両方とも 2 バイトなので、BVAR の値は 20 です。 CVAR は値 16 を受け取ります。

LENGTH OF 特殊レジスターを使用するなら、ユーザー・スペース中のデータ構造をセットアップしたり、 別のプログラムから受け取るアドレスを増やしたりすることができます。 LENGTH OF 特殊レジスターを使用してユーザー・スペース中のデータ構造を定義するプログラムの例については 図 82 を参照してください。