| 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(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:
*CURS-FIELD und
POS(field-name) dienen nur zur internen
Identifikation der Felder und können nicht für arithmetische Operationen verwendet
werden.
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.
*CURS-FIELD und
POS(field-name) sich auf eine
Kontextvariable beziehen, können die daraus resultierenden Informationen nur innerhalb
derselben Konversation verwendet werden.
*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
Dialog-Gestaltung, Feld-sensitive Verarbeitung und Einfachere Programmierung im Natural Leitfaden zur Programmierung.
POS22 - Version 2.2 Algorithm for POS System Function in der Parameter-Referenz-Dokumentation.