* %SPLEVEL: MACRO KEYS(SET,ASM); /* 00010000 MACRO 00020000 &LABEL SPLEVEL &FCN,&SET= 00030000 AGO .SKIP @L1A 00040000 ******** START OF SPECIFICATIONS ************************************** 00050000 * * 00060000 *01* MACRO-NAME = SPLEVEL * 00070000 * * 00080000 *01* DESCRIPTIVE-NAME = SP LEVEL MACRO * 00090000 * * 00100000 *01* PROPRIETARY STATEMENT = * 00110000 * * 00120000 * LICENSED MATERIALS - PROPERTY OF IBM * 00130000 * THIS MACRO IS "RESTRICTED MATERIALS OF IBM" * 00140000 * 5645-001 (C) COPYRIGHT IBM CORP. 1981, 1996 * 00150000 * SEE COPYRIGHT INSTRUCTIONS * 00160000 * * 00170000 *01* STATUS = JBB6602 * 00180000 * * 00190000 *01* FUNCTION = USED TO SET THE VALUE OF THE GLOBAL SET SYMBOL * 00200000 * "SYSSPLV" TO A SPECIFIED VALUE OR A DEFAULT VALUE. * 00210000 * THE PURPOSE IS TO REQUEST A SPECIFIC LEVEL OF A MACRO * 00220000 * WHICH HAS A NEW VERSION WHICH IS NOT DOWNWARD * 00230000 * COMPATIBLE WITH PREVIOUS VERSIONS OF THE MACRO. * 00240000 * * 00250000 *01* EXTERNAL CLASSIFICATION: GUPI * 00260000 *01* END OF EXTERNAL CLASSIFICATION: * 00270000 * * 00280000 *01* NOTES = TO CHANGE THE DEFAULT VALUE, UPDATE THE STATEMENT * 00290000 * "&DEFAULT SETC 'N'" (WHERE "N" IS "1", "2" , * 00300000 * "3", "4", "5", or "6") * 00310000 * WHICH IS SHORTLY AFTER THE MACRO PROTOTYPE STATEMENT. * 00320000 * * 00330000 *02* PROCESSOR = ASSEMBLER-H - PL/AS (BILINGUAL) * 00340000 * * 00350000 *01* MACRO PARAMETERS = * 00360000 * FUNCTION - POSITIONAL, OPTIONAL * 00370000 * TEST - SET SYSSPLV TO THE DEFAULT VALUE IF A * 00380000 * VALUE HAS NOT ALREADY BEEN ASSIGNED * 00390000 * TO SYSSPLV. * 00400000 * SET - SET SYSSPLV TO THE DEFAULT VALUE. (IN * 00410000 * PL/AS, THIS IS NOT A POSITIONAL * 00420000 * PARAMETER. INSTEAD, SET CAN BE CODED * 00430000 * AS A KEYWORD PARAMETER WITH OR WITHOUT * 00440000 * A VALUE.) THIS IS THE DEFAULT. * 00450000 * SET - KEYWORD, OPTIONAL * 00460000 * SPECIFIES THE EXPLICIT VALUE TO WHICH SYSSPLV IS * 00470000 * TO BE SET. * 00480000 * '1' PROVIDES THE MVS/SP VERSION 1 LEVEL OF * 00490000 * CERTAIN MACROS * 00500000 * '2' PROVIDES THE MVS/SP VERSION 2 LEVEL OF * 00510000 * CERTAIN MACROS * 00520000 * '3' PROVIDES THE MVS/SP VERSION 3.1 LEVEL OF * 00530000 * CERTAIN MACROS * 00540000 * '4' PROVIDES THE MVS/SP VERSION 4.1 LEVEL OF * 00550000 * CERTAIN MACROS * 00560000 * '5' PROVIDES THE MVS/SP VERSION 5.1 LEVEL OF * 00570000 * CERTAIN MACROS @D1A* 00580000 * '6' PROVIDES THE OS/390 Release 2 LEVEL OF * 00590000 * CERTAIN MACROS @P2A* 00600000 * ASM - KEYWORD, VALID ONLY IN PL/AS, OPTIONAL * 00610000 * IN ADDITION TO SETTING THE PL/AS GLOBAL VARIABLE * 00620000 * SYSSPLV, SET THE ASSEMBLER GLOBAL SET SYMBOL * 00630000 * SYSSPLV. THE DEFAULT IS ASM(YES). * 00640000 * * 00650000 *01* MACROS = IHBERMAC * 00660000 * * 00670000 *01* COMPONENT = SUPERVISOR CONTROL (SC1C5) * 00680000 * * 00690000 *01* DISTRIBUTION LIBRARY = AMACLIB * 00700000 * * 00710000 *01* CHANGE ACTIVITY = * 00720000 * @G860PXZ - HBB2102 SUPPORT * 00730000 * * 00740000 * $L1=AR HBB3310 850903 PD16Q9: ACCESS REGISTERS * 00750000 * $P1=PC41344 HBB3310 870831 PD16LD: ALLOW USE OF SET(3) * 00760000 * $L2=LOCKR HBB4410 870908 PD16LD: HBB4410 SUPPORT * 00770000 * $P2=PH32031 HBB4420 910104 PD16ES: FIX LEVEL 4 INFO IN PROLOG * 00780000 * $D1=DIG0166 HBB5510 930827 PD16IG: Update for Version 5 * 00790000 * $P2=PSD0900 JBB6602 960228 B7VBXZ: Update for OS/390 * 00800000 * * 00810000 ******** END OF SPECIFICATIONS **************************************** 00820000 .* A-000000-999999 @G860PXZ 00830000 .SKIP ANOP , @L1A 00840000 .* 00850000 GBLC &SYSSPLV 00860000 LCLC &DEFAULT 00870000 .* 00880000 .********************************************************************* 00890000 .* * 00900000 .* DEFAULT VALUE FOR SYSSPLV IN ASSEMBLER LANGUAGE: * 00910000 .* * 00920000 &DEFAULT SETC '1' FOR THE VALID VALUES OF @P2C 00930000 .* &DEFAULT, REFER TO THE * 00940000 .* DESCRIPTION OF THE PARAMETER * 00950000 .* "SET' IN THIS MACRO'S * 00960000 .* PROLOGUE. USE THE MOST RECENT * 00970000 .* LEVEL. * 00980000 .* * 00990000 .********************************************************************* 01000000 .* 01010000 .* 01020000 AIF ('&LABEL' EQ '').NOLABEL 01030000 &LABEL DS 0X 01040000 .* 01050000 .NOLABEL ANOP 01060000 AIF ('&FCN' EQ 'TEST').NODATE NO OUTPUT IF TEST 01070000 * MACDATE = 02/28/96 01080000 .* 01090000 .NODATE ANOP 01100000 AIF (N'&SYSLIST GT 1).ERR1 CHECK FOR TOO MANY POSITIONALS 01110000 AIF ('&FCN' NE '' AND '&SET' NE '').ERR4 TOO MANY PARMS 01120000 .* 01130000 AIF ('&FCN' EQ '').CKSET 01140000 .* PROCESS THE POSITIONAL PARAMETER (&FCN) 01150000 AIF ('&FCN' NE 'TEST').SET GO CHECK FOR 'SET' 01160000 .* &FCN IS 'TEST' 01170000 AIF ('&SYSSPLV' EQ '').SETDFLT SYSSPLV IS NULL, SET DEFAULT 01180000 AGO .EXIT SYSSPLV HAS A VALUE, GO EXIT 01190000 .* 01200000 .SET ANOP 01210000 AIF ('&FCN' EQ 'SET').SETDFLT 'SET' WAS SPECIFIED, SET 01220000 .* DEFAULT 01230000 AGO .ERR2 INVALID, NOT SET OR TEST 01240000 .* 01250000 .* CHECK WHETHER A VALID VALUE WAS SPECIFIED FOR 'SET=' 01260000 .CKSET ANOP 01270000 AIF ('&SET' EQ '1').SETSPX ASSIGN VALID VALUE 01280000 AIF ('&SET' EQ '2').SETSPX ASSIGN VALID VALUE 01290000 AIF ('&SET' EQ '3').SETSPX ASSIGN VALID VALUE @L1A 01300000 AIF ('&SET' EQ '4').SETSPX ASSIGN VALID VALUE @L2A 01310000 AIF ('&SET' EQ '5').SETSPX ASSIGN VALID VALUE @D1A 01320000 AIF ('&SET' EQ '6').SETSPX ASSIGN VALID VALUE @P2A 01330000 AIF ('&SET' NE '').ERR3 INVALID VALUE FOR SET 01340000 .* IF TEST AND SET ARE BOTH OMITTED, SET THE DEFAULT 01350000 .SETDFLT ANOP 01360000 &SYSSPLV SETC '&DEFAULT' 01370000 AGO .EXIT 01380000 .SETSPX ANOP 01390000 &SYSSPLV SETC '&SET' 01400000 .EXIT ANOP 01410000 AIF ('&FCN' EQ 'TEST').EXITNOP IF TEST, GENERATE NO OUTPUT 01420000 MNOTE '* THE VALUE OF SPLEVEL IS NOW &SYSSPLV' 01430000 .EXITNOP ANOP 01440000 MEXIT 01450000 .* 01460000 .ERR1 IHBERMAC 238 01470000 .* IHB027 EXCESSIVE POSITIONAL PARAMETERS SPECIFIED 01480000 MEXIT 01490000 .ERR2 IHBERMAC 1008,&FCN,1 01500000 .* IHB0244 INVALID POSIT-NL XXXXXXXX OPERAND. 01510000 MEXIT 01520000 .ERR3 IHBERMAC 1001,SET,&SET 01530000 .* IHB002 INVALID SET OPERAND SPECIFIED-XXXXXXXX 01540000 MEXIT 01550000 .ERR4 IHBERMAC 1020,''&FCN'',''SET=&SET'' 01560000 .* IHB280 '&FCN' INVALID WITH 'SET=&SET' 01570000 MEND , */ 01580000 * /****************************************************************/ 01590000 * /* */ 01600000 * /* START PL/AS VERSION */ 01610000 * /* */ 01620000 * /****************************************************************/ 01630000 * 01640000 * DCL EHARC FIXED EXT; /* DEFINE GLOBAL RETURN CODE */ 01650000 * DCL SYSSPLV CHAR EXT; /* DEFINE GLOBAL PRODUCT LEVEL */ 01660000 * DCL CMT CHAR INT; /* TO PUT OUT COMMENTS */ 01670000 * DCL ISET CHAR INT; /* LOCAL COPY OF KEY SET */ 01680000 * DCL IASM CHAR INT; /* LOCAL COPY OF KEY ASM */ 01690000 * DCL DEFAULT CHAR INT; /* DEFAULT VALUE FOR SYSSPLV */ 01700000 * DCL INOTEXT CHAR INT; /* USED TO BUILD MESSAGES */ 01710000 * EHARC = 0; /* INITIALIZE EXTERNAL RETURN */ 01720000 * /* */ 01730000 * /* DEFAULT VALUE FOR SYSSPLV IN PL/AS: */ 01740000 * /* */ 01750000 * DEFAULT='6'; /* USE THE MOST RECENT LEVEL @P2C*/ 01760000 * /* */ 01770000 * INOTEXT='. NO TEXT IS GENERATED.'; 01780000 * 01790000 * IF MACLABEL ^= '' THEN /* LABEL ON MACRO CALL? */ 01800000 * ANS(MACLABEL) COL(MACLMAR) NORESCAN; /* YES, PUT OUT LABEL */ 01810000 * 01820000 * IF MACLIST(1) ^= 'TEST' THEN /* IF 'TEST', PUT OUT NO COMMENT */ 01830000 * DO; 01840000 * CMT = '? ' || MACLABEL || ' ' || MACNAME || ' ' || MACLIST || 01850000 * ' ' || MACKEYS || ' MACDATE(02/28/96)'; /* @P2C*/ 01860000 * ANS(COMMENT(CMT)) COL(MACLMAR) NORESCAN; 01870000 * END; 01880000 * 01890000 * /****************************************************************/ 01900000 * /* */ 01910000 * /* PROCESS THE MACLIST */ 01920000 * /* */ 01930000 * /****************************************************************/ 01940000 * IF MACLIST ^= '' THEN 01950000 * DO; 01960000 * IF NUMBER(MACLIST) > 1 THEN /* TOO MANY POSITIONAL PARMS.? */ 01970000 * DO; /* YES, WRITE MESSAGE */ 01980000 * ANS MSG('AHA0073 TOO MANY POSITIONAL PARAMETERS ARE ' || 01990000 * 'SPECIFIED. ONE IS PERMITTED.') NORESCAN; 02000000 * CMT='TOO MANY POSITIONAL PARAMETERS ARE ' || 02010000 * 'SPECIFIED. ONE IS PERMITTED.'; 02020000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02030000 * EHARC = 12; /* INDICATE SERIOUS ERROR */ 02040000 * RETURN CODE(EHARC); 02050000 * END; 02060000 * 02070000 * IF MACLIST(1) ^= 'TEST' THEN 02080000 * DO; /* INVALID POSITIONAL PARAMETER */ 02090000 * ANS MSG('AHA0043 MACLIST(1) MUST BE ' || 02100000 * QUOTE('TEST') || INOTEXT) NORESCAN; 02110000 * CMT='MACLIST(1) MUST BE ' || QUOTE('TEST') || INOTEXT; 02120000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02130000 * EHARC = 12; /* INDICATE SERIOUS ERROR */ 02140000 * RETURN CODE(EHARC); 02150000 * END; 02160000 * 02170000 * ELSE /* MACLIST(1) = 'TEST' */ 02180000 * IF SET ^= '' THEN /* SET WITH TEST IS INVALID */ 02190000 * DO; 02200000 * ANS MSG('AHA0023 ''SET'' IS INVALID WITH ''TEST''' 02210000 * || INOTEXT) NORESCAN; 02220000 * CMT='''SET'' IS INVALID WITH ''TEST''' || INOTEXT; 02230000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02240000 * EHARC = 12; 02250000 * END; 02260000 * ELSE 02270000 * DO; /* SET = '' (VALID) */ 02280000 * IF SYSSPLV = '' THEN /* IF DEFINED, DO NOT CHANGE */ 02290000 * SYSSPLV = DEFAULT; /* IF NULL, SET DEFAULT */ 02300000 * IF ASM ^= '' | SET ^= '' THEN /* IF OTHER PARAMETERS ARE 02310000 * SPECIFIED, PUT OUT WARNING */ 02320000 * DO; 02330000 * ANS MSG('AHA0051 ''ASM'' WITH ''TEST'' IS IGNORED.') 02340000 * NORESCAN; 02350000 * CMT='''ASM'' WITH ''TEST'' IS IGNORED.'; 02360000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02370000 * EHARC = 4; 02380000 * END; 02390000 * RETURN CODE(EHARC); 02400000 * END; /* SET = '' */ 02410000 * END; /* MACLIST ^= '' */ 02420000 * 02430000 * /****************************************************************/ 02440000 * /* */ 02450000 * /* VALIDITY CHECK THE ASM KEYWORD */ 02460000 * /* */ 02470000 * /****************************************************************/ 02480000 * 02490000 * IF ASM = '' THEN 02500000 * IASM = 'YES'; /* SET DEFAULT IF OMITTED */ 02510000 * ELSE /* ASM WAS SPECIFIED */ 02520000 * 02530000 * DO; /* ANALYZE THE ASM KEYWORD */ 02540000 * 02550000 * IF NUMBER(ASM) > 1 THEN /* TOO MANY SUBOPERANDS */ 02560000 * DO; 02570000 * ANS MSG('AHA0073 ''ASM'' PARAMETER HAS TOO MANY ' || 02580000 * 'SUBPARAMETERS' || INOTEXT) NORESCAN; 02590000 * CMT='''ASM'' PARAMETER HAS TOO MANY ' || 02600000 * 'SUBPARAMETERS' || INOTEXT; 02610000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02620000 * EHARC = 12; /* INDICATE SERIOUS ERROR */ 02630000 * END; 02640000 * 02650000 * IF ASM(1) = 'YES' THEN 02660000 * IASM = 'YES'; /* SET YES IF SPECIFIED */ 02670000 * ELSE 02680000 * IF ASM(1) = 'NO' THEN 02690000 * IASM = 'NO'; /* SET NO IF SPECIFIED */ 02700000 * ELSE 02710000 * DO; /* PROCESS INVALID VALUE */ 02720000 * ANS MSG('AHA0043 ''ASM'' MUST BE ''YES'' OR ''NO''' || 02730000 * INOTEXT) NORESCAN; 02740000 * CMT='''ASM'' MUST BE ''YES'' OR ''NO''' || INOTEXT; 02750000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02760000 * EHARC = 12; /* INDICATE SERIOUS ERROR */ 02770000 * END; 02780000 * END; 02790000 * /****************************************************************/ 02800000 * /* */ 02810000 * /* VALIDITY CHECK THE SET KEYWORD */ 02820000 * /* */ 02830000 * /****************************************************************/ 02840000 * 02850000 * IF SET ^= '' THEN 02860000 * DO; /* ANALYZE THE SET KEYWORD */ 02870000 * 02880000 * IF NUMBER(SET) > 1 THEN /* TOO MANY SUBOPERANDS */ 02890000 * DO; 02900000 * ANS MSG('AHA0073 ''SET'' PARAMETER HAS TOO MANY ' || 02910000 * 'SUBPARAMETERS' || INOTEXT) NORESCAN; 02920000 * CMT='''SET'' PARAMETER HAS TOO MANY ' || 02930000 * 'SUBPARAMETERS' || INOTEXT; 02940000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 02950000 * EHARC = 12; /* INDICATE SERIOUS ERROR */ 02960000 * END; 02970000 * 02980000 * IF SET(1) ^= '1' & SET(1) ^= '2' & SET(1) ^= '3' & SET(1) ^= 02990000 * '4' 03000000 * & SET(1) ^= '5' & SET(1) ^= '6' /* @P2A*/ 03010000 * & SET ^= 'SET' 03020000 * THEN /* @L2C*/ 03030000 * DO; /* PROCESS INVALID VALUE */ 03040000 * ANS MSG('AHA0043 ''SET'' MUST BE ''1'', ''2'', ''3'','|| 03050000 * ' ''4'', ''5'', ''6'', OR HAVE NO VALUE'|| INOTEXT) 03060000 * NORESCAN; /* @P2C*/ 03070000 * CMT='''SET'' MUST BE ''1'', ''2'', ''3'', ''4'', ''5'','|| 03080000 * ' ''6'','|| /* @P2A*/ 03090000 * 'OR HAVE NO VALUE' || INOTEXT; /* @P2C*/ 03100000 * ANS(COMMENT(CMT)) COL(10) NORESCAN SKIP(1); 03110000 * EHARC = 12; /* INDICATE SERIOUS ERROR */ 03120000 * END; 03130000 * END; /* SET ^= '' */ 03140000 * 03150000 * /****************************************************************/ 03160000 * /* */ 03170000 * /* PROCESS THE KEYWORD PARAMETERS */ 03180000 * /* */ 03190000 * /****************************************************************/ 03200000 * IF EHARC < 12 THEN /* CHECK RETURN CODE */ 03210000 * DO; 03220000 * IF SET = '' | SET = 'SET' THEN /* USE DEFAULT */ 03230000 * SYSSPLV = DEFAULT; /* SET DEFAULT SPLEVEL */ 03240000 * 03250000 * ELSE /* SPLEVEL WAS PROVIDED */ 03260000 * IF SET(1) = '1' THEN 03270000 * SYSSPLV = '1'; /* SET SYSTEM/MACRO LEVEL TO 1 */ 03280000 * 03290000 * ELSE /* CHECK NEXT GOOD VALUE */ 03300000 * IF SET(1) = '2' THEN 03310000 * SYSSPLV = '2'; /* SET SYSTEM/MACRO LEVEL TO 2 */ 03320000 * 03330000 * ELSE /* CHECK NEXT GOOD VALUE @L1A*/ 03340000 * IF SET(1) = '3' THEN /* @L1A*/ 03350000 * SYSSPLV = '3'; /* SET SYSTEM/MACRO LEVEL TO 3 03360000 * @L1A*/ 03370000 * ELSE /* CHECK NEXT GOOD VALUE @L2A*/ 03380000 * IF SET(1) = '4' THEN /* SET SYSTEM/MACRO @L2A*/ 03390000 * SYSSPLV = '4'; /* LEVEL TO 4 @L2A*/ 03400000 * 03410000 * ELSE /* CHECK NEXT GOOD VALUE @D1A*/ 03420000 * IF SET(1) = '5' THEN /* SET SYSTEM/MACRO @D1A*/ 03430000 * SYSSPLV = '5'; /* LEVEL TO 5 @D1A*/ 03440000 * 03450000 * ELSE /* CHECK NEXT GOOD VALUE @P2A*/ 03460000 * IF SET(1) = '6' THEN /* SET SYSTEM/MACRO @P2A*/ 03470000 * SYSSPLV = '6'; /* LEVEL TO 6 @P2A*/ 03480000 * 03490000 * CMT='THE VALUE OF SPLEVEL IS NOW SET TO ' || SYSSPLV || '.'; 03500000 * ANS (COMMENT(CMT)) COL(MACLMAR+4) NORESCAN; 03510000 * 03520000 * IF IASM = 'YES' THEN /* ASM VERSION IS REQUESTED */ 03530000 * IF SET = '' | SET = 'SET' THEN /* IN CASE THE PL/AS AND 03540000 * ASSEMBLER DEFAULTS ARE 03550000 * DIFFERENT, PASS THE PL/AS 03560000 * DEFAULT */ 03570000 * ANS('GEN ( SPLEVEL SET=' || DEFAULT || ');') 03580000 * COL(10) NORESCAN; /* CREATE GENERATED VERSION */ 03590000 * ELSE 03600000 * ANS('GEN ( SPLEVEL SET=' || SET(1) || ');') 03610000 * COL(10) NORESCAN; /* CREATE GENERATED VERSION */ 03620000 * 03630000 * END; /* KEYWORD PARMS AND NO SERIOUS 03640000 * ERRORS */ 03650000 * 03660000 * RETURN CODE(EHARC); 03670000 * %END SPLEVEL; 03680000