* %GOTO PLSQVPL1; /* 00050002 MACRO 00100002 IHAQVPL 00150002 **/ 00200002 *%PLSQVPL1:; 00250002 */*********QUEUE VERIFICATION PARAMETER LIST*************************/ 00300002 */* OS/VS2 RELEASE 2 3/15/73 LEVEL=1 */ 00350002 */* BAL- DSECT ALWAYS PRODUCED, PERFORM USING ON QVPL */ 00400002 */* */ 00450002 */* PL/S - QVPL WILL BE BASED(QVPLPTR) . */ 00500002 */* 1. IF YOU WISH TO APPEND THE QVPL TO THE END OF */ 00550002 */* ANOTHER CONTROL BLOCK, SET %QVPLEVEL='N' */ 00600002 */* WHERE N IS AN INTEGER BETWEEN 2 AND 4,INCLUSIVE. */ 00650002 */* QVPL WILL THEN BE AN UNBASED LEVEL N VARIABLE. */ 00700002 */* 2. IF YOU WISH TO APPEND ANOTHER CONTROL BLOCK TO THE END */ 00750002 */* OF THE QVPL, SET %QVPL9999=',', AND THE SEMICOLON AT */ 00800002 */* THE END OF THE QVPL WILL BE REPLACED WITH A COMMA. */ 00850002 */* */ 00900002 */* EXAMPLE OF PLACING QVPL BETWEEN TWO OTHER BLOCKS: */ 00950002 */* %QVPLEVEL='2' ; */ 01000002 */* %QVPL9999=',' ; */ 01050002 */* DECLARE 1 MYBLOCK, */ 01100002 */* 2 MYFIELD, */ 01150002 */* %INCLUDE SYSLIB(IHAQVPL) ; */ 01200002 */* 2 MYFIELD2 ; */ 01250002 */*******************************************************************/ 01300002 * %GOTO PLSQVPL2; /* 01350002 QVPL DSECT 01400002 QVPLTYP1 DS 0CL28 SINGLE-THREADED, HEADER QUEUE 01450002 QVPLTYP2 DS 0CL33 SINGLE-THREADED, HDR & TRLR QUEUE 01500002 QVPLTYP3 DS 0CL40 DOUBLE-THREADED, HDR & TRLR QUEUE 01550002 *********************************************************************** 01600002 * * 01650002 * TYPE ONE QUEUE -- SINGLE THREADED, HEADER QUEUE * 01700002 * * 01750002 *********************************************************************** 01800002 QVPLEVR DS A ADDR OF ELEMENT VERIFICATION ROUTINE 01850002 QVPLODA DS A ADDR OF OUTPUT DATA AREA 01900002 QVPLWKA DS A ADDR OF WORK AREA FOR QUEUE VERIFY 01950002 QVPLWASZ EQU 40 WORK AREA SIZE 01960002 QVPLNOEL DS CL4 VALUE OF HDR WHEN NO ELTS ON QUEUE 02000002 QVPLHDR DS A ADDR OF QUEUE HEADER 02050002 QVPLHF DS 0CL4 FORWARD POINTER DESCRIPTORS 02100002 QVPLFLGH DS CL1 HEADER FLAG FIELD 02150002 QVPLHD3 EQU X'80' IF 1, HEADER = 3 BYTE FIELD 02200002 * IF 0, HEADER = 4 BYTE FIELD 02250002 QVPLRES1 EQU X'7F' REMAINDER OF BYTE IS RESERVED 02260002 QVPLFLGF DS CL1 FORWARD PTR FLAG FIELD 02300002 QVPLFP3 EQU X'80' IF 1, FWD PTR = 3 BYTE FIELD 02350002 * IF 0, FWD PTR = 4 BYTE FIELD 02400002 QVPLRES2 EQU X'7F' REMAINDER OF BYTE IS RESERVED 02410002 QVPLFPTR DS H OFFSET IN BYTES OF FRWD CHAIN PTR 02450002 QVPLLELM DS A VALUE IN FRWD PTR OF LAST QUEUE ELM 02500002 *********************************************************************** 02550002 * * 02600002 * TYPE TWO QUEUE -- SINGLE THREADED, HDR & TRLR QUEUE * 02650002 * * 02700002 *********************************************************************** 02750002 QVPLTRLR DS A ADDR OF QUEUE TRAILER 02800002 QVPLTB DS 0CL4 TRLR/BKWD PTR DESCRIPTORS 02850002 QVPLFLGT DS CL1 TRAILER FLAG FIELD 02900002 QVPLTR3 EQU X'80' IF 1, TRAILER = 3 BYTE FIELD 02950002 * IF 0, TRAILER = 4 BYTE FIELD 03000002 QVPLRES3 EQU X'7F' REMAINDER OF BYTE IS RESERVED 03010002 *********************************************************************** 03050002 * * 03100002 * TYPE THREE QUEUE -- DOUBLE THREADED, HDR & TRLR QUEUE * 03150002 * * 03200002 *********************************************************************** 03250002 QVPLFLGB DS CL1 BACKWARD POINTER FLAG FIELD 03300002 QVPLBP3 EQU X'80' IF 1, BKWD PTR = 3 BYTE FIELD 03350002 * IF 0, BKWD PTR = 4 BYTE FIELD 03400002 QVPLRES4 EQU X'7F' REMAINDER OF BYTE IS RESERVED 03410002 QVPLBPTR DS H OFFSET IN BYTES OF BKWD CHAIN PTR 03450002 QVPLFELM DS CL4 VALUE IN BKWD CHAIN OF FIRST ELM 03500002 QVPLEND EQU * END OF QVPL 03550002 QVPLSIZE EQU QVPLEND-QVPL SIZE OF QVPL 03600002 MEND 03650002 * */ 03700002 *%PLSQVPL2:; 03750002 * 03800002 * %IF QVPLEVEL='' 03850002 * %THEN QVPLBASE='BASED(QVPLPTR)' ; 03900002 * %ELSE QVPLBASE='' ; 03950002 * 04000002 * %IF QVPLEVEL='' 04050002 * %THEN QVPLEVEL='DECLARE 1 ' ; 04100002 * 04150002 * %IF QVPL9999^=',' 04200002 * %THEN QVPL9999=';' ; 04250002 * 04300002 * QVPLEVEL QVPL QVPLBASE BDY(WORD), 04350002 * 04400002 * 5 QVPLTYP3 CHAR(40) BDY(WORD), 04450002 * /*DOUBLE-THREADED, HDR & TLR QUEUE */ 04500002 * 6 QVPLTYP2 CHAR(33) BDY(WORD), 04550002 * /*SINGLE-THREADED, HDR & TLR QUEUE */ 04600002 * 7 QVPLTYP1 CHAR(28) BDY(WORD), 04650002 * /*SINGLE-THREADED, HEADER QUEUE */ 04700002 */********************************************************************/ 04750002 */* */ 04800002 */* TYPE ONE QUEUE -- SINGLE THREADED, HEADER QUEUE */ 04850002 */* */ 04900002 */********************************************************************/ 04950002 * 8 QVPLEVR PTR(31), /*ADDR OF ELEMENT VERIFY RTN */ 05000002 * 05050002 * 8 QVPLODA PTR(31), /*ADDR OF OUTPUT DATA AREA */ 05100002 * 05150002 * 8 QVPLWKA PTR(31), /*ADDR OF WORK AREA FOR QUEUE 05200002 * VERIFY */ 05250002 * /*NOTE: THERE IS A COMPILE-TIME */ 05252002 * /*VARIABLE, QVPLWASZ, EQUATED */ 05254002 * /*TO THE SIZE OF THE WORK AREA*/ 05256002 * %DCL QVPLWASZ FIXED; /*COMPILE TIME VARIABLE EQUAL */ 05260002 * %QVPLWASZ=40; /*TO WORK AREA SIZE */ 05270002 * 8 QVPLNOEL PTR(31), /*VALUE IN HEADER WHEN NO ELTS 05300002 * ON QUEUE */ 05350002 * 8 QVPLHDR PTR(31), /*ADDRESS OF QUEUE HEADER */ 05400002 * 05450002 * 8 QVPLHF CHAR(4) BDY(WORD), /*FORWARD POINTER DESCRIPTORS */ 05500002 * 05550002 * 9 QVPLFLGH CHAR(1), /*HEADER FLAG FIELD */ 05600002 * 05650002 * 10 QVPLHD3 BIT(1), /*IF 1, HEADER= 3 BYTE FIELD 05700002 * IF 0, HEADER = 4 BYTES */ 05750002 * 10 QVPLRES1 BIT(7), /*REMAINDER OF BYTE RESERVED */ 05760002 * 05770002 * 9 QVPLFLGF CHAR(1), /*FORWARD PTR FLAG FIELD */ 05800002 * 05850002 * 10 QVPLFP3 BIT(1), /*IF 1, FWD PTR = 3 BYTE FIELD 05900002 * IF 0, FWD PTR = 4 BYTES*/ 05950002 * 10 QVPLRES2 BIT(7), /*REMAINDER OF BYTE RESERVED */ 05960002 * 05970002 * 9 QVPLFPTR FIXED(15), /*OFFSET IN BYTES OF FORWARD 06000002 * CHAIN POINTER */ 06050002 * 8 QVPLLELM PTR(31), /*VALUE IN FORWARD POINTER OF 06100002 * LAST ELEMENT */ 06150002 */********************************************************************/ 06200002 */* */ 06250002 */* TYPE TWO QUEUE -- SINGLE THREADED, HDR & TRLR QUEUE */ 06300002 */* */ 06350002 */********************************************************************/ 06400002 * 7 QVPLTRLR PTR(31), /*ADDR OF QUEUE TRAILER */ 06450002 * 06500002 * 7 QVPLTB CHAR(4) BDY(WORD), /*TRLR & BKWD PTR DESCRIPTORS */ 06550002 * 06600002 * 8 QVPLFLGT CHAR(1), /*TRAILER FLAG FIELD */ 06650002 * 06700002 * 9 QVPLTR3 BIT(1), /*IF 1, TRLR = 3 BYTE FIELD 06750002 * IF 0,TRLR = 4 BYTES */ 06800002 * 9 QVPLRES3 BIT(7), /*REMAINDER OF BYTE RESERVED */ 06810002 * 06820002 */********************************************************************/ 06850002 */* */ 06900002 */* TYPE THREE QUEUE -- DOUBLE THREADED, HDR & TRLR QUEUE */ 06950002 */* */ 07000002 */********************************************************************/ 07050002 * 8 QVPLFLGB CHAR(1), /*BACKWARD PTR FLAG FIELD */ 07100002 * 07150002 * 9 QVPLBP3 BIT(1), /*IF 1,BKWD PTR=3 BYTE FIELD 07200002 * IF 0,BKWD PTR= 4 BYTES*/ 07250002 * 9 QVPLRES4 BIT(7), /*REMAINDER OF BYTE RESERVED */ 07260002 * 07270002 * 8 QVPLBPTR FIXED(15), /*OFFSET IN BYTES OF BACKWARD 07300002 * CHAIN POINTER */ 07350002 * 7 QVPLFELM PTR(31) /*VALUE IN BACKWARD CHAIN OF 07400002 * FIRST ELEMENT */ 07450002 * QVPL9999 07500002