*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