File MAILER.CB

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

IDENTIFICATION DIVISION.
PROGRAM-ID. MAILER.
AUTHOR. BOB CURRIER.
DATE-WRITTEN. AUGUST 31, 1974 00:18:23
DATE-COMPILED.
REMARKS. A MAILER SYSTEM FOR THE DECSYSTEM-10  WRITTEN IN COBOL FOR
	LACK OF ANYTHING BETTER.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. PDP-10.
OBJECT-COMPUTER. PDP-10.
SPECIAL-NAMES.
	CONSOLE IS TTY.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT MAIL-FILE ASSIGN TO DSK,
	  ACCESS MODE IS RANDOM
	  ACTUAL KEY IS MAIL-KEY
	  FILE-LIMIT IS 0 THRU 9999.
	SELECT OTHER-MAIL-FILE ASSIGN TO DSK,
	  ACCESS MODE IS RANDOM
	  ACTUAL KEY IS OTHER-MAIL-KEY
	  FILE-LIMIT 0 THRU 9999.

DATA DIVISION.
FILE SECTION.
FD	MAIL-FILE
	BLOCK CONTAINS 64 RECORDS
	LABEL RECORDS ARE STANDARD,
	VALUE OF USER-NUMBER IS MAIL-PPN
	VALUE OF IDENTIFICATION IS BOX-NAME
	DATA RECORDS ARE MAIL-REC-0, MAIL-HEADER, MAIL-REC.
01	MAIL-REC-0.
	02 NUM-MESS		PIC 9(4).
	02 NEXT-FREE		PIC 9(4).
	02 MY-PROJ		PIC 9(6).
	02 MY-PROG		PIC 9(6).
	02 MY-NAME		PIC X(30).
	02 FILLER		PIC X(50).
01	MAIL-HEADER.
	02 POINTER		PIC 9(4).
	02 FROM-PROJ		PIC 9(6).
	02 FROM-PROG		PIC 9(6).
	02 FROM-NAME		PIC X(30).
	02 FROM-SUBJECT		PIC X(30).
	02 MES-DATE		PIC X(8).
	02 MES-TIME		PIC X(8).
	02 FILLER		PIC X(8).
01	MAIL-REC.
	02 FILLER		PIC X(100).
FD	OTHER-MAIL-FILE
	BLOCK CONTAINS 64 RECORDS
	LABEL RECORDS ARE STANDARD,
	VALUE OF IDENTIFICATION IS BOX-NAME
	VALUE OF USER-NUMBER IS SEND-TO
	DATA RECORDS ARE O-MAIL-REC-0, O-MAIL-HEADER, O-MAIL-REC.
01	O-MAIL-REC-0.
	02 O-NUM-MESS		PIC 9(4).
	02 O-NEXT-FREE		PIC 9(4).
	02 O-MY-PROJ		PIC 9(6).
	02 O-MY-PROG		PIC 9(6).
	02 O-MY-NAME		PIC X(30).
	02 FILLER		PIC X(50).
01	O-MAIL-HEADER.
	02 O-POINTER		PIC 9(4).
	02 O-FROM-PROJ		PIC 9(6).
	02 O-FROM-PROG		PIC 9(6).
	02 O-FROM-NAME		PIC 9(6).
	02 O-FROM-SUBJECT	PIC X(30).
	02 O-MES-DATE		PIC X(8).
	02 O-MES-TIME		PIC X(8).
	02 FILLER		PIC X(8).
01	O-MAIL-REC.
	02 FILLER		PIC X(100).

