Table of Contents

SPOOL Source

References

Source Listing

SPOOL.COPY.txt
  1. *COPY SPOOL 00001000
  2. PUSH PRINT 00001200
  3. AIF ('&SYSPARM' NE 'SUP').SPO01 00001400
  4. PRINT OFF,NOGEN 00001600
  5. .SPO01 ANOP 00001800
  6. SFBLOK DSECT 00003000
  7. SPACE 1 00004000
  8. *** SFBLOK - SPOOL FILE CONTROL BLOCK 00005000
  9. * 00006000
  10. * 0 +-----------------------+-----------------------+ 00007000
  11. * | SFBPNT | SFBSTART | 00008000
  12. * 8 +-----------------------+-----------------------+ 00009000
  13. * | SFBUSER | 00010000
  14. * 10 +-----------------------------------------------+ 00011000
  15. * | SFBORIG | 00012000
  16. * 18 +-----------------------+-----------+-----------+ 00013000
  17. * | SFBRECNO | SFBRECSZ | SFBFILID | 00014000
  18. * 20 +-----+-----+-----------+-----------+-----------+ 00015000
  19. * | S*1 | S*2 | SFBMISC1 | SFBRECS | 00016000
  20. * 28 +-----+-----+-----------+-----------------------+ 00017000
  21. * | SFBFNAME | 00018000
  22. * 30 | +-----------------------+ 00019000
  23. * | | | 00020000
  24. * 38 +-----------------------+ | 00021000
  25. * | SFBFTYPE | 00022000
  26. * 40 +-----------------------------------------------+ 00023000
  27. * | SFBDATE | 00024000
  28. * 48 +-----------------------------------------------+ 00025000
  29. * | SFBTIME | 00026000
  30. * 50 +-----------------------+-----------+-----+-----+ 00027000
  31. * | SFBLAST | SFBCOPY | S*3 | S*4 | 00028000
  32. * 58 +-----------------------+-----------+-----+-----+ 00029000
  33. * | SFBDIST | 00030000
  34. * 60 +-----------------------------------------------+ 00031000
  35. * | SFBFLASH | S*5 | SFBRSVD | 00031100
  36. * 68 +-----------------------------------------------+ 00031200
  37. * 00032000
  38. *** SFBLOK - SPOOL FILE CONTROL BLOCK 00033000
  39. SPACE 1 00036000
  40. SFBPNT DS 1F POINTER TO NEXT SFBLOK 00037000
  41. SFBSTART DS 1F DASD LOC. (DCHR) OF FIRST PAGE BUFFER 00038000
  42. SFBUSER DS CL8 VMUSER IDENTIFICATION OF FILE OWNER 00039000
  43. SFBORIG DS CL8 VMUSER IDENTIFICATION OF FILE ORIGIN 00040000
  44. SFBRECNO DS 1F NUMBER OF DATA RECORDS IN FILE 00041000
  45. SFBRECSZ DS 1H LOGICAL RECORD SIZE - EXCLD. CCWS 00042000
  46. SFBFILID DS 1H BINARY SYSTEM FILE NUMBER 00043000
  47. SFBFLAG DS 1X S*1 SFBLOK CONTROL FLAGS 00044000
  48. SFBTYPE DS 1X S*2 DEVICE TYPE FOR SPOOL OUTPUT 00045000
  49. SFBMISC1 DS 1H USE VARIES ACCORDING TO CALLER 00046000
  50. SFBRECS DS 1F POINTER TO RECBLOKS FOR ACTIVE FILE 00047000
  51. SFBFNAME DS CL12 FILE NAME 00048000
  52. SFBFTYPE DS CL12 FILE TYPE 00049000
  53. SFBDATE DS CL8 CREATION DATE OF SPOOL FILE 00050000
  54. SFBTIME DS CL8 CREATION TIME OF SPOOL FILE 00051000
  55. SFBLAST DS 1F DASD LOC. (DCHR) OF LAST PAGE BUFFER 00052000
  56. SFBCOPY DS 1H NUMBER OF COPIES REQUESTED 00053000
  57. SFBCLAS DS 1X S*3 SPOOL FILE CLASS CHARACTER 00054000
  58. SFBFLAG2 DS 1X S*4 SFBLOK CONTROL FLAGS - BYTE TWO 00055000
  59. SFBDIST DS CL8 DISTRIBUTION CODE 00056000
  60. SFBFLASH DS CL4 OVERLAY NAME FOR 3800 FLASHING @V60B9BA 00056100
  61. SFBSTCPY DS 1X S*5 CURRENT STARTING COPY NUMBER @V60B9BA 00056200
  62. SFBRSVD DS XL3 RESERVED FOR FUTURE USE @V60B9BA 00056300
  63. SPACE 1 00057000
  64. SFBSIZE EQU (*-SFBLOK)/8 SIZE IN DOUBLE WORDS 00058000
  65. SPACE 1 00059000
  66. * BITS DEFINED IN SFBFLAG 00060000
  67. SFBINUSE EQU X'80' FILE BEING PROCESSED 00061000
  68. SFBRECOK EQU X'40' ALLOCATION RECORDS COMPLETE 00062000
  69. SFBUHOLD EQU X'20' FILE IN USER HOLD STATUS 00063000
  70. SFBDUMP EQU X'10' FILE IS A CP SYSTEM DUMP 00064000
  71. SFBOPEN EQU X'08' INPUT FILE HAS BEEN OPENED 00065000
  72. SFBSHOLD EQU X'04' FILE IN SYSTEM HOLD STATUS 00066000
  73. SFBEOF EQU X'02' INPUT FILE HAS REACHED EOF 00067000
  74. SFBRECER EQU X'01' SFBREC CHAIN INCOMPLETE 00068000
  75. SPACE 00069000
  76. * BITS DEFINED IN SFBFLAG2 00070000
  77. SFBHOLD EQU X'80' SAVE INPUT FILE 00071000
  78. * HOLD OUTPUT FILE 00072000
  79. SFBNOHLD EQU X'40' DELETE INPUT FILE 00073000
  80. * NOHOLD OUTPUT FILE 00074000
  81. SFBFLNMT EQU X'20' FILE NOT EMPTY IF ON @VA04920 00074500
  82. * SFBHOLD AND SFBNOHLD OVERRIDE OPTIONS IN VDEVBLOK 00076000
  83. SFBREQUE EQU X'20' REQUEUE SPOOL FILE 00077000
  84. SFBRSTRT EQU X'10' RESTART IN PROGRESS 00078000
  85. SFBTICER EQU X'08' BUFFER TIC ERROR 00079000
  86. SFBPURGE EQU X'04' PURGE OPEN SPOOL FILE 00080000
  87. SFBFIRST EQU X'02' INDICATE FIRST PAGE WRITTEN @VM03437 00080100
  88. SFBMON EQU X'01' MONITOR CLASS FILE @V50A2B5 00080125
  89. EJECT 00081000
  90. SPLINK DSECT 00082000
  91. SPACE 1 00083000
  92. *** SPLINK - SPOOL PAGE BUFFER LINKAGE 00084000
  93. * 00085000
  94. * 0 +-----------------------+-----------------------+ 00086000
  95. * | SPNXTPAG | SPPREPAG | 00087000
  96. * 8 +-----------------------+-----------------------+ 00088000
  97. * | SPRMISC | SPRECNUM | 00089000
  98. * 10 +-----------------------+-----------------------+ 00090000
  99. * | | 00091000
  100. * = SPOOL BUFFER DATA AREA = 00092000
  101. * FD0 +-----------------------+-----------------------+ 00093000
  102. * | SPCHAR | | 00093050
  103. * FD8 +-----------------------+ SPRSVD1 | 00093100
  104. * | | 00093150
  105. * FE0 +-----------------------+-----------------------+ 00093200
  106. * | SPFCB | SPCMOD | 00093250
  107. * FE8 +-----------------------+-----------------------+ 00093300
  108. * | | 00093350
  109. * FF0 + SPRSVD2 +-----------+-----------+ 00093400
  110. * | | S*1 | S*2 | SPRSVD3 | 00093450
  111. * FF8 +-----------+-----------+-----------+-----------+ 00093500
  112. * | SPFILID | SPTIME | 00093550
  113. * 1000 +-----------+-----------------------------------+ 00093600
  114. * 00095000
  115. *** SPLINK - SPOOL PAGE BUFFER LINKAGE 00096000
  116. SPACE 1 00099000
  117. SPNXTPAG DS 1F DASD LOC. (DCHR) OF NEXT PAGE BUFFER 00100000
  118. SPPREPAG DS 1F DASD LOC. (DCHR) OF PREV PAGE BUFFER 00101000
  119. SPRMISC DS 1F USE VARIES ACCORDING TO CALLER 00102000
  120. SPRECNUM DS 1F NUMBER OF DATA RECORDS IN BUFFER 00103000
  121. SPACE 1 00104000
  122. SPSIZE EQU (*-SPLINK) SIZE IN BYTES 00105000
  123. ORG SPLINK+4096-48 END OF FIRST DASD BUFFER @V60B9BA 00105010
  124. SPCHAR DS CL4 3800 CHAR ARR TABLE FOR FILE @V60B9BA 00105020
  125. SPRSVD1 DS CL12 RESERVED FOR FUTURE USE @V60B9BA 00105030
  126. SPFCB DS CL4 3800 FCB FOR FILE @V60B9BA 00105040
  127. SPCMOD DS CL4 3800 COPY MOD FOR FILE @V60B9BA 00105050
  128. SPRSVD2 DS CL12 RESERVED FOR FUTURE USE @V60B9BA 00105060
  129. SPFLSHC DS X S*1 3800 FLASH COUNT @V60B9BA 00105070
  130. SPFLAG1 DS X S*2 3800 FLAG BYTE @V60B9BA 00105080
  131. SPCOPYFG EQU X'80' IF SET, MULT COPIES DONE IN 1 XMISSION BA 00105090
  132. SPRSVD3 DS 2X RESERVED FOR FUTURE USE @V60B9BA 00105100
  133. SPFILID DS 1H FILID USED FOR VERIFICATION @V60B9BA 00105110
  134. SPTIME DS CL6 SFBTIME- USED FOR VERIFICATION @V60B9BA 00105120
  135. SPENDSIZ EQU *-SPCHAR SIZE IN BYTES OF END OF BUFFER @V60B9BA 00105130
  136. SPACE 4 00106000
  137. RSPLCTL DSECT 00107000
  138. SPACE 1 00108000
  139. *** RSPLCTL - REAL SPOOLING CONTROL BLOCK 00109000
  140. * 00110000
  141. * 0 +-----------------------+-----------------------+ 00111000
  142. * | RSPRSTRT | RSPDPAGE | 00112000
  143. * 8 +-----------------------+-----------------------+ 00113000
  144. * | RSPVPAGE | RSPRPAGE | 00114000
  145. * 10 +-----------------------+-----------------------+ 00115000
  146. * | RSPMISC | RSPSFBLK | 00116000
  147. * 18 +-----------------------+-----------------------+ 00116600
  148. * | RSPDPAG2 | RSPVPAG2 | 00116700
  149. * 20 +-----------------------+-----------------------+ 00116800
  150. * | RSPRPAG2 | R*1 | R*2 | RSPRSVD | 00116850
  151. * 28 +-----------------------------------------------+ 00116875
  152. * | RSPSWAP | 00116900
  153. * 30 +-----------------------+-----------------------+ 00116925
  154. * | RSPVPG2 | RSPRSVD1 | 00116950
  155. * 38 +-----------------------+-----------------------+ 00116975
  156. * 00118000
  157. *** RSPLCTL - REAL SPOOLING CONTROL BLOCK 00119000
  158. SPACE 1 00122000
  159. RSPRSTRT DS 1F RESTART CAW - CCW ADDRESS 00123000
  160. RSPDPAGE DS 1F DASD LOC. (DCHR) OF CURRENT PAGE BUFFER 00124000
  161. RSPVPAGE DS 1F VIRTUAL ADDRESS OF PAGE BUFFER 00125000
  162. RSPRPAGE DS 1F REAL ADDRESS OF PAGE BUFFER 00126000
  163. RSPMISC DS 1F USE VARIES ACCORDING TO CALLER 00127000
  164. RSPSFBLK DS 1F POINTER TO SFBLOK FOR FILE 00128000
  165. RSPDPAG2 DS 1F DAS LOC OF 2ND PAGE BFR IF ANY @V60B9BA 00128100
  166. RSPVPAG2 DS 1F VIRT ADDR OF 2ND PAGE BFR IF ANY @V60B9BA 00128200
  167. RSPRPAG2 DS 1F REAL ADDR OF 2ND PAGE BFR IF ANY @V60B9BA 00128300
  168. RSPFLAG1 DS 1X FLAG BYTE @V60B9BA 00128400
  169. RSPBF1IO EQU X'80' I/O PENDING ON BUFFER 1 @V60B9BA 00128500
  170. RSPBF2IO EQU X'40' I/O PENDING ON BUFFER 2 @V60B9BA 00128600
  171. RSPBF1VL EQU X'20' BFR 1 IS FULL OF DATA TO PRINT @V60B9BA 00128700
  172. RSPBF2VL EQU X'10' BFR 2 IS FULL OF DATA TO PRINT @V60B9BA 00128800
  173. RSPFLAG2 DS 1X FLAG BYTE @VA11232 00128925
  174. RSPERR EQU X'08' ERROR ENCOUNTERED ON PAGE WRITE @VA11232 00128935
  175. RSPRSVD DS 2X RESERVED FOR FUTURE USE @VA11232 00128945
  176. RSPSWAP DS 2F DUMMY SWAPTABLE ENTRY @VA11232 00128955
  177. RSPVPG2 DS 1F SEC. VIRTUAL BUFFER ADDRESS @VA11232 00128965
  178. RSPRSVD1 DS 1F RESERVED FOR FUTURE USE @VA11232 00128975
  179. SPACE 1 00129000
  180. RSPSIZE EQU (*-RSPLCTL)/8 SIZE IN DOUBLE WORDS 00130000
  181. EJECT 00131000
  182. VSPLCTL DSECT 00132000
  183. SPACE 1 00133000
  184. *** VSPLCTL - VIRTUAL SPOOLING CONTROL BLOCK 00134000
  185. * 00135000
  186. * 0 +-----------------------+-----------------------+ 00136000
  187. * | VSPCAW | VSPDPAGE | 00137000
  188. * 8 +-----------------------+-----------------------+ 00138000
  189. * | VSPVPAGE | VSPRECNO | 00139000
  190. * 10 +-----------+-----------+-----------------------+ 00140000
  191. * | VSPNEXT | VSPIDACT | VSPSFBLK | 00141000
  192. * 18 +-----------+-----------+-----------------------+ 00142000
  193. * | VSPCCW | 00143000
  194. * 20 +-----------------------+-----------------------+ 00144000
  195. * | VSPBUFBK | VSPMISC | 00145000
  196. * 28 +-----+-----------------+-----------------------+ 00146000
  197. * | V*1 | VSPIDAL | VSPIDAW2 | 00147000
  198. * 30 +-----+-----------------+-----------------------+ 00148000
  199. * | V*2 | VSPRSVD | VSPVPG2 | 00148100
  200. * 38 +-----+-----------------+-----------------------+ 00148200
  201. * 00149000
  202. *** VSPLCTL - VIRTUAL SPOOLING CONTROL BLOCK 00150000
  203. SPACE 1 00153000
  204. VSPCAW DS 1F VIRTUAL ADDRESS OF USER CCW 00154000
  205. VSPDPAGE DS 1F DASD LOC. (DCHR) OF CURRENT PAGE BUFFER 00155000
  206. VSPVPAGE DS 1F VIRTUAL ADDRESS OF PAGE BUFFER 00156000
  207. VSPRECNO DS 1F RECORDS REMAINING IN CURRENT BUFFER 00157000
  208. VSPNEXT DS 1H DISP. IN BUFFER OF NEXT RECORD START 00158000
  209. VSPIDACT DS 1H DATA BYTE COUNT OF IDA CCW 00159000
  210. VSPSFBLK DS 1F POINTER TO SFBLOK FOR FILE 00160000
  211. VSPCCW DS 1D CURRENT USER CCW 00161000
  212. VSPBUFBK DS 1F ADDRESS OF A BUFFER AREA 00162000
  213. VSPMISC DS 1F USE VARIES ACCORDING TO CALLER 00163000
  214. VSPIDASW DS 1X V*1 INDIRECT DATA ADDRESS WORK FLAG 00164000
  215. VSPIDAL DS 3X ADDRESS OF INDIRECT DATA LIST 00165000
  216. VSPIDAW2 DS 1F CONTAINS IDAW2 00166000
  217. VSPFLAG1 DS 1X V*2 VSPLCTL FLAG BYTE @VA11232 00166100
  218. SPACE 00166200
  219. VSPERR EQU X'08' ERROR ENCOUNTERED ON PAGE WRITE @VA11232 00166300
  220. VSPDCFOP EQU X'04' PROCESSING DATA-CHAINING CCW WITH 00166310
  221. * OP-CODE FORCED TO '03' @VA12613 00166320
  222. VSPRSVD DS 3X RESERVED FOR FUTURE USE @VA11232 00166400
  223. VSPVPG2 DS 1F SECOND VIRTUAL BUFFER ADDRESS @VA11232 00166500
  224. SPACE 1 00167000
  225. VSPSIZE EQU (*-VSPLCTL)/8 SIZE IN DOUBLE WORDS 00168000
  226. VSPBUFSZ EQU (200)/8 SIZE IN DOUBLE WORDS 00169000
  227. EJECT 00170000
  228. SHQBLOK DSECT 00171000
  229. SPACE 00172000
  230. *** SHQBLOK - SPOOL HOLD QUEUE CONTROL BLOCK 00173000
  231. * 00174000
  232. * 0 +-----------------------+-----+-----+-----------+ 00175000
  233. * | SHQPNT | S*1 | S*2 | SHQSPARE | 00176000
  234. * 8 +-----------------------+-----+-----+-----------+ 00177000
  235. * | SHQUSER | 00178000
  236. * 10 +-----------------------------------------------+ 00179000
  237. * 00180000
  238. *** SHQBLOK - SPOOL HOLD QUEUE CONTROL BLOCK 00181000
  239. SPACE 1 00184000
  240. SHQPNT DS 1F ADDRESS OF NEXT SHQBLOK 00185000
  241. SHQFLAGS DS 0CL4 LENGTH 00186000
  242. SHQUHOLD DS 1X S*1 USER 'USER HOLD' FLAG BYTE 00187000
  243. SHQSHOLD DS 1X S*2 USER 'SYSTEM HOLD' FLAG BYTE 00188000
  244. SHQSPARE DS 2X SPARE 00189000
  245. SHQUSER DS CL8 VMUSER IDENTIFICATION OF FILE OWNER 00190000
  246. SPACE 1 00191000
  247. SHQBSIZE EQU (*-SHQBLOK)/8 SIZE IN DOUBLE WORDS 00192000
  248. SPACE 1 00193000
  249. * BITS DEFINED IN SHQUHOLD AND SHQSHOLD 00194000
  250. * TYPPRT IS USED FOR PRINTER TYPE. (SEE COPY DEVTYPES) 00195000
  251. * TYPPUN IS USED FOR PUNCH TYPE. (SEE COPY DEVTYPES) 00196000
  252. * 00197000
  253. EJECT 00198000
  254. POP PRINT 00199000
  255. SPACE 00200000