cdc:nos2.source:nam5871:nvfaspc
Table of Contents
NVFASPC
Table Of Contents
- [00008] PROC NVFASPC
- [00009] NVFASPC - SWITCH A-A PENDING CONNECTION
- [00012] SWITCH A-A PENDING CONNECTION.
- [00051] PROC NVFUMQE
- [00052] PROC NVFAIAM
- [00053] PROC NVFUFVO
- [00054] PROC SSTRTS
- [00055] PROC ABORT
- [00056] PROC NVFUCRS
- [00057] PROC SSCATR
- [00058] PROC SSCCTR
- [00059] PROC NVFSCAD
- [00060] PROC NVFACTC
- [00061] PROC MESSAGE
- [00062] FUNC XCOD U
- [00087] TMBBUF - TIMER REQUEST BUFFER.
- [00120] ASTMSG - MISSING AST ENTRY ERROR MESSAGE.
- [00396] PROC REFCONN
- [00397] REFCONN - REFUSE PENDING CONNECTION
- [00401] REFCONN - REFUSE PENDING CONNECTION.
Source Code
- NVFASPC.txt
- *DECK NVFASPC
- USETEXT TEXTNVF
- USETEXT TEXTSS
- USETEXT TXTANVF
- USETEXT TXTAPSS
- USETEXT TXSMNVF
- USETEXT TXTSUSS
- PROC NVFASPC;
- # TITLE - NVFASPC - SWITCH A-A PENDING CONNECTION #
- BEGIN # NVFASPC #
- #
- ** NVFASPC - SWITCH A-A PENDING CONNECTION.
- *
- * C. BRION 83/04/27.
- *
- * THIS PROCEDURE IS RESPONSIBLE FOR EITHER SWITCHING OR TERMINATING
- * PENDING A-A CONNECTIONS THAT HAVE BEEN AWAITING THE NETON OF THE
- * REQUESTED APPLICATION.
- *
- * PROC NVFASPC
- *
- * ENTRY
- *
- * THE NETON NORMAL OR ABNORMAL RESPONSE SM RESIDES IN MSGBUF AND
- * ABHBUF.
- *
- * EXIT
- *
- * A-A CONNECTIONS PENDING CONNECTION TO THE "STARTED" APPLICATION
- * ARE EITHER SWITCHED TO THE APPLICATION OR ENDED VIA THE ISSUE
- * OF THE CR/RAP/A SM.
- *
- * APPLICATION DEPARTURE PROCESSING MAY BE PERFORMED IN THE CASE OF
- * OF ABNORMAL NETON RESPONSE.
- *
- *
- * AN ACCOUNT MESSAGE MAY BE ISSUED IN THE ABNORMAL NETON CASE.
- *
- * THE PAAC ENTRY AND ASSIGNED VCB ORDINAL WILL BE RELEASED IN
- * THE ABNORMAL NETON CASE FOR EACH PENDING A-A CONNECTION VIA
- * A CALL TO NVFACTC.
- *
- #
- CONTROL EJECT;
- #
- **** NVFASPC XREF LIST
- #
- XREF
- BEGIN
- PROC NVFUMQE; # MAKE QUEUE ENTRY #
- PROC NVFAIAM; # ISSUE ACCOUNT MESSAGE #
- PROC NVFUFVO; # FREE VCB ORDINAL #
- PROC SSTRTS; # SS- RELEASE TABLE SPACE #
- PROC ABORT; # MACREL ABORT PROGRAM #
- PROC NVFUCRS; # CHECK REQUEST START APPL #
- PROC SSCATR; # SS- ACCEPT TIMER REQUEST #
- PROC SSCCTR; # CANCEL TIMER REQUEST #
- PROC NVFSCAD; # COMPLETE APPL DEPARTURE #
- PROC NVFACTC; # CLEANUP TERMINATED CONN #
- PROC MESSAGE; # SEND DAYFILE MESSAGE #
- FUNC XCOD U; # CONVERT OCTAL TO DISPLAY COD#
- END
- #
- ****
- #
- CONTROL EJECT;
- #
- * ITEM DEFINITIONS
- #
- ITEM PA I; # PAAC ENTRY ORDINAL #
- ITEM SAS I; # SEC AST ENTRY ORDINAL #
- ITEM PAS I; # PRI AST ENTRY ORDINAL #
- ITEM PAENTRY I; # NUMBER PAAC ENTRIES #
- ITEM ASENTRY I; # NUMBER AST ENTRIES #
- ITEM MTYP I; # ACCOUNT MESSAGE TYPE #
- ITEM WORK I; # SPARE WORK VARIABLE #
- ITEM SECAST B; # SEC AST ENTRY INDICATOR #
- ITEM MATCH B; # UNDO LOOP INDICATOR #
- ITEM RSTAT I; # RETURN STATUS #
- ITEM CONNREF B; # CONNECTION REFUSED FLAG #
- ITEM SUCCESS B; # SET IF TIMER REQUEST IS O.K.#
- ITEM VCBREL B; # RELEASE VCB FLAG #
- #
- ** TMBBUF - TIMER REQUEST BUFFER.
- *
- * BUFFER FOR GENERATION OF TIMER REQUEST.
- #
- ARRAY TMBBUF [00:00] S(TMBSIZ$);
- BEGIN
- ITEM TMB$SMID S:CTQSTAT(00,00,12) = [S"SINA"];
- ITEM TMB$WC U(00,48,12) = [TMBSIZ$];
- ITEM TMB$ABT U(01,00,06) = [APPCMD];
- ITEM TMB$CNUM U(01,18,18);
- ITEM TMB$PFCSFC U(02,00,16) = [FCINA];
- ITEM TMB$ACN U(02,24,12);
- ITEM TMB$DELAY U(03,24,18) = [NETPTIME$];
- ITEM TMB$QNUM U(03,42,18);
- END
- #
- * THE FOLLOWING ARRAY IS USED FOR DAYFILE-ING WHEN THE REQUEST
- * TO CANCEL A TIMER REQUEST FAILS.
- #
- ARRAY EMSG [0:0] S(7);
- BEGIN
- ITEM MSG$MSG1 C(00,00,30) = ["NVFASPC: CANCEL TIMER REQUEST "];
- ITEM MSG$MSG2 C(03,00,20) = ["FAILED (CNUM/PA) -- "];
- ITEM MSG$CNUM U(05,00,30);
- ITEM MSG$SLSH C(05,30,01) = ["/"];
- ITEM MSG$PA U(05,36,24);
- ITEM MSG$ZBYT I(06,00,60) = [0];
- END
- $BEGIN
- #
- ** ASTMSG - MISSING AST ENTRY ERROR MESSAGE.
- #
- ARRAY ASTMSG [00:00] S(4);
- BEGIN
- ITEM AMSG$MSG C(00,00,30) =
- ["NVFASPC: CANNOT FIND AST ENTRY"];
- ITEM AMSG$ZERO U(03,00,60) = [0];
- END
- $END
- CONTROL EJECT;
- #
- * DETERMINE NUMBER OF AST ENTRIES
- #
- ASENTRY = (ASTLNGTH/ASTSIZ$);
- #
- * DETERMINE NUMBER OF PAAC ENTRIES
- #
- PAENTRY = (PACLNGTH/PAACSIZ$);
- #
- * DETERMINE INDEX ORDINAL OF APPLICATION NAMED IN THE NETON
- * RESPONSE (EITHER NORMAL OR ABNORMAL)
- #
- FOR SAS = 0 STEP 1 WHILE
- ((SAS LS ASENTRY) AND
- (NETAN[0] NQ AST$AN[SAS]) AND
- (NETANAM[0] NQ AST$PANAM[SAS]))
- DO
- BEGIN
- END
- $BEGIN
- #
- * IF AST ENTRY NOT FOUND, SERIOUS PROBLEM SOMEWHERE. ABORT NVF.
- #
- IF SAS EQ ASENTRY
- THEN
- BEGIN
- MESSAGE(ASTMSG,0);
- ABORT;
- END
- $END
- #
- * LOCATE IF NEEDED THE PRIMARY APPLICATION AST ENTRY ORDINAL.
- #
- SECAST = FALSE;
- IF AST$PANAM[SAS] EQ AST$SANAM[SAS]
- THEN
- BEGIN
- PAS = SAS;
- END
- ELSE
- BEGIN
- SECAST = TRUE;
- MATCH = FALSE;
- FOR WORK = 0 STEP 1 WHILE
- ((WORK LS ASENTRY) AND
- (NOT MATCH))
- DO
- BEGIN
- IF ((AST$PANAM[WORK] EQ AST$SANAM[SAS]) AND
- (AST$PANAM[WORK] EQ AST$SANAM[WORK]))
- THEN
- BEGIN
- MATCH = TRUE;
- PAS = WORK;
- END
- END
- $BEGIN
- IF WORK EQ ASENTRY
- THEN
- BEGIN
- MESSAGE(ASTMSG,0);
- ABORT;
- END
- $END
- END
- #
- * PERFORM OUTER FOR LOOP FOR EACH PAAC ENTRY.
- #
- CONNREF = FALSE;
- FOR PA = 0 STEP 1 WHILE
- PA LS PAENTRY
- DO
- BEGIN
- #
- * LOCATE PAAC ENTRIES THAT ARE "PENDING NETON" TO THE APPLICATION
- * OF THE NETON RESPONSE.
- #
- IF ((PA$STATE[PA] EQ PAACST"PANETP") AND
- (PA$SWAP[PA] EQ AST$SANAM[SAS]))
- THEN
- BEGIN
- #
- * CHECK IF NORMAL OR ABNORMAL NETON RESPONSE.
- #
- IF PFCSFC[0] EQ NETONA
- THEN
- BEGIN
- #
- * NETON ABNORMAL RESPONSE.
- * CALL REFCONN TO REFUSE THE CONNECTION.
- #
- REFCONN;
- END
- ELSE # NETON NORMAL RESPONSE #
- BEGIN
- #
- * NETON NORMAL RESPONSE RECEIVED.
- * CALL NVFUCRS TO DETERMINE IF CONNECTION OK, STILL PENDING NETON
- * OR UNABLE TO COMPLETE CONNECTION.
- #
- RSTAT = CONNOK$;
- WORK = AACON$;
- NVFUCRS(PAS,SAS,RSTAT,WORK);
- IF RSTAT EQ CONNOK$
- THEN
- BEGIN
- #
- * OK TO MAKE CONNECTION TO APPL AT SAS.
- * INCREMENT NUMBER ACTIVE AA CONNECTIONS FOR AST ENTRY.
- * ISSUE ACCOUNTING MESSAGE.
- * SET PAAC STATE.
- * SET UP CR/RAP/N SM AND SEND.
- #
- AST$AACN[SAS] = AST$AACN[SAS] + 1;
- IF PA$ICMCN[PA]
- THEN
- BEGIN
- AST$ICCN[SAS] = AST$ICCN[SAS] + 1;
- END
- IF SAS NQ PAS
- THEN
- BEGIN
- AST$AACN[PAS] = AST$AACN[PAS] + 1;
- IF PA$ICMCN[PA]
- THEN
- BEGIN
- AST$ICCN[PAS] = AST$ICCN[PAS] + 1;
- END
- END
- PA$CNTIME[PA] = CTM$PDT[0];
- WORK = ABAC$;
- NVFAIAM(PA,WORK);
- PA$STATE[PA] = PAACST"PARAP";
- PA$SWAP[PA] = AST$PANAM[SAS];
- PA$SWAPAN[PA] = AST$AN[SAS];
- SPMSG0[1] = PA$RAPSM0[PA];
- SPMSG1[1] = PA$RAPSM1[PA];
- SPMSG2[1] = PA$RAPSM2[PA];
- CRICT[1] = CT60TRANS;
- RB[1] = TRUE;
- CRVCB[1] = PA$VCB[PA];
- NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,LCRRAPN);
- #
- * SET UP AND ISSUE THE CR/SWH/R SM (SWITCH REQUEST).
- #
- FOR WORK = 0 STEP 1 UNTIL (MSBFNVL - 1)
- DO
- BEGIN
- MSG$WORD[WORK] = 0;
- END
- PFCSFC[0] = CRSWH;
- CRNACN[0] = PA$NACN[PA];
- CRABL[0] = PA$ABL[PA];
- CRDT[0] = PA$DT[PA];
- CRSNAME[0] = " ";
- CRSWHID[0] = PA$URHID[PA];
- CRSWSL[0] = AASECLEV$;
- CRSWDBZ[0] = PA$DBZ[PA];
- CRSWUBZ[0] = PA$UBZ[PA];
- CRSWAN[0] = PA$SWAPAN[PA];
- NVFUMQE(P<CTQ>,APSM[0],APPPR$,0,LCRSWH);
- PA$STATE[PA] = PAACST"PARAP";
- #
- * CANCEL TIMER REQUEST.
- * CLEAR THE ACN NUMBER AND THE TIMER CANCELLATION NUMBER OF
- * THE PAAC ENTRY.
- #
- SSCCTR(PA$CNUM[PA],SUCCESS);
- $BEGIN
- IF NOT SUCCESS
- THEN
- BEGIN
- MSG$CNUM[0] = XCOD(PA$CNUM[PA]);
- MSG$PA[0] = XCOD(PA);
- MESSAGE(EMSG,0);
- END
- $END
- PA$CNUM[PA] = 0;
- END
- ELSE IF RSTAT EQ NOCONN$ OR
- RSTAT EQ MCLIMIT$
- THEN
- BEGIN
- #
- * CONNECTION NOT ALLOWED.
- * CALL REFCONN TO REFUSE CONNECTION.
- #
- REFCONN;
- END
- ELSE
- #
- * CONNECTION MUST STILL BE PENDING NETON OF NEW SPINOFF COPY.
- * SET STATE OF PAAC ENTRY TO PENDING NETON.
- * SET UP AND ISSUE TIMER REQUEST FOR CONNECTION.
- * SET TIMER CANCELLATION NUMBER OF PAAC ENTRY.
- #
- BEGIN
- PA$STATE[PA] = PAACST"PANETP";
- TMB$ACN[0] = PA$NACN[PA];
- TMB$QNUM[0] = LOC(P<AAINPQ>);
- SSCATR(TMBBUF[0]);
- PA$CNUM[PA] = TMB$CNUM[0];
- PA$SWAP[PA] = AST$PANAM[PAS];
- END
- END
- END
- END
- #
- * IF A NETON ABNORMAL RESPONSE, MUST CALL NVFSCAD TO PERFORM
- * APPLICATION DEPARTURE PROCESSING.
- #
- IF PFCSFC[0] EQ NETONA
- THEN
- BEGIN
- NVFSCAD(SAS);
- IF PAS NQ SAS
- THEN
- NVFSCAD(PAS);
- END
- #
- * CHECK IF ANY CONNECTION WAS REFUSED IN WHICH CASE THE PAAC
- * ENTRY SPACE MUST BE RELEASED.
- #
- IF CONNREF
- THEN
- BEGIN
- PAENTRY = PAENTRY - 1;
- VCBREL = TRUE;
- FOR PA = PAENTRY STEP -1 WHILE
- PA GQ 0
- DO
- BEGIN
- IF ((PA$STATE[PA] EQ PAACST"PAERR") AND
- (PA$SWAP[PA] EQ AST$SANAM[SAS]))
- THEN
- NVFACTC(PA,VCBREL);
- END
- END
- RETURN;
- CONTROL EJECT;
- PROC REFCONN;
- # TITLE - REFCONN - REFUSE PENDING CONNECTION #
- BEGIN # REFCONN #
- #
- ** REFCONN - REFUSE PENDING CONNECTION.
- *
- * C. BRION 83/04/19.
- *
- * THE PURPOSE OF THIS INTERNAL PROCEDURE IS TO PERFORM THE
- * PROCESSING OF A REFUSED PENDING A-A CONNECTION.
- *
- * REFCONN
- *
- * ENTRY:
- *
- * PA - ENTRY ORDINAL OF PAAC ENTRY.
- * SECAST - FLAG INDICATING SECONDARY AST ENTRY.
- * SAS - SECONDARY AST ENTRY ORDINAL.
- * PAS - PRIMARY AST ENTRY ORDINAL.
- * CONNREF - GLOBAL CONNECTION REFUSED FLAG.
- #
- CONTROL EJECT;
- #
- * SET UP AND ISSUE A CR/RAP/A SM FOR THE CONNECTION SINCE A
- * NETON ABNORMAL RESPONSE ISSUED.
- #
- CONNREF = TRUE;
- SPMSG0[1] = PA$RAPSM[PA];
- EB[1] = TRUE;
- CRRRAP[1] = RCRA"ANA";
- NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,LCRRAPA);
- #
- * SET UP AND ISSUE ACCOUNTING MESSAGE FOR REFUSED A-A CONNECTION.
- #
- WORK = ABAR$;
- NVFAIAM(PA,WORK);
- #
- * SET PAAC STATE TO ERROR.
- #
- PA$STATE[PA] = PAACST"PAERR";
- END # REFCONN #
- END # NVFASPC #
- TERM
cdc/nos2.source/nam5871/nvfaspc.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator