*DECK NVFTPSV USETEXT TEXTNVF USETEXT TEXTSS USETEXT TXTANVF USETEXT TXTAPSS USETEXT TXSMNVF PROC NVFTPSV((PT)); # TITLE NVFTPSV - PROCESS SUCCESSFUL VALIDATION # BEGIN # NVFTPSV # # ** NVFTPSV - PROCESS SUCCESSFUL VALIDATION. * * E. THAVIKULWAT 81/10/19 * * THIS PROCEDURE'S MAIN FUNCTION IS TO UPDATE *PTAC* ENTRY UPON A * SUCCESSFUL USER OR APPLICATION VALIDATION. IT IS CALLED INTO * EXECUTION BY THE FOLLOWING PROCEDURES: * *NVFTETI* *NVFTVAA* *NVFTVVD* * * PROC NVFTPSV((PT)) * * ENTRY: * PT = POINTER TO *PTAC* ENTRY * * EXIT: * *PTAC* TABLE UPDATED TO REFLECT SUCCESSFUL USER OR APPLICATION * VALIDATION. * * NOTES: * INCREMENT FAMILY COUNT IS SET ONLY FOR INITIAL USER VALIDATION. * USER VALIDATION DUE TO A CR/RCN REQUEST IS NOT CONSIDERED * INITIAL AND FAMILY COUNT IS NOT INCREMENTED. * * METHOD: * FOR APPLICATION VALIDATION, CALL *NVFTDSP* TO DETERMINE IF * SWITCH IS POSSIBLE. FOR INITIAL USER VALIDATION, CALL *NVFTIAM* *TEXT * TO ISSUE *ABUN* AND *ABIC* ACCOUNT MESSAGE, AND * DETERMINE IF THERE IS AN IMPLIED MANDATORY * APPLICATION FROM THE *VALIDUS* FILE. IF THERE *ENDTEXT * IS AN IMPLIED MANDATORY APPLICATION, SET STATE OF TERMINAL TO * AWAIT VALIDATE APPLICATION ACCESS. OTHERWISE, CALL *NVFTILP* TO * ISSUE APPLICATION PROMPT. ON AN INTIAL LOGIN IF THE USER IS * NOT ALLOWED MULTIPLE CONCURRENT LOGINS, CREATE AN ENTRY IN THE * *RML* TABLE INORDER TO RESTRICT THE USER. # # **** PROC NVFTPSV - XREF LIST. # XREF BEGIN PROC NVFTDAD; # DETERMINE ADDITIONAL DIALOGUE # PROC NVFTDSP; # DETERMINE SWITCH POSSIBILITY # PROC NVFTIAM; # ISSUE ACCOUNTING MESSAGE # PROC NVFTILP; # ISSUE LOGIN PROMPT # PROC NVFUMQE; # MAKE QUEUE ENTRY # PROC SSTAQE; # ACCEPT QUEUE ENTRY # PROC SSTETS; # ENLARGE TABLE SPACE # END # **** # DEF LENGTH$ #10#; # NUMBER OF CHARACTERS IN CLRSCRN ARRAY # ITEM BPOS I; # BIT POSITN WITHIN WORD (COMPASS NOTATN) # ITEM COUNT I; # COUNT OF THE NUMBER OF 1'S BITS # ITEM I I; # LOOP VARIABLE # ITEM INUSERV B; # INITIAL USER VALIDATIONS FLAG # ITEM MATCH B; # EXIT LOOP VARIABLE # ITEM NENTRY I; # NUMBER OF ENTRIES IN TABLE # ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC # ITEM RM I; # SUBSCRIPT FOR ARRAY RML # # * CLRSCRN - A "MESSAGE" SENT TO THE TERMINAL TO CLEAR THE SCREEN. # ARRAY CLRSCRN [00:00] S(1); BEGIN ITEM CLRWORD C(00,00,01) = ["1"]; ITEM CLRZERO U(00,06,54) = [0]; END IF PTA$PROMPT[PT] EQ AWTAPP$ THEN # SUCCESSFUL APPL VALIDATION # BEGIN PTA$APPLCT[PT] = 0; # CLEAR APPLICATION RETRY COUNT # PTA$AFF[PT] = FALSE; # CLEAR APPLICATION FAILED FLAG # NVFTDSP(PT,0); # DETERMINE SWITCH POSSIBILITY # END ELSE # SUCCESSFUL USER VALIDATION # BEGIN PTA$USERCT[PT] = 0; # CLEAR USER RETRY COUNT # INUSERV = PTA$IUVF[PT]; IF INUSERV THEN # INITIAL USER VALIDATION # BEGIN PTA$CNTIME[PT] = CTM$PDT[0]; # SAVE CONNECTION TIME # NVFTIAM(PT,ABUN$); # ISSUE *ABUN* ACCOUNTING MSG # IF PTA$CHGNUM[PT] NQ NULL$ # CHARGE NUMBER EXISTS # THEN BEGIN NVFTIAM(PT,ABIC$); # ISSUE *ABIC* MESSAGE # END IF PTA$PID[PT] NQ NULL$ # PERSONAL IDENTIFIER EXISTS # THEN BEGIN NVFTIAM(PT,SIPI$); # ISSUE *SIPI* MESSAGE # END PTA$IUVF[PT] = FALSE; END # * IF MULTIPLE CONCURRENT LOGINS ARE PROHIBITED, CHECK THE *RML* * TABLE FOR A DUPLICATE USER. IF A DUPLICATE IS FOUND CALL * *NVFTDAD* AND END THE CONNECTION. IF NO DUPLICATE, CREATE A * TABLE ENTRY IN THE *RML* TABLE TO RESTRICT THE USER. # IF INUSERV AND (NOT PTA$CACA[PT]) THEN BEGIN # INTIAL LOGIN, RESTRICTED USER # FOR I = 0 STEP 1 UNTIL (RMLLNGTH - 1) DO BEGIN IF (RML$UIDX[I] EQ PTA$UIDX[PT]) AND (RML$FNAM[I] EQ PTA$FNAM[PT]) THEN BEGIN # MULTIPLE CONCURRENT LOGINS # NVFTDAD(PT,ECCANA$); # ISSUE ERROR AND END CONNECT # RETURN; END END RM = RMLLNGTH; # CREATE NEW *RML* TABLE ENTRY # SSTETS (P,RM,RMLSIZ$); RML$UIDX[RM] = PTA$UIDX[PT]; RML$FNAM[RM] = PTA$FNAM[PT]; END # * SEARCH APPLICATION BITS FIELD OF *AAWC* TO DETERMINE IF A * MANDATORY APPLICATION IS SPECIFIED IN THE *VALIDUS* FILE FOR * THIS USER (ONLY ONE BIT SET). # COUNT = 0; FOR I = 12 STEP 1 WHILE (COUNT LS 2 AND I LQ 59) DO BEGIN IF BPTA$AAVW[PT] EQ 1 THEN BEGIN COUNT = COUNT + 1; # INCREMENT NUMBER OF 1'S # BPOS = 59 - I; # BIT POSITION WITHIN WORD(CMP) # END END IF COUNT EQ 1 THEN # MANDATORY APPL IN VALIDUS # BEGIN # * IMPLIED MANDATORY APPLICATION IS SPECIFIED IN THE *VALIDUS* * FILE. HAVE TO FURTHER CHECK IF BIT IS UNIQUE TO THIS * APPLICATION. IF BIT IS NOT UNIQUE, APPLICATION IS NOT * CONSIDERED A MANDATORY APPLICATION. # MATCH = FALSE; NENTRY = ASTLNGTH / ASTSIZ$; FOR I = 0 STEP 1 WHILE (NOT MATCH AND I LS NENTRY) DO BEGIN IF AST$AWBP[I] EQ BPOS THEN # FOUND APPLICATION # BEGIN IF NOT AST$BNUF[I] THEN # APPLICATION BIT IS UNIQUE # BEGIN PTA$VDSAPP[ PT] = AST$ANAM[I]; # SAVE APPL NAME # PTA$VDSF[ PT] = TRUE; # SET VALIDUS APPL FLAG # END MATCH = TRUE; # SET EXIT LOOP CONDITION # END END END # * FOR BOTH INITIAL AND NON-INITIAL USER VALIDATION, DETERMINE IF * USER NEEDS TO BE PROMPTED FOR AN APPLICATION NAME. NO PROMPT * IS REQUIRED IF THERE IS AN IMPLIED MANDATORY APPLICATION NAME * OR IF USER HAS ALREADY SUPPLIED THE APPLICATION NAME. # PTA$PROMPT[PT] = AWTAPP$; IF ((PTA$VAF[PT]) AND (PTA$APPIND[PT] NQ PRIMARY$)) OR (PTA$VDSF[PT]) THEN # NO APPLICATION PROMPT # BEGIN PTA$STATE[PT] = PTACST"AWTVAA"; # AWAIT VALIDAT APPL ACCESS # END ELSE # APPLICATION PROMPT REQUIRED # BEGIN NVFTILP(PT); # ISSUE APPLICATION PROMPT # END END END # END NVFTPSV # TERM