HP 3000 Manuals

GET [ HP Transact Documentation Update Notice ] MPE/iX 5.5 Documentation


HP Transact Documentation Update Notice

GET 

Moves data to the data register from a data set, file, or formatted
screen.

Syntax 

GET[(modifier)] source[,option-list];

GET retrieves a single entry from a data set or KSAM or MPE file after
rewinding the file or data set.  It is also used to move data values into
the data register from a terminal under the control of a VPLUS screen.

Statement Parts 

modifier              To specify the type of access to the data set or
                      file, choose one of the following modifiers:

                      none                  For master sets, retrieves a
                                            master set entry based on the
                                            value in the argument
                                            register.  For MPE files, the
                                            next entry is serially read.
                                            For KSAM files, this option
                                            does not use the match
                                            register.

                      CHAIN                 Retrieves an entry from a
                                            detail set or KSAM chain.  It
                                            retrieves the first entry to
                                            meet any match criteria set
                                            up in the match register.
                                            The matching items must be
                                            included in a LIST= option.
                                            The contents of the key and
                                            argument registers specify
                                            the chain in which the
                                            retrieval occurs.  If no
                                            match criteria are specified,
                                            it retrieves the first entry
                                            in the chain.  If no matching
                                            entry is found, GET issues a
                                            run-time error.

                      CURRENT               Retrieves the last entry that
                                            was accessed from the data
                                            set or the MPE or KSAM file.

                      DIRECT                Retrieves the entry stored at
                                            a specified record number in
                                            an MPE or KSAM file, or a
                                            detail or master set.  Before
                                            using this modifier, you must
                                            store the record number as a
                                            32-bit integer in the item
                                            specified in the RECNO=
                                            option.

                      FORM                  GET(FORM) displays a VPLUS
                                            form on any VPLUS compatible
                                            terminal and then waits for
                                            the user to press ENTER to
                                            transfer data from the form
                                            to the data register.  If the
                                            user presses a function key
                                            instead of ENTER, no data is
                                            transferred unless the
                                            AUTOREAD option is used.

                      KEY                   Executes a calculated access
                                            on a master set using the key
                                            and argument register
                                            contents, but transfers no
                                            data.  The LIST= option
                                            cannot be specified with this
                                            modifier.  (Use GET with no
                                            modifier for a calculated
                                            retrieval from a master set.)

                                            This modifier is most useful
                                            when you combine it with the
                                            ERROR and/or NOFIND options
                                            to check for the existence of
                                            a key value in a master set.
                                            It allows programmatic
                                            control of the result of the
                                            checking.  It is the
                                            equivalent of a CHECK or
                                            CHECKNOT on a PROMPT
                                            statement.

                      PRIMARY               Retrieves the master set
                                            entry stored at the primary
                                            address of a synonym chain.
                                            The primary address is
                                            located through the key value
                                            contained in the argument
                                            register.

                      RCHAIN                Retrieves an entry from a
                                            detail set or a KSAM chain in
                                            the same manner as the CHAIN
                                            option, only in reverse
                                            order.  For a KSAM file this
                                            operation is identical to
                                            CHAIN.

                      RSERIAL               Retrieves an entry from a
                                            data set in the same manner
                                            as the SERIAL option, except
                                            in reverse order.  If an
                                            equal match without match
                                            characters exists, Transact
                                            will convert an RSERIAL
                                            option to an RCHAIN option to
                                            improve the application's
                                            efficiency.  For a KSAM or
                                            MPE file, this operation is
                                            identical to SERIAL.

                      SERIAL                Retrieves an entry in serial
                                            mode from an MPE or KSAM file
                                            or a detail or master set.
                                            It retrieves the first entry
                                            that matches any match
                                            criteria set up in the match
                                            register.  If an equal match
                                            without match characters
                                            exists, Transact will convert
                                            an SERIAL option to an CHAIN
                                            option to improve the
                                            application's efficiency.  If
                                            no match criteria are
                                            specified, it retrieves the
                                            first entry in the file or
                                            data set.  The match items
                                            must be included in a LIST=
                                            option.  If no entry matches
                                            or if the file is empty, GET
                                            issues a run-time error.

