cdc:nos2.source:nam5871:nvftrvd
Table of Contents
NVFTRVD
Table Of Contents
- [00007] PROC NVFTRVD
- [00008] NVFTRVD - RECEIVE VCB DATA
- [00012] RECEIVE VCB DATA.
- [00067] PROC NVFSCAD
- [00068] PROC NVFTCCT
- [00069] PROC NVFTCRN
- [00070] PROC NVFTETC
- [00071] PROC NVFTIAM
- [00072] PROC NVFTILP
- [00073] PROC NVFTRLC
- [00074] PROC NVFTURT
- [00075] PROC NVFUMQE
- [00076] PROC SSCATR
- [00077] PROC SSTRTS
- [00078] FUNC XCDD
- [00087] PROC MESSAGE
- [00098] DAYMSG - TERMINAL CLASS CHANGED MESSAGE BUFFER
- [00115] CABBUF - CONNECTION ABORTED MESSAGE BUFFER.
- [00124] TRBBUF - TIMER REQUEST BUFFER
Source Code
- NVFTRVD.txt
- *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
cdc/nos2.source/nam5871/nvftrvd.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator