*DECK NVFTILP
USETEXT TEXTNVF
USETEXT TEXTSS
USETEXT TXTANVF
USETEXT TXTAPSS
PROC NVFTILP((PT));
# TITLE NVFTILP - ISSUE LOGIN PROMPTS #
BEGIN # NVFTILP #
#
** NVFTILP - ISSUE LOGIN PROMPTS.
*
* E. THAVIKULWAT 81/09/02
*
* THIS PROCEDURE'S MAIN FUNCTION IS TO DETERMINE THE APPROPRIATE
* LOGIN PROMPT TO ISSUE TO THE TERMINAL. IT IS CALLED INTO
* EXECUTION BY THE FOLLOWING PROCEDURES:
* *NVFTBRK* *NVFTDSP* *NVFTETI* *NVFTITE* *NVFTPSV*
* *NVFTPUV* *NVFTRCN* *NVFTRVD* *NVFTTCD* *NVFTVAA*
* *NVFTVVD*
*
* PROC NVFTILP((PT))
*
* ENTRY:
* PT = POINTER TO PTAC ENTRY.
* PTA$PROMPT FIELD OF PTAC ENTRY CONTAINS THE PROMPT TO ISSUE.
*
* EXIT:
* APPROPRIATE PROMPT ISSUED TO TERMINAL.
*
* METHOD:
* FAMILY - IF FAMILY AND USER ARE BOTH MANDATORY, PROCEED TO
* VALIDATE THE USER.
* IF ONLY FAMILY IS MANDATORY, THEN ISSUE USER PROMPT
* INSTEAD.
* IF FAMILY IS NOT MANDATORY, ISSUE FAMILY PROMPT.
*
* USER - IF USER IS MANDATORY, PROCEED TO VALIDATE THE USER.
* IF USER IS NOT MANDATORY, ISSUE USER PROMPT.
*
* PASSWORD - TERMINAL WOULD BE SET TO AWAITING PASSWORD PROMPT
* ONLY IF:
* 1) USER NAME WAS ENTERED IN RESPOND TO A USER
* PROMPT.
* 2) USER NAME WAS ENTERED IN AN ABBREVIATED FORMAT
* FOLLOWING A FAMILY PROMPT.
* FOR CASE 1, PROCEED TO ISSUE PASSWORD PROMPT.
* FOR CASE 2, IF AUTOLOGIN TYPE FOR USER IS DEFAULT
* AND "NULL" VALUE ENTERED OR USER TYPE IS MANDATORY,
* PROCEED TO VALIDATE THE USER. OTHERWISE, ISSUE
* PASSWORD PROMPT.
*
* PID - THE TERMINAL WOULD BE SET TO AWAITING PERSONAL ID
* PROMPT ONLY IF THE FAMILY AND USER HAVE SUCCESSFULLY
* BEEN VALIDATED, THE USER IS REQUIRED TO ENTER A
* PERSONAL ID, AND THE PERSONAL ID HAS NOT PREVIOUSLY
* BEEN ENTERED. IF THE USER IS REQUIRED TO ENTER THE
* PID, IT WILL BE REQUESTED EVEN IF THE PASSWORD IS IN
* ERROR.
*
* APPL - IF APPLICATION IS MANDATORY, SET STATE OF TERMINAL
* TO AWAIT VALIDATE APPLICATION ACCESS.
* IF APPLICATION IS PRIMARY, CHANGE APPLICATION TO TYPE
* DEFAULT SO THAT SUBSEQUENT ATTEMPTS WILL ALWAYS
* SOLICITE APPLICATION PROMPT AND SET STATE OF TERMINAL
* TO AWAIT VALIDATE APPLICATION ACCESS.
#
#
**** PROC NVFTILP - XREF LIST.
#
XREF
BEGIN
PROC NVFTPVR; # PREPARE VALIDATE USER REQUEST #
PROC NVFUMQE; # TRANSFER SM OR TEXT TO QUEUE #
PROC SSBSBF; # STORE BITFIELD IN TABLE #
PROC SSCATR; # ACCEPT TIMER REQUEST #
PROC SSTAQE; # ACCEPT QUEUE ENTRY #
END
#
****
#
DEF DTIME$ #120#; # DELAY TIME IN SECONDS FOR A RESPONSE #
DEF EPOFF$ #X"45503D4E"#; # HEX CODE FOR "EP=N" #
DEF TRBSIZ$ #4#; # NUMBER OF WORDS IN TIMER REQUEST BLOCK #
*CALL TMSGNVF
ITEM EPWD I; # CTRL/DEF ECHOPLEX WORD POSITION #
ITEM EPBIT I; # CTRL/DEF ECHOPLEX BIT POSITION #
ITEM LNGTH I; # LENGTH OF MESSAGE #
ITEM PSUB I; # SUBSCRIPT FOR GOTO SWITCH #
ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC #
ITEM PTIND I; # AUTOLOGIN TYPE INDICATOR VARIABLE #
ITEM PTPRMT I; # PROMPT INDICATOR VARIABLE #
ITEM PTTC I; # TERMINAL CLASS VARIABLE #
#
** TRBBUF - TIMER REQUEST BUFFER.
*
* BUFFER CONTAINING TIMER INFORMATION. BUFFER IS SET UP TO CONTAIN
* FC/INACT SM WHICH IS TO BE RETURNED TO *TAINPQ* QUEUE SHOULD THE
* TIMER EXPIRE.
#
ARRAY TRBBUF[00:00] S(TRBSIZ$);
BEGIN
ITEM TRB$SMID S:CTQSTAT(00,00,12) = [S"SINA"]; # INTERNAL ID#
ITEM TRB$WC U(00,48,12) = [TRBSIZ$]; # ENTRY-SIZE #
ITEM TRB$ABT U(01,00,06) = [APPCMD]; # APPL BLOCK TYPE #
ITEM TRB$CNUM U(01,18,18); # CANCELLATION NUMBER #
ITEM TRB$PFCSFC U(02,00,16) = [FCINA]; # FC/INACT PFCSFC #
ITEM TRB$ACN U(02,24,12); # APPLICATION CONNECTION NUMBER #
ITEM TRB$DELAY U(03,24,18) = [DTIME$]; # DELAY TIME IN SEC #
ITEM TRB$QNUM U(03,42,18); # Q NUM FOR TIMER EXPIRED MSG #
END
#
* THE FOLLOWING BASED ARRAY IS FOR GENERAL PURPOSE USAGE
#
BASED ARRAY BPGEN[00:00] S(1);
BEGIN
ITEM BPG$WORD U(00,00,60); # FULL WORD REFERENCE #
END
SWITCH PRMTSWT
LLAPPL, # LABEL FOR APPLICATION PROMPT #
LLPRID, # LABEL FOR PERSONAL IDENTIFIER PROMPT #
LLPWRD, # LABEL FOR PASSWORD PROMPT #
LLUSER, # LABEL FOR USER PROMPT #
LLFAM; # LABEL FOR FAMILY PROMPT #
IF NOT PTA$ALIF[PT]
THEN # NO AUTOLOGIN DATA #
BEGIN
GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT #
END
#
* CHECK FOR AUTOLOGIN DATA. PASSWORD PROMPT IS NOT ISSUED IF USER
* NAME WAS OBTAINED FROM THE *LCF* (I.E., USER IS MANDATORY OR USER
* IS DEFAULT AND "NULL" VALUE RECEIVED).
#
PSUB = PTA$PROMPT[PT] - 1;
GOTO PRMTSWT[PSUB];
LLFAM: # AWAITING FAMILY PROMPT #
PTIND = PTA$FAMIND[PT];
IF (PTIND EQ MNDATRY$ OR PTIND EQ PRIMARY$) AND
(PTA$USRIND[PT] EQ MNDATRY$ OR PTA$USRIND[PT] EQ PRIMARY$)
THEN # PRIMARY/MANDATORY FAMILY AND USER, #
BEGIN # PROCEED TO VALIDATE USER #
NVFTPVR(PT); # PREPARE VALIDATE USER REQUEST #
RETURN; # EXIT #
END
IF PTIND EQ MNDATRY$ OR
PTIND EQ PRIMARY$
THEN # PRIMARY/MANDATORY FAMILY ONLY #
BEGIN
PTA$PROMPT[PT] = AWTUSR$; # CHANGE TO ISSUE USER PROMPT #
END
GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT #
LLUSER: # AWAITING USER PROMPT #
IF PTA$USRIND[PT] EQ MNDATRY$ OR
PTA$USRIND[PT] EQ PRIMARY$
THEN # PRIMARY/MANDATORY USER, #
BEGIN # PROCEED TO VALIDATE USER #
NVFTPVR(PT); # PREPARE VALIDATE USER REQUEST #
RETURN; # EXIT #
END
GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT #
LLPWRD: # AWAITING PASSWORD PROMPT #
PTIND = PTA$USRIND[PT];
IF (PTIND EQ MNDATRY$)
OR ((PTIND EQ DEFAULT$) AND (PTA$VLTUSR[PT] EQ NULL$))
THEN # MANDATORY/DEFAULT USER SPECIFIED IN THE #
BEGIN # LCF, BUT USER ENTERED IN ABBRE FORMAT #
NVFTPVR(PT); # PREPARE VALIDATE USER REQUEST #
RETURN; # EXIT #
END
GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT #
LLAPPL: # AWAITING APPLICATION PROMPT #
PTIND = PTA$APPIND[PT];
IF (PTIND EQ MNDATRY$) OR (PTIND EQ PRIMARY$)
THEN # MANDATORY/PRIMARY APPLICATION #
BEGIN
IF PTIND EQ PRIMARY$
THEN # PRIMARY APPLICATION SPECIFIED #
BEGIN # CHANGE TYPE TO DEFAULT SO #
PTA$APPIND[PT] = DEFAULT$; # THAT SUBSEQUENT ATTEMPTS #
END # WILL SOLICITE APPL PROMPT #
PTA$STATE[PT] = PTACST"AWTVAA"; # SET TO AWAIT APPL ACCESS #
RETURN; # EXIT #
END
GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT #
LLPRID:
ENDPRMT: # COMMON END PROCESSING #
PTPRMT = PTA$PROMPT[PT];
ABHWORD[1] = 0;
LNGTH = LMSG20$; # PRESET LENGTH OF PROMPT #
IF PTPRMT NQ AWTPWD$
THEN # FAMILY/USER/APPL PROMPT #
BEGIN
IF PTPRMT EQ AWTFAM$
THEN # FAMILY PROMPT #
BEGIN
P<BPGEN> = LOC(FAMBUF[0]);
END
ELSE
BEGIN
IF PTPRMT EQ AWTUSR$
THEN # USER PROMPT #
BEGIN
P<BPGEN> = LOC(USRBUF[0]);
END
ELSE # APPLICATION PROMPT #
BEGIN
IF PTPRMT EQ AWTPID$
THEN
BEGIN
P<BPGEN> = LOC(PIDBUF[0]);
END
ELSE
BEGIN
APP$TNAME = PTA$TN[PT];
P<BPGEN> = LOC(APPBUF[0]);
LNGTH = LMSG30$;
END
END
END
END
ELSE # PASSWORD PROMPT #
BEGIN
P<BPGEN> = LOC(PWRDBLK[0]);
PTTC = PTA$TC[PT];
IF (PTTC EQ TCM33$ OR PTTC EQ TC2741$ OR PTTC EQ TCT4014$)
THEN # PASSWORD BLANKING REQUIRED #
BEGIN
LNGTH = LMSG90$;
END
ABHCAN[1] = 1; # SET NON-ECHOED FLAG #
END
#
* SEND PROMPT AND START NVF'S 2 MINUTE TIMER RUNNING.
#
WCB$WORD[1] = LNGTH / 10 + 2;
ABHABT[1] = APPPTX$;
ABHADR[1] = PTA$ACN[PT];
ABHACT[1] = CT6DISPLAY;
ABHTLC[1] = LNGTH;
IF PTPRMT GQ AWTPWD$ # IF PASSWORD HAS NOT BEEN RECIEVED, #
THEN # KEEP CURSOR STAY ON THE SAME LINE IN #
BEGIN # ORDER TO FACILITATE THE OVERMASKING #
ABHNCP[1] = 1; # OF THE LINE WITH THE PASSWORD. #
END
SSTAQE(P<CTQ>,WCBUF[1],ABH[1],BPGEN[0]); # PROMPT TO QUEUE #
TRB$ACN = PTA$ACN[PT]; # APPLICATION CONNECTION NUMBER #
TRB$QNUM = LOC(P<TAINPQ>); # RETURN TIMR EXP MSG TO TAINPQ #
SSCATR(TRBBUF[0]); # ISSUE TIMER REQUEST #
PTA$CNUM[PT] = TRB$CNUM[0]; # SAVE CANCELLATION NUMBER #
PTA$STATE[PT] = PTACST"AWTRSP"; # SET TERM STATE TO AWAIT RSP #
END # END NVFTILP #
TERM