WORKING-STORAGE SECTION.
77	THIS-NUM		PIC 99.
77	BOX-NAME		PIC X(9)	VALUE "MAIL  BOX".
77	REN-PROT		PIC 999		VALUE 122.
77	REN-ERR			PIC 9.
77	TEMP			PIC 99.
77	NEW-NUM			PIC 9.
77	PPN-DEX			PIC 9(6).
77	MAIL-PPN		PIC S9(10)	COMP.
77	GN-NUM			PIC 9(6).
77	GN-FLAG			PIC 9.
77	NEXT-MES		PIC 9(6).
77	PROJ-HOLD		PIC 9(6).
77	PROG-HOLD		PIC 9(6).
77	NAME-HOLD		PIC X(30).
77	SUBJECT			PIC X(30).
77	FREE			PIC 9(6).
77	KEY-HOLD		PIC 9(6).
77	PPN-NUM			PIC 9.
77	CHARACTER		PIC S9(10)	COMP.
77	SEND-TO			PIC S9(10)	COMP.
77	PROJ			PIC 9(6)	COMP.
77	PROG			PIC 9(6)	COMP.
77	COMMAND			PIC X(6).
77	MAIL-KEY		PIC 9(6)	COMP.
77	OTHER-MAIL-KEY		PIC 9(6)	COMP.
77	SPDEX			PIC 99.
77	SPMAX			PIC 99.
01	LIST-LINE.
	02 L-MES-NUM		PIC Z9.
	02 FILLER		PIC X.
	02 L-DATE		PIC X(8).
	02 FILLER		PIC X.
	02 L-FROM		PIC X(30).
	02 FILLER		PIC X.
	02 L-SUBJECT		PIC X(29).
01	DIS-PROJ.
	02 DIS-PROJ-IND OCCURS 6 TIMES PIC 9.
01	DIS-PROG.
	02 DIS-PROG-IND OCCURS 6 TIMES PIC 9.
01	SPNOR-HOLD.
	02 SPNOR-VAR OCCURS 30 TIMES PIC IS X.
01	DATE-EXPAND.
	02 DATER.
	  03 MONTH		PIC XX.
	  03 FILLER		PIC X		VALUE "/".
	  03 DAY		PIC XX.
	  03 FILLER		PIC X		VALUE "/".
	  03 YEAR		PIC XX.
	02 TIMER.
	  03 HOUR		PIC XX.
	  03 FILLER		PIC X		VALUE ":".
	  03 MIN		PIC XX.
	  03 FILLER		PIC X		VALUE ":".
	  03 SEC		PIC XX.
01	BIG-PPN.
	02 PPN-STUFF OCCURS 20 TIMES PIC IS X.
01	CHARACTERS-FOR-TABLE.
	02 FILLER	PIC X(30)	VALUE SPACES.
	02 FILLER	PIC X(30)	VALUE "   ! #$%&'()*+,-./0123456789:;".
	02 FILLER	PIC X(30)	VALUE "<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY".
	02 FILLER	PIC X(30)	VALUE "Z[\]^_'ABCDEFGHIJKLMNOPQRSTUVW".
	02 FILLER	PIC X(8)	VALUE "XYZ     ".
01	CHAR-TAB REDEFINES CHARACTERS-FOR-TABLE.
	02 CHARACTER-TABLE OCCURS 128 TIMES PICTURE IS X.
01	DATE.
	02 YEAR			PIC XX.
	02 MONTH		PIC XX.
	02 DAY			PIC XX.
	02 HOUR			PIC 99.
	02 MIN			PIC XX.
	02 SEC			PIC XX.

PROCEDURE DIVISION.
START.
	DISPLAY "DECSYSTEM-10 MAILER SUBSYSTEM	V1.02".
	DISPLAY " ".
START-2.
	ENTER MACRO GETPPN USING PROJ, PROG.
	ENTER MACRO SETPPN USING PROJ, PROG, MAIL-PPN.
	OPEN I-O MAIL-FILE.
	MOVE ZERO TO MAIL-KEY.
	READ MAIL-FILE RECORD INVALID KEY GO TO NOT-OK-FILE.
*	ENTER MACRO GETPPN USING PROJ, PROG.
*	IF MY-PROJ = PROG AND MY-PROG = PROG GO TO OK-FILE.
	GO TO OK-FILE.
NOT-OK-FILE.
	CLOSE MAIL-FILE WITH DELETE.
	OPEN OUTPUT MAIL-FILE.
	ENTER MACRO GETPPN USING PROJ, PROG.
	MOVE PROJ TO MY-PROJ. MOVE PROG TO MY-PROG. MOVE ZERO TO NUM-MESS.
	MOVE 1 TO NEXT-FREE.
	DISPLAY "WHAT IS YOUR NAME? "WITH NO ADVANCING.
	ACCEPT MY-NAME.
	DISPLAY " ".
	WRITE MAIL-REC-0 INVALID KEY DISPLAY "ERROR INITIALIZING MAIL FILE"; STOP RUN.
	CLOSE MAIL-FILE.
	ENTER MACRO RENAME USING BOX-NAME,BOX-NAME,REN-PROT,REN-ERR.
	IF REN-ERR NOT = ZERO DISPLAY "ERROR REPROTECTING FILE"; STOP RUN.
 GO TO START-2.
OK-FILE.
	MOVE TODAY TO DATE.
	IF ( HOUR OF DATE > 0 AND HOUR OF DATE < 12 ) DISPLAY "GOOD MORNING" WITH NO ADVANCING;
	  GO TO PRINT-NAME.
	IF ( HOUR OF DATE > 11 AND HOUR OF DATE < 17 ) DISPLAY "GOOD AFTERNOON" WITH NO ADVANCING;
	  GO TO PRINT-NAME.
	DISPLAY "GOOD EVENING" WITH NO ADVANCING.
PRINT-NAME.
	DISPLAY " "; MY-NAME.
	CLOSE MAIL-FILE.
MAIL-LOOP.
	DISPLAY " ". DISPLAY "!" WITH NO ADVANCING.
NEXT-CHAR.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	MOVE CHARACTER-TABLE ( CHARACTER + 1 ) TO COMMAND.
	IF CHARACTER = 0 OR 10 OR 13 GO TO MAIL-LOOP.
	IF COMMAND = "T" GO TO TYPE-MESSAGE.
	IF COMMAND = "S" GO TO SEND-MESSAGE.
	IF COMMAND = "Q" GO TO QUIT-MAILER.
	IF COMMAND = "L" GO TO LIST-MESSAGE.
	IF COMMAND = "K" GO TO KILL-MESSAGE.
	IF COMMAND = "?" GO TO HELP-MESSAGE.
	DISPLAY " ?" WITH NO ADVANCING. GO TO MAIL-LOOP.

QUIT-MAILER.
	DISPLAY "QUIT [CONFIRM]" WITH NO ADVANCING.
QM-LOOP.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	IF CHARACTER = 127 DISPLAY " XXX"; GO TO MAIL-LOOP.
	IF CHARACTER NOT = 13 DISPLAY " ? [CONFIRM]" WITH NO ADVANCING; GO TO QM-LOOP.
*	NOW GET RID OF THE LINE-FEED
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	STOP RUN.

TYPE-MESSAGE.
	DISPLAY "TYPE " WITH NO ADVANCING.
	MOVE ZERO TO GN-FLAG.
	PERFORM GET-NUM.
	IF GN-FLAG = 1 ; GO TO MAIL-LOOP.
	ENTER MACRO GETPPN USING PROJ, PROG.
	ENTER MACRO SETPPN USING PROJ, PROG, MAIL-PPN.
	OPEN INPUT MAIL-FILE.
	MOVE ZERO TO MAIL-KEY.
	PERFORM GET-MAIL.
	IF ( GN-NUM = ZERO ) OR ( GN-NUM > NUM-MESS ); DISPLAY " ";
	  DISPLAY "INVALID MESSAGE NUMBER"; CLOSE MAIL-FILE; GO TO MAIL-LOOP.
	MOVE MY-PROJ TO DIS-PROJ. MOVE MY-PROG TO DIS-PROG.
	MOVE 1 TO MAIL-KEY.
TM-LOOP.
	READ MAIL-FILE RECORD INVALID KEY DISPLAY "MESSAGE NO FOUND!";
	  CLOSE MAIL-FILE; GO TO MAIL-LOOP.
	SUBTRACT 1 FROM GN-NUM.
	IF GN-NUM = ZERO GO TO TGOT-IT.
	MOVE POINTER TO MAIL-KEY. GO TO TM-LOOP.
TGOT-IT.
	DISPLAY " ". DISPLAY "TO: [" WITH NO ADVANCING. PERFORM PPN-OUT.
	MOVE FROM-PROJ TO DIS-PROJ. MOVE FROM-PROG TO DIS-PROG.
	DISPLAY "FROM: " WITH NO ADVANCING. MOVE FROM-NAME TO SPNOR-HOLD.
	PERFORM SPNOR. DISPLAY "[" WITH NO ADVANCING. PERFORM PPN-OUT.
	DISPLAY "DATE: "MES-DATE" "MES-TIME.
	DISPLAY "SUBJECT: "FROM-SUBJECT. DISPLAY " ".
	MOVE POINTER TO NEXT-MES.
