*DECK NVFTRVD
USETEXT TEXTNVF
USETEXT TEXTSS
USETEXT TXTANVF
USETEXT TXTAPSS
USETEXT TXSMNVF
PROC NVFTRVD;
# TITLE NVFTRVD - RECEIVE VCB DATA #
BEGIN # NVFTRVD #
#
** NVFTRVD - RECEIVE VCB DATA.
*
* E. THAVIKULWAT 81/11/13
* C. BRION 82/04/11. 83/05/10.
*
* THIS PROCEDURE'S MAIN FUNCTION IS TO PROCESS VCB DATA AND DETERMIN
* APPROPRIATE ACTIONS TO TAKE DEPENDING ON WHAT PROCESS REQUESTED TH
* DATA. IT IS CALLED INTO EXECUTION BY PROCEDURE *NVFTDQE*.
*
* PROC NVFTRVD
*
* ENTRY:
* VCB DATA IN *MSGBUF*
*
* EXIT:
* ONE OF THE FOLLOWING:
* 1) APPLICATION PROMPT REISSUED.
* 2) CONNECTION SWITCHED TO APPROPRIATE APPLICATION.
* 3) CONNECTION TERMINATED.
* 4) A TIMER IS STARTED FOR NVF TO REATTEMPT TO SWITCH TO THE
* APPROPRIATE APPLICATION.
*
* NOTES:
* 1) IF THE RECONNECT PROCESS REQUESTED THE DATA BECAUSE OF AN
* APPLICATION FAILURE, APPLICATION PROMPT IS NOT REISSUED IF
* THE FAILED APPLICATION IS A MANDATORY/IMPLIED MANDATORY
* APPLICATION.
* 2) FOR A NORMAL RECONNECT, THE USER IS REVALIDATED, WITHOUT
* INCREMENTING FAMILY COUNT, WHETHER OR NOT A NEW APPLICATION
* IS SPECIFIED.
*
* METHOD:
* CALL *NVFTURT* TO GET A *PTAC* ENTRY THAT MATCHES ON VCB AND
* UPDATE *RAU* TABLE IF NEEDED. SAVE VCB DATA IN APPROPRIATE
* FIELDS OF THE *PTAC* AND ISSUE *AEAP* ACCOUNT DAYFILE MESSAGE.
* IF DEVICE IS A PASSIVE DEVICE OR VCB DATA WAS REQUESTED BY THE
* CONNECTION BROKEN PROCESS, THEN TERMINATE THE CONNECTION.
* OTHERWISE, DATA WAS REQUESTED BY THE RECONNECT PROCESS. IF THE
* RECONNECT IS DUE TO APPLICATION FAILED CONDITION AND THE FAILED
* APPLICATION IS A MANDATORY/IMPLIED MANDATORY APPLICATION, THEN
* CHECK IF THIS IS A CONSOLE WITH ALL MANDATORY LOGIN PARAMETERS.
* IF SO, START UP A 30-SECOND TIMER, AT THE END OF WHICH NVF WILL
* REATTEMPT TO CONNECT TO THE FAILED APPLICATION. IF NOT, THEN
* TERMINATE THE CONNECTION. IF THE RECONNECT IS NOT DUE TO THE
* APPLICATION FAILED CONDITION, OR IF THE FAILED APPL IS NOT
* MANDATORY OR IMPLIED MANDATORY, THEN REVALIDATE THE USER WITHOUT
* INCREMENTING THE FAMILY COUNT.
#
#
**** PROC NVFTRVD - XREF LIST.
#
XREF
BEGIN
PROC NVFSCAD; # COMPLETE APPLICATION DEPARTURE #
PROC NVFTCCT; # CALCULATE CONNECT TIME #
PROC NVFTCRN; # CHECK FOR RESERVED APPLICATION NAME #
PROC NVFTETC; # END TERMINAL CONNECTION #
PROC NVFTIAM; # ISSUE ACCOUNT DAYFILE MESSAGE #
PROC NVFTILP; # ISSUE LOGIN PROMPT #
PROC NVFTRLC; # REFUSE LOANED CONNECTION #
PROC NVFTURT; # UPDATE *RAU* TABLE IF NEEDED #
PROC NVFUMQE; # TRANSFER TEXT TO QUEUE #
PROC SSCATR; # ACCEPT TIMER REQUEST #
PROC SSTRTS; # REMOVE TABLE SPACE #
FUNC XCDD; # MACREL CONVERT INTEGER TO DISPLAY DEC #
END
#
****
#
$BEGIN
XREF
BEGIN
PROC MESSAGE; # SEND MESSAGE TO SYSTEM AND USER DAYFILE #
END
$END
#
****
#
*CALL TMSGNVF
*CALL TERMCLS
#
** DAYMSG - TERMINAL CLASS CHANGED MESSAGE BUFFER
#
ARRAY DAYMSG[00:00] S(8);
BEGIN
ITEM DAY$MSG1 C(00,00,33) =
["INVALID TERMINAL CLASS TRANSITION"];
ITEM DAY$MSG2 C(03,18,10) = [" OLD TC = "];
ITEM DAY$OLDT U(04,18,18); # OLD TERMINAL CLASS #
ITEM DAY$MSG3 C(04,36,10) = [" NEW TC = "];
ITEM DAY$NEWT U(05,36,18); # NEW TERMINAL CLASS #
ITEM DAY$MSG4 C(05,54,12) = [" TERMNAME = "];
ITEM DAY$TNAM C(07,06,07); # TERMINAL NAME #
ITEM DAY$DOT C(07,48,01) = ["."];
END
#
** CABBUF - CONNECTION ABORTED MESSAGE BUFFER.
#
ARRAY CABBUF [00:00] S(3);
BEGIN
ITEM CAB$MSG C(00,00,21) = [".CONNECTION ABORTED. "];
END
#
** TRBBUF - TIMER REQUEST BUFFER
*
* BUFFER CONTAINING TIMER INFORMATION. BUFFER IS SET UP TO CONTAIN
* THE FC/INACT SM WHICH IS RETURNED TO THE *TAINPQ* WHEN THE TIMER
* EXPIRES.
#
ARRAY TRBBUF [00:00] S(TMBSIZ$);
BEGIN
ITEM TRB$SMID S:CTQSTAT(00,00,12) = [S"SINA"]; #INTERNAL ID#
ITEM TRB$WC U(00,48,12) = [TMBSIZ$]; # ENTRY SIZE #
ITEM TRB$ABT U(01,00,06) = [APPCMD]; # APPL BLOCK TYPE #
ITEM TRB$CNUM U(01,18,18); # CANCELLATION NUM #
ITEM TRB$PFCSFC U(02,00,16) = [FCINA]; # FC/INACT PFCSFC #
ITEM TRB$ACN U(02,24,12); # APPL CONN NUMBER #
ITEM TRB$DELAY U(03,24,18) = [RTRYTIME$];# DELAY TIME IN SEC #
ITEM TRB$QNUM U(03,42,18); # Q NUM FOR FC/INACT#
END
ITEM ADDR I; # ADDRESSING INFORMATION FOR ABH #
ITEM AS I; # APPLICATION STATUS TABLE ORDINAL #
ITEM ASENTRY I; # NUMBER OF AST ENTRIES #
ITEM CNTIME C(10); # VARIABLE TO RECEIVE CONNECT TIME #
ITEM CNTYP I; # CONNECTION TYPE INDICATOR #
ITEM MATCH B; # EXIT LOOP VARIABLE #
ITEM NENTRY I; # NUMBER OF ENTRIES IN TABLE #
ITEM PORD I; # PRIMARY AST ENTRY ORDINAL #
ITEM PRIAPP B; # PRIMARY APPLICATION INDICATOR #
ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC #
ITEM RNAME I; # RESERVED NAME INDICATOR #
ITEM SMOUT B; # SM OUTPUT TYPE FOR NVFTRLC CALL #
ITEM VCBLOC I; # LOCAL VCB ORDINAL #
CONTROL EJECT;
#
* DETERMINE NUMBER OF AST ENTRIES
#
ASENTRY = ASTLNGTH/ASTSIZ$;
#
* CALL *NVFTURT* TO FIND THE *PTAC* ENTRY AND UPDATE *RAU* TABLE IF
* NEEDED. SAVE VCB DATA THAT APPLIES TO BOTH PASSIVE AND INTERACTIV
* DEVICE IN THE *PTAC*.
#
P<VCBBUF> = LOC(MSGBUF[0]); # LOCATION OF VCB DATA BUFFER #
#
* SEARCH PTAC TABLE FOR ENTRY THAT MATCHES ON VCB.
#
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 VCB$VCB[0]
THEN # PTAC ENTRY FOUND #
BEGIN
MATCH = TRUE; # EXIT LOOP #
END
END
PT = PT - 1;
PTA$TN[PT] = VCB$TN[0];
PTA$HW[PT] = VCB$HW[0];
PTA$VTP[PT] = VCB$VTP[0];
PTA$CACA[PT] = VCB$CACA[0];
PTA$ICF[PT] = VCB$ICF[0];
PTA$RCNA[PT] = VCB$RCNA[0];
PTA$NET[PT] = VCB$NET[0];
PTA$LCF[PT] = VCB$LCF[0];
PTA$ALIF[PT] = VCB$ALIF[0];
PTA$SDT[PT] = VCB$SDT[0];
PTA$DO[PT] = VCB$DO[0];
PTA$XBZ[PT] = VCB$XBZ[0];
PTA$SL[PT] = VCB$SL[0];
PTA$DBZ[PT] = VCB$DBZ[0];
PTA$UBZ[PT] = VCB$UBZ[0];
PTA$CNTIME[PT] = VCB$CNTIME[0];
PTA$SWTIME[PT] = VCB$SWTIME[0];
PTA$FWORD[PT] = VCB$FWORD[0];
PTA$UWORD[PT] = VCB$UWORD[0];
PTA$PROMPT[PT] = AWTAPP$;
#
* IF VCB DATA WAS REQUESTED BECAUSE OF CONNECTION BROKEN, USE
* THE ORIGINAL TERMINAL CLASS FROM VCB TO AVOID THE SEARCH FOR
* PDCT ENTRY IN CASE THE TERMINAL CLASS HAS BEEN CHANGED
* ERRONEOUSLY FROM AN ASYN TYPE TO A SYNCHRONOUS ONE.
#
IF PTA$STATE[PT] EQ PTACST"AWTVCBC"
THEN
PTA$TC[PT] = VCB$TC[0];
#
* IF VCB DATA WAS REQUESTED BECAUSE OF CR/RCN, COMPARE THE
* ORGINAL TERMINAL CLASS WITH THE ONE FROM CR/RCN SM. IF
* TC IS CHANGED FROM ASYNC TO SYNC, SEND OUT THE MESSAGE
* AND END TERMINAL CONNECTION.
#
IF PTA$STATE[PT] EQ PTACST"AWTVCBR"
AND PTA$TC[PT] GQ TC9$
AND VCB$TC[0] LS TC9$
THEN
BEGIN
$BEGIN
DAY$OLDT[0] = XCDD(VCB$TC[0]+1000);
DAY$NEWT[0] = XCDD(PTA$TC[PT]+1000);
DAY$TNAM[0] = PTA$TN[PT];
MESSAGE(DAYMSG,0);
$END
PTA$TC[PT] = VCB$TC[0];
NVFTETC(PT);
RETURN;
END
#
* IF THE PRIMARY APPL NUMBER IN THE *PTAC* IS ZERO, THEN MOVE THE
* PRIMARY APPL NUMBER FROM THE *VCB* TO THE *PTAC*. (IF PTA$PRIAN
* IS NON-ZERO, IT MAY HAVE JUST BEEN SET, AND WE DON'T WANT TO
* OVERWRITE IT.)
#
IF PTA$PRIAN[PT] EQ 0
THEN
BEGIN
PTA$PRIAN[PT] = VCB$PRIAN[0];
END
#
* ISSUE *AEAP* ACCOUNT DAYFILE MESSAGE.
#
NVFTIAM(PT,AEAP$);
#
* IF THIS CR/RCN IS NOT THE RESULT OF A PREVIOUS CR/RCN/A BEING
* SENT, THEN THE NUMBER OF T-A CONNECTIONS FOR THE APPLICATION TO
* WHICH THIS TERMINAL WAS CONNECTED MUST BE DECREMENTED. IF THE
* NUMBER OF CONNECTIONS TO THAT APPLICATION IS NOW ZERO AND THAT
* APPLICATION HAS FAILED OR NETTED OFF, THE APPROPRIATE RESPONSE
* SM (FAIL/APPL/N OR NET/OFF/N) MUST BE ISSUED.
#
IF NOT PTA$RCNA[PT]
THEN
BEGIN
PRIAPP = FALSE;
NVFTURT(VCB$VCB[0],PT,PRIAPP); # UPDATE *RAU* TABLE #
FOR AS = 0 STEP 1 WHILE
(AS LS ASENTRY AND
AST$PANAM[AS] NQ PTA$SWTAPP[PT])
DO
BEGIN
END
AST$TACN[AS] = AST$TACN[AS] - 1;
AST$ICCN[AS] = AST$ICCN[AS] - 1;
NVFSCAD(AS);
#
* IF THIS IS AN INITIAL LOAN AND THE CONNECTION HAS NOT BEEN BROKEN,
* INCREMENT THE NUMBER OF RESERVED CONNECTIONS FOR THIS APPL.
#
IF (PTA$LRC[PT] EQ RCRC"LSA") AND
(PTA$STATE[PT] NQ PTACST"AWTVCBC")
THEN
BEGIN
AST$RACN[AS] = AST$RACN[AS] + 1;
END
END
#
* CLEAR THE CR/RCN/A FLAG IN THE PTAC. THIS FLAG HELPS NVF TO
* DISTINGUISH BETWEEN A NORMAL CR/RCN AND A CR/RCN THAT IS THE
* RESULT OF NVF SENDING A CR/RCN/A TO NIP.
#
PTA$RCNA[PT] = FALSE;
#
* DETERMINE PROCESS (CONNECTION BROKEN OR RECONNECT) THAT REQUESTED
* THE DATA.
#
IF ((PTA$DT[PT] NQ DT$CONS) AND (PTA$DT[PT] NQ DT$USER))
OR (PTA$STATE[PT] EQ PTACST"AWTVCBC")
THEN # PASSIVE DEVICE OR CONNECTION BROKEN #
BEGIN
#
* CHECK IF CONNECTION THAT WAS LOANED.
* IF SO, THEN THE CONNECTION COUNT FOR THE PRIMARY APPL MUST
* BE DECREMENTED.
#
IF PTA$LCF[PT] # IF LOAN CONNECTION #
THEN
BEGIN
PRIAPP = TRUE;
NVFTURT(VCB$VCB[0],PT,PRIAPP); # UPDATE *RAU* TABLE #
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;
PTA$LCF[PT] = FALSE; # CLEAR THE LCF FLAG #
NVFSCAD(AS);
END
END
#
* CONNECTION BROKEN AND/OR PASSIVE DEVICE, TERMINATE THE
* CONNECTION.
#
NVFTETC(PT);
END
ELSE # RECONNECT FOR INTERACTIVE DEVICE #
BEGIN
ADDR = PTA$ACN[PT];
VCBLOC = PTA$VCB[PT];
#
* DATA REQUESTED BY THE RECONNECT PROCESS. SAVE VCB DATA THAT
* APPLIES TO INTERACTIVE DEVICES IN THE *PTAC*.
#
PTA$ALIFAM[PT] = VCB$ALIFAM[0];
PTA$FAMIND[PT] = VCB$FAMIND[0];
PTA$ALIUSR[PT] = VCB$ALIUSR[0];
PTA$USRIND[PT] = VCB$USRIND[0];
PTA$ALIAPP[PT] = VCB$ALIAPP[0];
PTA$APPIND[PT] = VCB$APPIND[0];
#
* SETUP APPLICATION CONNECT TIME MESSAGE.
#
CTM$ANAME[0] = PTA$SWTAPP[PT]; # APPLICATION NAME #
CNTYP =TATIME$;
NVFTCCT(PT,1,CNTIME,CNTYP); # CALC CONNECT TIME #
CTM$TIME[0] = CNTIME; # SAVE CONNECT TIME #
#
* DETERMINE IF RECONNECT IS DUE TO APPLICATION FAILED CONDITION.
* ON A NON-LOANED TYPE OF RECONNECTION.
#
IF PTA$AFF[PT]
THEN # APPL FAILED WITH OUTSTANDING CONN #
BEGIN
#
* APPLICATION FAILED. SEND "APPLICATION FAILED" MESSAGE.
#
NVFUMQE(P<CTQ>,APFBUF[0],APPTTX$,ADDR,LMSG30$);
#
* 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<CTQ>,APSM[1],APPPR$,ADDR,LCTRLO$); # TRANSFER TO Q#
NOCTRCHAR:
#
* IF FAILED APPLICATION IS MANDATORY/IMPLIED MANDATORY,
* TERMINATE THE CONNECTION. OTHERWISE, PROCEED TO REVALIDATE
* THE USER AND ISSUE APPLICATION PROMPT.
#
IF (((PTA$APPIND[PT] EQ MNDATRY$)
OR (VCB$VDSF[0])) AND PTA$LRC[PT] LS RCRC"LSA")
THEN # MANDATORY/IMPLIED MANDATORY APPL FAILED #
BEGIN
#
* SEND "CONNECT TIME" MESSAGE.
#
NVFUMQE(P<CTQ>,CTMEBUF[0],APPTTX$,ADDR,LMSG40$);
#
* IF THIS IS A CONSOLE DEVICE TYPE WITH ALL MANDATORY LOGIN
* PARAMETERS, START A 30 SECOND TIMER SO THAT NVF CAN TRY TO
* RECONNECT THE CONSOLE TO THE DESIRED APPLICATION.
#
IF (PTA$DT[PT] EQ DT$CONS) AND
(PTA$FAMIND[PT] EQ MNDATRY$) AND
(PTA$USRIND[PT] EQ MNDATRY$) AND
(PTA$APPIND[PT] EQ MNDATRY$)
THEN
BEGIN
TRB$ACN[0] = PTA$ACN[PT];
TRB$QNUM[0] = LOC(P<TAINPQ>);
SSCATR(TRBBUF[0]);
PTA$CNUM[PT] = TRB$CNUM[0];
PTA$STATE[PT] = PTACST"AWTAPPL";
END
#
* IF NON-CONSOLE OR NON-MANDATORY LOGIN PARAMETERS, SEND THE
* LOGGED OUT MESSAGE AND END TERMINAL CONNECTION.
#
ELSE
BEGIN
NVFUMQE(P<CTQ>,LOMBUF[0],APPTTX$,ADDR,LMSG20$);
NVFTETC(PT); # END TERMINAL CONNECTION #
END
RETURN; # EXIT #
END
END
#
* CHECK STATE OF PTAC. IF DUE TO LOANED REQUEST TYPE OF
* RECONNECT, CHECK THE DIFFERENT REASON CODES TO DETERMINE
* NEXT ACTION.
#
IF PTA$STATE[PT] EQ PTACST"AWTVCBL"
THEN
BEGIN
PTA$LCF[PT] = TRUE; # SET LCF FIRST #
#
* IF THE PRIMARY APPL FAILED OR THE SECONDARY APPL ABORTED THE
* CONNECTION, CLEAR THE LOAN CONNECTION FIELD IN THE PTAC, SINCE
* THIS IS NO LONGER A LOANED CONNECTION. CLEAR THE VOLUNTEERED
* APPL FLAG SO THE APPLICATION PROMPT WILL BE SENT. SEND EITHER
* THE "CONNECTION ABORTED" OR "APPLICATION FAILED" MESSAGE.
#
IF (PTA$LRC[PT] EQ RCRC"PAF") OR
(PTA$LRC[PT] EQ RCRC"SAC")
THEN
BEGIN
PTA$LRC[PT] = 0;
PTA$LCF[PT] = FALSE;
PTA$VAF[PT] = FALSE;
IF PTA$LRC[PT] EQ RCRC"SAC"
THEN
BEGIN
#
* LOCATE THE PRIMARY AST ENTRY AND DECREMENT THE RESERVED
* CONNECTION COUNT. UPDATE THE *RAU* TABLE, IF NEEDED.
#
PRIAPP = TRUE;
NVFTURT(VCB$VCB[0],PT,PRIAPP); # UPDATE *RAU* TABLE #
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
NVFUMQE(P<CTQ>,CABBUF[0],APPTTX$,ADDR,LMSG30$);
END
ELSE
BEGIN
NVFUMQE(P<CTQ>,APFBUF[0],APPTTX$,ADDR,LMSG30$);
END
END
#
* IF SWITCHING BACK TO PRIMARY, BUT THE PRIMARY APPLICATION NAME
* IS NOT SPECIFIED, THE PRIMARY APPL MUST HAVE FAILED. IN THIS
* CASE, THE LOAN CONNECTION IS ENDED. DECREMENT THE NUMBER OF
* RESERVED CONNECTIONS FOR THE PRIMARY APPL. UPDATE THE *RAU*
* TABLE, IF NECESSARY.
#
IF (PTA$LRC[PT] GQ RCRC"UVS" AND
PTA$LRC[PT] LQ RCRC"SLE") AND
NOT PTA$VAF[PT]
THEN
BEGIN
PTA$LRC[PT] = 0;
PTA$LCF[PT] = FALSE;
PRIAPP = TRUE;
NVFTURT(VCB$VCB[0],PT,PRIAPP);
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
END
#
* NORMAL RECONNECT OR NON-MANDATORY APPLICATION FAILED. SEND
* "CONNECT TIME" MESSAGE. DETERMINE IF NEW APPLICATION SPECIFIED.
* IF NO NEW APPLICATION SPECIFIED AND THE PREVIOUS APPLICATION
* IS A MANDATORY/IMPLIED MANDATORY APPLICATION, TERMINATE THE
* CONNECTION.
#
IF PTA$LRC[PT] LS RCRC"LSA"
THEN
NVFUMQE(P<CTQ>,CTMEBUF[0],APPTTX$,ADDR,LMSG40$);
IF PTA$VAF[PT]
THEN
BEGIN
NVFTCRN(PT,RNAME);
IF (RNAME NQ NORESNAM$)
THEN
BEGIN
IF RNAME EQ LOGIN$
THEN
BEGIN
#
* HAVE RESERVED APPLICATION NAME OF "HELLO" OR "LOGIN".
* CHECK IF LOAN REQUEST TYPE OF CONNECTION IN WHICH CASE THE
* RESERVED APPL NAMES ARE NOT ALLOWED.
* SET UP TO ISSUE CR/RCN/A SM VIA CALL TO NVFTRLC.
#
IF PTA$LRC[PT] EQ RCRC"LSA"
THEN
BEGIN
SMOUT = TRUE;
PTA$LRC[PT] = RCRC"SNA";
NVFTRLC(PT,SMOUT,PTA$LRC[PT]);
RETURN;
END
IF PTA$LRC[PT] LS RCRC"LSA"
THEN
BEGIN
NVFTILP(PT);
END
END
#
* FOR ALL RESERVED APPLICATION NAMES, RETURN. IF THE APPLICATION
* NAME WAS "BYE" OR "LOGOUT", NVF WILL HAVE ALREADY TERMINATED
* THE CONNECTION.
#
RETURN;
END
END
ELSE
BEGIN
#
* NO NEW APPLICATION SPECIFIED.
* IF A LOAN REQUEST TYPE OF RECONNECT, THEN INVALID RECONNECT
* FROM PRIMARY TO SECONDARY APPLICATION.
* SET UP TO ISSUE A CR/RCN/A SM VIA CALL TO NVFTRLC.
#
IF PTA$LRC[PT] EQ RCRC"LSA"
THEN
BEGIN
SMOUT = TRUE;
PTA$LRC[PT] = RCRC"SNA";
NVFTRLC(PT,SMOUT,PTA$LRC[PT]);
RETURN;
END
ELSE
BEGIN
IF (PTA$APPIND[PT] EQ MNDATRY$)
OR (VCB$VDSF[0])
THEN
BEGIN
NVFUMQE(P<CTQ>,LOMBUF[0],APPTTX$,ADDR,LMSG20$);
NVFTETC(PT);
RETURN;
END
END
END
#
* WHETHER OR NOT NEW APPLICATION IS SPECIFIED, REVALIDATE THE USER
* (CPM 56B REQUEST) WITHOUT INCREMENTING THE FAMILY COUNT.
#
P<CRQBUF> = LOC(MSGBUF[0]) + ((NMSGBUF$ + 1) / 2);
CRQ$FCWORD[0] = 0; # CLEAR OUTPUT HALF OF *MSGBUF* #
CRQ$FWORD[0] = 0;
CRQ$PWORD[0] = 0;
CRQ$UWORD[0] = 0;
CRQ$FC[0] = CPM56B$;
CRQ$ACN[0] = VCBLOC;
CRQ$FNAM[0] = PTA$FNAM[PT];
CRQ$VPWF[0] = TRUE;
CRQ$IFCTF[0] = FALSE;
CRQ$UNUM[0] = PTA$UNUM[PT];
CRQ$QNUM[0] = LOC(P<VDATAQ>);
NVFUMQE(P<CPMRQ>,CRQBUF[0],APPTTX$,0,LMSG40$);
PTA$STATE[PT] = PTACST"AWTVAL"; # AWAIT VALIDATION STATE #
PTA$PROMPT[PT] = AWTFAM$; # SET TO AWAIT FAMILY #
PTA$USERCT[PT] = LLVAL; # FORCE LOGOUT IF UNSUCCESSFUL #
PTA$PWEXPF[PT] = TRUE; # DO NOT REISSUE PW EXP MESSAGE #
END
END # END NVFTRVD #
TERM