フォーマット/長さ: | 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(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
注意:
*CURS-FIELD
および POS(field-name)
の値は、フィールドの内部識別子としてのみ機能し、算術演算に使用することはできません。
EXPAND
、RESIZE
、または REDUCE
ステートメントを使用して変更された後には、X-array(最低でも 1 次元の最低でも 1 つの境界が拡張可能として定義されている配列)のオカレンスに対して POS(field-name)
から返される値は変わることがあります。
*CURS-FIELD
および POS(field-name)
がコンテキスト変数を参照する場合、結果の情報は同じ会話内でのみ使用できます。
参考情報
『プログラミングガイド』の「ダイアログ設計」の「フィールドに基づいた処理」および「プログラミングの単純化」
『パラメータリファレンス』の「POS22 - POS システム関数用のバージョン 2.2 アルゴリズム」