source                The file, data set, or form to be accessed by the
                      retrieval operation.  If the data set is not in the
                      home base as defined in the SYSTEM statement, the
                      base name must be specified in parentheses as
                      follows:

                      set-name(base-name)

                      For GET(FORM) only, source can be specified as any
                      of the following:

                      form-name             Name of the form to be
                                            displayed by GET(FORM).

                      (item-name            Name of an item that contains
                      [(subscript)])        the name of the form to be
                                            displayed by GET(FORM).
                                            subscript can be included if
                                            the referenced item is an
                                            array item.  (See "Array
                                            Subscripting" in Chapter 3.)

                      *                     Displays the form identified
                                            by the "current" form name;
                                            that is, the form name most
                                            recently specified in a
                                            statement that references
                                            VPLUS forms.  Note that this
                                            option is not the same as the
                                            CURRENT option (described
                                            under option-list), which
                                            indicates the currently
                                            displayed form.

                      &                     Displays the form identified
                                            as the "next" form name; that
                                            is, the form name defined as
                                            "NEXT FORM" in the FORMSPEC
                                            definition of the current
                                            form, where current form
                                            means the form name most
                                            recently specified in a
                                            statement that references
                                            VPLUS forms.

option-list           The LIST option is available with or without the
                      FORM modifier.  Other options, described below, are
                      restricted for use as specified.

                      LIST=(range- list)    The list of items from the
                                            list register to be used for
                                            the GET operation.  For
                                            GET(FORM) ONLY, items in the
                                            range list can be child
                                            items.

                                            If the LIST= option is
                                            omitted for GET(FORM), the
                                            list of items named in the
                                            list register, and either in
                                            the SYSTEM statement or the
                                            data dictionary for the form
                                            are used.

                                            The LIST= option should not
                                            be used when specifying an
                                            asterisk (*) as the source.

                                            When the LIST= option is
                                            used, only the items
                                            specified in a LIST= option
                                            have their match conditions
                                            applied when the items are
                                            included in the match
                                            register.  When the LIST=
                                            option is omitted, items
                                            which appear in the list
                                            register and the match
                                            register have their match
                                            conditions applied.
                                            Otherwise, the match
                                            conditions for an item are
                                            ignored.

                                            The match register can be
                                            used only with the modifiers
                                            CHAIN, RCHAIN, SERIAL, or
                                            RSERIAL.

                                            For all options of
                                            range-list, the data items
                                            selected are the result of
                                            scanning the data items in
                                            the list register from top to
                                            bottom, where top is the last
                                            or most recent entry.  (See
                                            Chapter 4 for more
                                            information on registers.)

                                            The LIST= option has a limit
                                            of 64 individually listed
                                            item names.  A range
                                            limitation of 255 items for
                                            TurboIMAGE data sets and 128
                                            items for VPLUS forms also
                                            exists.

                                            All item names specified must
                                            be parent items.

                                            The options for range-list 
                                            and the data items they cause
                                            GET to retrieve include the
                                            following:

                                            (item-name)           A
                                                                  single
                                                                  data
                                                                  item.

                                            (item-nameX:          All the
                                            item-nameY)           data
                                                                  items
                                                                  in the
                                                                  range
                                                                  from
                                                                  item-nameX 
                                                                  through
                                                                  item-nameY.
                                                                  In
                                                                  other
                                                                  words,
                                                                  the
                                                                  list
                                                                  register
                                                                  is
                                                                  scanned
                                                                  for the
                                                                  occurrence
                                                                  of
                                                                  item-nameY 
                                                                  closest
                                                                  to the
                                                                  top of
                                                                  the
                                                                  list
                                                                  register.
                                                                  From
                                                                  that
                                                                  entry,
                                                                  the
                                                                  list
                                                                  register
                                                                  is
                                                                  scanned
                                                                  for
                                                                  item-nameX.
                                                                  All
                                                                  data
                                                                  items
                                                                  between
                                                                  are
                                                                  selected.
                                                                  An
                                                                  error
                                                                  is
                                                                  returned
                                                                  if
                                                                  item-nameX 
                                                                  is
                                                                  between
                                                                  item-nameY 
                                                                  and the
                                                                  top of
                                                                  the
                                                                  list
                                                                  register.

                                                                  Duplicate
                                                                  data
                                                                  items
                                                                  can be
                                                                  included
                                                                  or
                                                                  excluded
                                                                  from
                                                                  the
                                                                  range,
                                                                  depending
                                                                  on
                                                                  their
                                                                  position
                                                                  on the
                                                                  list
                                                                  register.
                                                                  For
                                                                  example,
                                                                  if
                                                                  range-list 
                                                                  is A:D
                                                                  and the
                                                                  list
                                                                  register
                                                                  is as
                                                                  shown,

	       Click here to view figure.
            

                                                                  then
                                                                  data
                                                                  items
                                                                  A, B,
                                                                  C, D,
                                                                  and D
                                                                  are
                                                                  selected.
                                                                  For
                                                                  database
                                                                  files,
                                                                  an
                                                                  error
                                                                  is
                                                                  returned
                                                                  if
                                                                  duplicate
                                                                  entries
                                                                  are
                                                                  selected.

                                                                  If
                                                                  item-nameX 
                                                                  and
                                                                  item-nameY 
                                                                  are
                                                                  marker
                                                                  items
                                                                  (see
                                                                  the
                                                                  DEFINE(ITEM)
                                                                  verb),
                                                                  and if
                                                                  there
                                                                  are no
                                                                  data
                                                                  items
                                                                  between
                                                                  the two
                                                                  on the
                                                                  list
                                                                  register,
                                                                  no
                                                                  database
                                                                  access
                                                                  is
                                                                  performed.

                                            (item-nameX:)         All
                                                                  data
                                                                  items
                                                                  in the
                                                                  range
                                                                  from
                                                                  the
                                                                  last
                                                                  entry
                                                                  through
                                                                  the
                                                                  occurrence
                                                                  of
                                                                  item-nameX 
                                                                  closest
                                                                  to the
                                                                  top of
                                                                  the
                                                                  list
                                                                  register.

                                            (:item-nameY)         All
                                                                  data
                                                                  items
                                                                  in the
                                                                  range
                                                                  from
                                                                  the
                                                                  occurrence
                                                                  of
                                                                  item-nameY 
                                                                  closest
                                                                  to the
                                                                  top
                                                                  through
                                                                  the
                                                                  bottom
                                                                  of the
                                                                  list
                                                                  register.

                                            (item-nameX,          The
                                            item-nameY,  ...      data
                                            item-nameZ)           items
                                                                  are
                                                                  selected
                                                                  from
                                                                  the
                                                                  list
                                                                  register.
                                                                  For
                                                                  databases,
                                                                  data
                                                                  items
                                                                  can be
                                                                  specified
                                                                  in any
                                                                  order.
                                                                  For
                                                                  KSAM
                                                                  and MPE
                                                                  files
                                                                  or for
                                                                  VPLUS
                                                                  forms,
                                                                  data
                                                                  items
                                                                  must be
                                                                  specified
                                                                  in the
                                                                  order
                                                                  of
                                                                  their
                                                                  occurrence
                                                                  in the
                                                                  physical
                                                                  record
                                                                  or
                                                                  form.
                                                                  This
                                                                  order
                                                                  need
                                                                  not
                                                                  match
                                                                  the
                                                                  order
                                                                  of the
                                                                  data
                                                                  items
                                                                  on the
                                                                  list
                                                                  register.
                                                                  Does
                                                                  not
                                                                  include
                                                                  child
                                                                  items
                                                                  in the
                                                                  list
                                                                  unless
                                                                  they
                                                                  are
                                                                  defined
                                                                  in the
                                                                  VPLUS
                                                                  form.
                                                                  This
                                                                  option
                                                                  is less
                                                                  efficient
                                                                  to use
                                                                  than
                                                                  the
                                                                  options
                                                                  listed
                                                                  above.

                                            (@)                   Specifies
                                                                  a range
                                                                  of all
                                                                  data
                                                                  items
                                                                  of
                                                                  file-name 
                                                                  as
                                                                  defined
                                                                  in a
                                                                  data
                                                                  dictionary.
                                                                  The
                                                                  range-list 
                                                                  is
                                                                  defined
                                                                  as
                                                                  item- 
                                                                  name1:item- 
                                                                  namen 
                                                                  for the
                                                                  file.

                                            (#)                   Specifies
                                                                  an
                                                                  enumeration
                                                                  of all
                                                                  data
                                                                  items
                                                                  of
                                                                  file-name 
                                                                  as
                                                                  defined
                                                                  in the
                                                                  data
                                                                  dictionary.
                                                                  The
                                                                  data
                                                                  items
                                                                  are
                                                                  specified
                                                                  in the
                                                                  order
                                                                  of
                                                                  their
                                                                  occurrence
                                                                  in the
                                                                  physical
                                                                  record
                                                                  or form
                                                                  as
                                                                  defined
                                                                  in the
                                                                  data
                                                                  dictionary.
                                                                  This
                                                                  order
                                                                  need
                                                                  not
                                                                  match
                                                                  the
                                                                  order
                                                                  of the
                                                                  data
                                                                  items
                                                                  in the
                                                                  list
                                                                  register.

                                            ()                    A null
                                                                  data
                                                                  item
                                                                  list.
                                                                  That
                                                                  is,
                                                                  accesses
                                                                  the
                                                                  file or
                                                                  data
                                                                  set,
                                                                  but
                                                                  does
                                                                  not
                                                                  retrieve
                                                                  any
                                                                  data.

Options Available Without the Form Modifier 

ERROR=label         Suppresses the default error return that Transact
([item-name])       normally takes.  Instead, branches to the statement
                    identified by label, and sets the stack pointer for
                    the list register to the data item item-name.
                    Transact generates an error at execution time if the
                    item cannot be found in the list register.  The
                    item-name must be a parent.

                    If you specify no item-name, as in ERROR=label();,
                    the list register is reset to empty.  If you use an
                    "*" instead of item-name, as in ERROR=label(*);, then
                    the list register is not changed.  For more
                    information, see "Automatic Error Handling" in
                    Chapter 7.

LOCK                Locks the specified file or database.  The lock is
                    active the whole time that the GET executes.  If LOCK
                    is not specified and a TurboIMAGE data set is being
                    accessed, no locking is done.

                    For a KSAM or MPE file, if LOCK is not specified on
                    GET but is specified for the file in the SYSTEM
                    statement.  The file is then locked before each entry
                    is retrieved, remains locked while the entry is
                    processed by any PERFORM= statements, and is unlocked
                    briefly before the next entry is retrieved.

                    Including the LOCK option overrides SET(OPTION)
                    NOLOCK for the execution of the GET verb.

                    For transaction locking, you can use the LOCK option
                    on the LOGTRAN verb instead of the LOCK option on GET
                    if SET(OPTION) NOLOCK is specified.

                    For more information on locking, see "Database and
                    File Locking" in Chapter 6.

NOFIND              Ensures that a matching entry is not present in the
                    referenced master set.  If such an entry is found, an
                    error message is generated.  If the STATUS option has
                    also been specified, the code returned in the STATUS
                    register for the error condition is 1, meaning that a
                    record was found.

NOMATCH             Ignores any match criteria set up in the match
                    register.

NOMSG               Suppresses the standard error message produced as a
                    result of a file or database error.  All other error
                    actions occur.

RECNO=item-name     With the DIRECT modifier, you must define item-name 
[(subscript)]       to contain the 32-bit integer.  number (I(9,,4)) of
                    the record to be retrieved.

                    With other modifiers, Transact returns the record
                    number of the retrieved record in the 32-bit integer
                    item-name.

                    The item-name can be modified with subscript if the
                    referenced item is an array item.  (See "Array
                    Subscripting" in Chapter 3.)

STATUS              Suppresses the action defined in the Chapter 7 under
                    "Automatic Error Handling." You may want to add
                    status checking to your code if you use this option.

                    When STATUS is specified, the effect of a GET
                    statement is described by the 32-bit integer value in
                    the status register:

   Status                  Meaning 
  Register 
   Value 

     0       The GET operation was successful.

     -1      A KSAM or MPE end-of-file condition
             for serial read or end-of-chain for
             chain read has occurred.

     >0      For a description of the condition
             that occurred, refer to database or
             MPE/KSAM file system error
             documentation that corresponds to
             the value.

     1       If NOFIND is used and the record is
             found.

                    STATUS causes the following with GET:

                       *   The normal rewind done by the GET is
                           suppressed, so CLOSE should be used before
                           GET(SERIAL).

                       *   The normal find of the chain head by the GET
                           is suppressed, so PATH should be used before
                           GET(CHAIN).

                    See "Using the STATUS Option" in Chapter 7.

Options Available Only With the Form Modifier 

APPEND                 Appends the next form to the form specified in
                       this statement, overriding any freeze or append
                       condition specified for the form in its FORMSPEC
                       definition.  APPEND sets the FREEZAPP field of the
                       VPLUS comarea to 1.

AUTOREAD               Accepts any function key not specified in an
                       Fn=label option to transfer data from the form to
                       the data register.  If a key has been specified in
                       an Fn=label option, GET does not execute AUTOREAD
                       for that key.

CLEAR                  Clears the previously displayed form when the
                       requested form is displayed, overriding any freeze
                       or append condition specified for the form in its
                       FORMSPEC definition.  CLEAR sets the FREEZAPP
                       field of the VPLUS comarea to zero.

CURRENT                Uses the form currently displayed on the terminal
                       screen; that is, it performs all the GET(FORM)
                       processing except retrieving and displaying the
                       form.  Use this option to avoid the processing
                       that normally occurs when a new form is displayed.

CURSOR=field-name|     Positions the cursor within the specified field.
item-                  Field-name identifies the field and the item-name
name[(subscript)]      names the item identifying the field.  The
                       item-name can be subscripted if an array item is
                       being referenced.  (See "Array Subscripting" in
                       Chapter 3.)

                       _________________________________________________ 

                       NOTE  To ensure that the cursor will be positioned
                             on the correct field, you must have a one to
                             one correspondence between the fields
                             defined in VPLUS. Transact determines where
                             to position the cursor by counting the
                             fields.

                       _________________________________________________ 

FEDIT                  Performs the field edits defined in the FORMSPEC
                       definition immediately before displaying the form.

FKEY=item-name         Moves the number of the function key the operator
[(subscript)]          presses in this retrieval operation to the single
                       word integer (I(4)) item-name.  The item-name can
                       be subscripted if an array item is being
                       referenced.  (See "Array Subscripting" in Chapter
                       3.)  The function key is determined by the
                       contents of the field LAST-KEY in the VPLUS
                       comarea.  It can have a value of 0 through 8,
                       inclusive, where 0 indicates the ENTER key and 1
                       through 8 indicate function keys 1 through 8,
                       respectively.  Note that pressing f8 returns an 8
                       in the item field and does not cause an automatic
                       exit.

Fn[(AUTOREAD)]= label  Control passes to the labelled statement if the
                       operator presses function key n.  This option can
                       be repeated for each desired function key as many
                       times as necessary in a single GET(FORM)
                       statement.  If (AUTOREAD) is included, transfers
                       the data from the form to the data register before
                       going to the specified label.  F0, or ENTER,
                       always transfers data.  This option is cancelled
                       by the STATUS option.

FREEZE                 Freezes the specified form and appends the next
                       form to the specified form, overriding any freeze
                       or append conditions specified for the form in the
                       FORMSPEC definition.  FREEZE sets the FREEZAPP
                       field of the VPLUS comarea to 2.

INIT                   Initializes the fields in a VPLUS form to any
                       initial values specified for the form by FORMSPEC,
                       or performs any Init Phase processing specified
                       for the form by FORMSPEC. The INIT processing is
                       performed before the form is displayed on the
                       screen.

STATUS                 Suppresses the display of VPLUS field edit error
                       messages in window; Transact conversion messages
                       are sent to the window.  Transfer control
                       immediately back to the program after the user has
                       pressed ENTER or the appropriate function key.
                       The STATUS option suppresses any branch specified
                       by Fn= label.  If field edit errors exist,
                       Transact sets the value of the status field to a
                       negative count of the number of errors (given by
                       the NUMERRS field of the VPLUS comarea).
                       Otherwise, the value in the status field is 0.

WINDOW= ([field,]      Places a message in the window area of the screen
message)               and, optionally, enhances a field in the form.
                       The fields field and message can be specified as
                       follows:

                       field                  Either the name of the data
                                              item for the field to be
                                              enhanced, or an
                                              item-name[(subscript)]
                                              within parentheses which
                                              will contain the data item
                                              of the field to be enhanced
                                              at run time.

                       message                Either a string enclosed in
                                              quotation marks that
                                              specifies the message to be
                                              displayed, or an
                                              item-name[(subscript)]
                                              within parentheses
                                              containing the message
                                              string to be displayed in
                                              the window.

Examples 

The following example shows the use of the WINDOW option when the field
name and the message are specified directly.

     GET(FORM) FORM1,
         INIT,
         LIST=()
         WINDOW=(field1,"This field must be numeric.");

In the following example, both the field and the message are specified
through an item-name reference:

     DEFINE(ITEM) ENHANCE U(16):
                  MESSAGE U(72);

     MOVE (ENHANCE) = "field1";
     MOVE (MESSAGE) = "This field must be numeric.";
     :
     GET(FORM) *,
         INIT,
         WINDOW=((ENHANCE),(MESSAGE));

The first entry in the chain is retrieved from the data set DETAIL using
the items CUST-NAME through CUST-PHONE in the list register.

     PROMPT(PATH) CUST-NO;
     LIST CUST-NAME:
          CUST-PHONE;
     GET(CHAIN) DETAIL,
          LIST=(CUST-NAME:CUST-PHONE);

The first GET retrieves the last record in the chain.  The second GET
reads the chain in reverse order until a record matches the criteria set
up by the DATA(MATCH) statement.

     PROMPT(PATH) CUST-ID;
     LIST CUST-NAME:
          CUST-PHONE;
     GET(RCHAIN) DETAIL, LIST=(CUST-NAME:CUST-PHONE);
     :
     DATA(PATH) CUST-ID;
     DATA(MATCH) CUST-NAME;
     GET(RCHAIN) DETAIL, LIST=(CUST-NAME:CUST-PHONE);

This statement displays the form CUSTFORM, performs any initialization
specified by FORMSPEC, retrieves values entered into the form, performs
any FORMSPEC edits, and then transfers the entered values to the data
register areas associated with the specified list items.

     GET(FORM) CUSTFORM, INIT, LIST=(CUST-NAME, CUST-ADDR, CUST-PHONE);

In the following example, GET with the STATUS option allows you to
process the "nonexistent permanent file" error yourself.  This coding
lets you access a file that may be in another account by setting up a
file equation through a PROC call to the command intrinsic.

     <<1st access, no CLOSE required before SERIAL operation>>
     GET(SERIAL) DATA-FILE, LIST=(A:N), STATUS;
     IF STATUS <> 0 THEN              <<An error occurred, check further      >>
      IF STATUS <> 52 THEN            <<Error is other than expected          >>
        GO TO ERROR-CLEANUP
      ELSE                             <<52 - Nonexistent permanent file       >>
       DO
        LET (CR) = 8205;               <<8205 = space,carriage return          >>
                                       <<Could have used (CR)=3360 for carriage>>
                                       <<return,space                          >>
        MOVE (COM-STRING) = "FILE DATAFILE=DATAFILE.PUB.OTHERONE"+(CR);
                                       <<Try opening DATAFILE in another group >>
        PROC COMMAND (%(COM-STRING),(ERROR),(PARM));
        IF (ERROR) <> 0 THEN           <<Command error                         >>
          GO TO ERROR-CLEANUP;
                                       <<Try again, give up if unsuccessful    >>
        GET(SERIAL) DATA-FILE, LIST=(A:N), STATUS;
        IF STATUS <> 0 THEN GO TO ERROR-CLEANUP;
       DOEND;

The following example shows a method for "structured programming" with
VPLUS forms.  Each RETURN statement passes control back to the PERFORM
statement.

     START:
       DISPLAY "Start of program";
       PERFORM GETINFO;
       DISPLAY "End of program";
       EXIT;

     GETINFO:
       GET(FORM) MENU,
         F1=ADD,
         F2=UPDATE,
         F3=DELETE,
         F4=LIST,
         F5=START,
         F6=START,
         F7=START,
         F8=ENDIT;
         <<Process ENTER here>>
         .
         .
         .
     ADD:
         <<Process F1 here>>
         RETURN;
     UPDATE:
         <<Process F2 here>>
         RETURN;
     DELETE:
         <<Process F3 here>>
         RETURN;
     LIST:
         <<Process F4 here>>
         RETURN;
     ENDIT:
         EXIT;

An alternate method is to use the FKEY=item-name construct, and then test
the value of item-name with an IF statement.



MPE/iX 5.5 Documentation