/********************************************************************/ 00250000 /********************************************************************/ 00250116 /* */ 00250216 /* Pseudo-code which you can translate into a language of choice. */ 00250316 /* */ 00250416 /* 03/27/98 */ 00250516 /********************************************************************/ 00251015 /********************************************************************/ 00252016 /* */ 00260000 /* MODULE-NAME = IXCWRST */ 00270001 /* */ 00280000 /* FUNCTION : Automatic Restart Manager (ARM) workload restart */ 00310002 /* exit. */ 00320002 /* */ 00330000 /* ATTRIBUTES = REENTRANT, REUSABLE, AMODE 31, RMODE ANY, KEY(0) */ 00340002 /* */ 00350002 /* INPUT: REG1 POINTS TO ADDRESS OF WRE */ 00360002 /* */ 00370000 /* OUTPUT: */ 00380000 /* 1. TO Start the correct IRLM on the same system */ 00390011 /* that ARM restarts IMS */ 00400011 /* */ 00410000 /* MACROS USED: IEZMGCR MGCR PARAMETER LIST */ 00420002 /* */ 00430000 /********************************************************************/ 00440002 @EJECT; 00450000 %DCL 00460000 MGCRATRB CHAR; 00470000 %MGCRATRB='BDY(WORD)'; 00480000 %INCLUDE SYSLIB(IEZMGCR); 00490000 /*%INCLUDE SYSLIB(IXCYWRE);*/ 00500001 DECLARE 00510001 1 WRE BASED(WREPTR) BDY(DWORD), /* ARM Workload Restart Exit 00520004 parameter list */ 00530001 3 WREHeader, /* Fixed-length section of 00540001 WRE parameter list */ 00550001 5 WREAcronym CHAR(4), /* Eyecatcher C'WRE ' */ 00560001 5 WREDeadSystemName CHAR(8), /* Name of system that has 00570001 left the sysplex */ 00580001 5 WRENumberOfElements FIXED(31),/* Number of elements being 00590001 restarted on this system */ 00600001 3 WREElementNames (*) CHAR(16); /* Names of the elements 00610001 being restarted on this 00620001 system */ 00630001 00640001 /* Eyecatcher for WREAcronym field */ 00650001 00660001 Declare 00670001 WREEyecatcher CHAR(4) CONSTANT('WRE '); /* Eyecatcher */ 00680001 00690000 /********************************************************************/ 00700000 /* DYNAMIC DECLARES */ 00710000 /********************************************************************/ 00720000 00730000 DCL CVTPTR PTR LOCATION(16); 00740006 DCL IXCWRST ENTRY(PTR(31) INPUT BYVALUE INREG(1)); 00750005 DCL CMDAREA CHAR(126) VARYING; 00760000 DCL I FIXED(31); 00770006 DCL group char(1); 00780008 DCL image char(1); 00790008 DCL irlmid char(1); 00800009 00810006 ?WTO TEXT() LINKAGE() MF(L,WTO_DYNAMIC,AUTO); 00820006 @EJECT; 00830000 00840000 /********************************************************************/ 00850000 /* STATIC DECLARES */ 00860000 /********************************************************************/ 00870000 00880000 DCL 00890000 ZERO FIXED CONSTANT(0); 00900000 DCL 00910000 ON BIT(1) CONSTANT('1'B); 00920000 DCL 00930001 VARYNET CHAR(*) CONSTANT('V NET,ACT,ID='); 00940005 DCL 00950006 quote CHAR(1) CONSTANT(''''); 00960006 DCL 00970006 COMMENT CHAR(*) CONSTANT(' ISSUED BY IXCWRST'); 00980006 ?WTO TEXT() LINKAGE() ROUTCDE(2) DESC(6) 00990006 MF(L,WTO_STATIC,STATIC); /* */ 01000006 DCL 1 DUMPTITL STATIC, 01010005 2 * FIXED(8) INIT(LENGTH(TITLE)), 01020005 2 TITLE CHAR(*) INIT('IXCWRST - ERROR IN IXCWRST PARM LIST'); 01030005 @SPACE(2); 01040002 01050000 /********************************************************************/ 01060000 /* REGISTER DECLARES */ 01070000 /********************************************************************/ 01080000 01090000 DCL 01100000 REG0 REG(0) RESTRICTED; 01110000 DCL 01120000 REG1 REG(1) RESTRICTED; 01130000 DCL 01140000 REG15 REG(15); 01150000 01160000 @EJECT; 01170007 MGCRPL = ''B; /* INITIALIZE MGCRPL */ 01180000 MGCRTOKN = ''B; /* INITIALIZE TOKEN */ 01190000 MGCRLGTH = MGCRSIZ-LENGTH(MGCRTOKN);/* TOKEN NOT BEING USED */ 01200000 01210000 /****************************************************************** */ 01220000 /* */ 01230001 /****************************************************************** */ 01240000 01250000 Do I = 1 to WRENumberOfElements; 01260001 01270001 cmdarea = 'WREElementName = ' 01280006 || WREElementNames(I,1:16) || comment; 01290006 01300006 WTO_DYNAMIC = WTO_STATIC;/* */ 01310006 ?WTO TEXT(cmdarea) MF(E,WTO_DYNAMIC); /* */ 01320006 01330006 @SPACE ASM; 01340002 Select; 01350001 When(WREElementNames(I,1:5) = 'CICSD') 01360001 Do; 01370001 cmdarea = varynet || WREElementNames(I,5:8) || comment; 01380006 /* call issumgcr; */ 01390010 End; 01400001 01410001 @SPACE ASM; 01420002 When(WREElementNames(I,1:6) = 'IXJCMS') 01430001 Do; 01440001 cmdarea = varynet || WREElementNames(I,1:8) || comment; 01450006 /* call issumgcr; */ 01460010 End; 01470001 01480008 @SPACE ASM; 01490008 When(WREElementNames(I,1:3) = 'IMS') 01500008 Do; 01510008 image = WREElementNames(I,4:4); 01520008 01530012 GROUP = '1'; 01540012 IRLMID = '0'; 01550012 SELECT; 01560012 WHEN(IMAGE = 'A') IRLMID = '1'; 01570012 WHEN(IMAGE = 'B') IRLMID = '2'; 01580012 WHEN(IMAGE = 'C') IRLMID = '3'; 01590012 WHEN(IMAGE = 'D') IRLMID = '4'; 01600012 WHEN(IMAGE = 'E') IRLMID = '5'; 01610012 WHEN(IMAGE = 'F') IRLMID = '6'; 01620012 WHEN(IMAGE = 'G') IRLMID = '7'; 01630012 WHEN(IMAGE = 'H') IRLMID = '8'; 01640012 WHEN(IMAGE = 'I') IRLMID = '9'; 01650012 WHEN(IMAGE = 'J') IRLMID = '10'; 01660012 WHEN(IMAGE = 'K') IRLMID = '11'; 01670012 WHEN(IMAGE = 'L') IRLMID = '12'; 01680012 Otherwise; 01690012 END; 01700012 01710008 @SPACE ASM; 01720008 cmdarea = 'S IRLM.IRLM' 01730008 || image 01740008 || ',GRP=' 01750008 || group 01760008 || ',IMAGE=' 01770008 || image 01780008 || ',IRLMID=' 01790009 || irlmid 01800009 || comment; 01810008 call issumgcr; 01820008 End; 01830008 01840001 @SPACE ASM; 01850002 Otherwise; 01860001 End; 01870001 End; 01880001 01890000 @SPACE ASM; 01900002 RETURN CODE(0); 01910000 01920000 @EJECT; 01930000 /****************************************************************** */ 01940000 /* ISSUE CMD VIA SVC 34 USING MGCR */ 01950002 /****************************************************************** */ 01960000 ISSUMGCR: 01970002 PROC; 01980002 01990000 @SPACE ASM; 02000002 MGCRTEXT = CMDAREA; 02010000 MGCRLGTH = LENGTH(CMDAREA) + 4; 02020000 02030000 @SPACE ASM; 02040002 REG0 = ZERO; /* INITIALIZE REGISTER 0 */ 02050000 REG1 = ADDR(MGCRPL); /* INITIALIZE REGISTER 1 */ 02060000 GEN REFS(REG1) /* ISSUE MGCR */ 02070000 (MGCR (1)); 02080000 02090000 @SPACE ASM; 02100002 END ISSUMGCR; 02110000 02170007 @EJECT ASM; 02180005 ?EPILOG; 02190005 END IXCWRST; /* END OF MAIN PROC */ 02200001