* %GO TO CTGFLX01; 00050002 * /* 00100002 MACRO 00150002 IEZCTGFL , 00200002 CTGFL DSECT , */ 00210002 *%CTGFLX01:; 00250002 */********************************************************************/ 02000003 */* */ 02050003 */* MACRO NAME = IEZCTGFL */ 02100003 */* */ 02150003 */* DESCRIPTIVE NAME = CATALOG FIELD PARAMETER LIST */ 02200003 */* */ 02250003 */* FUNCTION = THE FIELD PARAMETER LIST (CTGFL) DEFINES ONE OF */ 02300003 */* THE CATALOG RECORD'S FIELDS OR A GROUP OF */ 02350003 */* LOGICALLY RELATED FIELDS. THE CTGFL IS BUILT */ 02400003 */* BEFORE AN OS/VS COMPONENT ISSUES THE CATLG */ 02450003 */* MACRO INSTRUCTION (SVC 26) TO PROCESS A */ 02500003 */* CATALOG RECORD. THE CTGFL IS USED IN TWO */ 02550003 */* SITUATIONS: */ 02600003 */* (1) IT IDENTIFIES CATALOG RECORD INFORMATION */ 02650003 */* TO RETRIEVE OR UPDATE. THE CTGPL CONTAINS */ 02700003 */* THE ADDRESS OF EACH CTGFL USED IN THIS WAY. */ 02750003 */* (2) IT IDENTIFIES CATALOG RECORD INFORMATION */ 02800003 */* TO COMPARE AGAINST CALLER-SUPPLIED DATA. */ 02850003 */* THIS IS A "TEST" CTGFL AND IS ADDRESSED BY */ 02900003 */* ANOTHER CTGFL. */ 02950003 */* */ 03000003 */* CONTROL BLOCK STRUCTURE = THE CTGFL IS POINTED TO BY THE */ 03050003 */* CCA ('CCAFLPT' OR 'CCATEST'). */ 03100003 */* */ 03150003 */* INCLUDED MACROS = NONE */ 03200003 */* */ 03250003 */* METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY */ 03300003 */* */ 03350003 */* STATUS = VS/2 RELEASE 3 (CHANGE FLAG @Y30SSXX) */ 03400003 */* */ 03450003 */* DATE OF LAST CHANGE = 17 JUL 74 */ 03500003 */* */ 03550003 */********************************************************************/ 03600003 *%DECLARE (CTGFLLEN, CTGFL999, CTGFLLVL) CHAR; 03650003 *%CTGFLLEN = 'LENGTH(CTGFL)'; /* LENGTH OF CTGFL */ 03700003 *%GOTO CTGFLX03; 03750003 * /* 06250002 AGO .CTGFL01 */ 06300002 *%CTGFLX03:; 06350003 *%IF CTGFL999 ^= ',' /* IF BLOCK NOT CONTINUED, */ 10000003 * %THEN %CTGFL999 = ';'; /* THEN CLOSE DECLARE STMNT */ 12000003 *%IF CTGFLLVL = '' /* IF BLOCK NOT CONCATENATED, */ 14000003 * %THEN %GOTO CTGFL001; /* THEN GENERATE DECLARE */ 16000003 *%CTGFLDUM = CTGFLLVL||' CTGFL'; /* SET MINOR LEVEL NUMBER */ 18000003 * CTGFLDUM /* CTGFL CONCATENATED LEVEL */ 20000003 *%GOTO CTGFL002; /* SKIP DECLARE */ 22000003 *%CTGFL001:; /* DECLARE */ 24000003 DECLARE 25000003 * 1 CTGFL BASED(CTGFLPTR) /* DECLARE CTGFL LEVEL ONE */ 26000003 *%CTGFL002:; /* SKIP DECLARE */ 28000003 * BDY(WORD), /* WORD BOUNDARY */ 30000003 * 5 CTGFLDNO PTR(8), /* NO. PAIRS DATA LENGTH/ADDR */ 32000003 * 5 CTGFLDCD BIT(8), /* TEST CONDITION */ 34000003 * 5 CTGFLDGC PTR(8), /* GROUP CODE NUMBER */ 54000003 * 5 CTGFLDRE BIT(8), /* TEST RESULT */ 56000003 * 10 * BIT(7), /* RESERVED */ 58000003 * 10 CTGFLDTS BIT(1), /* 0 = SUCCESSFUL TEST, */ 60000003 * /* 1 = TEST FAILED */ 62000003 * 5 CTGFLDWA BIT(32), /* CATALOG WORK AREA */ 64000003 * 5 CTGFLDNM PTR(31), /* FIELD NAME ADDRESS */ 66000003 * 5 CTGFLCHN PTR(31), /* ADDR OF NEXT FIELD MACRO */ 68000003 * /* OR ZERO */ 70000003 * 5 CTGFLDAT(*), /* PAIRS OF DATA LENGTH/ADDR */ 72000003 * 10 CTGFLNG FIXED(31), /* DATA LENGTH */ 74000003 * 10 CTGFLPT PTR(31) CTGFL999 /* DATA ADDRESS */ 76000003 */********************************************************************/ 76100003 */* CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE */ 76200003 */********************************************************************/ 76300003 DECLARE /* TEST CONDITION - CTGFLDCD */ 76400003 CTGFLDEQ BIT(8) CONSTANT('80'X), /* EQUAL */ 76500003 CTGFLDNE BIT(8) CONSTANT('60'X), /* NOT EQUAL */ 76600003 CTGFLDGT BIT(8) CONSTANT('20'X), /* GREATER THAN */ 76700003 CTGFLDLT BIT(8) CONSTANT('40'X), /* LESS THAN */ 76800003 CTGFLDGE BIT(8) CONSTANT('A0'X), /* GREATER THAN OR EQUAL */ 76900003 CTGFLDLE BIT(8) CONSTANT('C0'X), /* LESS THAN OR EQUAL */ 77000003 CTGFLDZ BIT(8) CONSTANT('80'X), /* TEST UNDER MASK FOR ZEROES */ 77100003 CTGFLDON BIT(8) CONSTANT('10'X), /* TEST UNDER MASK FOR ONES */ 77200003 CTGFLDMX BIT(8) CONSTANT('40'X); /* TEST UNDER MASK FOR MIXED */ 77300003 * %GO TO CTGFLX02; 78050002 */* 78100002 .CTGFL01 ANOP 78150002 * 78210002 CTGFLDNO DS XL1 NUMBER PAIRS DATA LNG/ADDR 78250002 * 78260002 CTGFLDCD DS XL1 TEST CONDITION 78300002 CTGFLDEQ EQU X'80' EQUAL 78350002 CTGFLDNE EQU X'60' NOT EQUAL 78400002 CTGFLDGT EQU X'20' GREATER THAN 78450002 CTGFLDLT EQU X'40' LESS THAN 78500002 CTGFLDGE EQU X'A0' GREATER THAN OR EQUAL 78550002 CTGFLDLE EQU X'C0' LESS THAN OR EQUAL 78600002 CTGFLDZ EQU X'80' TEST UNDER MASK FOR ZEROES 78650002 CTGFLDON EQU X'10' TEST UNDER MASK FOR ONES 78700002 CTGFLDMX EQU X'40' TEST UNDER MASK FOR MIXED 78750002 * 78800002 CTGFLDGC DS XL1 GROUP CODE NUMBER 78850002 * 78900002 CTGFLDRE DS XL1 TEST RESULT 78950002 CTGFLDTS EQU X'01' TEST MASK - CTGFLDRE 79100002 * = 0 - SUCCESSFUL TEST, 79110002 * = 1 - TEST FAILED 79120002 * 79150002 CTGFLDWA DS F CATALOG WORK AREA 79200002 * 79350002 CTGFLDNM DS A FIELD NAME ADDRESS 79400002 * 79450002 CTGFLCHN DS A ADDRESS OF NEXT FIELD 79500002 * 79550002 * 79560002 CTGFLDAT DS 0CL8 PAIRS OF DATA LENGTH/ADDRESS 79600002 CTGFLNG DS F DATA LENGTH 79650002 CTGFLPT DS A DATA ADDRESS 79700002 * 79750002 * 79800002 MEND , */ 79850002 * %CTGFLX02:; 79900002