To access a record occurrence based on its logical position within a set, perform the following steps:
Example of Walking a Set
The program excerpt below shows the procedure for retrieving all member records in a set.
The program enters the database on the CALC-key field DEPT-ID-0410 and establishes currency on the DEPARTMENT record. It then walks the DEPT-EMPLOYEE set until the DBMS returns an ERROR-STATUS of 0307 (DB-END-OF-SET).
WORKING-STORAGE SECTION. 01 SWITCHES.
05 EOF-SW PIC X VALUE 'N'.
88 END-OF-FILE VALUE 'Y'.
PROCEDURE DIVISION.
.
READ DEPT-RECORD-IN
AT END MOVE 'Y' TO EOF-SW.
PERFORM A300-GET-DEPT-SET THRU A300-EXIT
UNTIL EOF-SW = 'Y'.
FINISH.
GOBACK.
A300-GET-DEPT-SET.
MOVE DEPT-ID-IN TO DEPT-ID-0410.
OBTAIN CALC DEPARTMENT.
IF DB-REC-NOT-FOUND
DISPLAY 'DEPT: ' DEPT-ID-IN ' NOT FOUND'
GO TO A300-GET-NEXT
ELSE IF DB-STATUS-OK
NEXT SENTENCE
ELSE
PERFORM IDMS-STATUS.
MOVE DEPT-NAME-0410 TO DEPT-NAME-OUT.
PERFORM U0900-WRITE-LINE.
A300-SET-WALK.
*** RETRIEVE NEXT EMPLOYEE IN SET ***
OBTAIN NEXT EMPLOYEE WITHIN DEPT-EMPLOYEE.
*** CHECK FOR ERROR-STATUS = 0307 ***
IF DB-END-OF-SET
GO TO A300-GET-NEXT
*** CHECK FOR ERROR-STATUS = 0000 ***
ELSE IF DB-STATUS-OK
NEXT SENTENCE
ELSE
PERFORM IDMS-STATUS.
MOVE EMP-NAME-0415 TO EMP-NAME-OUT.
MOVE EMP-ID-0415 TO EMP-ID-OUT.
PERFORM U0900-WRITE-LINE.
GO TO A300-SET-WALK.
A300-GET-NEXT.
READ DEPT-RECORD-IN
AT END MOVE 'Y' TO EOF-SW.
A300-EXIT.
EXIT.
|
Copyright © 2013 CA.
All rights reserved.
|
|