WOPO/PRINTCNF.COB

118 lines
3.6 KiB
COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. "PRINT-CONFIG".
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CONFIG
ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS CONFIG-KEY.
SELECT USERS
ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS USER-NAME.
SELECT CHANNELS
ASSIGN TO DISK
ORGANIZATION IS SEQUENTIAL.
SELECT PROGRAM-INDEX
ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS NAME OF INDEX-ENTRY.
SELECT PROGRAM-CODE
ASSIGN TO DISK
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS PROGRAM-IP.
DATA DIVISION.
FILE SECTION.
FD CONFIG.
01 CONFIG-RECORD.
03 CONFIG-KEY PIC X(16).
03 CONFIG-VALUE PIC X(64).
FD USERS.
01 USER-RECORD.
03 USER-NAME PIC X(40).
03 USER-LEVEL PIC 9(2).
FD CHANNELS.
01 CHANNEL-RECORD.
03 CHANNEL-NAME PIC X(50).
FD PROGRAM-INDEX.
01 INDEX-ENTRY.
03 NAME PIC X(16).
03 ADDR PIC 999.
FD PROGRAM-CODE.
01 PROGRAM-RECORD.
03 INSTRUCTION-RECORD PIC X(999).
03 PREV-IP PIC 999.
03 NEXT-IP PIC 999.
WORKING-STORAGE SECTION.
01 STATE PIC 9(2) VALUE 0.
88 DONE VALUE 10.
01 PROGRAM-IP PIC 999.
PROCEDURE DIVISION.
DISPLAY "CONFIGURATION ENTRIES.".
OPEN INPUT CONFIG.
PERFORM PRINT-CONFIG-ENTRY UNTIL DONE.
MOVE 0 TO STATE.
CLOSE CONFIG.
DISPLAY "USER ENTRIES.".
OPEN INPUT USERS.
PERFORM PRINT-USER-ENTRY UNTIL DONE.
MOVE 0 TO STATE.
CLOSE USERS.
DISPLAY "CHANNEL ENTRIES.".
OPEN INPUT CHANNELS.
PERFORM PRINT-CHANNEL-ENTRY UNTIL DONE.
MOVE 0 TO STATE.
CLOSE CHANNELS.
DISPLAY "PROGRAMS.".
OPEN INPUT PROGRAM-INDEX, PROGRAM-CODE.
PERFORM PRINT-PROGRAM UNTIL DONE.
CLOSE PROGRAM-INDEX, PROGRAM-CODE.
EXIT PROGRAM.
PRINT-CONFIG-ENTRY.
READ CONFIG NEXT RECORD
AT END MOVE 10 TO STATE.
IF NOT DONE THEN
DISPLAY CONFIG-RECORD.
PRINT-USER-ENTRY.
READ USERS NEXT RECORD
AT END MOVE 10 TO STATE.
IF NOT DONE THEN
DISPLAY USER-RECORD.
PRINT-CHANNEL-ENTRY.
READ CHANNELS NEXT RECORD
AT END MOVE 10 TO STATE.
IF NOT DONE THEN
DISPLAY CHANNEL-RECORD.
PRINT-PROGRAM.
READ PROGRAM-INDEX NEXT RECORD
AT END MOVE 10 TO STATE.
IF NOT DONE THEN
DISPLAY NAME OF INDEX-ENTRY
MOVE ADDR OF INDEX-ENTRY TO PROGRAM-IP
PERFORM PRINT-INSTRUCTION UNTIL DONE
MOVE 0 TO STATE.
PRINT-INSTRUCTION.
READ PROGRAM-CODE RECORD
AT END MOVE 10 TO STATE.
IF NOT DONE THEN
DISPLAY PROGRAM-IP, ".", INSTRUCTION-RECORD, ".",
PREV-IP, ".", NEXT-IP
IF NEXT-IP OF PROGRAM-RECORD IS EQUAL TO 999 THEN
MOVE 10 TO STATE
ELSE
MOVE NEXT-IP OF PROGRAM-RECORD TO PROGRAM-IP.