*DECK NVFAACC USETEXT TEXTSS USETEXT TEXTNVF USETEXT TXSMNVF USETEXT TXTAPSS USETEXT TXTANVF PROC NVFAACC; # TITLE NVFAACC - A-A PROCESS CR/ACC SMS. # BEGIN #NVFAACC# # ** NVFAACC - PROCESS CR/ACC SMS FOR A-A. * * C. BRION 82/09/25, 83/12/12. * * THE FUNCTION OF THIS PROCEDURE IS PROCESS THE CR/ACC SMS. THE * PROCESSING OF THE CR/ACC COMPLETES THE SWITCHING OF AN A-A * CONNECTION TO THE APPLICATION. * * PROC NVFAACC * * ENTRY: * * THE CR/ACC SM IS IN MSGBUF AND THE WORD COUNT AND BLOCK HEADER * WORDS ARE IN WCBUF AND ABHBUF RESPECTIVELY. * * EXIT: * * THE VCB FILE ENTRY IS MADE. * THE ABAC OR ABAA ACCOUNT MSGS ARE ISSUED. * THE PAAC ENTRY AND ACPID TABLE SPACE IS RELEASED VIA NVFACTC * CALL. # # **** PROC NVFAACC XREF LIST # XREF BEGIN PROC NVFUMQE; # MAKE QUEUE ENTRY # PROC NVFAIAM; # ISSUE A-A ACCOUNT MSG # PROC SSTRTS; # SS-RELEASE TABLE SPACE # PROC ABORT; PROC SSTATS; # SS-ALLOCATE TABLE SPACE # PROC MESSAGE; # ISSUE DAYFILE MESSAGE # PROC MOVE; # MACREL MOVE WORD # PROC NVFACTC; # CLEANUP TERM CONNECTION # END # **** # ITEM PAC I; # PAAC ENTRY INDEX # ITEM NENTRY I; # NUMBER PAAC ENTRIES # ITEM VCB I; # LOCAL VCB VAR # ITEM I I; # LOOP VAR # ITEM LEN I; # LENGTH OF VCB IN CHAR # ITEM MTYP I; # ACCOUNT MSG TYPE # ITEM VCBREL B; # VCB RELEASE FLAG # # ** CLEARVCB - ARRAY FOR CLEARING VCB AREA . # BASED ARRAY CLEARVCB [00:00] S(1); BEGIN ITEM CLE$WORD U(00,00,60); END $BEGIN # * NOPAC - NO PAAC ENTRY WAS FOUND. # ARRAY NOPAC [00:00] S(4); BEGIN ITEM NO$MSG C(00,00,32) = [" NVFAACC: PAAC ENTRY NOT FOUND."]; ITEM NO$ZERO U(03,12,48) = [0]; END $END # * **** PROC NVFAACC ENTRY START **** # # LOCATE THE PAAC ENTRY WITH SAME VCB ORDINAL AS IN THE CR/ACC SM. FIRST CALCULATE NUMBER OF PAAC ENTRIES FOR SEARCH LIMIT. # NENTRY = PACLNGTH / PAACSIZ$; FOR PAC = 0 STEP 1 WHILE ((PAC LS NENTRY) AND (PA$VCB[PAC] NQ CRVCB[0])) DO BEGIN END $BEGIN # * IF PAAC ENTRY NOT FOUND, SERIOUS ERROR, ABORT NVF. # IF PAC EQ NENTRY THEN BEGIN MESSAGE(NOPAC,0); ABORT; END $END # OTHERWISE CONTINUE BY SAVING VCB ORDINAL LOCALLY, AND THEN DETER- MINE THE SWITCH TIME. THE VCB WILL THEN HAVE TO BE SET UP FOR WRITING TO THE VCB FILE. CLEAR THE VCB BUFFER AND SET UP. # VCB = PA$VCB[PAC]; PA$SWTIME[PAC] = CTM$PDT[0]; P = LOC(MSGBUF[LCRACC]); P = LOC(MSGBUF[LCRACC]); FOR I = 0 STEP 1 UNTIL (VCBSIZ$ - 1) DO BEGIN CLE$WORD[I] = 0; END # * DEPENDING ON THE STATE OF THE PAAC, SET THE ACCOUNT MESSAGE * TYPE AND THE VCB STATE. # IF PA$STATE[PAC] EQ PAACST"PAIAP" THEN BEGIN MTYP = ABAA$; PA$VSTATE[PAC] = PAACST"PAISWT"; END ELSE BEGIN MTYP = ABAC$; PA$VSTATE[PAC] = PAACST"PARSWT"; END # * SEND THE ACCOUNT MESSAGE VIA CALL TO NVFAIAM. # NVFAIAM(PAC,MTYP); # SAVE INFO IN THE VCB BUFFER. # VCB$ATN[0] = "AACON "; VCB$ACNAA[0] = CRAACN[0]; VCB$APORT[0] = PA$PORT[PAC]; VCB$AVCB[0] = PA$VCB[PAC]; VCB$WRD1[0] = PA$TIMWRD[PAC]; VCB$WRD2[0] = PA$FWORD[PAC]; VCB$WRD3[0] = PA$RHWRD[PAC]; VCB$WRD4[0] = PA$UWORD[PAC]; VCB$ASWAPAN[0] = PA$SWAPAN[PAC]; VCB$ASWAP[0] = PA$SWAP[PAC]; VCB$ASL[0] = PA$SL[PAC]; VCB$ASTATE[0] = PA$STATE[PAC]; VCB$AIAPRC[0] = PA$IAPRC[PAC]; VCB$ANUMOUT[0] = PA$NUMOUT[PAC]; VCB$ASNODE[0] = PA$SNODE[PAC]; VCB$ADNOD[0] = PA$DNOD[PAC]; VCB$AVSTATE[0] = PA$VSTATE[PAC]; VCB$ADT[0] = PA$DT[PAC]; VCB$ICMCN[0] = PA$ICMCN[PAC]; # ISSUE VCB WRITE REQUEST. # LEN = VCBSIZ$ * 10; NVFUMQE(P,VCBBUF[0],0,VCB,LEN); # * RELEASE ACPID ENTRY SPACE AND PAAC ENTRY VIA CALL * TO NVFACTC. NOTE VCB NOT RELEASED. # VCBREL = FALSE; NVFACTC(PAC,VCBREL); ENDEXIT: END #NVFAACC# TERM