TLOOP.
	ADD 1 TO MAIL-KEY.
	IF MAIL-KEY = NEXT-MES DISPLAY " "; CLOSE MAIL-FILE; GO TO MAIL-LOOP.
	PERFORM GET-MAIL.
	DISPLAY MAIL-REC. GO TO TLOOP.

SEND-MESSAGE.
	DISPLAY "SEND [CONFIRM]" WITH NO ADVANCING.
SM-LOOP-1.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	IF CHARACTER = 127 DISPLAY " XXX" WITH NO ADVANCING; GO TO MAIL-LOOP.
	IF CHARACTER NOT = 13 DISPLAY " ? [CONFIRM]" WITH NO ADVANCING; GO TO SM-LOOP-1.
*	DUMP LINE-FEED.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	ENTER MACRO GETPPN USING PROJ, PROG.
	ENTER MACRO SETPPN USING PROJ, PROG, MAIL-PPN.
	OPEN INPUT MAIL-FILE.
	MOVE ZERO TO MAIL-KEY. PERFORM GET-MAIL.
	MOVE MY-NAME TO NAME-HOLD. MOVE MY-PROG TO PROG-HOLD.
	MOVE MY-PROJ TO PROJ-HOLD. CLOSE MAIL-FILE.
	DISPLAY " ".
	DISPLAY "SEND TO: " WITH NO ADVANCING.
	PERFORM GET-A-PPN.
	ENTER MACRO SETPPN USING PROJ, PROG, MAIL-PPN.
	OPEN I-O MAIL-FILE. PERFORM GET-MAIL.
	MOVE NEXT-FREE TO MAIL-KEY. MOVE SPACES TO MAIL-HEADER.
	MOVE MAIL-KEY TO KEY-HOLD.
	MOVE PROG-HOLD TO FROM-PROG. MOVE PROJ-HOLD TO FROM-PROJ.
	MOVE NAME-HOLD TO FROM-NAME.
	DISPLAY "SUBJECT: " WITH NO ADVANCING.
	ACCEPT FROM-SUBJECT.
	MOVE TODAY TO DATE.
	MOVE CORRESPONDING DATE TO DATER.
	MOVE CORRESPONDING DATE TO TIMER.
	MOVE DATER TO MES-DATE. MOVE TIMER TO MES-TIME.
	WRITE MAIL-HEADER INVALID KEY DISPLAY "?ERROR - COULD NOT WRITE MESSAGE HEADER"; STOP RUN.
	ADD 1 TO MAIL-KEY.
	DISPLAY "ENTER MESSAGE, ? FOR HELP.".
SM-LOOP-2.
	MOVE SPACES TO MAIL-REC.
	ACCEPT MAIL-REC.
	IF MAIL-REC = "END" GO TO WRITE-MESS.
	IF MAIL-REC = "?" GO TO SM-HELP.
	WRITE MAIL-REC INVALID KEY DISPLAY "?ERROR - COULD NOT WRITE OUT TEXT"; STOP RUN.
	ADD 1 TO MAIL-KEY. GO TO SM-LOOP-2.
WRITE-MESS.
	MOVE MAIL-KEY TO FREE.
	MOVE ZERO TO MAIL-KEY. PERFORM GET-MAIL.
	MOVE FREE TO NEXT-FREE. ADD 1 TO NUM-MESS.
	WRITE MAIL-REC-0 INVALID KEY DISPLAY "?ERROR - COULD NOT UPDATE RECORD 0";
	  STOP RUN.
	MOVE KEY-HOLD TO MAIL-KEY. PERFORM GET-MAIL.
	MOVE FREE TO POINTER.
	WRITE MAIL-HEADER INVALID KEY DISPLAY "?ERROR - COULD NOT UPDATE MESSAGE HEADER";
	  STOP RUN.
	CLOSE MAIL-FILE.
	GO TO MAIL-LOOP.

SM-HELP.
	DISPLAY "%HLRNHF NO .HLP FILE ON SYS:; I'M SORRY, I CAN'T HELP YOU".
	GO TO SM-LOOP-2.


LIST-MESSAGE.
	DISPLAY "LIST MESSAGES [CONFIRM]" WITH NO ADVANCING.
LM-LOOP1.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	IF CHARACTER = 127 DISPLAY " XXX"; GO TO MAIL-LOOP.
	IF CHARACTER NOT = 13 DISPLAY " ? [CONFIRM]" WITH NO ADVANCING; GO TO LM-LOOP1.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	ENTER MACRO GETPPN USING PROJ, PROG.
	ENTER MACRO SETPPN USING PROJ, PROG, MAIL-PPN.
	OPEN INPUT MAIL-FILE.
	MOVE ZERO TO MAIL-KEY.
	PERFORM GET-MAIL.
	IF NUM-MESS = ZERO DISPLAY " "; DISPLAY "NO MESSAGES"; CLOSE MAIL-FILE; GO TO MAIL-LOOP.
	MOVE NUM-MESS TO GN-NUM.
	MOVE 1 TO MAIL-KEY.
	PERFORM GET-MAIL.
	MOVE 1 TO THIS-NUM.
	DISPLAY " ". MOVE " #" TO LIST-LINE.
	MOVE "  DATE" TO L-DATE.
	MOVE "        FROM" TO L-FROM.
	MOVE "        SUBJECT" TO L-SUBJECT.
	DISPLAY LIST-LINE. MOVE SPACES TO LIST-LINE.
	DISPLAY " ".
LM-LOOP2.
	MOVE THIS-NUM TO L-MES-NUM.
	MOVE MES-DATE TO L-DATE.
	MOVE FROM-NAME TO L-FROM.
	MOVE FROM-SUBJECT TO L-SUBJECT.
	DISPLAY LIST-LINE.
	MOVE SPACES TO LIST-LINE.
	ADD 1 TO THIS-NUM.
	SUBTRACT 1 FROM GN-NUM.
	IF GN-NUM = ZERO; DISPLAY " "; CLOSE MAIL-FILE; GO TO MAIL-LOOP.
	MOVE POINTER TO MAIL-KEY.
	PERFORM GET-MAIL.
	GO TO LM-LOOP2.

KILL-MESSAGE.
	DISPLAY "KILL ALL MESSAGES [CONFIRM]" WITH NO ADVANCING.
KM-LOOP1.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	IF CHARACTER = 127 DISPLAY " XXX"; GO TO MAIL-LOOP.
	IF CHARACTER NOT = 13 DISPLAY " ? [CONFIRM]" WITH NO ADVANCING;
	  GO TO KM-LOOP1.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	ENTER MACRO GETPPN USING PROJ, PROG.
	ENTER MACRO SETPPN USING PROJ, PROG, MAIL-PPN.
	OPEN INPUT MAIL-FILE.
	MOVE ZERO TO MAIL-KEY.
	PERFORM GET-MAIL.
	MOVE MY-NAME TO NAME-HOLD.
	CLOSE MAIL-FILE WITH DELETE.
	OPEN OUTPUT MAIL-FILE.
	MOVE NAME-HOLD TO MY-NAME.
	MOVE ZERO TO NUM-MESS.
	MOVE 1 TO NEXT-FREE.
	MOVE PROJ TO MY-PROJ.
	MOVE PROG TO MY-PROG.
	MOVE ZERO TO MAIL-KEY.
	WRITE MAIL-REC-0; INVALID KEY DISPLAY "COULD NOT WRITE REC 0";
	  STOP RUN.
	CLOSE MAIL-FILE.
	ENTER MACRO RENAME USING BOX-NAME, BOX-NAME, REN-PROT, REN-ERR.
	IF REN-ERR NOT = ZERO DISPLAY "RENAME FAILED"; STOP RUN.
	GO TO MAIL-LOOP.

HELP-MESSAGE.
	DISPLAY " ".
	DISPLAY "OPTIONS AVAILABLE IN THIS VERSION ARE:".
	DISPLAY "	L		(LIST ALL MESSAGES)".
	DISPLAY "	S		(SEND A MESSAGE)".
	DISPLAY "	T N		(TYPE MESSAGE N)".
	DISPLAY "	K		(KILL ALL MESSAGES)".
	DISPLAY "	Q		(QUIT MAILER [EXIT])".
	DISPLAY "	?		(TYPE THIS MESSAGE)".

	DISPLAY " ".
	GO TO MAIL-LOOP.

GET-A-PPN SECTION.
	MOVE SPACES TO BIG-PPN.
	ACCEPT BIG-PPN.
	MOVE ZERO TO PROJ, PROG, PPN-DEX.
