cdc:nos2.source:nam5871:nvftrcn
Table of Contents
NVFTRCN
Table Of Contents
- [00008] PROC NVFTRCN
- [00009] NVFTRCN - RECONNECT TO NVF REQUEST (CR/RCN SM)
- [00013] RECONNECT TO NVF REQUEST (CR/RCN SM).
- [00071] PROC MOVE
- [00072] PROC NVFSCAD
- [00073] PROC NVFTDAD
- [00074] PROC NVFTILP
- [00075] PROC NVFTPVD
- [00076] PROC NVFTRLC
- [00077] PROC NVFTURT
- [00078] PROC NVFUMQE
- [00079] PROC SSTETS
- [00080] FUNC XSFW C(10)
Source Code
- NVFTRCN.txt
- *DECK NVFTRCN
- USETEXT TEXTNVF
- USETEXT TXSMNVF
- USETEXT TXTANVF
- USETEXT TXTAPSS
- USETEXT TXTSUSS
- PROC NVFTRCN;
- # TITLE NVFTRCN - RECONNECT TO NVF REQUEST (CR/RCN SM) #
- BEGIN # NVFTRCN #
- #
- ** NVFTRCN - RECONNECT TO NVF REQUEST (CR/RCN SM).
- *
- * E. THAVIKULWAT 81/11/09
- * A. LIM 82/08/04
- * C. BRION 83/04/11. 83/05/10.
- *
- * THIS PROCEDURE'S MAIN FUNCTION IS TO RECONNECT TERMINAL TO NVF IN
- * RESPONSE TO A CR/RCN REQUEST. IT IS CALLED INTO EXECUTION BY
- * PROCEDURE *NVFTDQE*.
- *
- * PROC NVFTRCN
- *
- * ENTRY:
- * CR/RCN SM IN *MSGBUF*
- *
- * EXIT:
- * ONE OF THE FOLLOWING:
- * 1) CONNECTION TERMINATED.
- * 2) APPLICATION PROMPT REISSUED.
- * 3) CONNECTION SWITCHED TO ANOTHER APPLICATION.
- *
- * NOTES:
- * A CR/RCN REQUEST IS SENT TO NVF FOR 2 REASONS:
- * 1) THE SWITCH REQUEST WAS SUCCESSUFL BUT EITHER SOMETHING IS
- * WRONG WITH THE APPLICATION OR USER REQUESTED A RECONNECT.
- * IN THIS CASE, A *PTAC* ENTRY FOR THE CONNECTION NO LONGER
- * EXIST, BUT A VCB ENTRY FOR THE CONNECTION DOES EXIST OUT
- * ON THE VCB FILE. A *PTAC* ENTRY HAS TO BE CREATED AND
- * INFORMATION FROM THE CR/RCN SM SAVED.
- * 2) THE SWITCH REQUEST WAS NOT SUCCESSFUL. IN THIS CASE, A
- * *PTAC* ENTRY FOR THE CONNECTION STILL EXIST. IF DEVICE IS
- * AN INTERACTIVE DEVICE, APPROPRIATE MESSAGE IS ISSUED TO
- * THE TERMINAL AND APPLICATION PROMPT MAY BE REISSUED. IF
- * DEVICE IS A BATCH DEVICE, THE DEVICE REMAIN CONNECTED TO
- * NVF UNTIL IT'S OWNING CONSOLE HAS COME BACK AND HAS MADE
- * ANOTHER SUCCESSFUL APPLICATION SELECTION OR UNTIL THE NPU
- * TERMINATES THE CONNECTION.
- *
- * REASON CODE FROM CR/RCN REQUEST DETERMINES REASON FOR THE
- * RECONNECT. REASON CODE 1-4 IMPLIES 1 ABOVE AND REASON CODE
- * OF 5-7 IMPLIES 2 ABOVE.
- * A BIAS OF 15 IS ADDED TO THE REASON CODE FROM CR/RCN WHEN THE
- * CODE IS TO BE STORED IN THE CR/TRM.
- *
- * METHOD:
- * SEND CR/RCN/N RESPONSE. DETERMINE REASON FOR RECONNECT. IF FOR
- * AN UNSUCCESSFUL SWITCH, GET *PTAC* ENTRY, UPDATE WITH NEW ACN,
- * AND DECREMENT T-A CONNECTION COUNT. IF FOR A SUCCESSFUL SWITCH,
- * CREATE A NEW *PTAC*, UPDATE WITH INFORMATION FROM THE CR/RCN
- * REQUEST, AND ISSUE VCB READ REQUEST.
- #
- #
- **** PROC NVFTRCN - XREF LIST.
- #
- XREF
- BEGIN
- PROC MOVE; # MACREL - MOVE CM WORDS #
- PROC NVFSCAD; # COMPLETE APPLICATION DEPARTURE #
- PROC NVFTDAD; # DETERMINE ADDITIONAL DIALOGUE #
- PROC NVFTILP; # ISSUE LOGIN PROMPT #
- PROC NVFTPVD; # PREPARE TO RECEIVE VALIDATION DATA #
- PROC NVFTRLC; # RECONNECT TO PRIMARY APPLICATION #
- PROC NVFTURT; # UPDATE *RAU* TABLE #
- PROC NVFUMQE; # TRANSFER SM OR TEXT TO QUEUE #
- PROC SSTETS; # SS - ENLARGE TABLE SPACE #
- FUNC XSFW C(10); # SPACE FILL WORD #
- END
- #
- ****
- #
- #
- * TEMPORARY BASED ARRAYS FOR USE WHEN CALLING THE *MOVE* ROUTINE.
- #
- BASED ARRAY TEMPFROM [00:00] S(1);
- BEGIN
- ITEM FROMWRD U(00,00,60);
- END
- BASED ARRAY TEMPTO [00:00] S(1);
- BEGIN
- ITEM TOWRD U(00,00,60);
- END
- DEF RCNRC$ #15#; # NUMBER TO ADD TO CR/RCN REASON CODE #
- ITEM ADDR I; # ADDRESSING INFORMATION FOR ABH #
- ITEM AS I; # SUBSCRIPT FOR ARRAY AST #
- ITEM ASENTRY I; # NUMBER AST ENTRIES #
- ITEM ERRCOD I; # ERROR CODE #
- ITEM I I; # LOOP VARIABLE #
- ITEM MATCH B; # MATCH FOUND FLAG #
- ITEM OPTWRDSZ I; # SIZE OF OPTIONAL DATA IN CM WORDS #
- ITEM PD I; # SUBSCRIPT FOR ARRAY PDCT #
- ITEM PORD I; # PRIMARY AST ORDINAL #
- ITEM PRIAPP B; # PRIMARY APPL INDICATOR #
- ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC #
- ITEM SAVETLC I; # TEMP PLACE TO STORE THE ABHTLC #
- ITEM SMOUT B; # SM TYPE FOR CALL TO NVFTRLC #
- ITEM SPSIZ I; # SIZE OF SPTAC ENTRY IN CM WORDS #
- #
- * DETERMINE NUMBER OF AST ENTRIES.
- #
- ASENTRY = ASTLNGTH/ASTSIZ$;
- #
- * BUILD CR/RCN/N RESPONSE.
- #
- SPMSG0[1] = 0; # CLEAR RESPONSE AREA #
- PFCSFC[1] = CRRCNN;
- CRACN[1] = CRACN[0];
- CRNXP[1] = TRUE;
- CRICT[1] = ICT$;
- CRALN[1] = ALN$;
- ADDR = ABHADR[0];
- SAVETLC = ABHTLC[0]; # SAVE TLC FOR LATER USE #
- #
- * ONLY IF NOT A RECONNECT TO LOAN CONNECTION TO SECONDARY DO
- * WE NEED TO RESPOND IMMEDIATELY WITH A NORMAL RESPONSE.
- #
- IF CRRRCN[0] NQ RCRC"LSA"
- THEN
- NVFUMQE(P<CTQ>,APSM[1],APPPR$,ADDR,LCRRCNN);
- #
- * DETERMINE IF CR/RCN IS FOR AN ABNORMAL RECONNECT (UNSUCCESSFUL
- * SWITCH) OR FOR A NORMAL RECONNECT.
- #
- ERRCOD = CRRRCN[0]; # REASON CODE #
- IF CRLIMBO[0]
- THEN # CR/RCN FOR UNSUCCESSFUL SWITCH #
- BEGIN
- #
- * CR/RCN IS FOR AN ABNORMAL RECONNECT (I.E., CR/ACC HAS NOT BEEN
- * RECEIVED). CALL *NVFTURT* TO FIND THE *PTAC* ENTRY AND UPDATE
- * *RAU* TABLE ACCORDINGLY. SAVE NEW ACN, DECREMENT T-A CONNECTION
- * COUNT. IF INTERACTIVE DEVICE, CALL *NVFTDAD* TO DETERMINE
- * ADDITIONAL DIALOGUE POSSIBILITY. OTHERWISE, JUST EXIT.
- #
- PRIAPP = FALSE;
- NVFTURT(CRVCB[0],PT,PRIAPP); # UPDATE *RAU* TABLE #
- PTA$ACN[PT] = CRACN[0]; # SAVE NEW ACN #
- PTA$RC[PT] = ERRCOD + RCNRC$; # SAVE RC FOR USE IN CR/TRM #
- PTA$LRC[PT] = ERRCOD;
- #
- * SET THE NEXT APPLICATION NAME IF SPECIFIED.
- #
- IF CRANAME[0] NQ 0
- THEN # NEW APPLICATION SPECIFIED #
- BEGIN
- PTA$VLTAPP[PT] = XSFW(CRANAME[0]); # SAVE NEW APPL NAME #
- PTA$VAF[PT] = TRUE; # SET VOLUNTEERED APPL FLAG #
- END
- #
- * LOCATE AST ENTRY FOR THIS PTAC ENTRY.
- #
- 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; # DECREMENT NUMBER OF CONN #
- AST$ICCN[AS] = AST$ICCN[AS] - 1; #DECREMENT NO OF INCMG CONN #
- NVFSCAD(AS); # COMPLETE APPL DEPARTURE #
- IF (PTA$DT[PT] EQ DT$CONS)
- OR (PTA$DT[PT] EQ DT$CLP)
- OR (PTA$DT[PT] EQ DT$USER)
- THEN # INTERACTIVE DEVICE TYPE #
- BEGIN
- #
- * CHECK IF LOANED CONNECTION.
- * IF SO, CALL NVFTRLC TO RETURN CONNECTION TO PRIMARY APPL.
- * OTHERWISE, CALL NVFTDAD TO DETERMINE IF ADDITIONAL DIALOGUE
- * IS OK. IF SO, THEN CALL NVFTILP TO ISSUE NEXT PROMPT.
- #
- IF PTA$LRC[PT] LS RCRC"LSA"
- THEN
- BEGIN
- NVFTDAD(PT,ERRCOD);
- IF PTA$STATE[PT] EQ PTACST"AWTPRMT"
- THEN
- NVFTILP(PT);
- END
- ELSE
- BEGIN
- #
- * LOCATE THE *AST* ENTRY OF THE PRIMARY APPL. DECREMENT THE
- * NUMBER OF RESERVED CONNECTIONS AND INCREMENT THE NUMBER OF T-A
- * CONNECTIONS.
- #
- 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;
- AST$TACN[AS] = AST$TACN[AS] + 1;
- AST$ICCN[AS] = AST$ICCN[AS] + 1;
- END
- #
- * SWITCH THE CONNECTION BACK TO THE PRIMARY APPLICATION.
- #
- PTA$SWTAPP[PT] = AST$PANAM[AS];
- SMOUT = FALSE;
- NVFTRLC(PT,SMOUT,PTA$LRC[PT]);
- END
- END
- END
- ELSE
- BEGIN
- #
- * CR/RCN IS FOR A NORMAL RECONNECT. CALL *NVFTPVD* TO ALLOCATE
- * SPACE FOR A *PTAC* ENTRY AND MAKE VCB READ REQUEST ENTRY IN
- * *VRQ* QUEUE. UPDATE *PTAC* WITH INFORMATION RECEIVED IN THE
- * CR/RCN SM.
- #
- NVFTPVD(CRVCB[0],CRAN[0],PT);
- PTA$ACN[PT] = CRACN[0]; # SAVE NEW ACN #
- PTA$VCB[PT] = CRVCB[0];
- PTA$ABL[PT] = CRABL[0];
- PTA$DT[PT] = CRDT[0];
- PTA$TC[PT] = CRRCTC[0];
- PTA$PW[PT] = CRRCPW[0];
- PTA$PL[PT] = CRRCPL[0];
- PTA$LRC[PT] = CRRRCN[0];
- PTA$RC[PT] = ERRCOD + RCNRC$;
- #
- * SET THE NEXT APPLICATION NAME IF SPECIFIED.
- #
- IF CRANAME[0] NQ 0
- THEN # NEW APPLICATION SPECIFIED #
- BEGIN
- PTA$VLTAPP[PT] = XSFW(CRANAME[0]); # SAVE NEW APPL NAME #
- PTA$VAF[PT] = TRUE; # SET VOLUNTEERED APPL FLAG #
- END
- #
- * IF REASON FOR RECONNECT IS APPLICATION FAILURE/NETOFF, THEN
- * SET APPLICATION FAILED FLAG IN THE *PTAC* ENTRY SO THAT USER
- * IS GIVEN 25 TRIES VERSUS 4 TO ENTER A LEGAL APPLICATION NAME
- * (TO TAKE CARE OF TYPE AHEAD DATA), AND ALSO SET APPLICATION
- * DOWN FLAG IN THE *AST* TABLE.
- #
- IF ERRCOD EQ RCRC"N" OR
- ERRCOD EQ RCRC"ANO" OR
- ERRCOD EQ RCRC"AF" OR
- ERRCOD EQ RCRC"SAN" OR
- ERRCOD EQ RCRC"SAF"
- THEN
- BEGIN
- PTA$AFF[PT] = TRUE;
- #
- * LOCATE AST ENTRY FOR PTAC ENTRY.
- #
- FOR AS = 0 STEP 1 WHILE
- (AS LS ASENTRY AND
- AST$PANAM[AS] NQ PTA$SWTAPP[PT])
- DO
- BEGIN
- END
- AST$DNF[AS] = TRUE; # SET APPLICATION DOWN FLAG #
- END
- #
- * SET *PTAC* STATE ACCORDING TO LOAN CONNECTION FLAG STATUS OF
- * THE PTAC ENTRY.
- #
- IF PTA$LRC[PT] LS RCRC"LSA"
- THEN
- PTA$STATE[PT] = PTACST"AWTVCBR";
- ELSE
- BEGIN
- PTA$STATE[PT] = PTACST"AWTVCBL";
- #
- * IF THIS IS AN INTIAL LOAN REQUEST, SAVE THE PRIMARY
- * APPLICATION NUMBER IN THE PTAC ENTRY.
- #
- IF PTA$LRC[PT] EQ RCRC"LSA"
- THEN
- BEGIN
- PTA$PRIAN[PT] = CRAN[0];
- END
- END
- #
- * CHECK IF EXTENDED OPTIONAL WORDS ARE APPENDED TO THE CR/RCN/R SM.
- * IF SO, ALLOCATE SPTAC SPACE AND MOVE THE OPTIONAL WORDS INTO THE
- * SPTAC, MARK THE PTAC AND LABEL THE SPTAC SO IT CAN BE LOCATED
- * LATER.
- #
- IF SAVETLC GR LCRRCN
- THEN
- BEGIN
- SPSIZ = SAVETLC - LCRRCN + 1;
- SSTETS(P<SPTAC>,0,SPSIZ);
- SPT$VCB[0] = PTA$VCB[PT];
- SPT$ESIZE[0] = SPSIZ;
- P<TEMPFROM> = LOC(CRROPW[0]);
- P<TEMPTO> = LOC(SPT$WRD2[0]);
- OPTWRDSZ = SPT$ESIZE[0] - 1;
- FOR I = 0 STEP 1 WHILE
- I LS OPTWRDSZ
- DO
- BEGIN
- TOWRD[I] = FROMWRD[I];
- END
- PTA$SPTAC[PT] = TRUE;
- END
- #
- * IF A CONSOLE DEVICE, SEARCH THE PDCT TO SEE IF THERE IS
- * AN ENTRY FOR THIS DEVICE. IF AN ENTRY IS FOUND, THEN SET THE
- * STATE TO AWAITING CONSOLE VALIDATION.
- #
- IF PTA$DT[PT] EQ DT$CONS
- THEN
- BEGIN
- MATCH = FALSE;
- FOR PD=0 STEP PDT$WC[PD] WHILE (NOT MATCH AND PD LS PDTLNGTH)
- DO
- BEGIN
- IF PTA$VCB[PT] EQ PDT$CVCB[PD+1]
- THEN
- BEGIN
- PDT$CSTAT[PD+1] = PDCTST"AWTCVAL";
- MATCH = TRUE;
- END
- END
- END
- END
- END # END NVFTRCN #
- TERM
cdc/nos2.source/nam5871/nvftrcn.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator