File CHNGER.CB

Directory of image this file is from
This file as a plain text file

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.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search