IDENTIFICATION DIVISION. PROGRAM-ID. CHANGER. REMARKS. CHANGES BOB'S DICTIONARY TO A USABLE FORM. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. CONSOLE IS TTY. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE, ASSIGN TO DSKB, RESERVE 15, RECORDING MODE IS ASCII. SELECT OUT-FILE, ASSIGN TO DSK, RECORDING MODE IS ASCII. DATA DIVISION. FILE SECTION. FD IN-FILE, LABEL RECORDS ARE STANDARD, VALUE OF ID IS "DICT DIC", VALUE OF USER-NUMBER IS 501,1. 01 I-BUF. 02 I-CHAR, OCCURS 120 TIMES, PIC X. FD OUT-FILE, LABEL RECORDS ARE STANDARD, VALUE OF ID IS OUT-ID. 01 O-BUF. 02 O-CHAR, OCCURS 80 TIMES, PIC X. WORKING-STORAGE SECTION. 01 OUT-ID. 02 OUT-NME. 03 OUT-LTR, PIC X. 03 FILLER, PIC X(5). 02 OUT-EXT, PIC X(3), VALUE "DIC". 01 CHAR, PIC X. 77 COLN-FLG, PIC 9, USAGE COMP, VALUE 0. 77 COMA-FLG, PIC 9, USAGE COMP, VALUE 0. 77 IN-PT, PIC 9(4), USAGE COMP, VALUE 0. 77 OUT-PT, PIC 9(4), USAGE COMP. 77 END-FLG, PIC 9, USAGE COMP. 77 READ-LINE, PIC 9, USAGE COMP. PROCEDURE DIVISION. OPEN INPUT IN-FILE. DISPLAY "RESTORE FROM? ", WITH NO ADVANCING. ACCEPT OUT-LTR. OPEN OUTPUT OUT-FILE. DUMB-RECOVERY-LOOP. PERFORM READ-CHAR. IF I-CHAR (IN-PT) NOT = "[", MOVE 121 TO IN-PT, GO TO DUMB-RECOVERY-LOOP. PERFORM READ-CHAR. IF I-CHAR (IN-PT) NOT = OUT-LTR, GO TO DUMB-RECOVERY-LOOP. MOVE "[" TO CHAR, PERFORM WRITE-CHAR. GO TO READ-LOOP-2. READ-LOOP. MOVE 0 TO COLN-FLG. MOVE 1 TO COMA-FLG. PERFORM READ-CHAR. IF I-CHAR (IN-PT) NOT = SPACE, GO TO READ-LOOP-2. MOVE 0 TO READ-LINE. MOVE 1 TO COLN-FLG. PERFORM READ-CHAR UNTIL I-CHAR (IN-PT) NOT = SPACE, IF READ-LINE = 1, MOVE "," TO CHAR, ELSE MOVE ":" TO CHAR. PERFORM WRITE-CHAR. READ-LOOP-2. MOVE 0 TO COLN-FLG, COMA-FLG. MOVE I-CHAR (IN-PT) TO CHAR. MOVE SPACE TO I-CHAR (IN-PT). PERFORM WRITE-CHAR. IF END-FLG = 1, STOP "DONE". IF I-BUF = SPACES, MOVE 121 TO IN-PT. GO TO READ-LOOP. READ-CHAR. ADD 1 TO IN-PT. IF IN-PT > 120 AND COMA-FLG NOT = 0 AND COLN-FLG NOT = 1, MOVE "," TO CHAR, PERFORM WRITE-CHAR. IF IN-PT > 120, MOVE 1 TO IN-PT, MOVE 1 TO READ-LINE, READ IN-FILE; AT END MOVE 1 TO END-FLG. WRITE-CHAR. ADD 1 TO OUT-PT. MOVE CHAR TO O-CHAR (OUT-PT). IF CHAR = "]" OR END-FLG = 1 OR OUT-PT NOT < 80, MOVE 0 TO OUT-PT, IF O-CHAR (1) = "[" AND O-CHAR (2) NOT = OUT-LTR, CLOSE OUT-FILE, MOVE O-CHAR (2) TO OUT-LTR, DISPLAY OUT-LTR, OPEN OUTPUT OUT-FILE, WRITE O-BUF; ELSE, WRITE O-BUF. IF CHAR = "]", MOVE 0 TO IN-PT, READ IN-FILE; AT END, MOVE 1 TO END-FLG. IF OUT-PT = 0, MOVE SPACES TO O-BUF.