MACRO -- $JQB -- HASP JOB QUEUE BUFFER DSECT @OZ27300 EK001000 $JQB &DOC=NO,&DSECT=YES @OZ27300 EK002000 TITLE 'HASP JOB QUEUE BUFFER (JQB) DSECT' @OZ27300 EK004000 JQBDSECT DSECT @OZ27300 EK006000 JQBIOB DC X'4200' IOB FLAGS @OZ27300 EK008000 JQBSENSE DC X'0000' IOB SENSE BYTES @OZ27300 EK010000 JQBECBP DC A(*-*) ADDRESS OF HASP ECB @OZ27300 EK012000 JQBCSW DC XL8'0' IOB FLAG AND CSW BYTES @OZ27300 EK014000 JQBSTART DC A(*-*) CHANNEL PROGRAM ADDRESS @OZ27300 EK016000 JQBDCBP DC A(*-*) ADDRESS OF DCB @OZ27300 EK018000 DC A(*-*) CHANNEL PROGRAM RESTART @OZ27300 EK020000 DC 2H'0' ERROR COUNTS @OZ27300 EK022000 JQBSEEK DC XL8'0' INITIAL SEEK ADDRESS @OZ27300 EK024000 JQBECBCC DS 0X I/O COMPLETION CODE @OZ27300 EK026000 DC A(*-*) BUFFER CHAIN FIELD @OZ27300 EK028000 DC A(*-*) ADDRESS OF DCT @OZ27300 EK030000 DC A(*-*) EVENT WAIT FIELD @OZ27300 EK032000 SPACE 2 @OZ27300 EK034000 DS H RESERVED @OZ27300 EK036000 JQBFLAG1 DS X JQB I/O FLAGS @OZ27300 EK038000 SPACE 1 @OZ27300 EK039000 JQB1LOCK EQU B'10000000' LOCKING OPERATION @OZ27300 EK040000 JQB1READ EQU B'01000000' READ OPERATION @OZ27300 EK042000 JQB1WRT EQU B'00100000' WRITE OPERATION @OZ27300 EK043000 JQB1FMT EQU B'00010000' FORMAT OPERATION @OZ27300 EK044000 SPACE 1 @OZ27300 EK046000 JQB1RSV4 EQU B'00001000' RESERVED @OZ27300 EK047000 JQB1LOKD EQU B'00000100' CKPT LOCK IS HELD @OZ27300 EK048000 JQB1PRIM EQU B'00000010' PRIMARY CKPT OPERATION @OZ27300 EK050000 JQB1INIT EQU B'00000001' INITIALIZATION OPERATION @OZ27300 EK051000 SPACE 2 @OZ27300 EK052000 JQBFLAG2 DS X JQB PROCESSING FLAGS @OZ27300 EK053000 SPACE 1 @OZ27300 EK054000 JQB2LOKO EQU B'10000000' LOCK HELD BY OTHER SYSTEM @OZ27300 EK055000 JQB2SHFL EQU B'01000000' INDICATES PACKETS SHUFFLED @OZ42642 EK055050 SPACE 2 @OZ27300 EK055100 JQBSIZE DS H SIZE OF ENTIRE JQB @OZ27300 EK055200 JQBERRCT DS H (APPENDAGE FIELD) ERROR RETRY COUNTER PLUS 1 @OZ27300 EK055300 JQBERRPK DS A (APPENDAGE FIELD) CHNL PGM ERROR PACKET ADDR @OZ27300 EK055400 JQBERRST DS A (APPENDAGE FIELD) CHNL PGM ORIGINAL START ADR @OZ27300 EK055900 SPACE 2 @OZ27300 EK056000 JQBKEY DS X SEARCH KEY CCW ARGUMENT @OZ27300 EK057000 JQBADKEY DS X LOCK DATA INPUT AREA @OZ27300 EK057100 JQBLRDIN DS XL7 RESERVE AREA FOR $SID @OZ55936 EK057110 JQBLKEY DS D STORAGE AREA FOR WRITING @OZ27300 EK057200 JQBLDATA DS D LOCK RECORD KEY AND DATA @OZ27300 EK057300 JQBCKVAL DS 0XL1,D STORAGE FOR CHECK VALUE @OZ27300 EK057400 JQBVERFY DS D STORAGE FOR READ-COUNT @OZ27300 EK057500 EJECT @OZ27300 EK057600 JQBVERP DS 2D (RD-CNT/NOP) R/W VERIFICATION CCWS @OZ27300 EK057700 SPACE 2 @OZ27300 EK058000 ORG JQBDSECT+((*-JQBDSECT+63)/64)*64 64-BYTE ALIGN @OZ27300 EK060000 SPACE 1 @OZ27300 EK062000 JQBIDAWS DS 8D SPACE FOR MASTER RCD IDAWS @OZ27300 EK064000 SPACE 2 @OZ27300 EK066000 * ALGORITHMS IN JES2 RELY ON THE ORDER OF THE CCW @OZ27300 EK068000 * PACKETS BELOW @OZ27300 EK070000 SPACE 1 @OZ27300 EK072000 JQBTRK1 EQU * TRACK 1 CCW PACKETS @OZ27300 EK074000 SPACE 1 @OZ27300 EK076000 JQBLOCKV DS 8D (R2) LOCK VERIFICATION PACKET @OZ27300 EK078000 SPACE 1 @OZ27300 EK080000 JQBSTD EQU * STANDARD CCW PACKETS @OZ27300 EK082000 SPACE 1 @OZ27300 EK084000 JQBFMTW DS 8D (R1) FORMAT-WRITE @OZ27300 EK086000 JQBFMT2 DS 8D (R2) PREFIX PACKETS @OZ27300 EK088000 JQBLOCKR DS 8D (R2) LOCK-READ PACKET @OZ27300 EK090000 JQBCHECK DS 8D (R1) CHECK-RECORD R/W PACKET @OZ27300 EK092000 JQBLOCK DS 8D (R2) LOCK SET/RESET PACKET @OZ27300 EK094000 JQBMSTR DS 8D (R3) MASTER RECORD CCW PACKET @OZ27300 EK096000 SPACE 1 @OZ27300 EK098000 JQBSTDS EQU (*-JQBSTD)/(8*8) NO. STANDARD PACKETS @OZ27300 EK100000 JQBTRK1S EQU (*-JQBTRK1)/(8*8) NO. TRACK-1 PACKETS @OZ27300 EK102000 SPACE 1 @OZ27300 EK104000 JQBCCWS DS 0D QUEUE RECORD CCW PACKETS @OZ27300 EK106000 EJECT @OZ27300 EK108000 ***************************************************************@OZ27300 EK110000 * @OZ27300 EK112000 * JQBCCWE -- DSECT FOR MAPPING CHECKPOINT CCW PACKETS @OZ27300 EK114000 * @OZ27300 EK116000 ***************************************************************@OZ27300 EK118000 SPACE 2 @OZ27300 EK120000 JQBCCWE DSECT @OZ27300 EK122000 JQBCCW1 DS D PROVIDE @OZ27300 EK124000 JQBCCW2 DS D GENERIC @OZ27300 EK126000 JQBCCW3 DS D NAMES @OZ27300 EK128000 JQBCCW4 DS D FOR @OZ27300 EK130000 JQBCCW5 DS D CHECKPOINT @OZ27300 EK132000 JQBCCW6 DS 0D I/O CCWS @OZ27300 EK134000 SPACE 2 @OZ27300 EK136000 * STANDARD READ / WRITE CCW PACKET SETUP @OZ27300 EK138000 SPACE 1 @OZ27300 EK140000 ORG JQBCCWE Q, MSTR, CHECK, LOCK CCWS @OZ27300 EK142000 JQBCSEEK DS D SEEK CCW @OZ27300 EK144000 JQBCSET DS D SET SECTOR CCW @OZ27300 EK146000 JQBCSID DS D SEARCH ID CCW @OZ27300 EK148000 JQBCTIC DS D TIC *-8 CCW @OZ27300 EK150000 JQBCRW DS D READ OR WRITE CCW @OZ27300 EK152000 JQBCTNXT DS 0D NOP OR TIC TO NEXT CCW @OZ27300 EK154000 DS XL5 (USE ONLY OP, ADDR, FLAGS) @OZ27300 EK156000 SPACE 2 @OZ27300 EK158000 * FORMAT READ / WRITE CCW PACKET SETUP @OZ27300 EK160000 SPACE 1 @OZ27300 EK162000 ORG JQBCCWE @OZ27300 EK164000 JQBFSEEK DS D SEEK CCW @OZ27300 EK166000 JQBFSID DS D SET SECTOR CCW @OZ27300 EK168000 JQBFTIC DS D TIC *-8 CCW @OZ27300 EK170000 JQBFMT DS D FORMAT-WRITE CCW @OZ27300 EK172000 JQBFRW DS D READ / WRITE CCW @OZ27300 EK174000 JQBFTNXT DS D TIC TO NEXT CCW PACKET @OZ27300 EK176000 EJECT @OZ27300 EK178000 * LOCK-VERIFY CCW PACKET SETUP @OZ27300 EK180000 SPACE 1 @OZ27300 EK182000 ORG JQBCCWE LOCK VERIFY PACKET @OZ27300 EK184000 JQBLSET DS D (SET SECTOR) ROTATE TO LOCK RECORD @OZ27300 EK186000 JQBLSID DS D (SID= RCD2) POSITION TO @OZ27300 EK188000 JQBLTIC DS D (LOOP *-8) LOCK RECORD @OZ27300 EK190000 JQBLSKEY DS D (SRCH KEY=0) ENSURE LOCK UNHELD @OZ27300 EK192000 JQBLOST DS D (--> JQBLOCKR) GO READ LOCK IF HELD @OZ27300 EK194000 JQBLTNXT DS 0D (--> JQBMSTR) ELSE GO READ MASTER RECORD @OZ27300 EK196000 DS XL5 AND SET LOCK VALUE @OZ27300 EK198000 SPACE 1 @OZ27300 EK200000 JQBCCHH0 DS XL5 (CCHH0) TRACK RECORD ZERO ADDRESS @OZ27300 EK202000 ORG *-1 OVERLAPS ... @OZ27300 EK204000 JQBCADDR DS XL6 (00CCHH) SEEK ADDRESS OF RECORD @OZ27300 EK206000 ORG *-4 (IS ALSO PART OF COUNT) @OZ27300 EK208000 JQBCOUNT DS 0XL8 (CCHHRKLL) COUNT FIELD OF RECORD @OZ27300 EK210000 JQBCCHHR DS 0XL5 (CCHHR) -- RECORD ADDRESS @OZ27300 EK212000 JQBCCHH DS XL4 (CCHH) - CYLINDER/HEAD @OZ27300 EK214000 JQBCRECN DS XL1 (R) - RECORD NUMBER @OZ27300 EK216000 JQBCKEYL DS XL1 (K) -- KEY LENGTH @OZ27300 EK218000 JQBCLEN DS XL2 (LL) -- DATA LENGTH @OZ27300 EK220000 JQBCCHH2 DS XL5 (CCHHR) OTHER DATA SET RCD ADDRESS @OZ27300 EK222000 SPACE 2 @OZ27300 EK224000 JQBCSEC1 EQU JQBCCW1+5,1 PRIMARY SECTOR ADDRESS @OZ27300 EK226000 JQBCSEC2 EQU JQBCCW2+5,1 SECONDARY SECTOR ADDRESS @OZ27300 EK228000 JQBCCWEL EQU JQBCCWE,*-JQBCCWE ENTIRE ELEMENT REFERENCE @OZ27300 EK230000 JQBCNEXT EQU * NEXT ELEMENT LABEL @OZ27300 EK232000 SPACE 1 @OZ27300 EK234000 &SYSECT CSECT , @OZ27300 EK236000 MEND @OZ27300 EK238000