*%;/* 00560002 MACRO 00600002 IGGBCB &TYPE=BOTH 01000002 .* /* START OF SPECIFICATIONS **** 01200002 .* 01250002 .*01 MODULE-NAME = IGGBCB 01300002 .* 01350002 .*01 COPYRIGHT = NONE 01400002 .* 01450002 .*01 STATUS = CHANGE LEVEL 01 01460002 .* 01470002 .*01 DESCRIPTIVE-NAME = BUFFER CONTROL BLOCK FORMAT 01492002 .* 01494002 .*01 FUNCTION = FORMATS THE SAM/DAM BUFFER CONTROL BLOCKS AND LRI 01496002 .* 01498002 .*01 NOTES = NONE 01498402 .* 01498802 .*02 DEPENDENCIES = NA 01499202 .* 01499602 .*02 PERFORMANCE = NA 01499702 .* 01499802 .*02 RESTRICTIONS = NA 01499902 .* 01549902 .*02 REGISTER-CONVENTIONS = NA 01559902 .* 01569902 .*02 PATCH-LABEL = NA 01579902 .* 01589902 .*01 MODULE-TYPE = MACRO 01591902 .* 01597902 .*02 MACRO-SIZE = NA 01598302 .* 01598702 .*02 EXTERNAL-REFERENCES = NA 01599102 .* 01599502 .*01INNER-MACROS = NONE 01599602 .* 01599702 .*01SYSTEM-MACROS = NONE 01599802 .* 01649802 .*01 CHANGE-ACTIVITY = SEE BELOW 01651802 .* 01653802 .* VS2 RELEASE 2 01655802 .* 01659802 .**** END OF SPECIFICATIONS ***/ 01669802 */* MACCOMP Y-2 SC1D7/SJD48 */ 01679802 */* MACSTAT Y-2 73122/021160 */ 01689802 */********************************************************************/ 01699802 */*THE BUFFER POOL CONTROL BLOCK DSECTS APPLY TO BOTH SAM AND BDAM */ 02000002 */*PROCESSING. TO GET THE MACRO EXPANSION FOR SAM DSECTS ONLY,INCLUDE*/ 02500002 */*KEYWORDS 'TYPE=SAM' WITH THE MACRO CALL. IF THE MACRO EXPANSION */ 03000002 */*FOR BDAM IS REQUIRED, INCLUDE KEYWORDS 'TYPE=DAM' WITH THE MACRO. */ 03500002 */*FOR BOTH SETS OF DSECTS INCLUDE THE KEYWORDS 'TYPE=BOTH' WITH THE */ 04000002 */*MACRO CALL. WHEN THE KEYWORDS ARE UNSPECIFIED,DEFAULT IS 'BOTH'. */ 04500002 */*THE BDAM EXPANSION OF THE MACRO PROVIDES DSECTS FOR A) BCB WHEN */ 04510002 */*ADDRESS SPACE = REAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED, */ 04520002 */*B) BCB WHEN ADDRESS SPACE = VIRTUAL AND DYNAMIC BUFFERING HAS */ 04530002 */*BEEN SPECIFIED, AND C) BCB FOR VARIABLE SPANNED RECORDS WHEN */ 04540002 */*DYNAMIC BUFFERING WAS NOT SPECIFIED. THE SAM EXPANSION OF THE */ 04542002 */*MACRO PROVIDES A DSECT FOR THE STANDARD BCB AND THE USERS */ 04544002 */*LOGICAL RECORD INTERFACE AREA. THE PLS2 MACRO FORMATS A COMPLETE */ 04546002 */*SAM BCB AND LRI AND COMPLETE BDAM BCBS. */ 04548002 */********************************************************************/ 05000002 *%GOTO BCBPLS1; /* Y02072*/ 05050002 AIF ('&TYPE' EQ 'DAM').DAM 05500002 */********************************************************************/ 06000002 */*THE FOLLOWING DSECT IS USED FOR SAM DATA SETS. THE DSECT IS FOR */ 06500002 */*MAPPING TO A BUFFER POOL CONTROL BLOCK. */ 07000002 */********************************************************************/ 07500002 BCBLK DSECT 08000002 BCBBUFPT DS 0A SAME AS BCBBUFAD BELOW 08500002 DS X FILLER 09000002 BCBBUFAD DS AL3 ADDRESS OF FIRST BUFFER 09500002 BCBFLGS DS B FLAG BYTE 10000002 BCBLRI EQU X'80' LOG REC INTERFACE PRESENT 10500002 BCBEXTND EQU X'40' BUFCB EXTENDED AREA PRESENT 11000002 BCBBUFNO DS X NUMBER OF BUFFERS 11500002 BCBBUFSZ DS H SIZE OF EACH BUFFER 12000002 BCBLRIAR DS 0A SAME AS BCBLRIAD BELOW 12500002 DS X FILLER 13000002 BCBLRIAD DS AL3 ADDRESS OF LOG REC AREA 13500002 BCBPAD DS F PADDING FOR DBL WD ALLIGN 14000002 BCBNLN EQU 8 LENGTH OF NORMFAL BCB 14500002 BCBEXLN EQU 8 ADD TO GET TOTAL LENGTH IF 15000002 * BCB EXTENDED 15500002 * 16000002 * DSECT FOR REFERENCING USERS LOGICAL RECORD INTERFACE AREA IF PRESENT. 16500002 * THE DSECT IS USED ONLY FOR SAM DATA SETS. 17000002 * 17500002 LRIAREA DSECT 18000002 LRILOC DS 0D LOCATION OF LRI AREA 18500002 LRILGTH DS 0A SAME AS LRILNGTH BELOW 19000002 LRIFLG1 DS B FLAGS 19500002 LRIEOD EQU X'80' END OF DATA REACHED 20000002 LRICOB EQU X'40' COBOL DATA SET 20500002 LRIEOB EQU X'20' EOD AFTER FIRST END OF BLK 21000002 LRILNGTH DS AL3 LENGTH OF LRI AREA (LRECL + 32) 21500002 LRIFLAG2 DS B FLAGS 22000002 LRIRELSE EQU X'40' RELEASE HAS BEEN ISSUED 22500002 LRISEG EQU X'10' SEGMENTING IN PROGRESS 23000002 LRINTSPN EQU X'04' NON-SPANNED RECORD 23500002 LRIASSEM EQU X'01' ASSEMBLING IN PROGRESS 24000002 LRIINDEX DS X INDEX TO BEGINNING OF DATA 24500002 LRIPOS DS H POSITION OF RECORD IN BLOCK 25000002 LRITRKAD DS 0D TRACK ADDRESS OF BEGINNING 25500002 * SEGMENT OF RECORD 26000002 LRIMBBCC DS XL5 MBBCC OF TRACK ADDR (NOT USED 26500002 * IF DCB IS FOR OUTPUT) 27000002 LRIRECAD DS XL3 RECAD WHEN RECORD TO BE WRITTEN 27500002 * REQUIRES SEGMENTATION 28000002 LRINIOB DS 0A SAME AS LRINXIOB BELOW 28500002 DS X FILLER 29000002 LRINXIOB DS AL3 NEXT IOB ADDRESS 29500002 LRICOUNT DS XL2 COUNT FIELD OF NUMBER OF BYTES 30000002 * MOVED 30500002 DS XL2 FILLER 31000002 LRIALIGN DS 0XL8 FLOATING ALIGNMENT AREA 31500002 LRIDATA DS 0C DATA 32000002 * 32050002 * THE FOLLOWING DSECT IS FOR REFRENCING A BUFFER. 32100002 * 32150002 BUFFER DSECT BEGINNING OF BUFFER 32200002 BUFNXPTA DS 0F SAME AS BUFNXPTB BELOW 32250002 DS XL1 FILLER 32300002 BUFNXPTB DS XL3 ADDR OF NEXT BUFFER OR 0 IF 32350002 * LAST BUFFER. (THIS FIELD 32400002 * IS PART OF BUFFER AND THUS 32450002 * GETS DESTROYED BY RECORDS) 32460002 BUFER DS C FIRST BYTE OF BUFFER AFTER 32470002 * POINTER TO NEXT 32480002 .DAM AIF ('&TYPE' EQ 'SAM').MEND 32500002 */********************************************************************/ 33000002 */*THE FOLLOWING DSECT FORMATS A BDAM BUFFER POOL CONTROL BLOCK WHEN */ 33500002 */*ADDRESS SPACE = REAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED AS */ 34000002 */*OPTION IN THE DCB. */ 34500002 */********************************************************************/ 35000002 BCBDEFR DSECT BCB FOR BDAM ADDRSPAC=REAL 35500002 BCBIOBS DS 0CL8 IOB QUEUE PTRS--INITIALLY 0 36000002 BCBFRQT DS A ADDRESS OF FIRST IOB WAITING 36500002 * FOR A BUFFER 37000002 BCBFRQB DS A ADDRESS OF LAST IOB WAITING 37500002 * FOR A BUFFER 38000002 BCBNABFR DS A ADDRESS OF THE NEXT AVAILABLE 38500002 * BUFFER 39000002 BCBTBRS DS F SIZE OF BCB AND BUFFER POOL 39500002 * IN BYTES 40000002 BCBLENTH EQU *-BCBDEFR SIZE OF BCB FOR REAL ADDRSPACE 40500002 */********************************************************************/ 41000002 */*THE FOLLOWING DSECT FORMATS A BDAM BUFFER POOL CONTROL BLOCK WHEN */ 41500002 */*ADDRESS SPACE = VIRTUAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED */ 42000002 */*AS OPTION IN THE DCB. */ 42500002 */********************************************************************/ 43000002 BCBDEFV DSECT BCB FOR BDAM ADDRSPACE=VIRTUAL 43500002 BCBBUF1 DS A ADDRESS OF FIRST BUFFER IN POOL 44000002 BCBBUFL DS F LENGTH OF EACH BUFFER, IN BYTES 44500002 BCBBFAVL DS FL1 BUFFER NUMBER OF FIRST AVAIL- 45000002 * ABLE BUFFER 45500002 BCBRAOFS DS FL3 OFFSET OF RECORD AREA IN BUFFER 46000002 * (VARIABLE SPANNED ONLY) 46500002 BCBTBRS1 DS F SIZE OF BCB (+ SUFFIX) BUFFER 47000002 * POOL, AND 1ST UNSCHEDULED LIST 47500002 BCBSUFFX DS 0F BUFFER SUFFIX, 1 BYTE/BUFFER, 48000002 * USED AS AVAILABLE CHAIN 48500002 BCBLNTHV EQU *-BCBDEFV SIZE OF BCB FOR VIRTUAL ADDRSP 49000002 */********************************************************************/ 49500002 */*THE FOLLOWING DSECT FORMATS A BDAM BUFFER POOL CONTROL BLOCK WHEN */ 50000002 */*VARIABLE SPANNED RECORDS WAS SPECIFIED AND DYNAMIC BUFFERING WAS */ 50500002 */*NOT SPECIFIED. ITS ADDRESS IS STORED IN DCBDYNB. */ 51000002 */********************************************************************/ 51500002 BCBDEFS DSECT BCB FOR SPANNED,NO DYN BUF 52000002 BCBNXBUF DS F ADDRESS OF NEXT AVAILABLE 52500002 * BUFFER (SEGMENT WORKAREA) 53000002 BCBFLAG EQU BCBNXBUF FLAG INDICATING IF THIS 53500002 * BUFFER (SWA) IS IN USE 54000002 BUFINUSE EQU X'FF' BUFFER (SWA) IS BEING USED 54500002 BUFAVAIL EQU X'00' BUFFER (SWA) IS AVAILABLE 55000002 BCBBFNUM DS H NUMBER OF BUFFERS (SWA) 55500002 BCBBFLG DS H BUFFER LENGTH 56000002 BCBLNTHS EQU *-BCBDEFS LENGTH OF THIS BUFFER CNTRL BLK 56500002 .MEND MEND 57000002 *%BCBPLS1: ; /* Y02072*/ 57050002 */* Y02072*/ 57100002 */*THE FOLLOWING STRUCTURE IS USED FOR SAM DATA SETS. THE Y02072*/ 57150002 */*STRUCTURE IS USED FOR MAPPING TO A BUFFER POOL CONTROL BLK. Y02072*/ 57200002 */* Y02072*/ 57250002 *DCL 1 BCBLK CHAR(16) BDY(WORD) BASED, /*BCB FOR SAM Y02072*/ 57300002 * 2 BCBBUFPT PTR(31), /*SAME AS BCBBUFAD Y02072*/ 57350002 * 3 * CHAR(1), /*FILLER Y02072*/ 57400002 * 3 BCBBUFAD PTR(24), /*ADDR OF FIRST BUFFER Y02072*/ 57450002 * 2 BCBFLGS BIT(8), /*FLAG BYTE Y02072*/ 57500002 * 3 BCBLRI BIT(1), /*LOG REC INTER PRES Y02072*/ 57550002 * 3 BCBEXTND BIT(1), /*BUFCB EXTENDED AREA Y02072 57600002 * PRESENT Y02072*/ 57650002 * 2 BCBBUFNO CHAR(1), /*NUMBER OF BUFFERS Y02072*/ 57700002 * 2 BCBBUFSZ CHAR(2), /*SIZE OF EACH BUFFER Y02072*/ 57750002 * 2 BCBLRIAR PTR(31), /*SAME AS BCBLRIAD Y02072*/ 57800002 * 3 * CHAR(1), /*FILLER Y02072*/ 57850002 * 3 BCBLRIAD PTR(24), /*ADDR OF LOG REC AREA Y02072*/ 57900002 * 2 BCBPAD CHAR(4); /*PADD TO DBL WD LEN Y02072*/ 57950002 *DCL BCBNLN CONSTANT (8); /*LEN OF NORMAL BCB Y02072*/ 58000002 *DCL BCBEXLN CONSTANT (8); /*ADD TO GET TOTAL LEN Y02072 58050002 * IF BCB EXTENDED Y02072*/ 58100002 */* Y02072*/ 58150002 */*STRUCTURE FOR REFERENCING USER LOGICAL RECORD INTERFACE ARE Y02072*/ 58200002 */*IF PRESENT. THE STRUCTURE IS USED ONLY FOR SAM DATA SETS. Y02072*/ 58250002 */* Y02072*/ 58300002 *DCL 1 LRIAREA CHAR(24) BDY(DWORD) BASED, /*LRI AREA Y02072*/ 58350002 * 2 LRILOC CHAR(8), /*LOC OF LRI AREA Y02072*/ 58400002 * 3 LRILGTH CHAR(4), /*SAME AS LRILNGTH Y02072*/ 58450002 * 4 LRIFLG1 BIT(8), /*FLAG BYTE 1 Y02072*/ 58500002 * 5 LRIEOD BIT(1), /*END OF DATA REACHED Y02072*/ 58550002 * 5 LRICOD BIT(1), /*COBOL DATA SET Y02072*/ 58600002 * 5 LRIEOB BIT(1), /*EOB AFTER FIRST EOB Y02072*/ 58650002 * 4 LRILNGTH CHAR(3), /*LEN OF LRI AREA Y02072 58700002 * (LRECL + 32) Y02072*/ 58750002 * 3 LRIFLG2 BIT(8), /*FLAG BYTE 2 Y02072*/ 58800002 * 4 * BIT(1), /*NOT USED Y02072*/ 58850002 * 4 LRIRELSE BIT(1), /*RELE HAS BEEN ISSUED Y02072*/ 58900002 * 4 * BIT(1), /*NOT USED Y02072*/ 58950002 * 4 LRISEG BIT(1), /*SEGMENTING IN PROG Y02072*/ 59000002 * 4 * BIT(1), /*NOT USED Y02072*/ 59050002 * 4 LRINTSPN BIT(1), /*NON-SPAN RECS Y02072*/ 59100002 * 4 * BIT(1), /*NOT USED Y02072*/ 59150002 * 4 LRIASSEM BIT(1), /*ASSEMBLING IN PROG Y02072*/ 59200002 * 3 LRIINDEX CHAR(1), /*INDEX TO BEG OF DATA Y02072*/ 59250002 * 3 LRIPOS CHAR(2), /*POS OF REC IN BLK Y02072*/ 59300002 * 2 LRITRKAD CHAR(8), /*TRK ADDR OF BEG Y02072 59350002 * SEGMENT OF REC Y02072*/ 59400002 * 3 LRIMBBCC CHAR(5), /*MBBCC OF TRK ADDR Y02072 59450002 * (NOT IF DCB IS Y02072 59500002 * FOR OUTPUT) Y02072*/ 59550002 * 3 LRIRECAD CHAR(3), /*RECAD WHEN REC TO BE Y02072 59600002 * WRITTEN REQUIRES Y02072 59650002 * SEGMENTATION Y02072*/ 59700002 * 2 LRINIOB PTR(31), /*SAME AS LRINXIOB Y02072*/ 59750002 * 3 * CHAR(1), /*FILLER Y02072*/ 59800002 * 3 LRINXIOB PTR(24), /*NEXT IOB ADDR Y02072*/ 59850002 * 2 LRICOUNT CHAR(2), /*COUNT FIELD OF NUM OFY02072 59900002 * BYTES MOVED Y02072*/ 59950002 * 2 * CHAR(2); /*NOT USED Y02072*/ 60000002 */* Y02072*/ 60050002 */*STRUCTURE USED FOR REFERENCING THE USERS FLOATING ALIGNMENT Y02072*/ 60100002 */*AREA. Y02072*/ 60150002 */* Y02072*/ 60200002 *DCL 1 LRIALIGN BDY(WORD) BASED, /*FLOATING ALIGN AREA Y02072*/ 60250002 * 2 LRIDATA CHAR; /*DATA Y02072*/ 60300002 */* */ 60310002 */*THE FOLLOWING STRUCTURES ARE USED FOR REFRENCING BUFFERS. */ 60322002 */* */ 60330002 *DCL BUFFER CHAR(*) BDY(WORD) BASED; /*BEGINNING OF BUFFER */ 60340002 */* */ 60342002 *DCL 1 BUFNXPTA PTR(31) BDY(WORD) DEF(BUFFER), /*NEXT BUFFER POINTER*/ 60344002 * 2 * FIXED(8), /*FILLER */ 60346002 * 2 BUFNXPTB PTR(24); /*NEXT BUFFER POINTER. (VALID*/ 60348002 * /* ONLY UNTIL FIRST RECORD */ 60348402 * /* IS MOVED INTO BUFFER). */ 60348802 */* */ 60350002 */*STRUCTURE FOR A BDAM BUFFER POOL CONTROL BLOCK WHEN ADDRESS */ 60400002 */*SPACE = VIRTUAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED. */ 60450002 */* */ 60500002 *DCL 1 BCBDEFV CHAR(16) BDY(WORD) BASED, /* BCB FOR ADDRSPACE=VIRTUAL*/ 60550002 * 2 BCBBUF1 PTR(31), /* ADDR OF FIRST BUFFER */ 60600002 * 2 BCBBUFL FIXED(31), /* LENGTH OF EACH BUFFER */ 60650002 * 2 BCBBFAVL FIXED(8), /* BUFF NO OF 1ST AVAIL BUF */ 60700002 * 2 BCBRAOFS FIXED(24), /* OFFSET OF RECORD AREA */ 60750002 * 2 BCBTBRS1 FIXED(31); /* SIZE OF BCB,SUFFX,BUF POOL*/ 60800002 */* */ 60850002 */*STRUCTURE FOR A BDAM BUFFER POOL CONTROL BLOCK WHEN ADDRESS */ 60900002 */*SPACE = REAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED. */ 60950002 */* */ 61000002 *DCL 1 BCBDEFR CHAR(16) BDY(WORD) BASED, /* BCB - BDAM REAL ADRSPACE*/ 61050002 * 2 BCBIOBS CHAR(8) BDY(WORD), /* IOB QUEUE PTR-1ST & LAST */ 61100002 * 3 BCBFRQT PTR(31), /* 1ST IOB WAITING FOR BUFFER*/ 61150002 * 3 BCBFRQB PTR(31), /* LAST IOB WAITING FOR BUFR */ 61200002 * 2 BCBNABFR PTR(31), /* NEXT AVAILABLE BUF ADDRESS*/ 61250002 * 2 BCBTBRS FIXED(31); /* SIZE OF BCB & BUFFER POOL */ 61300002 */* */ 61350002 */*STRUCTURE FOR A BDAM BUFFER POOL CONTROL BLOCK FOR VARIABLE */ 61400002 */*SPANNED RECORDS (N0N-DYNAMIC BUFFERING). ADDRESS IS STORED IN */ 61450002 */*DCBDYNB. */ 61500002 */* */ 61550002 *DCL 1 BCBDEFS CHAR(8) BASED, /* BCB FOR SPANNED, NO DYNBUF*/ 61600002 * 2 BCBNXBUF CHAR(4), /* ADDR OF NEXT AVAIL BUFFER */ 61650002 * 2 BCBBFNUM CHAR(2), /* NUMBER OF BUFFERS */ 61700002 * 2 BCBBFLG CHAR(2); /* BUFFER LENGTH */ 61750002