*DECK NVFTCRN USETEXT TEXTNVF USETEXT TEXTSS USETEXT TXSMNVF USETEXT TXTANVF USETEXT TXTAPSS PROC NVFTCRN((PT),RNAME); # TITLE NVFTCRN - CHECK FOR RESERVED APPLICATION NAME # BEGIN # NVFTCRN # # ** NVFTCRN - CHECK FOR RESERVED APPLICATION NAME. * * E. THAVIKULWAT 81/10/29 * * THIS PROCEDURE CHECKS FOR VOLUNTEERED RESERVED APPLICATION NAMES * OF "HELLO", "LOGIN", "BYE", OR "LOGOUT". IT IS CALLED INTO * EXECUTION BY THE FOLLOWING PROCEDURES: * *NVFTRVD* *NVFTVAA* * * PROC NVFTCRN((PT),RNAME) * * ENTRY: * PT = POINTER TO PTAC ENTRY. * * EXIT: * RNAME = NORESNAM$ IF NOT A RESERVED APPLICATION NAME. * = LOGIN$ IF NAME IS "LOGIN" OR "HELLO". * = LOGOUT$ IF NAME IS "LOGOUT" OR "BYE". * * NOTES: * IN THE CASE WHERE THERE IS A MANDATORY OR PRIMARY APPLICATION * SPECIFIED IN THE *LCF*, OR A IMPLIED MANDATORY APPLICATION * SPECIFIED IN THE *VALIDUS* FILE, AND A VOLUNTEERED RESERVED * APPLICATION NAME IS ENTERED, THE VOLUNTEERED RESERVED * APPLICATION NAME OVERRIDES THE *LCF* OR *VALIDUS* NAME. * * METHOD: * IF VOLUNTEERED APPLICATION NAME IS "HELLO" OR "LOGIN", ISSUE * *AEUN* ACCOUNT MESSAGE, DECREMENT FAMILY COUNT, * SEND OUT BANNER AND SYSTEM HEADER, AND SET STATE OF * TERMINAL TO AWAIT PROMPT. ALSO, IF MULTIPLE LOGINS ARE * PROHIBITED, REMOVE THE ENTRY FROM THE *RML* TABLE. IF THE * VOLUNTEERED APPLICATION NAME IS EITHER "BYE" OR "LOGOUT", * SEND THE LOGOUT MESSAGE AND CALL *NVFTETC* TO END THE TERMINAL * CONNECTION. * IF THE VOLUNTEERED APPLICATION NAME IS ANY OF THE ABOVE MENTIONED * RESERVED WORDS, SEND OUT A CTR/CHAR TO FORCE THE TERMINAL TO BE * IN NON-TRANSPARENT MODE. # # **** PROC NVFTCRN - XREF LIST. # XREF BEGIN PROC NVFTETC; # END TERMINAL CONNECTION # PROC NVFTIAM; # ISSUE ACCOUNTING MESSAGE # PROC NVFTURL; # UPDATE THE RESTRICT LOGIN TABLE # PROC NVFUMQE; # TRANSFER SM OR TEXT TO QUEUE # END # **** # DEF RCULO$ #22#; # USER LOGOUT REASON CODE # *CALL TMSGNVF *CALL TERMCLS ITEM ADDR I; # ADDRESSING INFORMATION FOR ABH # ITEM I I; # LOOP VARIABLE # ITEM LNGTH I; # LENGTH OF MESSAGE # ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC # ITEM RNAME I; # RESERVED APPLICATION NAME INDICATOR # # * FOLLOWING ARRAY DEFINES THE RESERVED APPLICATION NAMES. # ARRAY RSVAPPL[00:03] S(1); BEGIN ITEM RAP$NAME C(00,00,07) = ["HELLO","LOGIN","BYE","LOGOUT"]; 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 RNAME = NORESNAM$; # * SEARCH RESERVED APPLICATION NAME TABLE FOR MATCH. # FOR I = 0 STEP 1 WHILE (RNAME EQ NORESNAM$) AND (I LS 4) DO BEGIN IF (RAP$NAME[I] EQ PTA$VLTAPP[PT]) THEN # RESERVED APPLICATION NAME # BEGIN RNAME = LOGIN$; # INITIALIZE TO "LOGIN" FOUND # # * IF A RESERVED APPLICATION NAME WAS SPECIFIED ON AN INITIAL * LOAN, RETURN. A CR/RCN/A WILL BE SENT LATER. # IF PTA$LRC[PT] EQ RCRC"LSA" THEN BEGIN RETURN; END ADDR = PTA$ACN[PT]; # * CHECK TERMINAL CLASS TO SEE IF NVF SHOULD SEND A CTR/CHAR. # GOTO TERMCLS [PTA$TC[PT]]; SENDCTRCHAR: # * SEND CTR/CHAR TO FORCE TERMINAL TO BE IN NON-TRANSPARENT INPUT * MODE. # PFCSFC[1] = CTRCHAR; CTRSTR[1] = 0; # CLEAR REST OF WORD 0 # B<0,16>CTRSTR[1] = NOXPAR$; # ADD FN/FV PAIR FOR NON-XPARENT# NVFUMQE(P,APSM[1],APPPR$,ADDR,LCTRLO$); # TRANSFER TO Q # NOCTRCHAR: IF (I LS 2) THEN # NAME IS "HELLO" OR "LOGIN" # BEGIN # * ISSUE *AEUN* ACCOUNT MESSAGE, POINT BASE ARRAY TO OUTPUT * HALF OF *MSGBUF*, AND SET UP DECREMENT FAMILY COUNT * REQUEST. # NVFTIAM(PT,AEUN$); # ISSUE *AEUN* ACCOUNTING MSG # P = LOC(MSGBUF[0]) + ((NMSGBUF$ + 1) / 2); CRQ$FCWORD[0] = 0; # CLEAR CPM REQUEST BUFFER # CRQ$FWORD[0] = 0; CRQ$FC[0] = CPM73B$; # DECREMENT FAMILY COUNT # CRQ$ACN[0] = 0; CRQ$FNAM[0] = PTA$FNAM[PT]; # FAMILY NAME # LNGTH = CRQDSIZ$ * 10; # LENGTH OF REQUEST # NVFUMQE(P,CRQBUF[0],APPTTX$,0,LNGTH); # REQ TO Q # IF NOT PTA$CACA[PT] THEN # MULT CONCURRENT LOGINS PROHIB # NVFTURL(PT); # REMOVE ENTRY FROM *RML* TABLE # # * CLEAR APPROPRIATE FIELDS OF PTAC ENTRY TO REFLECT LOGIN * STATE. # P = LOC(PTA$FWORD[PT]); # 1ST WRD OF VALIDATN DATA # FOR I = 0 STEP 1 UNTIL 9 DO BEGIN BPG$WORD[I] = 0; # CLEAR VALIDATION DATA FIELDS # END P = LOC(PTA$VDSAPP[PT]); # 1ST WRD AFTER AUTO DATA # FOR I = 0 STEP 1 UNTIL 4 DO BEGIN BPG$WORD[I] = 0; # CLEAR FIELDS AFTER AUTO DATA # END P = LOC(PTA$PID[PT]); BPG$WORD[0] = 0; # CLEAR THE PERSONAL ID FIELD # BPG$WORD[1] = 0; # * SEND OUT BANNER AND SET STATE OF TERMINAL TO AWAIT PROMPT. # NVFUMQE(P,CPRBUF,APPTTX$,ADDR,LMSG90$); BAN$DATE[0] = CTM$DATE[0]; BAN$TIME[0] = CTM$CLOCK[0]; BAN$TNAM[0] = PTA$TN[PT]; NVFUMQE(P,BANBUF,APPTTX$,ADDR,LMSG30$); NVFUMQE(P,SYSHDR,APPTTX$,ADDR,LMSG70$); PTA$PROMPT[PT] = AWTFAM$; # SET TO AWAIT FAMILY # PTA$STATE[PT] = PTACST"AWTPRMT"; # SET TO AWAIT PROMPT # PTA$IUVF[PT] = TRUE; # SET TO INITIAL VALIDATION # END ELSE # NAME IS "BYE" OR "LOGOUT" # BEGIN # * APPLICATION NAME IS "BYE" OR "LOGOUT", SEND LOGGED OUT * MESSAGE AND END TERMINAL CONNECTION. # RNAME = LOGOUT$; # "BYE" OR "LOGOUT" FOUND # PTA$RC[PT] = RCULO$; # USER LOGOUT RC FOR CR/TRM SM # NVFUMQE(P,LOMBUF,APPTTX$,ADDR,LMSG20$); # TEXT TO Q # NVFTETC(PT); # END TERMINAL CONNECTION # END END END END # END NVFTCRN # TERM