@FIND/ @OBTAIN CURRENT
The @FIND/@OBTAIN CURRENT statement accesses the record that is current of its record type, set, or area. This form of the @FIND/@OBTAIN verb is an efficient means of establishing the proper record as current of run unit before executing a DML verb that utilizes run-unit currency (for example, @ACCEPT, @IF, @GET, @MODIFY, or @ERASE).
idmscu19
The @FIND/@OBTAIN CURRENT statement accesses the record that is current of its record type, set, or area. This form of the @FIND/@OBTAIN verb is an efficient means of establishing the proper record as current of run unit before executing a DML verb that utilizes run-unit currency (for example, @ACCEPT, @IF, @GET, @MODIFY, or @ERASE).
Following successful execution of an @FIND/@OBTAIN CURRENT statement, the accessed record is current of run unit, its area, its record type, and all sets in which it currently participates as member or owner.
This article describes the following information:
Syntax
►►─┬─ @FIND ───┬────── CURRENT ───────────────────────────────────────────────► └─ @OBTAIN ─┘ ►─┬────────────────────┬─────────────────────────────────────────────────────► ├─ ,REC=record-name─┤ ├─ ,SET=set-name────┤ └─ ,AREA=area─name──┘ ►─┬───────────────────────────┬──────────────────────────────────────────────►◄ └─ ,KEEP= ─┬─ SHARED ──────┬┘ └─ EXCLUSIVE ───┘
Parameters
- @FIND/@OBTAIN CURRENTAccesses the record occurrence that is current of run unit.
- REC=record-name/SET=set-name/AREA=area-nameSpecifies that the current record of the named record type, set, or area is to be accessed.
- REC=Accesses the record that is current of run unit.
- record-nameA register containing the record name, a user-defined variable field, or a user-supplied value enclosed in quotation marks.
- SET=Accesses the set that is current of run unit.
- set-nameA register containing the set name, a user-defined variable field, or a user-supplied value enclosed in quotation marks.
- AREA=Accesses the area that is current of run unit.
- area-nameA register containing the area name, a user-defined variable field, or a user-supplied value enclosed in quotation marks.
- KEEP=Places a shared or exclusive lock on the accessed record.
- SHAREDPlaces a shared lock on the specified record.
- EXCLUSIVEPlaces an exclusive lock on the specified record.
Example
The following figure illustrates the use of the @FIND/@OBTAIN CURRENT statement to establish a record as current of run unit before that record is modified. (See @MODIFY later in this section for a complete description of the @MODIFY verb and its use.) Enter the database on DEPARTMENT 5100 by using CALC retrieval. Then examine EMPLOYEE 466 and obtain further information from its owner OFFICE record. OFFICE 8 becomes current of run unit. Before modifying EMPLOYEE 466, you must issue the @FIND CURRENT statement to reestablish EMPLOYEE 466 as current of run unit.
Status Codes
After completion of the @FIND/@OBTAIN CURRENT function, the ERRSTAT field in the IDMS communications block indicates the outcome of the operation. The following is a list of the acceptable status codes for this function and their corresponding meaning:
- 0000The request has been serviced successfully.
- 0301The area in which the named record participates has not been readied.
- 0306Currency has not been established for the named record, set, or area.
- 0308The specified record is not in the subschema. The program has probably invoked the wrong subschema.
- 0310The subschema specifies an access restriction that prohibits retrieval of the named record.
- 0313A current record of run unit has not been established or has been nullified by a previous @ERASE statement.
- 0323The area name specified has not been included in the subschema invoked.
When the KEEP parameter is specified, a major code of 06 will be returned if an error occurs during the KEEP processing. The major code of 03 states that an error has occurred in the @FIND/@OBTAIN processing.