User Tools

Site Tools


cdc:nos2.source:nam5871:nvftrlc

NVFTRLC

Table Of Contents

  • [00008] PROC NVFTRLC(PT,SMOUT,ERKOD)
  • [00009] NVFTRLC - REFUSE LOAN CONNECTION REQUEST
  • [00012] REFUSE LOAN CONNECTION REQUEST.
  • [00042] PROC NVFUMQE
  • [00043] PROC SSTRTS
  • [00044] FUNC XSFW C(7)

Source Code

NVFTRLC.txt
  1. *DECK NVFTRLC
  2. USETEXT TEXTSS
  3. USETEXT TEXTNVF
  4. USETEXT TXTANVF
  5. USETEXT TXSMNVF
  6. USETEXT TXTAPSS
  7. USETEXT TXTSUSS
  8. PROC NVFTRLC(PT,SMOUT,ERKOD);
  9. # TITLE - NVFTRLC - REFUSE LOAN CONNECTION REQUEST #
  10. BEGIN # NVFTRLC #
  11. #
  12. ** NVFTRLC - REFUSE LOAN CONNECTION REQUEST.
  13. *
  14. * C. BRION 83/11/02.
  15. *
  16. * THIS PROCEDURE IS RESPONSIBLE FOR RESTORING THE VCB BUFFER,
  17. * ISSUING A VCB WRITE REQUEST, ISSUING A CR/RCN/A SM OR CR/SWH/R
  18. * SM, RELEASING THE PTAC ENTRY SPACE IF RCN/A ISSUED AND RELEASING
  19. * THE SPTAC ENTRY SPACE IF IT EXISTS.
  20. *
  21. * NVFTRLC(PT,SMOUT,ERKOD)
  22. *
  23. * ENTRY:
  24. * PT = ENTRY ORDINAL OF PTAC
  25. * SMOUT = FLAG INDICATING WHETHER A CR/RCN/A OR CR/SWH/R SM
  26. * SHOULD BE ISSUED.
  27. * ERKOD = ERROR CODE THAT IS TO BE STORED INTO THE OUTGOING SM.
  28. *
  29. *
  30. * EXIT:
  31. * A CR/RCN/A OR CR/SWH/R SM WILL BE ISSUED. THE VCB WRITE REQUEST
  32. * MAY BE ISSUED, THE SPTAC TABLE ENTRY SPACE WILL BE RELEASED AND
  33. * THE PTAC MAY BE RELEASED.
  34. #
  35. CONTROL EJECT;
  36.  
  37. #
  38. **** PROC NVFTRLC XREF LIST
  39. #
  40. XREF
  41. BEGIN
  42. PROC NVFUMQE; # MAKE QUEUE ENTRY #
  43. PROC SSTRTS; # SS-RELEASE TABLE SPACE #
  44. FUNC XSFW C(7); # SPACE FILL WORD #
  45. END
  46. #
  47. ****
  48. #
  49.  
  50.  
  51. ITEM ADDR I; # ADDRESS OF VCB WR REQ Q NTRY#
  52. ITEM ERKOD I; # ERROR CODE FOR SM OUT #
  53. ITEM I I; # LOOP VARAIABLE #
  54. ITEM LEN I; # LEN OF VCB WR REQ Q NTRY #
  55. ITEM PT I; # PTAC ENTRY ORDINAL #
  56. ITEM SMOUT B; # TYPE OF SM OUT INDICATOR #
  57. # TRUE = RCN, FALSE = SWH #
  58.  
  59. #
  60. * IF CR/RCN/A IS TO BE SENT, SET THE CR/RCN/A FLAG IN THE PTAC
  61. * TABLE.
  62. #
  63. IF SMOUT
  64. THEN
  65. BEGIN
  66. PTA$RCNA[PT] = TRUE;
  67. #
  68. * CLEAR VCB BUFFER.
  69. #
  70. P<VCBBUF> = LOC(MSGBUF[0]);
  71. FOR I = 0 STEP 1 UNTIL VCBSIZ$
  72. DO
  73. BEGIN
  74. MSG$WORD[I] = 0;
  75. END
  76. #
  77. * RESTORE VCB FROM PTAC ENTRY.
  78. #
  79. VCB$CACA[0] = PTA$CACA[PT];
  80. VCB$ALIFAM[0] = PTA$ALIFAM[PT];
  81. VCB$FAMIND[0] = PTA$FAMIND[PT];
  82. VCB$ALIUSR[0] = PTA$ALIUSR[PT];
  83. VCB$USRIND[0] = PTA$USRIND[PT];
  84. VCB$ALIAPP[0] = PTA$ALIAPP[PT];
  85. VCB$APPIND[0] = PTA$APPIND[PT];
  86. VCB$VDSF[0] = PTA$VDSF[PT];
  87. VCB$PRIAN[0] = 0;
  88. VCB$RCNA[0] = PTA$RCNA[PT];
  89. VCB$LCF[0] = PTA$LCF[PT];
  90. VCB$TN[0] = PTA$TN[PT];
  91. VCB$HW[0] = PTA$HW[PT];
  92. VCB$VTP[0] = PTA$VTP[PT];
  93. VCB$ICF[0] = PTA$ICF[PT];
  94. VCB$ALIF[0] = PTA$ALIF[PT];
  95. VCB$VCB[0] = PTA$VCB[PT];
  96. VCB$NET[0] = PTA$NET[PT];
  97. VCB$CNTIME[0] = PTA$CNTIME[PT];
  98. VCB$SWTIME[0] = PTA$SWTIME[PT];
  99. VCB$FWORD[0] = PTA$FWORD[PT];
  100. VCB$UWORD[0] = PTA$UWORD[PT];
  101. VCB$DT[0] = PTA$DT[PT];
  102. VCB$TC[0] = PTA$TC[PT];
  103. VCB$AACN[0] = CRAACN[0];
  104. VCB$SWAPAN[0] = PTA$PRIAN[PT];
  105. VCB$UBZ[0] = PTA$UBZ[PT];
  106. VCB$XBZ[0] = PTA$XBZ[PT];
  107. VCB$DBZ[0] = PTA$DBZ[PT];
  108. VCB$SDT[0] = PTA$SDT[PT];
  109. VCB$DO[0] = PTA$DO[PT];
  110. VCB$SL[0] = PTA$SL[PT];
  111. #
  112. * ISSUE VCB WRITE REQUEST.
  113. #
  114. ADDR = PTA$VCB[PT];
  115. LEN = VCBSIZ$ * 10;
  116. NVFUMQE(P<VRQ>,VCBBUF[0],0,ADDR,LEN);
  117. END
  118. #
  119. * RELEASE SPTAC TABLE SPACE IF IT EXISTS.
  120. #
  121. IF PTA$SPTAC[PT]
  122. THEN
  123. BEGIN
  124. FOR I = 0 STEP SPT$ESIZE[I] WHILE
  125. ((I LS SPTACL) AND (SPT$VCB[I] NQ PTA$VCB[PT]))
  126. DO
  127. BEGIN
  128. END
  129. IF I LS SPTACL
  130. THEN
  131. BEGIN
  132. SSTRTS(P<SPTAC>,I,SPT$ESIZE[I]);
  133. END
  134. END
  135. #
  136. * CLEAR THE OUTGOING SM AREA.
  137. #
  138. FOR I = 0 STEP 1 UNTIL MSBFNVL
  139. DO
  140. BEGIN
  141. MSG$WORD[I] = 0;
  142. END
  143. #
  144. * ISSUE EITHER A CR/SWH OR CR/RCN/A SM.
  145. #
  146. IF SMOUT
  147. THEN
  148. BEGIN
  149. #
  150. * CR/RCN/A TO BE SENT.
  151. #
  152. PFCSFC[1] = CRRCN;
  153. ADDR = 0;
  154. LEN = 1;
  155. EB[1] = TRUE;
  156. CRRRCN[1] = ERKOD;
  157. CRACN[1] = PTA$ACN[PT];
  158. NVFUMQE(P<CTQ>,APSM[1],APPPR$,ADDR,LEN);
  159. #
  160. * RELEASE PTAC ENTRY SPACE.
  161. #
  162. PT = PT * PTACSIZ$;
  163. SSTRTS(P<PTAC>,PT,PTACSIZ$);
  164. END
  165. ELSE
  166. BEGIN
  167. #
  168. * CR/SWH/R SM TO BE SENT.
  169. #
  170. CRSAHMT[1] = PTA$AHMT[PT];
  171. CRSAHDS[1] = PTA$AHDS[PT];
  172. CRSAAWC[1] = PTA$AAWC[PT];
  173. CRSATWD[1] = PTA$ATWD[PT];
  174. CRSWOCN[1] = PTA$OCN[PT];
  175. PFCSFC[1] = CRSWH;
  176. CRNACN[1] = PTA$ACN[PT];
  177. CRABL[1] = PTA$ABL[PT];
  178. CRSWSDT[1] = PTA$SDT[PT];
  179. CRDT[1] = PTA$DT[PT];
  180. CRSWTC[1] = PTA$TC[PT];
  181. CRSWIC[1] = PTA$ICF[PT];
  182. CRSWORD[1] = PTA$DO[PT];
  183. CRSTNAM[1] = XSFW(PTA$TN[PT]);
  184. CRSWPW[1] = PTA$PW[PT];
  185. CRSWPL[1] = PTA$PL[PT];
  186. CRSWSL[1] = PTA$SL[PT];
  187. CRSWDBZ[1] = PTA$DBZ[PT];
  188. CRSWXBZ[1] = PTA$XBZ[PT];
  189. CRSWUBZ[1] = PTA$UBZ[PT];
  190. CRSWHW[1] = PTA$HW[PT];
  191. CRSWVTP[1] = PTA$VTP[PT];
  192. CRSWAN[1] = PTA$PRIAN[PT];
  193. CRSWFAM[1] = XSFW(PTA$FNAM[PT]);
  194. CRSWFO[1] = PTA$FORD[PT];
  195. CRSWUN[1] = XSFW(PTA$UNUM[PT]);
  196. CRSWUI[1] = PTA$UIDX[PT];
  197. CRSWLST[1] = ERKOD;
  198.  
  199. #
  200. * CLEAR ACN FIELD OF PTAC ENTRY AS ACN COULD BE REUSED AFTER A
  201. * CR/SWH REQUEST IS ISSUED.
  202. #
  203. PTA$ACN[PT] = 0;
  204. NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,LCRSWH);
  205. END
  206.  
  207. END # NVFTRLC #
  208. TERM
cdc/nos2.source/nam5871/nvftrlc.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator