*DECK NVFTRLC USETEXT TEXTSS USETEXT TEXTNVF USETEXT TXTANVF USETEXT TXSMNVF USETEXT TXTAPSS USETEXT TXTSUSS PROC NVFTRLC(PT,SMOUT,ERKOD); # TITLE - NVFTRLC - REFUSE LOAN CONNECTION REQUEST # BEGIN # NVFTRLC # # ** NVFTRLC - REFUSE LOAN CONNECTION REQUEST. * * C. BRION 83/11/02. * * THIS PROCEDURE IS RESPONSIBLE FOR RESTORING THE VCB BUFFER, * ISSUING A VCB WRITE REQUEST, ISSUING A CR/RCN/A SM OR CR/SWH/R * SM, RELEASING THE PTAC ENTRY SPACE IF RCN/A ISSUED AND RELEASING * THE SPTAC ENTRY SPACE IF IT EXISTS. * * NVFTRLC(PT,SMOUT,ERKOD) * * ENTRY: * PT = ENTRY ORDINAL OF PTAC * SMOUT = FLAG INDICATING WHETHER A CR/RCN/A OR CR/SWH/R SM * SHOULD BE ISSUED. * ERKOD = ERROR CODE THAT IS TO BE STORED INTO THE OUTGOING SM. * * * EXIT: * A CR/RCN/A OR CR/SWH/R SM WILL BE ISSUED. THE VCB WRITE REQUEST * MAY BE ISSUED, THE SPTAC TABLE ENTRY SPACE WILL BE RELEASED AND * THE PTAC MAY BE RELEASED. # CONTROL EJECT; # **** PROC NVFTRLC XREF LIST # XREF BEGIN PROC NVFUMQE; # MAKE QUEUE ENTRY # PROC SSTRTS; # SS-RELEASE TABLE SPACE # FUNC XSFW C(7); # SPACE FILL WORD # END # **** # ITEM ADDR I; # ADDRESS OF VCB WR REQ Q NTRY# ITEM ERKOD I; # ERROR CODE FOR SM OUT # ITEM I I; # LOOP VARAIABLE # ITEM LEN I; # LEN OF VCB WR REQ Q NTRY # ITEM PT I; # PTAC ENTRY ORDINAL # ITEM SMOUT B; # TYPE OF SM OUT INDICATOR # # TRUE = RCN, FALSE = SWH # # * IF CR/RCN/A IS TO BE SENT, SET THE CR/RCN/A FLAG IN THE PTAC * TABLE. # IF SMOUT THEN BEGIN PTA$RCNA[PT] = TRUE; # * CLEAR VCB BUFFER. # P = LOC(MSGBUF[0]); FOR I = 0 STEP 1 UNTIL VCBSIZ$ DO BEGIN MSG$WORD[I] = 0; END # * RESTORE VCB FROM PTAC ENTRY. # VCB$CACA[0] = PTA$CACA[PT]; VCB$ALIFAM[0] = PTA$ALIFAM[PT]; VCB$FAMIND[0] = PTA$FAMIND[PT]; VCB$ALIUSR[0] = PTA$ALIUSR[PT]; VCB$USRIND[0] = PTA$USRIND[PT]; VCB$ALIAPP[0] = PTA$ALIAPP[PT]; VCB$APPIND[0] = PTA$APPIND[PT]; VCB$VDSF[0] = PTA$VDSF[PT]; VCB$PRIAN[0] = 0; VCB$RCNA[0] = PTA$RCNA[PT]; VCB$LCF[0] = PTA$LCF[PT]; VCB$TN[0] = PTA$TN[PT]; VCB$HW[0] = PTA$HW[PT]; VCB$VTP[0] = PTA$VTP[PT]; VCB$ICF[0] = PTA$ICF[PT]; VCB$ALIF[0] = PTA$ALIF[PT]; VCB$VCB[0] = PTA$VCB[PT]; VCB$NET[0] = PTA$NET[PT]; VCB$CNTIME[0] = PTA$CNTIME[PT]; VCB$SWTIME[0] = PTA$SWTIME[PT]; VCB$FWORD[0] = PTA$FWORD[PT]; VCB$UWORD[0] = PTA$UWORD[PT]; VCB$DT[0] = PTA$DT[PT]; VCB$TC[0] = PTA$TC[PT]; VCB$AACN[0] = CRAACN[0]; VCB$SWAPAN[0] = PTA$PRIAN[PT]; VCB$UBZ[0] = PTA$UBZ[PT]; VCB$XBZ[0] = PTA$XBZ[PT]; VCB$DBZ[0] = PTA$DBZ[PT]; VCB$SDT[0] = PTA$SDT[PT]; VCB$DO[0] = PTA$DO[PT]; VCB$SL[0] = PTA$SL[PT]; # * ISSUE VCB WRITE REQUEST. # ADDR = PTA$VCB[PT]; LEN = VCBSIZ$ * 10; NVFUMQE(P,VCBBUF[0],0,ADDR,LEN); END # * RELEASE SPTAC TABLE SPACE IF IT EXISTS. # IF PTA$SPTAC[PT] THEN BEGIN FOR I = 0 STEP SPT$ESIZE[I] WHILE ((I LS SPTACL) AND (SPT$VCB[I] NQ PTA$VCB[PT])) DO BEGIN END IF I LS SPTACL THEN BEGIN SSTRTS(P,I,SPT$ESIZE[I]); END END # * CLEAR THE OUTGOING SM AREA. # FOR I = 0 STEP 1 UNTIL MSBFNVL DO BEGIN MSG$WORD[I] = 0; END # * ISSUE EITHER A CR/SWH OR CR/RCN/A SM. # IF SMOUT THEN BEGIN # * CR/RCN/A TO BE SENT. # PFCSFC[1] = CRRCN; ADDR = 0; LEN = 1; EB[1] = TRUE; CRRRCN[1] = ERKOD; CRACN[1] = PTA$ACN[PT]; NVFUMQE(P,APSM[1],APPPR$,ADDR,LEN); # * RELEASE PTAC ENTRY SPACE. # PT = PT * PTACSIZ$; SSTRTS(P,PT,PTACSIZ$); END ELSE BEGIN # * CR/SWH/R SM TO BE SENT. # CRSAHMT[1] = PTA$AHMT[PT]; CRSAHDS[1] = PTA$AHDS[PT]; CRSAAWC[1] = PTA$AAWC[PT]; CRSATWD[1] = PTA$ATWD[PT]; CRSWOCN[1] = PTA$OCN[PT]; PFCSFC[1] = CRSWH; CRNACN[1] = PTA$ACN[PT]; CRABL[1] = PTA$ABL[PT]; CRSWSDT[1] = PTA$SDT[PT]; CRDT[1] = PTA$DT[PT]; CRSWTC[1] = PTA$TC[PT]; CRSWIC[1] = PTA$ICF[PT]; CRSWORD[1] = PTA$DO[PT]; CRSTNAM[1] = XSFW(PTA$TN[PT]); CRSWPW[1] = PTA$PW[PT]; CRSWPL[1] = PTA$PL[PT]; CRSWSL[1] = PTA$SL[PT]; CRSWDBZ[1] = PTA$DBZ[PT]; CRSWXBZ[1] = PTA$XBZ[PT]; CRSWUBZ[1] = PTA$UBZ[PT]; CRSWHW[1] = PTA$HW[PT]; CRSWVTP[1] = PTA$VTP[PT]; CRSWAN[1] = PTA$PRIAN[PT]; CRSWFAM[1] = XSFW(PTA$FNAM[PT]); CRSWFO[1] = PTA$FORD[PT]; CRSWUN[1] = XSFW(PTA$UNUM[PT]); CRSWUI[1] = PTA$UIDX[PT]; CRSWLST[1] = ERKOD; # * CLEAR ACN FIELD OF PTAC ENTRY AS ACN COULD BE REUSED AFTER A * CR/SWH REQUEST IS ISSUED. # PTA$ACN[PT] = 0; NVFUMQE(P,APSM[1],APPPR$,0,LCRSWH); END END # NVFTRLC # TERM