Using IPCS with MVS/ESA Version 5
Total Page:16
File Type:pdf, Size:1020Kb
SYSTEM BY TOM BRYANT STRATEGIES MVS/XA/ESA Problem Solving: Part I — Using IPCS With MVS/ESA Version 5 PCS for MVS/ESA Version 5 has come a long way since I first used it in 1983 at the prompting of an exuberant IBM customer engineer. IPCS IPCS for MVS/ESA continues to move toward a fully panel-driven environment, although in Version 5 offers many Isome situations, I find using IPCS commands easier. capabilities, including the ability to scan for unformatted storage dumps. This article Future articles will examine the environ- easily in batch mode as well as in an ISPF mental record editing and printing program foreground session. I also wanted a CLIST examines the many (EREP), one-page MVS/XA/ESA abend that was well-documented with easy-to-use facilities of IPCS, analysis, advanced SVCDUMP analysis, parameters. Finally, I wanted a CLIST that slip traps and GTF tracing, and standalone does not hang onto dump directory and IPCS and includes some dump analysis. print dataset allocations when completed, as of the author’s favorite IPCS stands for Interactive Problem the IBM BLSCDDIR CLIST does. Control System, although most people IPCS commands. (myself included) use it just for looking at IPCS CLISTS FOR MVS/ESA unformatted storage dumps. IPCS will process VERSION 4.3 AND ABOVE SVCDUMPs which are dumps usually pro- The #IPCSTJB CLIST is the mainline duced with the abend (SVC 13) issued by your CLIST that you execute to establish an IPCS program or the system. Other unformatted session (see Figure 1). If you are invoking dumps that IPCS will produce include an #IPCSTJB for the first time, the NEW CLIST application unformatted dump allocated keyword parameter indicates that you will through the SYSMDUMP DD statement and dynamically create a VSAM dump directory the standalone dump produced by the stand- using the value of the VOL CLIST keyword alone dump program. parameter. The BATCH keyword will allow IPCS has the ability to process generalized you to run the #IPCSTJB CLIST in batch trace facility (GTF) data both externally and (where ISPF LIBDEF commands need not be within the dump. IPCS has the ability to look performed and initial SETDEF parameter at live system storage, although only for your favorites of mine are set). I have been unable address space; you can’t look at any private to pass these SETDEF commands to IPCS storage in another address space. when running as an ISPF application. I usual- IBM provides the BLSCDDIR CLIST in ly do a certain amount of IPCS batch process- the library SYS1.SBLSCLI0 to initiate an ing before using the ISPF interface due to per- IPCS session. If you are at MVS/ESA Version formance reasons covered later in this article. 4.3 or above, you can now initialize IPCS I have added keyword parameters of under ISPF — this makes IPCS much easier DDIRPRI and DDIRSEC to the #IPCSTJB to use as a full-fledged ISPF application. I CLIST to allow the user to determine how took the ideas presented in the BLSCDDIR many cylinders are necessary for the primary CLIST and created my own IPCS startup allocation of the IPCS VSAM dump directory CLIST. I wanted a CLIST that could be run and for the secondary allocation. Most of the TECHNICAL SUPPORT OCTOBER 1996 SYSTEM STRATEGIES Figure 1: #IPCSTJB: Clist to Get Into {Access} IPCS ELSE ALLOCATE F(IPCSDDIR) DSNAME(‘&SYSUID..DDIR.DUMP’) SHR REUSE IF &LASTCC GT 0 THEN + PROC 0 BATCH NEW VOL(UCB999) DDIRPRI(90) DDIRSEC(50) DEBUG DO /**************************************************************/ WRITE /* */ WRITE &SYSUID..DUMP.DDIR NOT FOUND /* #IPCSTJB: IPCS ALL-PURPOSE INITIALIZATION CLIST */ WRITE SPECIFY #IPCSTJB NEW /* */ FREE F(IPCSPRNT /* */ EXIT /* BATCH ==> POSITIONAL OPERAND TO INDICATE IPCS BATCH */ END /* EXECUTION (ISPF DIALOG IS DEFAULT) */ ISPEXEC LIBDEF ISPPLIB DATASET ID(‘SYS1.SBLSPNL0’) /* */ ISPEXEC LIBDEF ISPMLIB DATASET ID(‘SYS1.SBLSMSG0’) /* NEW ==> CREATE NEW IPCS VSAM DUMP DIRECTORY */ ISPEXEC LIBDEF ISPTLIB DATASET ID(‘SYS1.SBLSTBL0’) /* (DEFAULT IS TO USE EXISTING DIRECTORY) */ ISPEXEC LIBDEF ISPSLIB DATASET ID(‘SYS1.SBLSKEL0’) /* */ ISPEXEC SELECT PGM(BLSGLIBD) PARM(PANEL(BLSPPRIM)) + /* VOL ==> KEYWORD OPERAND TO SPECIFY WHERE IPCS VSAM */ NEWAPPL(BLSG) PASSLIB /* DUMP DIRECTORY IS TO RESIDE */ ISPEXEC LIBDEF ISPPLIB /* */ ISPEXEC LIBDEF ISPMLIB /* DDIRPRI ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */ ISPEXEC LIBDEF ISPSLIB /* CYLINDERS (IF NEW DIRECTORY SPECIFIED) */ ISPEXEC LIBDEF ISPTLIB /* */ FREE F(IPCSDDIR,IPCSPRNT) /* DDIRSEC ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */ EXIT /* CYLINDERS (IF NEW DIRECTORY SPECIFIED) */ END /* */ /* DEBUG ==> SHOW DIAGNOSTICS IF CLIST PROBLEMS */ IF &BATCH EQ &STR(BATCH) THEN + /* */ DO /**************************************************************/ IF &STR(&SYSISPF) EQ &STR(ACTIVE) THEN + DO CONTROL NOFLUSH NOLIST NOMSG WRITE #IPCSTJB BATCH CLIST MUST NOT BE EXECUTED UNDER ISPF FREE F(IPCSDDIR,IPCSPRNT) IF &DEBUG EQ &STR(DEBUG) THEN + EXIT CONTROL CONLIST SYMLIST LIST MSG END IF &NEW EQ &STR(NEW) THEN SET &DMPSTAT EQ &STR(NEW) WRITE #IPCSTJB CLIST BATCH EXECUTION ELSE SET &DMPSTAT EQ &STR(EXISTING) WRITE &SYSUID..DDIR.DUMP DUMP DIRECTORY STATUS IS &DMPSTAT WRITE DATASET &SYSUID..IPCSPRNT WILL BE CREATED DELETE ‘&SYSUID..IPCSPRNT’ IF &NEW EQ &STR(NEW) THEN + ALLOC F(IPCSPRNT) DA(‘&SYSUID..IPCSPRNT’) + DO NEW SPA(20 10) CYL REL REUSE %#IPCSDDR VOL(&VOL) DDIRPRI(&DDIRPRI) DDIRSEC(&DDIRSEC) &DEBUG IF &BATCH NE &STR(BATCH) THEN + END DO ELSE ALLOCATE F(IPCSDDIR) DSNAME(‘&SYSUID..DDIR.DUMP’) SHR REUSE IF &STR(&SYSISPF) EQ &STR(NOT ACTIVE) THEN + IF &LASTCC GT 0 THEN + DO DO WRITE #IPCSTJB NOBATCH CLIST MUST BE EXECUTED UNDER ISPF WRITE FREE F(IPCSDDIR,IPCSPRNT) WRITE &SYSUID..DUMP.DDIR NOT FOUND EXIT WRITE SPECIFY #IPCSTJB NEW END FREE F(IPCSPRNT WRITE #IPCSTJB CLIST ONLINE EXECUTION EXIT WRITE &SYSUID..DDIR.DUMP DUMP DIRECTORY STATUS IS &DMPSTAT END WRITE DATASET &SYSUID..IPCSPRNT WILL BE CREATED IPCS NOPARM IF &NEW EQ &STR(NEW) THEN + SETDEF ACTIVE LENGTH(200) FLAG(ERROR) + DO DISPLAY(MACHINE,REMARK,STORAGE,SYMBOL) + %#IPCSDDR VOL(&VOL) DDIRPRI(&DDIRPRI) DDIRSEC(&DDIRSEC) &DEBUG NOCONFIRM NOVERIFY END END Figure 2: #IPCSDDR: Allocate and Initialize New IPCS VSAM CONTROL NOFLUSH NOLIST NOMSG IF &DEBUG EQ &STR(DEBUG) THEN CONTROL SYMLIST CONLIST MSG Dump Directory PROC 0 VOL(UCB999) DDIRPRI(90) DDIRSEC(50) DEBUG DELETE ‘&SYSUID..DDIR.DUMP’ CLUSTER /**************************************************************/ /* */ DEFINE CLUSTER(NAME(‘&SYSUID..DDIR.DUMP’) + /* #IPCSDDR: CLIST TO DEFINE IPCS VSAM DUMP DIRECTORY */ VOLUME(&VOL) + /* (INVOKED BY THE #IPCSTJB CLIST) */ INDEXED + /* */ FREESPACE(10,10) + /* */ REUSE + /* VOL ==> KEYWORD OPERAND TO SPECIFY WHERE IPCS VSAM */ IMBED + /* DUMP DIRECTORY IS TO RESIDE */ REPLICATE + /* */ SHAREOPTIONS(1,3)) + /* DDIRPRI ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */ INDEX(NAME(‘&SYSUID..DDIR.DUMP.INDEX’) + /* CYLINDERS (IF NEW DIRECTORY SPECIFIED) */ CYLINDERS(2,2) + /* */ CONTROLINTERVALSIZE(4096)) + /* DDIRSEC ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */ DATA(NAME(‘&SYSUID..DDIR.DUMP.DATA’) + /* CYLINDERS (IF NEW DIRECTORY SPECIFIED) */ CYLINDERS(&DDIRPRI,&DDIRSEC) + /* */ KEYS(128,0) + /* DEBUG ==> SHOW DIAGNOSTICS IF CLIST PROBLEMS */ RECORDSIZE(384 3072)) /* */ /* */ /* APAR OY62871 - FIX CISIZ SPECIFIED FOR INDEX AND DATA */ IPCSDDIR ‘&SYSUID..DDIR.DUMP’ /* APAR OW13537 - SPECIFY CISIZE(4096) FOR INDEX ONLY */ /* (LET DATA TAKE VSAM DEFAULT) */ /* */ ALLOCATE FILE(IPCSDDIR) DSNAME(‘&SYSUID..DDIR.DUMP’) SHR REUSE /**************************************************************/ t i m e, my defaults will suffice (unless you are processing DB2 allow you to free IPCS print dataset allocation in order to rename the SVCDUMPs or standalone dumps, in which case, you will need much IPCSPRNT dataset to your choosing (see Figure 3). more space). Now that we have a tool for IPCS dump processing, we first have to The #IPCSTJB CLIST will invoke the #IPCSDDR CLIST only get the dump from the dump dataset to DASD. If the dump is in one of when the NEW parameter has been selected to create a new IPCS the system dump datasets (SYS1.DUMP?? where ?? is a number such VSAM dump directory (see Figure 2). The #IPCSDDR CLIST takes as 00 through 99) all you have to do is use IEBGENER to copy the care of this IPCS VSAM dump directory allocation using the same dump to your dump dataset. The SYS1.DUMP?? datasets must be key wo rd command names as #IPCSTJB. This is all pretty stra i g h t- a l l o c at e d LRECL of 4160, BLKSIZE of 4160 and RECFM F or FB, fo rward. The #IPCSTRM CLIST is only needed in a batch IPCS job to besides DSORG of PS. The pro blem inherent with using the TECHNICAL SUPPORT OCTOBER 1996 SYSTEM STRATEGIES Figure 3: #IPCSTRM: Issue IPCS END Command and Free Files Figure 4: Load Standalone Dump From Tape (Only Needed for Batch Jobs) //SADLOAD EXEC PGM=IEBGENER, // REGION=5M PROC 0 //SYSPRINT DD SYSOUT=* /**************************************************************/ //SYSIN DD DUMMY /* */ //* /* #IPCSTRM: IPCS ALL-PURPOSE INITIALIZATION CLIST */ //SYSUT1 DD DSN=SADUMP, /* */ // UNIT=(CART,,DEFER), /* CLIST TO END BATCH IPCS SESSION IN ORDER TO */ // LABEL=(1,NL,,EXPDT=98000), /* FREE IPCS FILES. */ // VOL=SER=00666, /* */ // LRECL=4160, /**************************************************************/ // BLKSIZE=29120, CONTROL NOFLUSH NOLIST NOMSG // RECFM=FBS, END // DISP=OLD FREE F(IPCSDDIR,IPCSPRNT) //* //JOBCARD JOB //SYSUT2 DD DSN=YOUR.SADUMP.DASD.DSN, //* // UNIT=(SYSDA,2), //*************************************************// // LRECL=4160, //*