POS - Feldidentifikationsfunktion

Format/Länge: I4

Die Systemfunktion POS(field-name) enthält die interne Identifikation des Feldes, dessen Name mit der Systemfunktion angegeben wird.

POS(field-name) identifiziert ein bestimmtes Feld, unabhängig von seiner Position in einer Maske (Map). Auch wenn sich die Reihenfolge und Anzahl der Felder in einer Maske ändert, identifiziert POS(field-name) nach wie vor eindeutig dasselbe Feld. Damit genügt zum Beispiel ein einziges REINPUT-Statement, um es von der Programmlogik abhängig zu machen, welches Feld MARKiert werden soll.

Beispiel:

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

Wenn das mit POS angegebene Feld ein Array ist, muss eine bestimmte Ausprägung angegeben werden; zum Beispiel POS(FIELDX(5)). Auf einen Array-Bereich kann POS nicht angewendet werden.

POS und *CURS-FIELD

POS(field-name) kann in Verbindung mit der Natural-Systemvariablen *CURS-FIELD dazu verwendet werden, die Ausführung bestimmter Funktionen davon abhängig zu machen, in welchem Feld der Cursor zur Zeit steht.

*CURS-FIELD enthält die interne Identifikation des Feldes, in dem sich der Cursor zur Zeit befindet; *CURS−FIELD kann nicht alleine, sondern nur zusammen mit POS(field-name) verwendet werden. Sie können beide zusammen dazu benutzen, um zu prüfen, ob sich der Cursor gerade in einem bestimmten Feld befindet, und die weitere Verarbeitung von dieser Bedingung abhängig machen.

Beispiel:

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

Anmerkungen:

  1. Die Werte von *CURS-FIELD und POS(field-name) dienen nur zur internen Identifikation der Felder und können nicht für arithmetische Operationen verwendet werden.
  2. Der von POS(field-name) zurückgegebene Wert für eine Ausprägung eines X-Arrays (ein Array, für das wenigstens eine Dimension als erweiterbar angegeben ist) kann sich ändern, nachdem die Anzahl der Ausprägungen für eine Dimension des Arrays mittels der Statements EXPAND, RESIZE oder REDUCE geändert wurde.
  3. Natural RPC: Wenn *CURS-FIELD und POS(field-name) sich auf eine Kontextvariable beziehen, können die daraus resultierenden Informationen nur innerhalb derselben Konversation verwendet werden.
  4. In Natural for Ajax-Anwendungen dient *CURS-FIELD zur Identifikation des Operanden, welcher den Wert des Control darstellt, welches den Eingabefokus hat. Sie können *CURS-FIELD in Verbindung mit der POS-Funktion benutzen, um eine Prüfung auf das Control, welches den Eingabefokus hat, zu veranlassen und die Verarbeitung in Abhängigkeit von diesem Zustand durchzuführen.

Siehe auch