バージョン 4.2.5
 —  システム関数  —

POS - フィールド ID 関数

フォーマット/長さ: I4

システム関数 POS(field-name) の内容は、システム関数で指定される名前を持つフィールドの内部識別子になります。

POS(field-name) を使用すると、マップ内の位置と関係なく、特定のフィールドを特定できます。 これは、マップ内のフィールドのシーケンスと数が変更されても、POS(field-name) は引き続き同じフィールドを一意に識別できることを意味します。 これにより、例えば、プログラムロジックに依存しているとフィールドに MARK を付ける場合、必要なのは 1 つの REINPUT ステートメントのみになります。

例:

DECIDE ON FIRST VALUE OF ... 
   VALUE ... 
      COMPUTE #FIELDX = POS(FIELD1) 
   VALUE ... 
      COMPUTE #FIELDX = POS(FIELD2) 
   ... 
END-DECIDE 
... 
REINPUT ... MARK #FIELDX

POS で指定されたフィールドが配列の場合、POS(FIELDX(5)) のように特定のオカレンスを指定する必要があります。 POS を配列範囲に適用することはできません。

POS および *CURS-FIELD

システム関数 POS(field-name) は、カーソルが現在位置づけられているフィールドに応じて特定の機能を実行するために、Natural システム変数 *CURS-FIELD と組み合わせて使用できます。

*CURS-FIELD は、カーソルが現在位置づけられているフィールドの内部識別子を持ちます。これは単体では使用できず、POS(field-name) と組み合わせて使用する必要があります。 これらを使用して、現在カーソルが特定のフィールドに置かれているかどうかを確認し、その状況に応じて処理を実行できます。

例:

IF *CURS-FIELD = POS(FIELDX) 
   MOVE *CURS-FIELD TO #FIELDY 
END-IF 
... 
REINPUT ... MARK #FIELDY

注意:

  1. *CURS-FIELD および POS(field-name) の値は、フィールドの内部識別子としてのみ機能し、算術演算に使用することはできません。
  2. 配列の次元のオカレンス数が EXPANDRESIZE、または REDUCE ステートメントを使用して変更された後には、X-array(最低でも 1 次元の最低でも 1 つの境界が拡張可能として定義されている配列)のオカレンスに対して POS(field-name) から返される値は変わることがあります。
  3. Natural RPC:*CURS-FIELD および POS(field-name) がコンテキスト変数を参照する場合、結果の情報は同じ会話内でのみ使用できます。

参考情報

Top of page