cdc:nos2.source:nam5871:nvftvvd
Table of Contents
NVFTVVD
Table Of Contents
- [00008] PROC NVFTVVD
- [00009] NVFTVVD - VERIFY VALIDATION DATA
- [00013] VERIFY VALIDATION DATA.
- [00066] PROC ABORT
- [00067] PROC MESSAGE
- [00073] PROC NVFSCAD
- [00074] PROC NVFTETC
- [00075] PROC NVFTILP
- [00076] PROC NVFTPSV
- [00077] PROC NVFTPUV
- [00078] PROC NVFTURT
- [00079] PROC NVFTVAA
- [00080] PROC NVFUMQE
- [00081] PROC SSTAQE
- [00082] FUNC XSFW C(10)
- [00405] PROC MASKINPUT1)
- [00406] MASKINPUT - OVERMASK INPUT LINE
- [00410] MASKINPUT - OVERMASK INPUT LINE
Source Code
- NVFTVVD.txt
- *DECK NVFTVVD
- USETEXT TEXTNVF
- USETEXT TEXTSS
- USETEXT TXSMNVF
- USETEXT TXTANVF
- USETEXT TXTAPSS
- PROC NVFTVVD;
- # TITLE NVFTVVD - VERIFY VALIDATION DATA #
- BEGIN # NVFTVVD #
- #
- ** NVFTVVD - VERIFY VALIDATION DATA.
- *
- * E. THAVIKULWAT 81/10/14
- *
- * THIS PROCEDURES' MAIN FUNCTION IS TO DETERMINE WHETHER OR NOT
- * USER VERIFICATION WAS SUCCESSFUL. IT IS CALLED INTO EXECUTION
- * BY PROCEDURE *NVFTDQE*.
- *
- * PROC NVFTVVD
- *
- * ENTRY:
- * WC IN *WCBUF*
- * ABH IN *ABHBUF*
- * VERIFICATION DATA IN *MSGBUF*
- *
- * EXIT:
- * PASSWORD OVERMASK IS ISSUED ON LOGIN FOR ASYNCHRONOUS
- * TERMINAL CLASSES AND ONE OF THE FOLLOWING:
- * 1) APPLICATION PROMPT ISSUED.
- * 2) CONNECTION SWITCHED TO APPROPRIATE APPLICATION.
- * 3) CONNECTION TERMINATED.
- * 4) PERSONAL IDENTIFIER PROMPT ISSUED.
- *
- * NOTES:
- * SHOULD A CONNECTION-BROKEN OCCUR PRIOR TO THIS, NO FURTHER
- * PROCESSING OF THE DATA IS DONE AND THE TERMINATING ROUTINE
- * IS CALLED. VERIFICATION IS SUCCESSFUL ONLY IF THE SECURITY
- * COUNT IS NOT EXHAUSTED, FAMILY NAME, USER NAME, PASSWORD, AND
- * PERSONAL ID ARE VALID, AND THE USER IS VALIDATED FOR AT LEAST
- * ONE APPLICATION.
- * IF THE TERMINAL CLASS IS 8 OR UNDER (ASYNCHRONOUS) BUT NOT A
- * IBM2741, THE TERMINAL INPUT LINE CONTAINING THE PASSWORD WILL
- * BE MASKED. SEE FURTHER NOTES IN INTERNAL PROCEDURE *MASKINPUT*.
- *
- * METHOD:
- * SEARCH PTAC TABLE FOR ENTRY THAT MATCHES ACN OF THIS REQUEST.
- * IF MATCH, INITIAL LOGIN, AND THE TERMINAL IS OF THE
- * ASYNCHRONOUS TERMINAL CLASS, ISSUE THE PASSWORD OVERMASK.
- * COPY THE VALIDATION DATA INTO THE PTAC ENTRY. IF
- * CONNECTION-BROKEN OCCURRED PRIOR TO THIS, CALL *NVFTETC* AND
- * EXIT. IF TERMINAL IS STILL CONNECTED, VERIFY VALIDATION DATA
- * AND ROUTE CONTROL TO THE APPROPRIATE ROUTINE. IF NO PTAC
- * ENTRY IS FOUND FOR THIS ACN, SET UP DECREMENT FAMILY COUNT
- * (73B) AND EXIT.
- #
- #
- **** PROC NVFTVVD - XREF LIST.
- #
- $BEGIN
- XREF
- BEGIN
- PROC ABORT; # ABORT JOB #
- PROC MESSAGE; # SEND MESSAGE TO SYSTEM AND USER DAYFILE #
- END
- $END
- XREF
- BEGIN
- PROC NVFSCAD; # COMPLETE APPLICATION DEPARTURE #
- PROC NVFTETC; # END TERMINAL CONNECTION #
- PROC NVFTILP; # ISSUE LOGIN PROMPTS #
- PROC NVFTPSV; # PROCESS SUCCESSFUL VALIDATION #
- PROC NVFTPUV; # PROCESS UNSUCCESSFUL VALIDATION #
- PROC NVFTURT; # UPDATE *RAU* TABLE #
- PROC NVFTVAA; # VALIDATE USER'S RIGHT TO ACCESS APPL #
- PROC NVFUMQE; # TRANSFER TEXT QUEUE #
- PROC SSTAQE; # ACCEPT QUEUE ENTRY #
- FUNC XSFW C(10); # SPACE FILL WORD #
- END
- *CALL TMSGNVF
- #
- ****
- #
- ITEM AS I; # SUBSCRIPT FOR ARRAY AST #
- ITEM ASENTRY I; # NUMBER OF AST ENTRIES #
- ITEM I I; # LOOP VARIABLE #
- ITEM J I; # LOOP VARIABLE #
- ITEM LNGTH I; # LENGTH OF MESSAGE #
- ITEM MATCH B; # EXIT LOOP VARIABLE #
- ITEM NENTRY I; # NUMBER OF ENTRIES IN TABLE #
- ITEM PRIAPP B; # PRIMARY APPLICATION INDICATOR #
- ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC #
- ITEM PTTC I; # TERMINAL CLASS #
- $BEGIN
- #
- * FOLLOWING ARRAY CONTAINS MESSAGE ISSUED TO THE DAYFILE UPON NOT
- * FINDING AN EXPECTED PTAC ENTRY.
- #
- ARRAY DAYMSG[00:00] S(4);
- BEGIN
- ITEM DAY$MSG1 C(00,00,27) = ["NVFTVVD - CANNOT FIND PTAC "];
- ITEM DAY$MSG2 C(02,42,05) = ["ENTRY"];
- END
- $END
- #
- * THE FOLLOWING ARRAY WILL BE USED AS TEMPORARY STORAGE OF THE
- * PERSONAL ID
- #
- ARRAY PIDENTRY[00:00] S(2);
- BEGIN
- ITEM PID$WRD1 U(00,00,60);
- ITEM PID$WRD2 U(01,00,60);
- ITEM PID$CHAR C(00,00,20);
- END
- #
- * THE FOLLOWING BASED ARRAY POINTER POINTS TO THE FIRST WORD OF
- * THE VALIDATION DATA PORTION OF THE PTAC ENTRY.
- #
- BASED ARRAY BPTACVD[00:00] S(1);
- BEGIN
- ITEM BPT$WORD U(00,00,60); # FULL WORD REFERENCE #
- END
- #
- * SEARCH PTAC TABLE FOR ENTRY THAT MATCHES ON ACN.
- #
- MATCH = FALSE;
- NENTRY = PTALNGTH / PTACSIZ$; # CALCULATE NUMBER OF ENTRIES #
- FOR PT = 0 STEP 1 WHILE (NOT MATCH AND PT LS NENTRY)
- DO
- BEGIN
- IF PTA$VCB[PT] EQ ABHADR[0]
- THEN # PTAC ENTRY FOUND #
- BEGIN
- #
- * COPY VALIDATION DATA FROM *MSGBUF* TO PTAC ENTRY.
- #
- P<BPTACVD> = LOC(PTA$FWORD[PT]); # POINTS TO FAMILY WORD #
- FOR I = 0 STEP 1 UNTIL (WCB$WC[0] - 9)
- DO
- BEGIN
- BPT$WORD[I] = MSG$WORD[I];
- END
- #
- * COPY CHARGE AND PROJECT DATA FROM *MSGBUF* TO PTA ENTRY
- #
- J = I;
- P<BPTACVD> = LOC(PTA$CHGNUM[PT]); # POINTS TO CHARGE NUMBER #
- FOR I = 0 STEP 1 UNTIL 2
- DO
- BEGIN
- BPT$WORD[I] = MSG$WORD[J+I];
- END
- #
- * COPY THE PERSONAL IDENTIFIER *MSGBUF* TO A TEMPORARY LOCATION AND
- * COPY THE PASSWORD EXPIRATION DATE FROM *MSGBUF* TO THE PTAC ENTRY.
- #
- J = J + I;
- PID$WRD1[0] = MSG$WORD[J];
- PID$WRD2[0] = MSG$WORD[J + 1];
- P<BPTACVD> = LOC(PTA$EXPDAT[PT]);
- BPT$WORD[0] = MSG$WORD[J + 2];
- #
- * IF THIS IS A USER LOGIN, TERMINAL CLASS IS ANY ASYNCHRO-
- * NEOUS TYPE OTHER THAN TC2741, AND NEITHER A MANDATORY
- * NOR A PRIMARY USER NAME HAS BEEN SPECIFIED IN NDL FOR
- * THIS TERMINAL, THEN WE NEED TO SEND OUT A PASSWORD MASK.
- #
- PTTC = PTA$TC[PT];
- IF (PTA$IUVF[PT]) AND (PTTC LQ TCT4014$) AND (PTTC NQ TC2741$)
- AND (PTA$USRIND[PT] NQ MNDATRY$)
- AND (PTA$USRIND[PT] NQ PRIMARY$)
- AND (NOT PTA$WSV[PT])
- THEN
- MASKINPUT(PTA$PROMPT[PT] - 1);
- #
- * IF THE PERSONAL IDENTIFIER IS NOT REQUIRED FOR THE USER, BUT IT
- * WAS ASSUMED TO HAVE BEEN ENTERED, THE ENTRY WAS ACTUALLY THE
- * APPLICATION ENTRY. THE ENTRY WILL BE MOVED TO THE APPLICATION
- * PORTION OF THE PTAC TABLE AND THE ZERO FILLED ENTRY WILL BE
- * CHANGED TO BE A BLANK FILLED ENTRY.
- #
- IF (PTA$COPI[PT] OR (PID$CHAR[0] EQ NULL$))
- AND PTA$VPIDF[PT]
- THEN
- BEGIN
- PTA$VLTAPP[PT] = XSFW(PTA$APPPID[PT]);
- PTA$PID[PT] = NULL$;
- PTA$VPIDF[PT] = FALSE; # NO VOLUNTEERED PERSONAL ID #
- PTA$VAF[PT] = TRUE; # A VOLUNTEERED APPL EXISTS #
- END
- #
- * IF CONNECTION-BROKEN HAS OCCURRED, TERMINATE CONNECTION.
- * OTHERWISE, CHECK VALIDATION DATA AND ROUTE CONTROL TO THE
- * APPROPRIATE ROUTINES.
- #
- IF PTA$STATE[PT] EQ PTACST"CONBROK"
- THEN # CONNECTION BROKEN OCCURRED #
- BEGIN
- #
- * IF THIS IS A LOAN REQUEST, LOCATE THE PRIMARY APPL *AST*
- * ENTRY AND DECREMENT THE NUMBER OF RESERVED CONNECTIONS.
- * UPDATE THE *RAU* TABLE IF NECESSARY.
- #
- IF PTA$LRC[PT] GQ RCRC"LSA"
- THEN
- BEGIN
- PRIAPP = TRUE;
- NVFTURT(PTA$VCB[0],PT,PRIAPP);
- ASENTRY = ASTLNGTH/ASTSIZ$;
- FOR AS = 0 STEP 1 WHILE
- ((AS LS ASENTRY) AND
- (AST$AN[AS] NQ PTA$PRIAN[PT]))
- DO
- BEGIN
- END
- IF AS LS ASENTRY
- THEN
- BEGIN
- AST$RACN[AS] = AST$RACN[AS] - 1;
- NVFSCAD(AS);
- END
- END
- NVFTETC(PT); # END TERMINAL CONNECTION #
- END
- ELSE # TERMINAL STILL CONNECTED #
- BEGIN
- #
- * IF DEVICE ERROR FLAG IN PTAC IS SET, SEND "FAMILY NOT AVAILABLE,
- * TRY AGAIN LATER" MESSAGE TO TERMINAL AND END THE CONNECTION.
- #
- IF PTA$DVERR[PT]
- THEN
- BEGIN
- NVFUMQE(P<CTQ>,FNABUF[0],APPTTX$,PTA$ACN[PT],LMSG50$);
- NVFTETC(PT); # END TERMINAL CONNECTION #
- RETURN;
- END
- IF (PTA$SCINV[PT] EQ 0)
- AND ((PTA$AAVW[PT] LAN VAPMASK) NQ 0)
- THEN # VALID LOGIN #
- BEGIN
- IF (NOT PTA$WSV[PT])
- THEN
- BEGIN
- #
- * THIS IS A ORIGINAL VALIDATION AND EVERYTHING IS VALID.
- * VALIDATE THE PERSONAL ID IF IT IS REQUIRED AND HAS BEEN ENTERED.
- * IF IT HAS NOT BEEN VOLUNTEERED PROMPT THE USER FOR IT.
- #
- IF (NOT PTA$COPI[PT]) AND (PID$CHAR[0] NQ NULL$)
- THEN # PERSONAL IDENTIFIER REQUIRED #
- BEGIN
- IF PTA$VPIDF[PT]
- THEN # PERSONAL ID VOLUNTEERED #
- BEGIN
- IF (PID$CHAR[0] NQ PTA$PID[PT])
- THEN # PERSONAL ID ENTERED INVALID #
- BEGIN
- PTA$INVPID[PT] = TRUE;
- NVFTPUV(PT); # PROCESS UNSUCCESSFUL VALIDATN #
- RETURN; # EXIT #
- END
- END
- ELSE # PERSONAL ID NOT VOLUNTEERED #
- BEGIN
- PTA$PID[PT] = PID$CHAR[0];
- PTA$PROMPT[PT] = AWTPID$;
- NVFTILP(PT); # ISSUE PERSONAL ID LOGIN PROMPT#
- RETURN; # EXIT #
- END
- END
- IF PID$CHAR[0] NQ NULL$
- THEN # SAVE PID FOR ACCOUNT MESSAGE #
- PTA$PID[PT] = PID$CHAR[0];
- NVFTPSV(PT); # PROCESS SUCCESSFUL VALIDATION #
- IF PTA$STATE[PT] EQ PTACST"AWTVAA"
- THEN # NEED TO VALIDATE #
- BEGIN
- NVFTVAA(PT); # VALIDATE RIGHT TO ACCESS APPL #
- END
- END
- ELSE
- #
- * THIS IS A REVALIDATION. FAMILY AND USER NAME ARE GOOD,
- * BUT PASSWORD IS INVALID.
- #
- BEGIN
- PTA$INVLF[PT]=TRUE;
- PTA$UIDX[PT] = 0; # CLEAR USER INDEX FIELD #
- PTA$WSV[PT]=FALSE;
- IF ((NOT PTA$COPI[PT]) AND (PID$CHAR[0] NQ NULL$) AND
- (PTA$AAWC[PT] NQ NULL$) AND (NOT PTA$VPIDF[PT]))
- THEN # INVALID PASSWORD,PID REQUIRED #
- BEGIN
- PTA$PROMPT[PT] = AWTPID$;
- NVFTILP(PT); # ISSUE PERSONAL ID LOGIN PROMPT#
- END
- ELSE # PID NOT REQUIRED #
- BEGIN
- NVFTPUV(PT); # PROCESS UNSUCCESSFUL VALIDATIO#
- RETURN;
- END
- END
- END
- ELSE # INVALID LOGIN #
- BEGIN
- IF (NOT PTA$WSV[PT])
- THEN
- BEGIN
- #
- * THIS IS A ORIGINAL VALIDATION, SINCE IT IS A INVALID LOGIN, WE NEED
- * TO ISSUE CPM56 REQUEST TO REVALIDATE FAMILY AND USER NAME AGAIN.
- #
- P<CRQBUF>=LOC(MSGBUF[0])+((NMSGBUF$+1)/2);
- CRQ$FCWORD[0]=0;
- CRQ$FWORD[0]=0;
- CRQ$PWORD[0]=0;
- CRQ$UWORD[0]=0;
- CRQ$FC[0]=CPM56B$;
- CRQ$ACN[0]=PTA$VCB[PT];
- CRQ$FNAM[0]=PTA$FNAM[PT];
- CRQ$VPWF[0]=TRUE; # PASSWORD NOT TO BE VALIDATED #
- CRQ$IFCTF[0]=FALSE; # DO NOT INCREMENT FAMILY COUNT #
- CRQ$RETPID[0] = TRUE; # RETURN THE PERSONAL IDENTIFIER#
- CRQ$UNUM[0]=PTA$UNUM[PT];
- CRQ$QNUM[0]=LOC(P<VDATAQ>);
- LNGTH=CRQVSIZ$*10;
- NVFUMQE(P<CPMRQ>,CRQBUF[0],APPTTX$,0,LNGTH);
- PTA$STATE[PT]=PTACST"AWTVAL";
- PTA$PWEXPF[PT]=TRUE; # DO NOT REISSUE PW EXP MESSAGE #
- PTA$WSV[PT]=TRUE; # WAIT FOR SECOND VALIDATION #
- RETURN;
- END
- ELSE
- #
- * THIS IS A REVALIDATAION. FAMILY AND USER NAME ARE NOT
- * VALID. SET UP THE FLAG IN ORDER NOT TO ISSUE FAMILY AND USER
- * NAME IN AN "ABER" ACCOUNTING MESSAGE, SINCE THE INVALID USER
- * NAME COULD PROBABLY BE A PASSWORD.
- #
- BEGIN
- PTA$WSV[PT]=FALSE;
- PTA$IFU[PT]=TRUE; # BAD FAMILY/USER NAME PACK #
- NVFTPUV(PT); # PROCESS UNSUCCESSFUL VALIDATN #
- END
- END
- END
- MATCH = TRUE;
- END
- END # END FOR PT LOOP #
- #
- * IF NO PTAC ENTRY COULD BE FOUND, DECREMENT FAMILY COUNT AND EXIT.
- #
- IF NOT MATCH
- THEN # NO PTAC ENTRY FOUND #
- BEGIN
- $BEGIN
- MESSAGE(DAYMSG,0); # MSG TO SYSTEM AND USR DAYFILE #
- ABORT;
- $END
- P<CRQBUF> = LOC(MSGBUF[0]) + ((NMSGBUF$ + 1) / 2);
- CRQ$FCWORD[0] = 0;
- CRQ$FWORD[0] = 0;
- CRQ$FC[0] = CPM73B$;
- CRQ$ACN[0] = 0;
- CRQ$FNAM[0] = MSG$CHAR[0];
- LNGTH = CRQDSIZ$ * 10;
- NVFUMQE(P<CPMRQ>,CRQBUF[0],APPTTX$,0,LNGTH);
- END
- CONTROL EJECT;
- PROC MASKINPUT((PROMPT));
- # TITLE MASKINPUT - OVERMASK INPUT LINE #
- BEGIN # MASKINPUT #
- #
- ** MASKINPUT - OVERMASK INPUT LINE
- *
- * G. A. HUGHES 86/02/17
- *
- * THIS PROCEDURE IS INTERNAL TO PROCEDURE *NVFTVVD* AND IS CALLED
- * ONLY BY *NVFTVVD*. IT'S MAIN FUNCTION IS TO OVERMASK THE INPUT
- * LINE CONTAINING THE PASSWORD.
- *
- * PROC MASKINPUT
- *
- * ENTRY:
- * *PROMPT* CONTAINS THE A LABEL POINTER TO LAST PROMPT ISSUED.
- *
- * EXIT:
- * MASK BUILT AND ISSUED TO THE QUEUE.
- *
- * NOTES:
- * 1) IF THE PROMPT IS A PASSWORD PROMPT AND THE TERMINAL IS A M33,
- * A 2741, OR A T4014, THEN THE MASK IS BUILT WITHOUT A PROMPT.
- * 2) IN ALL OTHER CASES THE PROMPT WILL BEGIN EACH CHARACTER OF
- * THE MASK.
- * 3) THE FIRST TWO CHARACTERS IN THE SECOND WORD OF THE PROMPT
- * MUST REMAIN BLANKS TO RETAIN THE ORIGINAL SPACING.
- *
- * METHOD:
- * DETERMINE HOW MANY CM WORDS EACH MASK LINE WILL NEED. INSERT
- * THE PROMPT AND THE MASK CHARACTERS INTO THE BUFFER. BEFORE
- * EACH LINE OF THE MASK A FORMAT EFFECTOR IS INSERTED TO SET THE
- * CURSOR BACK TO THE BEGINNING OF THE LINE. A LINE FEED FORMAT
- * EFFECTOR IS ISSUED FOLLOWING THE MASK AND CURSOR POSITIONING
- * IS REINSTATED.
- #
- DEF NUMBERMASK #4#; # NUMBER OF SEPARATE MASKS TO GENERATE #
- DEF BEGIN$LINE #"+"#; # POSITION TO START OF CURRENT LINE FE #
- DEF NEW$LINE #" "#; # SPACE ONE LINE FORMAT EFFECTOR #
- ITEM IDX I; # INDEX FOR SECOND HALF OF *MSGBUF* #
- ITEM MASK$CHAR I; # NUMBER OF CHAR BEYOND WORD BOUNDARY #
- ITEM MASK$WORD I; # NUMBER OF WORDS TO MASK #
- ITEM MSK I; # MASK NUMBER LOOP COUNTER #
- ITEM PROMPT I; # LAST PROMPT ISSUED #
- ITEM WD I; # *MSGBUF* LOOP COUNTER #
- ITEM WORD$NUMBER I; # CURRENT WORD OF MASK BEING BUILT #
- #
- * THE FOLLOWING BUFFER IS USED TO ISSUE A LINE FEED TO A TERMINAL
- * WHEN THE TERMINAL INPUT DOES NOT CONTAIN A PASSWORD.
- #
- ARRAY NEWLINE[00:00] S(1);
- BEGIN
- ITEM LINEFEED C(00,00,01) = [" "];
- END
- #
- * THE FOLLOWING ARRAY DEFINES THE CHARACTERS TO BE USED IN BUILDING
- * THE OVERMASK.
- #
- ARRAY DEFMASK[00:03] S(6);
- BEGIN
- ITEM DEF$WORD C(00,00,60) = # FULL WORD REFERENCE #
- ["HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH",
- "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
- "############################################################",
- " "];
- END
- #
- * THE FOLLOWING BASED ARRAY POINTS TO THE MASK BEING BUILT.
- #
- BASED ARRAY BLDMASK[00:00] S(1);
- BEGIN
- ITEM BLD$WRD1 C(00,00,10); # SINGLE WORD REFERENCE #
- END
- #
- * THE FOLLOWING BASED ARRAY POINTS TO A TWO WORD FIELD FOR THE MASK
- #
- BASED ARRAY BLDMASK2[00:00] S(2);
- BEGIN
- ITEM BLD$WRD2 C(00,00,20); # DOUBLE WORD REFERENCE #
- END
- #
- * THE FOLLOWING BASED ARRAY POINTS TO A SEVEN WORD FIELD FOR THE
- * MASK.
- #
- BASED ARRAY BLDMASK7[00:00] S(7);
- BEGIN
- ITEM BLD$WRD7 C(00,00,70); # SEVEN WORD REFERENCE #
- END
- SWITCH MPRMTSWT
- MLLAPPL, # LABEL FOR APPLICATION PROMPT #
- MLLPRID, # LABEL FOR PERSONAL ID PROMPT #
- MLLPWRD, # LABEL FOR PASSWORD PROMPT #
- MLLUSER, # LABEL FOR USER PROMPT #
- MLLFAM; # LABEL FOR FAMILY PROMPT #
- #
- * CLEAR OUT GOING SUPERVISORY MESSAGE BUF (SECOND HALF OF *MSGBUF*)
- #
- IDX = (NMSGBUF$ + 1) / 2; # INDEX TO 2ND HALF OF *MSGBUF* #
- FOR WD = IDX STEP 1 UNTIL NMSGBUF$
- DO
- BEGIN
- MSG$WORD[WD] = 0;
- END
- P<BLDMASK> = LOC(MSGBUF[0]) + ((NMSGBUF$ + 1) / 2);
- MASK$CHAR = 60;
- MASK$WORD = (MASK$CHAR / 10) + 1; # NUMBER OF WORDS IN INPUT #
- WORD$NUMBER = 0;
- IF ((PTTC EQ TCM33$) OR (PTTC EQ TCT4014$))
- AND (PTA$PROMPT[PT] EQ AWTPWD$)
- THEN # PASSWORD NOT ON PROMPT LINE #
- BEGIN
- IF (MASK$CHAR - ((MASK$WORD - 1) * 10) GQ 8)
- THEN # INSURE ZERO BYTE, INCLUDE FE #
- MASK$WORD = MASK$WORD + 1;
- FOR MSK = 0 STEP 1 UNTIL (NUMBERMASK - 1)
- DO
- BEGIN
- C<0,1>BLD$WRD1[WORD$NUMBER] = BEGIN$LINE;
- C<1,MASK$CHAR>BLD$WRD1[WORD$NUMBER] = DEF$WORD[MSK];
- WORD$NUMBER = WORD$NUMBER + MASK$WORD;
- END
- END
- ELSE # PASSWRD ENTERD ON PROMPT LINE #
- BEGIN
- IF (MASK$CHAR - ((MASK$WORD - 1) * 10) GQ 7)
- THEN # INCREMENT FOR ZERO BYTE #
- MASK$WORD = MASK$WORD + 1;
- FOR MSK = 0 STEP 1 UNTIL (NUMBERMASK - 1)
- DO
- BEGIN
- P<BLDMASK2> = LOC(BLD$WRD1[WORD$NUMBER]);
- GOTO MPRMTSWT[PROMPT];
- MLLFAM:
- C<0,12>BLD$WRD2[0] = FAM$PRMT;
- GOTO ENDMASK;
- MLLUSER:
- C<0,12>BLD$WRD2[0] = USR$PRMT;
- GOTO ENDMASK;
- MLLPWRD:
- C<0,12>BLD$WRD2[0] = PWD$PRMT;
- GOTO ENDMASK;
- MLLPRID:
- MLLAPPL:
- ENDMASK: # END OF CASE #
- C<0,1>BLD$WRD2[0] = BEGIN$LINE;
- WORD$NUMBER = WORD$NUMBER + 1;
- C<2,MASK$CHAR>BLD$WRD1[WORD$NUMBER] = DEF$WORD[MSK];
- WORD$NUMBER = WORD$NUMBER + MASK$WORD;
- END
- END
- #
- * ADD A LINE FEED TO THE GENERATED OVERMASK, QUEUE THE BUFFER,
- * AND TURN CURSOR POSITIONING BACK ON.
- #
- C<0,1>BLD$WRD1[WORD$NUMBER] = NEW$LINE;
- WORD$NUMBER = WORD$NUMBER + 1; # INCREMENT FOR ACTUAL COUNT #
- WCB$WC[1] = WORD$NUMBER + 2;
- ABHWORD[1] =0;
- ABHABT[1] = APPTTX$;
- ABHADR[1] = PTA$ACN[PT];
- ABHACT[1] = CT6DISPLAY;
- ABHTLC[1] = WORD$NUMBER * 10;
- SSTAQE(P<CTQ>,WCBUF[1],ABH[1],BLDMASK[0]);
- END # MASKINPUT #
- END # END NVFTVVD #
- TERM
1)
PROMPT
cdc/nos2.source/nam5871/nvftvvd.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator