Google
 

Trailing-Edge - PDP-10 Archives - AP-D471B-SB_1978 - login.cbl
There are no other files named login.cbl in the archive.
IDENTIFICATION DIVISION.
PROGRAM-ID.	LOGIN.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT LOG-FILE ASSIGN TO DSK
	RECORDING MODE IS ASCII.
DATA DIVISION.
FILE SECTION.
FD	LOG-FILE
	VALUE OF ID 'LOG   FIL'.

01	LOG-REC.
	02	USERS-LOGIN-NO	PIC X(6).
	02	PASSWORD	PIC X(6).

WORKING-STORAGE SECTION.
77	GAR-BAGE	PIC X(72).
77	TOO-LONG	PIC X(21)
	VALUE "MESSAGE TEXT TOO LONG".
77	END-IND	PIC 9.
77	ENABLER	PIC X(22) VALUE "*** READY TO ORDER ***".

	77	ULN-MSG	PIC X(6)
	VALUE "USER #".
77	B-AGAIN	PIC X(12)	VALUE "PLEASE LOGIN".
77	RESTART-SW	PIC 9	VALUE ZERO COMP.

01	DUMMY-COMP	PIC S9(10) VALUE 26 COMP.
01	DUMMY-ASCII REDEFINES DUMMY-COMP USAGE DISPLAY-7.
	02	FILLER PIC X(4).
	02	CR-WITHOUT-LF  PIC X.

01	USER-INFO.
	02	ULN	PIC X(6) VALUE SPACES.
	02	PASSWORD	PIC X(6) VALUE SPACES.

01	PASSWORD-CR	DISPLAY-7.
	02	FILLER  PIC X(8) VALUE "PASSWORD".
	02	CR	PIC X.

COMMUNICATION SECTION.

CD	LOGIN-INPUT FOR INPUT
	QUEUE IN-Q
	MESSAGE DATE IS M-DATE
	MESSAGE TIME IS M-TIME
	SYMBOLIC SOURCE IS M-SOURCE
	TEXT LENGTH IS M-IN-LENGTH
	END KEY IS IN-END-KEY
	STATUS KEY IS IN-STATUS-KEY.


CD	LOGIN-OUTPUT FOR OUTPUT
	TEXT LENGTH IS M-OUT-LENGTH
	STATUS KEY IS OUT-STATUS-KEY
	ERROR KEY IS OUT-ERROR-KEY
	SYMBOLIC DESTINATION IS OUT-DESTINATION
	DESTINATION COUNT IS DESTINATION-COUNT.

PROCEDURE DIVISION.
START.
	OPEN INPUT LOG-FILE.
	MOVE CR-WITHOUT-LF TO CR.

RECEIVE-ULN.
	MOVE SPACES TO ULN.
	MOVE "LOGIN" TO IN-Q.
	RECEIVE LOGIN-INPUT MESSAGE INTO ULN.
	MOVE 1 TO DESTINATION-COUNT.
	MOVE M-SOURCE TO OUT-DESTINATION.
	ENABLE OUTPUT LOGIN-OUTPUT WITH KEY "ORDER".
	IF IN-END-KEY EQUALS ZERO GO TO PURGE-IT.
	IF IN-END-KEY NOT EQUAL TO "2"
			GO TO ULN-ERROR.

ASK-FOR-PASSWORD.
	MOVE 9 TO M-OUT-LENGTH.
	MOVE M-SOURCE TO OUT-DESTINATION.
	MOVE 1 TO DESTINATION-COUNT.
	SEND LOGIN-OUTPUT FROM PASSWORD-CR
		WITH EMI AFTER ADVANCING 1 LINE.

RECEIVE-PASSWORD.
	MOVE SPACES TO PASSWORD OF USER-INFO.
	RECEIVE LOGIN-INPUT MESSAGE INTO PASSWORD OF
		USER-INFO.
	IF IN-END-KEY EQUALS ZERO GO TO PURGE-IT.
	IF  IN-END-KEY NOT EQUAL "3"
		GO TO ULN-ERROR.

READ-LOOP.
	READ LOG-FILE AT END GO TO INVALID-USER.
	IF ULN NOT EQUAL TO USERS-LOGIN-NO GO TO READ-LOOP.
	IF PASSWORD OF LOG-REC IS EQUAL TO PASSWORD OF USER-INFO
		GO TO EN-ABLE ELSE MOVE 1 TO RESTART-SW GO TO ULN-ERROR.

EN-ABLE.
	MOVE SPACES TO IN-Q.
	ENABLE INPUT TERMINAL LOGIN-INPUT WITH KEY "ORDER".
	MOVE 22 TO M-OUT-LENGTH.
	SEND LOGIN-OUTPUT FROM ENABLER WITH EMI
		AFTER ADVANCING 3 LINES.
	SEND LOGIN-OUTPUT WITH EPI.

DONE.
	CLOSE LOG-FILE.
	GO TO START.

PURGE-IT.
	RECEIVE LOGIN-INPUT MESSAGE INTO GAR-BAGE.
	IF IN-END-KEY EQUALS ZERO GO TO PURGE-IT.
	MOVE 1 TO M-OUT-LENGTH.
	MOVE M-SOURCE TO OUT-DESTINATION.
	MOVE 1 TO DESTINATION-COUNT.
	SEND LOGIN-OUTPUT FROM CR WITH ESI.
	MOVE 21 TO M-OUT-LENGTH.
	SEND LOGIN-OUTPUT FROM TOO-LONG WITH EMI.
	MOVE 1 TO RESTART-SW.
ULN-ERROR.
	IF IN-END-KEY GREATER THAN 2 MOVE 4 TO END-IND
		ELSE MOVE 2 TO END-IND.
	MOVE M-SOURCE TO OUT-DESTINATION.
	MOVE 1 TO DESTINATION-COUNT.
	SEND LOGIN-OUTPUT WITH EMI.
	IF END-IND =2 MOVE 6 TO M-OUT-LENGTH
	SEND LOGIN-OUTPUT FROM ULN-MSG WITH END-IND
	ELSE MOVE 12 TO M-OUT-LENGTH
	SEND LOGIN-OUTPUT FROM B-AGAIN WITH END-IND.
	SEND LOGIN-OUTPUT WITH EMI.
	DISABLE OUTPUT LOGIN-OUTPUT WITH KEY "NOORDER".
	IF RESTART-SW = ZERO GO TO RECEIVE-ULN
		ELSE MOVE ZERO TO RESTART-SW.

VERY-BAD.
	CLOSE LOG-FILE.
	GO TO START.
INVALID-USER.
	CLOSE LOG-FILE.
	MOVE 1 TO DESTINATION-COUNT.
	MOVE M-SOURCE TO OUT-DESTINATION.
	DISABLE OUTPUT LOGIN-OUTPUT WITH KEY "NOORDER".
	GO TO START.