PROJ-LOOP.
	ADD 1 TO PPN-DEX.
	IF PPN-DEX = 21 GO TO EXIT-PPN.
	IF PPN-STUFF ( PPN-DEX ) = "," GO TO PROG-LOOP.
	IF PPN-STUFF ( PPN-DEX ) = " " GO TO PROJ-LOOP.
	IF PPN-STUFF ( PPN-DEX ) NOT NUMERIC DISPLAY "?? ENTER PPN: "
	  WITH NO ADVANCING; GO TO GET-A-PPN.
	MULTIPLY PROJ BY 10 GIVING PROJ. MOVE PPN-STUFF ( PPN-DEX ) TO PPN-NUM.
	ADD PPN-NUM TO PROJ. GO TO PROJ-LOOP.
PROG-LOOP.
	ADD 1 TO PPN-DEX.
	IF PPN-DEX = 21 GO TO EXIT-PPN.
	IF PPN-STUFF ( PPN-DEX ) = " " GO TO PROG-LOOP.
	IF PPN-STUFF ( PPN-DEX ) NOT NUMERIC DISPLAY "?? ENTER PPN: "
	  WITH NO ADVANCING; GO TO GET-A-PPN.
	MULTIPLY PROG BY 10 GIVING PROG. MOVE PPN-STUFF ( PPN-DEX ) TO PPN-NUM.
	ADD PPN-NUM TO PROG. GO TO PROG-LOOP.
EXIT-PPN.
	EXIT.

GET-NUM SECTION.
	MOVE ZERO TO GN-NUM.
GN-LOOP.
	ENTER FORTRAN-IV FRITZ USING CHARACTER.
	IF CHARACTER = 13; ENTER FORTRAN-IV FRITZ USING CHARACTER; GO TO GN-EXIT.
	IF CHARACTER = 127 DISPLAY " XXX"; MOVE 1 TO GN-FLAG; GO TO GN-EXIT.
	IF (CHARACTER < 48) OR (CHARACTER > 57) MOVE 1 TO GN-FLAG; DISPLAY " ? "; GO TO GN-EXIT.
	MOVE CHARACTER-TABLE ( CHARACTER + 1 ) TO NEW-NUM.
	DISPLAY NEW-NUM WITH NO ADVANCING.
	MULTIPLY GN-NUM BY 10 GIVING GN-NUM. ADD NEW-NUM TO GN-NUM.
	GO TO GN-LOOP.
GN-EXIT.
	EXIT.

SUBROUTINES SECTION.
GET-MAIL.
	READ MAIL-FILE INVALID KEY DISPLAY "INVALID MAIL-FILE KEY = "MAIL-KEY;
	  STOP RUN.

PPN-OUT.
	EXAMINE DIS-PROJ TALLYING LEADING ZEROES.
	MOVE TALLY TO TEMP. ADD 1 TO TEMP.
	PERFORM PPN-TYPE VARYING PPN-DEX FROM TEMP BY 1 UNTIL PPN-DEX > 6.
	DISPLAY "," WITH NO ADVANCING.
	MOVE DIS-PROG TO DIS-PROJ.
	EXAMINE DIS-PROJ TALLYING LEADING ZEROES.
	MOVE TALLY TO TEMP. ADD 1 TO TEMP.
	PERFORM PPN-TYPE VARYING PPN-DEX FROM TEMP BY 1 UNTIL PPN-DEX > 6.
	DISPLAY "]".

PPN-TYPE.
	DISPLAY DIS-PROJ-IND ( PPN-DEX ) WITH NO ADVANCING.

SPNOR SECTION.
SPNOR-PARA.
	MOVE 31 TO SPDEX.
SPNOR-LOOP.
	SUBTRACT 1 FROM SPDEX.
	IF SPDEX = ZERO GO TO SPNOR-EXIT.
	IF SPNOR-VAR ( SPDEX ) = SPACE GO TO SPNOR-LOOP.
	MOVE SPDEX TO SPMAX.
	MOVE ZERO TO SPDEX.
SP-LOOP.
	ADD 1 TO SPDEX.
	IF SPDEX = SPMAX + 1 GO TO SPNOR-EXIT.
	DISPLAY SPNOR-VAR ( SPDEX ) WITH NO ADVANCING.
	GO TO SP-LOOP.
SPNOR-EXIT.
	DISPLAY " " WITH NO ADVANCING.
	MOVE SPACES TO SPNOR-HOLD.



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