| Format/length: | I4 | 
The system function
                            POS(field-name) returns an
                            identification of the field whose name is specified with the system function.
                            The value returned is an internal representation of the field address.
               
POS(field-name) may be used
                            to identify a specific field, regardless of its position in a map. This means
                            that the sequence and number of fields in a map may be changed, but
                            POS(field-name) will still uniquely
                            identify the same field. With this, for example, you need only a single
                            REINPUT statement to make the field to be MARKed
                            dependent on the program logic.
               
Example:
DECIDE ON FIRST VALUE OF ... 
   VALUE ... 
      COMPUTE #FIELDX = POS(FIELD1) 
   VALUE ... 
      COMPUTE #FIELDX = POS(FIELD2) 
   ... 
END-DECIDE 
... 
REINPUT ... MARK #FIELDX 
                       If the field specified with POS is an array, a specific
                            occurrence must be specified; for example, POS(FIELDX(5)).
                            POS cannot be applied to an array range.
               
Note:POS cannot distinguish between two different
                               variables that start at the same storage position (REDEFINE variables) since the
                               internal field address returned by POS is the same
                               for both.
                  
The system function
                            POS(field-name) may be used in
                            conjunction with the Natural system variable
                            *CURS-FIELD
                            to make the execution of certain functions dependent on which field the cursor
                            is currently positioned in.
               
*CURS-FIELD contains the internal
                            identification of the field in which the cursor is currently positioned; it
                            cannot be used by itself, but only in conjunction with
                            POS(field-name). You may use them to
                            check if the cursor is currently positioned in a specific field and have
                            processing performed depending on that condition.
               
Example:
IF *CURS-FIELD = POS(FIELDX) MOVE *CURS-FIELD TO #FIELDY END-IF ... REINPUT ... MARK #FIELDY
Notes:
*CURS-FIELD and
                                 POS(field-name) serve only as internal
                                 identifications of the fields and cannot be used for arithmetic operations.
                                 
                  POS(field-name) for an occurrence of an
                                 X-array (an array for which
                                 at least one bound in at least one dimension is specified as expansible) may
                                 change after the number of occurrences for a dimension of the array has been
                                 changed using the EXPAND,
                                 RESIZE or
                                 REDUCE
                                 statements.
                  *CURS-FIELD and
                                 POS(field-name) refer to a context
                                 variable, the resulting information can only be used within the same
                                 conversation. 
                  *CURS-FIELD identifies the operand that represents
                                 the value of the control that has the input focus. You may use
                                 *CURS-FIELD in conjunction with the
                                 POS function to check for the control that has the input focus and
                                 perform processing depending on that condition.
                  *CURS-FIELD and
                                 POS(field-name) cannot distinguish
                                 between two different variables that start at the same storage position
                                 (REDEFINE variables)
                                 since the internal field addresses returned by
                                 *CURS-FIELD and
                                 POS(field-name) are the same for both
                                 variables.
                  See also Dialog Design, Field-Sensitive Processing and Simplifying Programming in the Programming Guide in the Programming Guide.