*COPY SPOOL 00001000
PUSH PRINT 00001200
AIF ('&SYSPARM' NE 'SUP').SPO01 00001400
PRINT OFF,NOGEN 00001600
.SPO01 ANOP 00001800
SFBLOK DSECT 00003000
SPACE 1 00004000
*** SFBLOK - SPOOL FILE CONTROL BLOCK 00005000
* 00006000
* 0 +-----------------------+-----------------------+ 00007000
* | SFBPNT | SFBSTART | 00008000
* 8 +-----------------------+-----------------------+ 00009000
* | SFBUSER | 00010000
* 10 +-----------------------------------------------+ 00011000
* | SFBORIG | 00012000
* 18 +-----------------------+-----------+-----------+ 00013000
* | SFBRECNO | SFBRECSZ | SFBFILID | 00014000
* 20 +-----+-----+-----------+-----------+-----------+ 00015000
* | S*1 | S*2 | SFBMISC1 | SFBRECS | 00016000
* 28 +-----+-----+-----------+-----------------------+ 00017000
* | SFBFNAME | 00018000
* 30 | +-----------------------+ 00019000
* | | | 00020000
* 38 +-----------------------+ | 00021000
* | SFBFTYPE | 00022000
* 40 +-----------------------------------------------+ 00023000
* | SFBDATE | 00024000
* 48 +-----------------------------------------------+ 00025000
* | SFBTIME | 00026000
* 50 +-----------------------+-----------+-----+-----+ 00027000
* | SFBLAST | SFBCOPY | S*3 | S*4 | 00028000
* 58 +-----------------------+-----------+-----+-----+ 00029000
* | SFBDIST | 00030000
* 60 +-----------------------------------------------+ 00031000
* | SFBFLASH | S*5 | SFBRSVD | 00031100
* 68 +-----------------------------------------------+ 00031200
* 00032000
*** SFBLOK - SPOOL FILE CONTROL BLOCK 00033000
SPACE 1 00036000
SFBPNT DS 1F POINTER TO NEXT SFBLOK 00037000
SFBSTART DS 1F DASD LOC. (DCHR) OF FIRST PAGE BUFFER 00038000
SFBUSER DS CL8 VMUSER IDENTIFICATION OF FILE OWNER 00039000
SFBORIG DS CL8 VMUSER IDENTIFICATION OF FILE ORIGIN 00040000
SFBRECNO DS 1F NUMBER OF DATA RECORDS IN FILE 00041000
SFBRECSZ DS 1H LOGICAL RECORD SIZE - EXCLD. CCWS 00042000
SFBFILID DS 1H BINARY SYSTEM FILE NUMBER 00043000
SFBFLAG DS 1X S*1 SFBLOK CONTROL FLAGS 00044000
SFBTYPE DS 1X S*2 DEVICE TYPE FOR SPOOL OUTPUT 00045000
SFBMISC1 DS 1H USE VARIES ACCORDING TO CALLER 00046000
SFBRECS DS 1F POINTER TO RECBLOKS FOR ACTIVE FILE 00047000
SFBFNAME DS CL12 FILE NAME 00048000
SFBFTYPE DS CL12 FILE TYPE 00049000
SFBDATE DS CL8 CREATION DATE OF SPOOL FILE 00050000
SFBTIME DS CL8 CREATION TIME OF SPOOL FILE 00051000
SFBLAST DS 1F DASD LOC. (DCHR) OF LAST PAGE BUFFER 00052000
SFBCOPY DS 1H NUMBER OF COPIES REQUESTED 00053000
SFBCLAS DS 1X S*3 SPOOL FILE CLASS CHARACTER 00054000
SFBFLAG2 DS 1X S*4 SFBLOK CONTROL FLAGS - BYTE TWO 00055000
SFBDIST DS CL8 DISTRIBUTION CODE 00056000
SFBFLASH DS CL4 OVERLAY NAME FOR 3800 FLASHING @V60B9BA 00056100
SFBSTCPY DS 1X S*5 CURRENT STARTING COPY NUMBER @V60B9BA 00056200
SFBRSVD DS XL3 RESERVED FOR FUTURE USE @V60B9BA 00056300
SPACE 1 00057000
SFBSIZE EQU (*-SFBLOK)/8 SIZE IN DOUBLE WORDS 00058000
SPACE 1 00059000
* BITS DEFINED IN SFBFLAG 00060000
SFBINUSE EQU X'80' FILE BEING PROCESSED 00061000
SFBRECOK EQU X'40' ALLOCATION RECORDS COMPLETE 00062000
SFBUHOLD EQU X'20' FILE IN USER HOLD STATUS 00063000
SFBDUMP EQU X'10' FILE IS A CP SYSTEM DUMP 00064000
SFBOPEN EQU X'08' INPUT FILE HAS BEEN OPENED 00065000
SFBSHOLD EQU X'04' FILE IN SYSTEM HOLD STATUS 00066000
SFBEOF EQU X'02' INPUT FILE HAS REACHED EOF 00067000
SFBRECER EQU X'01' SFBREC CHAIN INCOMPLETE 00068000
SPACE 00069000
* BITS DEFINED IN SFBFLAG2 00070000
SFBHOLD EQU X'80' SAVE INPUT FILE 00071000
* HOLD OUTPUT FILE 00072000
SFBNOHLD EQU X'40' DELETE INPUT FILE 00073000
* NOHOLD OUTPUT FILE 00074000
SFBFLNMT EQU X'20' FILE NOT EMPTY IF ON @VA04920 00074500
* SFBHOLD AND SFBNOHLD OVERRIDE OPTIONS IN VDEVBLOK 00076000
SFBREQUE EQU X'20' REQUEUE SPOOL FILE 00077000
SFBRSTRT EQU X'10' RESTART IN PROGRESS 00078000
SFBTICER EQU X'08' BUFFER TIC ERROR 00079000
SFBPURGE EQU X'04' PURGE OPEN SPOOL FILE 00080000
SFBFIRST EQU X'02' INDICATE FIRST PAGE WRITTEN @VM03437 00080100
SFBMON EQU X'01' MONITOR CLASS FILE @V50A2B5 00080125
EJECT 00081000
SPLINK DSECT 00082000
SPACE 1 00083000
*** SPLINK - SPOOL PAGE BUFFER LINKAGE 00084000
* 00085000
* 0 +-----------------------+-----------------------+ 00086000
* | SPNXTPAG | SPPREPAG | 00087000
* 8 +-----------------------+-----------------------+ 00088000
* | SPRMISC | SPRECNUM | 00089000
* 10 +-----------------------+-----------------------+ 00090000
* | | 00091000
* = SPOOL BUFFER DATA AREA = 00092000
* FD0 +-----------------------+-----------------------+ 00093000
* | SPCHAR | | 00093050
* FD8 +-----------------------+ SPRSVD1 | 00093100
* | | 00093150
* FE0 +-----------------------+-----------------------+ 00093200
* | SPFCB | SPCMOD | 00093250
* FE8 +-----------------------+-----------------------+ 00093300
* | | 00093350
* FF0 + SPRSVD2 +-----------+-----------+ 00093400
* | | S*1 | S*2 | SPRSVD3 | 00093450
* FF8 +-----------+-----------+-----------+-----------+ 00093500
* | SPFILID | SPTIME | 00093550
* 1000 +-----------+-----------------------------------+ 00093600
* 00095000
*** SPLINK - SPOOL PAGE BUFFER LINKAGE 00096000
SPACE 1 00099000
SPNXTPAG DS 1F DASD LOC. (DCHR) OF NEXT PAGE BUFFER 00100000
SPPREPAG DS 1F DASD LOC. (DCHR) OF PREV PAGE BUFFER 00101000
SPRMISC DS 1F USE VARIES ACCORDING TO CALLER 00102000
SPRECNUM DS 1F NUMBER OF DATA RECORDS IN BUFFER 00103000
SPACE 1 00104000
SPSIZE EQU (*-SPLINK) SIZE IN BYTES 00105000
ORG SPLINK+4096-48 END OF FIRST DASD BUFFER @V60B9BA 00105010
SPCHAR DS CL4 3800 CHAR ARR TABLE FOR FILE @V60B9BA 00105020
SPRSVD1 DS CL12 RESERVED FOR FUTURE USE @V60B9BA 00105030
SPFCB DS CL4 3800 FCB FOR FILE @V60B9BA 00105040
SPCMOD DS CL4 3800 COPY MOD FOR FILE @V60B9BA 00105050
SPRSVD2 DS CL12 RESERVED FOR FUTURE USE @V60B9BA 00105060
SPFLSHC DS X S*1 3800 FLASH COUNT @V60B9BA 00105070
SPFLAG1 DS X S*2 3800 FLAG BYTE @V60B9BA 00105080
SPCOPYFG EQU X'80' IF SET, MULT COPIES DONE IN 1 XMISSION BA 00105090
SPRSVD3 DS 2X RESERVED FOR FUTURE USE @V60B9BA 00105100
SPFILID DS 1H FILID USED FOR VERIFICATION @V60B9BA 00105110
SPTIME DS CL6 SFBTIME- USED FOR VERIFICATION @V60B9BA 00105120
SPENDSIZ EQU *-SPCHAR SIZE IN BYTES OF END OF BUFFER @V60B9BA 00105130
SPACE 4 00106000
RSPLCTL DSECT 00107000
SPACE 1 00108000
*** RSPLCTL - REAL SPOOLING CONTROL BLOCK 00109000
* 00110000
* 0 +-----------------------+-----------------------+ 00111000
* | RSPRSTRT | RSPDPAGE | 00112000
* 8 +-----------------------+-----------------------+ 00113000
* | RSPVPAGE | RSPRPAGE | 00114000
* 10 +-----------------------+-----------------------+ 00115000
* | RSPMISC | RSPSFBLK | 00116000
* 18 +-----------------------+-----------------------+ 00116600
* | RSPDPAG2 | RSPVPAG2 | 00116700
* 20 +-----------------------+-----------------------+ 00116800
* | RSPRPAG2 | R*1 | R*2 | RSPRSVD | 00116850
* 28 +-----------------------------------------------+ 00116875
* | RSPSWAP | 00116900
* 30 +-----------------------+-----------------------+ 00116925
* | RSPVPG2 | RSPRSVD1 | 00116950
* 38 +-----------------------+-----------------------+ 00116975
* 00118000
*** RSPLCTL - REAL SPOOLING CONTROL BLOCK 00119000
SPACE 1 00122000
RSPRSTRT DS 1F RESTART CAW - CCW ADDRESS 00123000
RSPDPAGE DS 1F DASD LOC. (DCHR) OF CURRENT PAGE BUFFER 00124000
RSPVPAGE DS 1F VIRTUAL ADDRESS OF PAGE BUFFER 00125000
RSPRPAGE DS 1F REAL ADDRESS OF PAGE BUFFER 00126000
RSPMISC DS 1F USE VARIES ACCORDING TO CALLER 00127000
RSPSFBLK DS 1F POINTER TO SFBLOK FOR FILE 00128000
RSPDPAG2 DS 1F DAS LOC OF 2ND PAGE BFR IF ANY @V60B9BA 00128100
RSPVPAG2 DS 1F VIRT ADDR OF 2ND PAGE BFR IF ANY @V60B9BA 00128200
RSPRPAG2 DS 1F REAL ADDR OF 2ND PAGE BFR IF ANY @V60B9BA 00128300
RSPFLAG1 DS 1X FLAG BYTE @V60B9BA 00128400
RSPBF1IO EQU X'80' I/O PENDING ON BUFFER 1 @V60B9BA 00128500
RSPBF2IO EQU X'40' I/O PENDING ON BUFFER 2 @V60B9BA 00128600
RSPBF1VL EQU X'20' BFR 1 IS FULL OF DATA TO PRINT @V60B9BA 00128700
RSPBF2VL EQU X'10' BFR 2 IS FULL OF DATA TO PRINT @V60B9BA 00128800
RSPFLAG2 DS 1X FLAG BYTE @VA11232 00128925
RSPERR EQU X'08' ERROR ENCOUNTERED ON PAGE WRITE @VA11232 00128935
RSPRSVD DS 2X RESERVED FOR FUTURE USE @VA11232 00128945
RSPSWAP DS 2F DUMMY SWAPTABLE ENTRY @VA11232 00128955
RSPVPG2 DS 1F SEC. VIRTUAL BUFFER ADDRESS @VA11232 00128965
RSPRSVD1 DS 1F RESERVED FOR FUTURE USE @VA11232 00128975
SPACE 1 00129000
RSPSIZE EQU (*-RSPLCTL)/8 SIZE IN DOUBLE WORDS 00130000
EJECT 00131000
VSPLCTL DSECT 00132000
SPACE 1 00133000
*** VSPLCTL - VIRTUAL SPOOLING CONTROL BLOCK 00134000
* 00135000
* 0 +-----------------------+-----------------------+ 00136000
* | VSPCAW | VSPDPAGE | 00137000
* 8 +-----------------------+-----------------------+ 00138000
* | VSPVPAGE | VSPRECNO | 00139000
* 10 +-----------+-----------+-----------------------+ 00140000
* | VSPNEXT | VSPIDACT | VSPSFBLK | 00141000
* 18 +-----------+-----------+-----------------------+ 00142000
* | VSPCCW | 00143000
* 20 +-----------------------+-----------------------+ 00144000
* | VSPBUFBK | VSPMISC | 00145000
* 28 +-----+-----------------+-----------------------+ 00146000
* | V*1 | VSPIDAL | VSPIDAW2 | 00147000
* 30 +-----+-----------------+-----------------------+ 00148000
* | V*2 | VSPRSVD | VSPVPG2 | 00148100
* 38 +-----+-----------------+-----------------------+ 00148200
* 00149000
*** VSPLCTL - VIRTUAL SPOOLING CONTROL BLOCK 00150000
SPACE 1 00153000
VSPCAW DS 1F VIRTUAL ADDRESS OF USER CCW 00154000
VSPDPAGE DS 1F DASD LOC. (DCHR) OF CURRENT PAGE BUFFER 00155000
VSPVPAGE DS 1F VIRTUAL ADDRESS OF PAGE BUFFER 00156000
VSPRECNO DS 1F RECORDS REMAINING IN CURRENT BUFFER 00157000
VSPNEXT DS 1H DISP. IN BUFFER OF NEXT RECORD START 00158000
VSPIDACT DS 1H DATA BYTE COUNT OF IDA CCW 00159000
VSPSFBLK DS 1F POINTER TO SFBLOK FOR FILE 00160000
VSPCCW DS 1D CURRENT USER CCW 00161000
VSPBUFBK DS 1F ADDRESS OF A BUFFER AREA 00162000
VSPMISC DS 1F USE VARIES ACCORDING TO CALLER 00163000
VSPIDASW DS 1X V*1 INDIRECT DATA ADDRESS WORK FLAG 00164000
VSPIDAL DS 3X ADDRESS OF INDIRECT DATA LIST 00165000
VSPIDAW2 DS 1F CONTAINS IDAW2 00166000
VSPFLAG1 DS 1X V*2 VSPLCTL FLAG BYTE @VA11232 00166100
SPACE 00166200
VSPERR EQU X'08' ERROR ENCOUNTERED ON PAGE WRITE @VA11232 00166300
VSPDCFOP EQU X'04' PROCESSING DATA-CHAINING CCW WITH 00166310
* OP-CODE FORCED TO '03' @VA12613 00166320
VSPRSVD DS 3X RESERVED FOR FUTURE USE @VA11232 00166400
VSPVPG2 DS 1F SECOND VIRTUAL BUFFER ADDRESS @VA11232 00166500
SPACE 1 00167000
VSPSIZE EQU (*-VSPLCTL)/8 SIZE IN DOUBLE WORDS 00168000
VSPBUFSZ EQU (200)/8 SIZE IN DOUBLE WORDS 00169000
EJECT 00170000
SHQBLOK DSECT 00171000
SPACE 00172000
*** SHQBLOK - SPOOL HOLD QUEUE CONTROL BLOCK 00173000
* 00174000
* 0 +-----------------------+-----+-----+-----------+ 00175000
* | SHQPNT | S*1 | S*2 | SHQSPARE | 00176000
* 8 +-----------------------+-----+-----+-----------+ 00177000
* | SHQUSER | 00178000
* 10 +-----------------------------------------------+ 00179000
* 00180000
*** SHQBLOK - SPOOL HOLD QUEUE CONTROL BLOCK 00181000
SPACE 1 00184000
SHQPNT DS 1F ADDRESS OF NEXT SHQBLOK 00185000
SHQFLAGS DS 0CL4 LENGTH 00186000
SHQUHOLD DS 1X S*1 USER 'USER HOLD' FLAG BYTE 00187000
SHQSHOLD DS 1X S*2 USER 'SYSTEM HOLD' FLAG BYTE 00188000
SHQSPARE DS 2X SPARE 00189000
SHQUSER DS CL8 VMUSER IDENTIFICATION OF FILE OWNER 00190000
SPACE 1 00191000
SHQBSIZE EQU (*-SHQBLOK)/8 SIZE IN DOUBLE WORDS 00192000
SPACE 1 00193000
* BITS DEFINED IN SHQUHOLD AND SHQSHOLD 00194000
* TYPPRT IS USED FOR PRINTER TYPE. (SEE COPY DEVTYPES) 00195000
* TYPPUN IS USED FOR PUNCH TYPE. (SEE COPY DEVTYPES) 00196000
* 00197000
EJECT 00198000
POP PRINT 00199000
SPACE 00200000