* % IEETRACE: MACRO; 00020064 * 00050064 * /*******************************************************************/ 00100064 * /* */ 00150064 * /* MODULE NAME = IEETRACE */ 00200064 * /* */ 00250064 * /* DESCRIPTIVE NAME = MASTER TRACE FACILITY INTERFACE */ 00300064 * /* */ 00340064 * /* STATUS = OS/VS2 - SYSTEM CONTROL PROGRAM 2 */ 00380064 * /* */ 00420064 * /* LAST UPDATE = 05/11/78 */ 00460064 * /* */ 00500064 * /* FUNCTION = PROVIDE INTERFACE TO MASTER TRACE */ 00540064 * /* SERVICE ROUTINES */ 00580064 * /* */ 00700064 * /* OPERATION = THIS MACRO PERFORMS THE FOLLOWING FUNCTIONS: */ 00750064 * /* */ 00800064 * /* DETERMINES IF MASTER TRACE IS ACTIVE BY */ 00850064 * /* CHECKING THE MASTER TRACE TABLE POINTER */ 00900064 * /* (BAMTTBL) IN THE MASTER SCHEDULER RESIDENT */ 00950064 * /* DATA AREA (MAPPED VIA MACRO IEEBASEA) */ 01000064 * /* */ 01040064 * /* IF 'TEST' IS SPECIFIED, A RETURN CODE IS */ 01080064 * /* PROVIDED INDICATING STATUS OF MASTER TRACE */ 01120064 * /* AND CONTROL IS RETURNED TO THE CALLER */ 01160064 * /* */ 01250064 * /* IF 'ENTRY' OR NO OPERAND IS SPECIFIED */ 01300064 * /* AND MASTER TRACE IS ACTIVE, A POINTER */ 01330064 * /* (BAMTRTN) TO THE MASTER TRACE ENTRY ROUTINE */ 01360064 * /* IS LOADED AND CONTROL PASSED TO IT VIA */ 01390064 * /* BRANCH. */ 01420064 * /* */ 01500064 * /* IF 'ENTRY' OR NO OPERAND IS SPECIFIED AND */ 01550064 * /* MASTER TRACE IS NOT ACTIVE, A RETURN CODE IS */ 01580064 * /* PROVIDED BEFORE CONTROL IS RETURNED TO THE */ 01610064 * /* CALLER */ 01640064 * /* */ 01700064 * /* */ 01750064 * /* IF 'TABLEMOD' IS SPECIFIED, A POINTER(BAMTCDR) */ 01760064 * /* TO THE MASTER TRACE CREATE/DEACTIVATE ROUTINE */ 01770064 * /* IS LOADED AND CONTROL PASSED TO IT VIA BRANCH */ 01780064 * /* */ 01790064 * /* NOTES = */ 01800064 * /* */ 01850064 * /* RESTRICTIONS = THE CALLER MUST INCLUDE THE MASTER SCHEDULER */ 01900064 * /* RESIDENT DATA AREA (VIA IEEBASEA MAPPING */ 01950064 * /* MACRO) AND ASSURE ADDRESSABILITY TO IT. */ 02000064 * /* */ 02100064 * /* */ 02150064 * /* */ 02200064 * /* MODULE TYPE = MACRO */ 02250064 * /* */ 02300064 * /* PROCESSOR = BILINGUAL PLS 2 AND ASSEMBLER */ 02350064 * /* */ 02400064 * /* MODULE SIZE = SEE ASSEMBLER OUTPUT */ 02450064 * /* */ 02500064 * /* ATTRIBUTES = REENTRANT */ 02550064 * /* */ 02600064 * /* ENTRY POINT = IEETRACE */ 02650064 * /* */ 02700064 * /* INPUT = */ 02750064 * /* */ 02800064 * /* 'TEST' SPECIFIED */ 02850064 * /* NONE */ 02900064 * /* */ 02950064 * /* 'TEST' NOT SPECIFIED = */ 03000064 * /* REGISTER 1 POINTING TO A PARAMETER LIST, */ 03030064 * /* MAPPED BY IEZMTPRM */ 03060064 * /* */ 03090064 * /* REGISTER 13 POINTING TO AN 18 WORD WORK AREA */ 03120064 * /* */ 03150064 * /* OUTPUT = SEE EXITS */ 03180064 * /* */ 03300064 * /* */ 03350064 * /* EXIT-NORMAL */ 03400064 * /* MASTER TRACE ACTIVE */ 03450064 * /* */ 03500064 * /* CONDITION = 'TEST' OR 'TABLEMOD' NOT SPECIFIED */ 03550064 * /* OUTPUT = CONTROL PASSED TO MASTER TRACE ENTRY SERVICE */ 03600064 * /* ROUTINE (IEEMB808) */ 03610064 * /* */ 03650064 * /* CONDITION = 'TEST' SPECIFIED */ 03700064 * /* OUTPUT = CONTROL RETURNED TO CALLER WITH A RETURN CODE */ 03750064 * /* */ 03800064 * /* CONDITION = 'TABLEMOD' SPECIFIED */ 03810064 * /* OUTPUT = CONTROL PASSED TO MASTER TRACE CREATE/DEACTIVATE */ 03820064 * /* ROUTINE (IEEMB809) */ 03830064 * /* */ 03840064 * /* MASTER TRACE NOT ACTIVE */ 03850064 * /* */ 03900064 * /* CONDITION = 'TABLEMOD' NOT SPECIFIED */ 03950064 * /* OUTPUT = CONTROL RETURNED TO CALLER WITH A RETURN CODE */ 04000064 * /* */ 04050064 * /* CONDITION = 'TABLEMOD' SPECIFIED */ 04058064 * /* OUTPUT = CONTROL PASSED TO MASTER TRACE CREATE/DEACTIVATE */ 04074064 * /* ROUTINE (IEEMB809) */ 04082064 * /* */ 04090064 * /* EXIT-ERROR */ 04100064 * /* CONDITION = INVALID OPERAND ON INVOCATION */ 04150064 * /* OUTPUT= COMPILE TIME OR ASSEMBLY TIME ERROR MESSAGE */ 04160064 * /* ISSUED */ 04170064 * /* */ 04200064 * /* EXTERNAL REFERENCES = */ 04250064 * /* */ 04300064 * /* ROUTINES = IEEMB808,IEEMB809 */ 04350064 * /* */ 04370064 * /* DATA AREAS = IEEBASEA */ 04390064 * /* */ 04410064 * /* CHANGE ACTIVITY = G64MP2D @G64MP2D*/ 04430064 * /* MESSAGES = NONE */ 04450064 * /* */ 04470064 * /* ABEND CODES = */ 04490064 * /* */ 04500064 * /* 0NX ADDRESSABILITY ERROR IN CALLERS */ 04510064 * /* PARMLIST */ 04520064 * /* */ 04530064 * /* 0NX IS A SYSTEM COMPLETION CODE SET */ 04540064 * /* BY THE MASTER TRACE SERVICE ROUTINE. */ 04550064 * /* */ 04560064 * /* RETURN CODES = */ 04650064 * /* */ 04700064 * /* 'TEST' NOT SPECIFIED */ 04750064 * /* NORMAL */ 04800064 * /* */ 04850064 * /* RETURN REASON DESCRIPTION */ 04900064 * /* CODE CODE */ 04950064 * /* (REG15) (REG0) */ 05000064 * /* */ 05050064 * /* 00 NONE CALLER DATA SUCCESSFULLY RECORDED */ 05100064 * /* IN THE MASTER TRACE TABLE OR MASTER */ 05150064 * /* TRACE TABLE SUCCESSFULLY ACTIVATED */ 05200064 * /* OR DEACTIVATED */ 05250064 * /* */ 05300064 * /* 04 NONE MASTER TRACE NOT ACTIVE */ 05350064 * /* */ 05400064 * /* ERROR */ 05450064 * /* */ 05500064 * /* 08 01 SPECIFIED DATA LENGTH EXCEEDS SIZE OF */ 05550064 * /* TABLE */ 05750064 * /* */ 05755064 * /* 02 UNABLE TO DETERMINE IF */ 05760064 * /* REQUEST IS FOR CREATE OR */ 05770064 * /* DEACTIVATE */ 05780064 * /* */ 05800064 * /* 12 01 UNABLE TO OBTAIN NEW MASTER TRACE */ 05850064 * /* TABLE, EXISTING TABLE IF ANY STILL */ 05900064 * /* IN USE */ 05950064 * /* */ 06000064 * /* 02 MASTER TRACE FAILURE, MASTER */ 06050064 * /* TRACE RESTARTED */ 06100064 * /* */ 06150064 * /* 03 RECURSIVE MASTER TRACE ERROR */ 06200064 * /* MASTER TRACE TERMINATED */ 06250064 * /* */ 06300064 * /* NOTE: RETURN CODES ABOVE 4 ARE SET BY */ 06350064 * /* THE MASTER TRACE SERVICE ROUTINE. */ 06400064 * /* */ 06450064 * /* 'TEST' SPECIFIED */ 06500064 * /* */ 06550064 * /* RETURN REASON DESCRIPTION */ 06600064 * /* CODE CODE */ 06650064 * /* */ 06700064 * /* 00 NONE MASTER TRACE IS ACTIVE */ 06750064 * /* */ 06780064 * /* 04 NONE MASTER TRACE IS NOT ACTIVE */ 06810064 * /* */ 06900064 * /* EXAMPLES = */ 06950064 * /* */ 07000064 * /* TO INVOKE IEETRACE WITH THE DEFAULT OPTION OF */ 07003064 * /* 'ENTRY' IN PLS2, CODE THE FOLLOWING: */ 07006064 * /* */ 07009064 * /* ? IEETRACE; */ 07012064 * /* */ 07015064 * /* TO INVOKE IEETRACE WITH THE 'ENTRY' OPTION IN */ 07018064 * /* PLS2, CODE THE FOLLOWING; */ 07021064 * /* */ 07024064 * /* ? IEETRACE (ENTRY); */ 07027064 * /* */ 07030064 * /* TO INVOKE IEETRACE WITH THE 'TABLEMOD' OPTION */ 07033064 * /* IN PLS2, CODE THE FOLLOWING; */ 07036064 * /* */ 07039064 * /* ? IEETRACE (TABLEMOD); */ 07042064 * /* */ 07045064 * /* TO INVOKE IEETRACE WITH THE 'TEST' OPTION IN PLS2, */ 07050064 * /* CODE THE FOLLOWING: */ 07100064 * /* */ 07150064 * /* ? IEETRACE (TEST); */ 07200064 * /* */ 07250064 * /* TO INVOKE IEETRACE WITH THE DEFAULT OPTION OF */ 07253064 * /* 'ENTRY' IN ASSEMBLER, CODE THE FOLLOWING: */ 07256064 * /* */ 07259064 * /* IEETRACE */ 07262064 * /* */ 07265064 * /* TO INVOKE IEETRACE WITH THE 'ENTRY' OPTION IN */ 07268064 * /* ASSEMBLER, CODE THE FOLLOWING; */ 07271064 * /* */ 07274064 * /* IEETRACE ENTRY */ 07277064 * /* */ 07280064 * /* TO INVOKE IEETRACE WITH THE 'TABLEMOD' OPTION */ 07283064 * /* IN ASSEMBLER, CODE THE FOLLOWING: */ 07286064 * /* */ 07289064 * /* IEETRACE TABLEMOD */ 07292064 * /* */ 07295064 * /* TO INVOKE IEETRACE WITH THE 'TEST' OPTION IN ASSEMBLER, */ 07300064 * /* CODE THE FOLLOWING: */ 07350064 * /* */ 07400064 * /* IEETRACE TEST */ 07450064 * /* */ 07500064 * /* */ 07550064 * /*******************************************************************/ 07600064 * DCL CMNT FIXED; /*START COLUMN FOR COMMENTS */ 07650064 * DCL COMMAC CHAR; /*COMMENT MACRO INVOCATION */ 07670064 * DCL L FIXED; /*START COLUMN FOR CODE */ 07700064 * DCL OPER CHAR; /*OPERAND SPECIFIED */ 07750064 * DCL EHAREGS CHAR EXT; /* REGS TO BE DCLD BY EPILOG */ 07867564 * 07867864 * IF INDEX(EHAREGS,'01P')=0 THEN /* HAS REG1 BEEN USED? */ 07868164 * EHAREGS=EHAREGS||'01P'; /*NO,INDICATE IT IS TO BE DCLD */ 07868464 * IF INDEX(EHAREGS,'15P')=0 THEN /* HAS REG15 BEEN USED? */ 07868764 * EHAREGS=EHAREGS||'15P'; /*NO,INDICATE IT IS TO BE DCLD */ 07869064 * CMNT = 37; /*PRIME COMMENT COLUMN CONSTANT */ 07869364 * L = MACLMAR; /*PRIME CODE COLUMN CONSTANT */ 07869664 * OPER = MACLIST; 07870764 * COMMAC = 'IEETRACE '|| OPER; /*SET INVOCATION AS COMMENT */ 07870864 * COMMAC = COMMAC || ' @G64MP2D'; /*ADD FLAGING TO COMMENT */ 07870964 * IF OPER ^= '(ENTRY)'THEN 07871464 * DO; 07871564 * IF OPER ^= '' THEN 07871664 * DO; 07871764 * IF OPER ^= '(TEST)' THEN 07871864 * DO; 07871964 * IF OPER ^= '(TABLEMOD)' THEN 07872064 * DO; 07872164 * /* GENERATE INVALID OPERAND CODE */ 07872264 * ANS MSG(' INVALID OPERAND ON IEETRACE MACRO ')SKIP COL(L); 07872564 * ANS MSG(' LEAVE FIELD BLANK TO OBTAIN DEFAULT'); 07872664 * ANS MSG(' OR SPECIFY ENTRY, TABLEMOD, ')SKIP COL(L); 07872764 * ANS MSG(' OR TEST @G64MP2D '); 07872864 * RETURN CODE(8); 07873164 * 07873264 * END; 07873364 * ELSE 07873464 * DO; 07873564 * /* GENERATE 'TABLEMOD' CODE */ 07873664 * ANS('DO;')SKIP COL(L); 07873764 * ANS(COMMENT(COMMAC))COL(CMNT); 07873864 * ANS('RFY (GPR01P,GPR15P) RSTD;')SKIP; 07873964 * ANS('/* @G64MP2D*/')SKIP COL(CMNT); 07874064 * ANS('CALL MB809;')SKIP COL(L); 07874164 * ANS('/* TABLE CHANGE REQUESTED CALL*/')SKIP COL(CMNT); 07874264 * ANS('/* TABLE SERVICE RTN @G64MP2D*/')SKIP COL(CMNT); 07874364 * ANS('RFY (GPR01P,GPR15P)UNRSTD;')SKIP; 07874464 * ANS('/* @G64MP2D*/')SKIP COL(CMNT); 07874564 * ANS('END;')SKIP COL(L); 07874764 * ANS(COMMENT(COMMAC))COL(CMNT); 07874864 * RETURN; 07874964 * END; 07875064 * END; 07875164 * ELSE; 07875264 * END; 07875364 * ELSE; 07875464 * END; 07875564 * ELSE; 07875664 * ANS('DO;')SKIP COL(L); 07875764 * ANS(COMMENT(COMMAC))COL(CMNT); 07875864 * ANS('RFY (GPR01P,GPR15P)RSTD;')SKIP; 07875964 * ANS('/* @G64MP2D*/')SKIP COL(CMNT); 07876064 * ANS('IF BAMTTBL = 0 THEN ')SKIP COL(L); 07876164 * ANS('/* IS MASTER TRACE ACTIVE @G64MP2D*/')COL(CMNT); 07876264 * ANS(' GPR15P = 4;')SKIP COL(L); 07876364 * ANS('/* NO TABLE,SET MASTER TRACE */')COL(CMNT); 07876464 * ANS('/* NOT ACTIVE RETURN CODE @G64MP2D*/')SKIP COL(CMNT); 07876564 * IF OPER = '(TEST)' 07876764 * THEN DO; 07876864 * /* GENERATE 'TEST' CODE */ 07876964 * ANS('ELSE ')SKIP; 07877064 * ANS('/* TABLE EXISTS, */')COL(CMNT); 07877164 * ANS(' GPR15P = 0;')SKIP; 07877264 * ANS('/* SET MASTER TRACE ACTIVE */')SKIP COL(CMNT); 07877364 * ANS('/* RETURN CODE @G64MP2D*/')SKIP COL(CMNT); 07877464 * ANS('RFY (GPR01P,GPR15P)UNRSTD;')SKIP COL(L); 07877664 * ANS('/* @G64MP2D*/')SKIP COL(CMNT); 07877864 * ANS('END;')SKIP COL(L); 07878464 * ANS(COMMENT(COMMAC))COL(CMNT); 07878564 * END; 07878664 * ELSE DO; 07878864 * /* GENERATE 'ENTRY' CODE */ 07879264 * ANS('ELSE ')SKIP COL(L); 07879664 * ANS('/* TABLE EXISTS, */')COL(CMNT); 07879764 * ANS(' CALL MB808;')SKIP COL(L); 07879864 * ANS('/* CALL ENTRY SERVICE */')SKIP COL(CMNT); 07879964 * ANS('/* RTN @G64MP2D*/')SKIP COL(CMNT); 07880064 * ANS('RFY (GPR01P,GPR15P)UNRSTD;')SKIP COL(L); 07880364 * ANS('/* @G64MP2D*/')SKIP COL(CMNT); 07880664 * ANS('END;')SKIP COL(L); 07881264 * ANS(COMMENT(COMMAC))COL(CMNT); 07881464 * END; 07882064 * % END; 07882664 * 07890064 * 08650064 MACRO 08660064 IEETRACE &OPER 08670064 AIF ('&OPER' EQ 'TABLEMOD').CALLTAB 08680064 .* TABLE CHANGE REQUEST 08690064 .* GENERATE TABLE SERVICE RTN CALL 08700064 ICM 14,15,BAMTTBL MASTER TRACE TABLE EXIST? @G64MP2D 08708064 LA 15,4(0,0) PRIME REG 15 WITH MASTER @G64MP2D 08716064 * TRACE INACTIVE RETURN CODE @G64MP2D 08724064 BZ N&SYSNDX NO TABLE, RETURN CONTROL @G64MP2D 08732064 AIF ('&OPER' EQ 'TEST').CALLTST 08750064 .* TEST REQUEST, GENERATE REGISTER 08758064 .* 15 RESET 08766064 AIF (('&OPER' EQ 'ENTRY') OR ('&OPER' EQ '')).CALLENT 08774064 .* ENTRY REQUEST OR DEFAULTED, 08782064 .* GENERATE ENTRY SERVICE RTN CALL 08800064 MNOTE 8,'INVALID OPERAND-LEAVE FIELD BLANK TO ACCEPT DEFAULT, *08808064 OR SPECIFY ENTRY, TABLEMOD OR TEST' 08816064 AGO .EXIT 08824064 .CALLTST ANOP 08832064 SR 15,15 SET MASTER TRACE ACTIVE CODE @G64MP2D 08850064 AGO .EXIT 08900064 .CALLENT ANOP 08950064 L 15,BAMTRTN GET ENTRY SERVICE ROUTINE @G64MP2D 09000064 * ENTRY POINT @G64MP2D 09050064 BALR 14,15 INVOKE ENTRY SERVICE ROUTINE @G64MP2D 09100064 AGO .EXIT 09150064 .CALLTAB ANOP 09200064 L 15,BAMTCDR GET TABLE SERVICE ROUTINE @G64MP2D 09250064 * ENTRY POINT @G64MP2D 09300064 BALR 14,15 INVOKE TABLE SERVICE ROUTINE @G64MP2D 09350064 .EXIT ANOP 09400064 N&SYSNDX EQU * @G64MP2D 09450064 MEND 09500064