Indexes provide an efficient means of accessing member record occurrences. You can retrieve member records in indexed sets as if they were member records in nonindexed sets.
The table below lists the retrieval statements that you can use with indexed records.
|
Retrieval statement |
Restrictions |
|---|---|
|
FIND/OBTAIN CURRENT |
WITHIN SET |
|
FIND/OBTAIN RECORD |
WITHIN SET |
|
FIND/OBTAIN USING SORT KEY |
Sorted indexed sets only |
|
FIND/OBTAIN OWNER |
OBTAIN not allowed for system-owned indexes |
|
RETURN |
Db-key and symbolic key only |
Example of Accessing an Indexed Record
The program excerpt below shows retrieval of all records in the EMP-NAME-NDX (a system-owned indexed set).
The EMP-NAME-NDX set is sorted in ascending order on EMP-LAST-NAME and EMP-FIRST-NAME; this program produces an alphabetical list of all employees.
PROCEDURE DIVISION.
A000-MAIN-LINE.
.
.
.
MOVE 'Y' to FIRST-TIME-SW.
PERFORM A000-GET-NDX-SET THRU A000-EXIT
UNTIL DB-END-OF-SET.
PERFORM END-PROCESSING.
GOBACK.
A000-GET-NDX-SET.
*** SEQUENTIALLY RETRIEVE EMPLOYEES INDEXED BY LAST NAME ***
IF FIRST-TIME-SW = 'Y'
MOVE 'N' TO FIRST-TIME-SW
OBTAIN FIRST EMPLOYEE WITHIN EMP-NAME-NDX
ELSE
OBTAIN NEXT EMPLOYEE WITHIN EMP-NAME-NDX.
*** CHECK FOR ERROR-STATUS = 0307 ***
IF DB-END-OF-SET
GO TO A000-EXIT
*** CHECK FOR ERROR-STATUS = 0000 ***
ELSE IF DB-STATUS-OK
NEXT SENTENCE
ELSE
PERFORM IDMS-STATUS.
DISPLAY EMP-ID-0415
EMP-LAST-NAME-0415
EMP-FIRST-NAME-0415.
A000-EXIT.
EXIT.
Retrieving the Key without the Record
To retrieve the db-key and symbolic key of an indexed record without retrieving the record itself, perform the following steps:
Using the RETURN Statement
The RETURN statement establishes currency in the indexed set and moves the record's symbolic key into the data fields within the record in program variable storage. Alternatively, you can move the record's symbolic key into some other specified variable-storage location.
Example of Using RETURN
The program excerpt below uses the RETURN statement to establish indexed set currency.
This program establishes currency in the EMP-NAME-NDX set by using the RETURN statement to perform a generic-key search. It checks for the ERROR-STATUS 1726 (record not found), and retrieves all employees whose last name begins with the letter N or greater.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INDEX-ITEMS.
03 DB-KEY-V PIC S9(8) COMP SYNC.
03 INDEX-START-POINT PIC X(30) VALUE 'N'.
PROCEDURE DIVISION.
A000-MAIN-LINE.
.
.
.
MOVE INDEX-START-POINT TO INDEX-KEY-VALUE.
RETURN DB-KEY-V FROM EMP-NAME-NDX
USING INDEX-START-POINT.
*** IF NO MATCHING EMPLOYEE, OBTAIN NEXT IN SET ***
IF ERROR-STATUS = '1726' THEN
OBTAIN NEXT EMPLOYEE WITHIN EMP-NAME-NDX.
IF DB-STATUS-OK
NEXT SENTENCE
ELSE
PERFORM IDMS-STATUS.
PERFORM A000-GET-NDX-SET THRU A000-EXIT
UNTIL DB-END-OF-SET.
FINISH.
GOBACK.
A000-GET-NDX-SET.
DISPLAY EMP-ID-0415
EMP-LAST-NAME-0415
EMP-FIRST-NAME-0415.
OBTAIN NEXT EMPLOYEE WITHIN EMP-NAME-NDX.
*** CHECK FOR ERROR-STATUS = 0307 ***
IF DB-END-OF-SET
GO TO A000-EXIT
*** CHECK FOR ERROR-STATUS = 0000 ***
ELSE IF DB-STATUS-OK
NEXT SENTENCE
ELSE
PERFORM IDMS-STATUS.
A000-EXIT.
EXIT.
|
Copyright © 2013 CA.
All rights reserved.
|
|