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.