Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 000200 IDENTIFICATION DIVISION.
- 000300 PROGRAM-ID. LOADTBL1.
- 000400* LOAD A TABLE FROM A SEQUENTIAL FILE
- 000500* JUST LOAD - DON'T DO ANYTHING ELSE
- 000600* SEE PROGRAM LOADTBL2 FOR A PROGRAM THAT LOADS AND SEARCHES.
- 000700 ENVIRONMENT DIVISION.
- 000800 CONFIGURATION SECTION.
- 000900 INPUT-OUTPUT SECTION.
- 001000 FILE-CONTROL.
- 001100* INPUT FILE PARTTABL
- 001200 SELECT TABLE-FILE ASSIGN PARTTABL.
- 001600 DATA DIVISION.
- 001700 FILE SECTION.
- 001800 FD TABLE-FILE
- 001810 RECORDING MODE IS F
- 002000 RECORD CONTAINS 80 CHARACTERS.
- 002900 01 TABLE-RECORD.
- 002910 05 WS-TR-PART-NUMBER PIC X(6).
- 003000 05 WS-TR-PART-DESC PIC X(30).
- 003010 05 FILLER PIC X(44).
- 003020
- 003030 WORKING-STORAGE SECTION.
- 003050 01 SWITCHES.
- 003060 05 TABLE-FILE-AT-END PIC X VALUE 'N'.
- 003070 05 SOMETHING-IN-TABLE VALUE 'N' PIC X.
- 003080 05 TABLE-OVERFLOW VALUE 'N' PIC X.
- 003090
- 003400 01 PART-TABLE.
- 003500* THE 100 USED HERE IS ARBITRARY.
- 003600* USE WHATEVER NUMBER YOU NEED FOR THE SIZE OF YOUR TABLE
- 003700 05 EACH-PART-INFO OCCURS 100 TIMES
- 003900 ASCENDING KEY IS EACH-PART-NUMBER
- 003910 INDEXED BY PART-INDEX.
- 004000 10 EACH-PART-NUMBER PIC X(6).
- 004100 10 EACH-PART-DESCRIPTION PIC X(30).
- 004200* THE VALUE OF THE NEXT ITEM MUST BE THE SAME AS THE OCCURS AB
- 004300 01 PART-TABLE-MAX-OCCURS PIC S9(5) BINARY VALUE +100.
- 004400
- 004500 PROCEDURE DIVISION.
- 004600 PERFORM TABLE-INITIALIZATION
- 004700 PERFORM TABLE-PROCESS-ALL
- 004800 UNTIL TABLE-FILE-AT-END = 'Y'
- 005000 PERFORM TABLE-TERMINATION
- 005100 GOBACK.
- 005200
- 005300 TABLE-INITIALIZATION.
- 005400* MOVE HIGH-VALUES SO THAT ALL ENTRIES WILL HAVE THE HIGHEST
- 005500* VALUE POSSIBLE (LETS SEARCH ALL WORK RIGHT)
- 005600 MOVE HIGH-VALUES TO PART-TABLE
- 005700 SET PART-INDEX TO 1
- 005800 OPEN INPUT TABLE-FILE
- 005900 PERFORM TABLE-READ-PAR.
- 006000
- 006100 TABLE-PROCESS-ALL.
- 006110 IF PART-INDEX > PART-TABLE-MAX-OCCURS
- 006120 THEN
- 006130 MOVE 'Y' TO TABLE-FILE-AT-END
- 006140 MOVE 'Y' TO TABLE-OVERFLOW
- 006150 DISPLAY 'INDEX GT MAX'
- 006160 ELSE
- 006170 MOVE TABLE-RECORD TO EACH-PART-INFO(PART-INDEX)
- 006180 MOVE 'Y' TO SOMETHING-IN-TABLE
- 006190 SET PART-INDEX UP BY 1
- 006191********* DISPLAY 'INDEX NOT GT MAX'
- 006192 PERFORM TABLE-READ-PAR
- 006193 END-IF.
- 006500
- 006600 TABLE-TERMINATION.
- 006700* AT THIS POINT CHECK TO SEE IF THE TABLE
- 006800* WAS PROPERLY LOADED
- 006910 IF TABLE-OVERFLOW = 'Y'
- 006920 THEN
- 006930 DISPLAY 'MORE RECORDS THAN TABLE ENTRIES'
- 006940 GO TO ERROR-EXIT
- 006950 END-IF
- 006960
- 006970 IF SOMETHING-IN-TABLE = 'Y'
- 006980 THEN
- 006990 DISPLAY 'TABLE APPEARS TO BE LOADED OK'
- 006991 ELSE
- 006992 DISPLAY 'NOTHING LOADED IN TABLE'
- 006993 GO TO ERROR-EXIT
- 006994 END-IF
- 006995
- 006998* NO ONE SAYS YOU HAVE TO DO THIS
- 006999* IT DISPLAYS ALL THE ENTRIES IN THE TABLE - JUST TO SHOW
- 007000* IF IT WORKED PROPERLY
- 007001 DISPLAY 'HERE IS THE TABLE AFTER LOADING'
- 007002 PERFORM
- 007003 VARYING PART-INDEX FROM 1 BY 1
- 007004 UNTIL PART-INDEX > PART-TABLE-MAX-OCCURS
- 007005
- 007006 DISPLAY EACH-PART-NUMBER (PART-INDEX)
- 007007 EACH-PART-DESCRIPTION (PART-INDEX)
- 007008 END-PERFORM
- 007009
- 007800 CLOSE TABLE-FILE.
- 007900
- 008000 TABLE-READ-PAR.
- 008100 READ TABLE-FILE
- 008200 AT END MOVE 'Y' TO TABLE-FILE-AT-END
- 008300 END-READ.
- 008310
- 008400 ERROR-EXIT.
- 008500* DISPLAY MESSAGES IF NEEDED
- 008700* END THE PROGRAM
- 008800 GOBACK.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement