Technical data

Example 8–5 (Cont.) Creating Relationships Between Records of the Same
Type
SOLICIT-INPUT.
MOVE ZERO TO END-OF-COLLECTION.
DISPLAY " ".
DISPLAY "Enter PART_ID> " WITH NO ADVANCING.
MOVE SPACES TO INPUT-REC.
READ INPUT-FILE INTO PART_ID
AT END GO TO PARTBOM-DONE.
FETCH FIRST PART WITHIN ALL_PARTS USING PART_ID
AT END DISPLAY "*** Part number ",
PART_ID, " not found. ***"
GO TO SOLICIT-INPUT.
DISPLAY " ".
DISPLAY " ".
DISPLAY
DISPLAY "+-----------------------------------+".
DISPLAY "| Parts Bill of Materials Explosion |".
DISPLAY "| (COBOL Version) |".
DISPLAY "| Part-id: " PART_ID " |".
DISPLAY "+-----------------------------------+".
DISPLAY " ".
DISPLAY " ".
DISPLAY " ".
DISPLAY PART_ID, " - ", PART_DESC
MOVE ZERO TO INDENT-LEVEL.
FREE ALL FROM KEEP-COMPONENT.
PERFORM PARTBOM-LOOP THRU PARTBOM-LOOP-EXIT
UNTIL END-COLLECTION.
GO TO SOLICIT-INPUT.
PARTBOM-DONE.
CLOSE INPUT-FILE.
EXIT PROGRAM.
PARTBOM-LOOP.
FIND NEXT COMPONENT WITHIN PART_USES
AT END PERFORM POP-COMPONENT
THRU POP-COMPONENT-EXIT
GO TO PARTBOM-LOOP-EXIT.
KEEP CURRENT USING KEEP-COMPONENT.
ADD 1 TO INDENT-LEVEL.
FIND OWNER PART_USED_ON.
GET PART_ID, PART_DESC.
DISPLAY INDENT-TREE, PART_ID, " - ", PART_DESC.
PARTBOM-LOOP-EXIT.
EXIT.
POP-COMPONENT.
FIND LAST WITHIN KEEP-COMPONENT
AT END MOVE 1 TO END-OF-COLLECTION
GO TO POP-COMPONENT-EXIT.
FREE LAST WITHIN KEEP-COMPONENT.
SUBTRACT 1 FROM INDENT-LEVEL.
POP-COMPONENT-EXIT.
EXIT.
END PROGRAM PARTBOM.
END PROGRAM STOOL.
Database Programming Examples 8–21