Uploaded by Nicholas VanHaiVu

MVS-XA-ESA Problem Solving Part I - Using IPCS With MVS-ESA Version 5 -- Tom Bryant - NaSPA.net - 1996-11

advertisement
SYSTEM
STRATEGIES
BY TOM BRYANT
MVS/XA/ESA Problem
Solving: Part I —
Using IPCS With
MVS/ESA Version 5
IPCS for MVS/ESA
Version 5 offers many
capabilities, including
the ability to scan
for unformatted storage
dumps. This article
examines the many
facilities of IPCS,
and includes some
of the author’s favorite
IPCS commands.
TECHNICAL SUPPORT OCTOBER 1996
I
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
continues to move toward a fully panel-driven environment, although in
some situations, I find using IPCS commands easier.
Future articles will examine the environmental record editing and printing program
(EREP), one-page MVS/XA/ESA abend
analysis, advanced SVCDUMP analysis,
slip traps and GTF tracing, and standalone
dump analysis.
IPCS stands for Interactive Problem
Control System, although most people
(myself included) use it just for looking at
unformatted storage dumps. IPCS will process
SVCDUMPs which are dumps usually produced with the abend (SVC 13) issued by your
program or the system. Other unformatted
dumps that IPCS will produce include an
application unformatted dump allocated
through the SYSMDUMP DD statement and
the standalone dump produced by the standalone dump program.
IPCS has the ability to process generalized
trace facility (GTF) data both externally and
within the dump. IPCS has the ability to look
at live system storage, although only for your
address space; you can’t look at any private
storage in another address space.
IBM provides the BLSCDDIR CLIST in
the library SYS1.SBLSCLI0 to initiate an
IPCS session. If you are at MVS/ESA Version
4.3 or above, you can now initialize IPCS
under ISPF — this makes IPCS much easier
to use as a full-fledged ISPF application. I
took the ideas presented in the BLSCDDIR
CLIST and created my own IPCS startup
CLIST. I wanted a CLIST that could be run
easily in batch mode as well as in an ISPF
foreground session. I also wanted a CLIST
that was well-documented with easy-to-use
parameters. Finally, I wanted a CLIST that
does not hang onto dump directory and IPCS
print dataset allocations when completed, as
the IBM BLSCDDIR CLIST does.
IPCS CLISTS FOR MVS/ESA
VERSION 4.3 AND ABOVE
The #IPCSTJB CLIST is the mainline
CLIST that you execute to establish an IPCS
session (see Figure 1). If you are invoking
#IPCSTJB for the first time, the NEW CLIST
keyword parameter indicates that you will
dynamically create a VSAM dump directory
using the value of the VOL CLIST keyword
parameter. The BATCH keyword will allow
you to run the #IPCSTJB CLIST in batch
(where ISPF LIBDEF commands need not be
performed and initial SETDEF parameter
favorites of mine are set). I have been unable
to pass these SETDEF commands to IPCS
when running as an ISPF application. I usually do a certain amount of IPCS batch processing before using the ISPF interface due to performance reasons covered later in this article.
I have added keyword parameters of
DDIRPRI and DDIRSEC to the #IPCSTJB
CLIST to allow the user to determine how
many cylinders are necessary for the primary
allocation of the IPCS VSAM dump directory
and for the secondary allocation. Most of the
SYSTEM STRATEGIES
Figure 1: #IPCSTJB: Clist to Get Into {Access} IPCS
PROC 0 BATCH NEW VOL(UCB999) DDIRPRI(90) DDIRSEC(50) DEBUG
/**************************************************************/
/*
*/
/* #IPCSTJB: IPCS ALL-PURPOSE INITIALIZATION CLIST
*/
/*
*/
/*
*/
/* BATCH ==> POSITIONAL OPERAND TO INDICATE IPCS BATCH */
/*
EXECUTION (ISPF DIALOG IS DEFAULT)
*/
/*
*/
/*
NEW ==> CREATE NEW IPCS VSAM DUMP DIRECTORY
*/
/*
(DEFAULT IS TO USE EXISTING DIRECTORY)
*/
/*
*/
/*
VOL ==> KEYWORD OPERAND TO SPECIFY WHERE IPCS VSAM */
/*
DUMP DIRECTORY IS TO RESIDE
*/
/*
*/
/* DDIRPRI ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */
/*
CYLINDERS (IF NEW DIRECTORY SPECIFIED)
*/
/*
*/
/* DDIRSEC ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */
/*
CYLINDERS (IF NEW DIRECTORY SPECIFIED)
*/
/*
*/
/* DEBUG ==> SHOW DIAGNOSTICS IF CLIST PROBLEMS
*/
/*
*/
/**************************************************************/
CONTROL NOFLUSH NOLIST NOMSG
IF &DEBUG EQ &STR(DEBUG) THEN +
CONTROL CONLIST SYMLIST LIST MSG
IF &NEW EQ &STR(NEW) THEN SET &DMPSTAT EQ &STR(NEW)
ELSE SET &DMPSTAT EQ &STR(EXISTING)
DELETE ‘&SYSUID..IPCSPRNT’
ALLOC F(IPCSPRNT) DA(‘&SYSUID..IPCSPRNT’) +
NEW SPA(20 10) CYL REL REUSE
IF &BATCH NE &STR(BATCH) THEN +
DO
IF &STR(&SYSISPF) EQ &STR(NOT ACTIVE) THEN +
DO
WRITE #IPCSTJB NOBATCH CLIST MUST BE EXECUTED UNDER ISPF
FREE F(IPCSDDIR,IPCSPRNT)
EXIT
END
WRITE #IPCSTJB CLIST ONLINE EXECUTION
WRITE &SYSUID..DDIR.DUMP DUMP DIRECTORY STATUS IS &DMPSTAT
WRITE DATASET &SYSUID..IPCSPRNT WILL BE CREATED
IF &NEW EQ &STR(NEW) THEN +
DO
%#IPCSDDR VOL(&VOL) DDIRPRI(&DDIRPRI) DDIRSEC(&DDIRSEC) &DEBUG
END
Figure 2: #IPCSDDR: Allocate and Initialize New IPCS VSAM
Dump Directory
PROC 0 VOL(UCB999) DDIRPRI(90) DDIRSEC(50) DEBUG
/**************************************************************/
/*
*/
/* #IPCSDDR: CLIST TO DEFINE IPCS VSAM DUMP DIRECTORY */
/*
(INVOKED BY THE #IPCSTJB CLIST)
*/
/*
*/
/*
*/
/*
VOL ==> KEYWORD OPERAND TO SPECIFY WHERE IPCS VSAM */
/*
DUMP DIRECTORY IS TO RESIDE
*/
/*
*/
/* DDIRPRI ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */
/*
CYLINDERS (IF NEW DIRECTORY SPECIFIED)
*/
/*
*/
/* DDIRSEC ==> IPCS DUMP DIRECTORY PRIMARY ALLOCATION IN */
/*
CYLINDERS (IF NEW DIRECTORY SPECIFIED)
*/
/*
*/
/* DEBUG ==> SHOW DIAGNOSTICS IF CLIST PROBLEMS
*/
/*
*/
/*
*/
/* APAR OY62871 - FIX CISIZ SPECIFIED FOR INDEX AND DATA */
/* APAR OW13537 - SPECIFY CISIZE(4096) FOR INDEX ONLY
*/
/*
(LET DATA TAKE VSAM DEFAULT)
*/
/*
*/
/**************************************************************/
time, my defaults will suffice (unless you are processing DB2
SVCDUMPs or standalone dumps, in which case, you will need much
more space).
The #IPCSTJB CLIST will invoke the #IPCSDDR CLIST only
when the NEW parameter has been selected to create a new IPCS
VSAM dump directory (see Figure 2). The #IPCSDDR CLIST takes
care of this IPCS VSAM dump directory allocation using the same
keyword command names as #IPCSTJB. This is all pretty straightforward. The #IPCSTRM CLIST is only needed in a batch IPCS job to
ELSE ALLOCATE F(IPCSDDIR) DSNAME(‘&SYSUID..DDIR.DUMP’) SHR REUSE
IF &LASTCC GT 0 THEN +
DO
WRITE
WRITE &SYSUID..DUMP.DDIR NOT FOUND
WRITE SPECIFY #IPCSTJB NEW
FREE F(IPCSPRNT
EXIT
END
ISPEXEC LIBDEF ISPPLIB DATASET ID(‘SYS1.SBLSPNL0’)
ISPEXEC LIBDEF ISPMLIB DATASET ID(‘SYS1.SBLSMSG0’)
ISPEXEC LIBDEF ISPTLIB DATASET ID(‘SYS1.SBLSTBL0’)
ISPEXEC LIBDEF ISPSLIB DATASET ID(‘SYS1.SBLSKEL0’)
ISPEXEC SELECT PGM(BLSGLIBD) PARM(PANEL(BLSPPRIM)) +
NEWAPPL(BLSG) PASSLIB
ISPEXEC LIBDEF ISPPLIB
ISPEXEC LIBDEF ISPMLIB
ISPEXEC LIBDEF ISPSLIB
ISPEXEC LIBDEF ISPTLIB
FREE F(IPCSDDIR,IPCSPRNT)
EXIT
END
IF &BATCH EQ &STR(BATCH) THEN +
DO
IF &STR(&SYSISPF) EQ &STR(ACTIVE) THEN +
DO
WRITE #IPCSTJB BATCH CLIST MUST NOT BE EXECUTED UNDER ISPF
FREE F(IPCSDDIR,IPCSPRNT)
EXIT
END
WRITE #IPCSTJB CLIST BATCH EXECUTION
WRITE &SYSUID..DDIR.DUMP DUMP DIRECTORY STATUS IS &DMPSTAT
WRITE DATASET &SYSUID..IPCSPRNT WILL BE CREATED
IF &NEW EQ &STR(NEW) THEN +
DO
%#IPCSDDR VOL(&VOL) DDIRPRI(&DDIRPRI) DDIRSEC(&DDIRSEC) &DEBUG
END
ELSE ALLOCATE F(IPCSDDIR) DSNAME(‘&SYSUID..DDIR.DUMP’) SHR REUSE
IF &LASTCC GT 0 THEN +
DO
WRITE
WRITE &SYSUID..DUMP.DDIR NOT FOUND
WRITE SPECIFY #IPCSTJB NEW
FREE F(IPCSPRNT
EXIT
END
IPCS NOPARM
SETDEF ACTIVE LENGTH(200) FLAG(ERROR) +
DISPLAY(MACHINE,REMARK,STORAGE,SYMBOL) +
NOCONFIRM NOVERIFY
END
CONTROL NOFLUSH NOLIST NOMSG
IF &DEBUG EQ &STR(DEBUG) THEN CONTROL SYMLIST CONLIST MSG
DELETE ‘&SYSUID..DDIR.DUMP’ CLUSTER
DEFINE CLUSTER(NAME(‘&SYSUID..DDIR.DUMP’) +
VOLUME(&VOL) +
INDEXED +
FREESPACE(10,10) +
REUSE +
IMBED +
REPLICATE +
SHAREOPTIONS(1,3)) +
INDEX(NAME(‘&SYSUID..DDIR.DUMP.INDEX’) +
CYLINDERS(2,2) +
CONTROLINTERVALSIZE(4096)) +
DATA(NAME(‘&SYSUID..DDIR.DUMP.DATA’) +
CYLINDERS(&DDIRPRI,&DDIRSEC) +
KEYS(128,0) +
RECORDSIZE(384 3072))
IPCSDDIR ‘&SYSUID..DDIR.DUMP’
ALLOCATE FILE(IPCSDDIR) DSNAME(‘&SYSUID..DDIR.DUMP’) SHR REUSE
allow you to free IPCS print dataset allocation in order to rename the
IPCSPRNT dataset to your choosing (see Figure 3).
Now that we have a tool for IPCS dump processing, we first have to
get the dump from the dump dataset to DASD. If the dump is in one of
the system dump datasets (SYS1.DUMP?? where ?? is a number such
as 00 through 99) all you have to do is use IEBGENER to copy the
dump to your dump dataset. The SYS1.DUMP?? datasets must be
allocated LRECL of 4160, BLKSIZE of 4160 and RECFM F or FB,
besides DSORG of PS. The problem inherent with using the
TECHNICAL SUPPORT OCTOBER 1996
SYSTEM STRATEGIES
Figure 3: #IPCSTRM: Issue IPCS END Command and Free Files
(Only Needed for Batch Jobs)
PROC 0
/**************************************************************/
/*
*/
/* #IPCSTRM: IPCS ALL-PURPOSE INITIALIZATION CLIST
*/
/*
*/
/* CLIST TO END BATCH IPCS SESSION IN ORDER TO
*/
/* FREE IPCS FILES.
*/
/*
*/
/**************************************************************/
CONTROL NOFLUSH NOLIST NOMSG
END
FREE F(IPCSDDIR,IPCSPRNT)
//JOBCARD JOB
//*
//*************************************************//
//* BATCH INVOCATION OF #IPCSTJB
*//
//*************************************************//
//*
//IPCSNEW EXEC PGM=IKJEFT01,
// DYNAMNBR=75,REGION=8M
//SYSPROC DD DSN=MY.USER.EXEC,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
PROFILE PREFIX(DCTOM)
DELETE ‘DCTOM.SVCDUMP.IOSPURGA’
%#IPCSTJB NEW BATCH
SETDEF NOTERMINAL PRINT
SETDEF DSNAME(‘DCTOM.SVCDUMP.IOSPURGA’)
STATUS FAILDATA REGISTERS
SUMMARY FORMAT ALL
SETDEF TERMINAL NOPRINT
%#IPCSTRM
RENAME IPCSPRNT IOSPURGA
/*
SYS1.DUMP?? datasets is managing the resource. An installation must
have automated procedures in place to dump and clear the datasets
when they become filled. Another alternative is to use the new
MVS/ESA Version 5 dynamic dump datasets. Since MVS/ESA Version
5 offers much in the way of dynamic system variables, all you have to
do to utilize dynamic dumps is add the following commands to your
COMMND?? SYS1.PARMLIB member (where ?? is a command
suffix value):
COM=’DD NAME=SYSTEM.DUMP.&SYSNAME..D&DATE..&JOBNAME..S&SEQ. ‘
COM=’DD ADD,SMS=(DATA=DEFAULT,MGMT=DUMPSYS,STOR=DUMPSYS)’
COM=’DD ALLOC=ACTIVE
In the above situation, there are SMS classes that will put these dumps
directly to ML2 as soon as the volumes defined in the DUMPSYS
storage group fill up to a certain threshold. If you want DFHSM to
move these dumped datasets to ML2, then make sure your dump
dataset name is not SYS1. When using automatic SVCDUMPs, the
command to display dump titles (D D,T) should have the AUTODSN
keyword added. For example:
D D,T,AUTODSN=5
will display the last five automatically allocated dump datasets (unless
they have been migrated by DFHSM). The IPCS (and TSO) SYSDSCAN
will not show dynamic dumps!
If you are loading a standalone dump to DASD, it is a little trickier.
The little-documented BLKSIZE for the standalone dump tape is
29120 and the RECFM is FBS (see Figure 4 for sample JCL to load a
standalone dump to DASD from tape).
Now that your dump has been copied to DASD, it’s time to use the
#IPCSTJB initialization CLIST.1 After subtask completion, all nonshared subpools are freed. Some batch LSR control blocks are built in
non-shared protected storage which leaves batch LSR out of our performance analysis. The #IPCSTJB CLIST has been updated to use a
CISIZE of 4096 for the IPCS VSAM dump directory index component
Figure 4: Load Standalone Dump From Tape
//SADLOAD EXEC PGM=IEBGENER,
// REGION=5M
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//*
//SYSUT1 DD DSN=SADUMP,
// UNIT=(CART,,DEFER),
// LABEL=(1,NL,,EXPDT=98000),
// VOL=SER=00666,
// LRECL=4160,
// BLKSIZE=29120,
// RECFM=FBS,
// DISP=OLD
//*
//SYSUT2 DD DSN=YOUR.SADUMP.DASD.DSN,
// UNIT=(SYSDA,2),
// LRECL=4160,
// BLKSIZE=4160,
// RECFM=F,
// SPACE=(CYL,(70,20),RLSE),
// DISP=(,CATLG,DELETE)
Figure 5: IPCS Option 1 BROWSE
————————— IPCS - ENTRY PANEL ———————————COMMAND ==>
CURRENT DEFAULTS:
SOURCE ==> DSNAME(‘DCTOM.SVCDUMP.IEC999I’)
ADDRESS SPACE ==>
OVERRIDE DEFAULTS:
SOURCE ==> DSNAME(‘DCTOM.SVCDUMP.IEC999I’)
ADDRESS SPACE ==>
PASSWORD
==>
POINTER:
ADDRESS
REMARK
==> 00000010.%
==>
and let the data component take a VSAM default which, in this case, is
a fairly large control interval size of 18432 for 3390 DASD. Please
refer to IBM APARs OY62871 and OW13537 for more information. If
you want to speed up IPCS processing, I would recommend experimenting with the VSAM bufferspace (BUFSP) parameter on the
IDCAMS DEFINE CLUSTER statement since TSO does not support
the AMP parameter.
At the end of the #IPCSTJB CLIST are certain IPCS SETDEF
options I prefer to use. The LENGTH(200) tells IPCS that any LIST
command should display 200 bytes unless a specific length is supplied.
The FLAG(ERROR) tells IPCS to give me all messages except informational and warning messages. Non-error messages tend to make the
first-time IPCS user scramble down many paths (most wrong), tracking
down these messages. I activate the MACHINE keyword of the
DISPLAY SETDEF keyword because I want to see the ASID, STORAGE
KEY and ABSOLUTE ADDRESS OF AN AREA when listing storage.
I also turn on the STORAGE Option to make the storage look like
a printed dump. The IPCS SETDEF defaults for these are NOMACHINE
and NOSTORAGE. I always turn on NOVERIFY since I don’t need
confirmation messages for subsequent commands. I would also suggest
setting NOCONFIRM to avoid the following irritating IPCS messages:
BLS18168D PROCEED WITH COPY ENTER Y TO CONTINUE N TO TERMINATE
BLS18160D MAY SUMMARY DATA BE USED BY DUMP ACCESS ENTER Y TO USE
N TO BYPASS
Specifying NOCONFIRM will default the answers of these prompts to
Y. You want the summary data closest to the problem at hand. There are
new GLOBAL/LOCAL values in IPCS. GLOBAL will set default values
for the IPCS VSAM dump directory globally and LOCAL will set
default values for a given dump. My global values equal my local values
because I have yet to see a reason to set different values.
1. Before starting, I asked IBM why it wasn’t possible to use IBM local shared resources (LSR) to greatly speed up IPCS VSAM processing. The answer:Batch LSR is not supported
for IPCS since TSO uses a single TCB for each call.
SYSTEM STRATEGIES
Figure 6: IPCS Option 3 Utility DAE Selection 5
———————————————- DAE DISPLAY ———————————————
ENTER AN ACTION CODE NEXT TO AN ENTRY.
ENTER / NEXT TO AN ENTRY TO CHOOSE FROM A LIST OF ACTION CODES.
DATASET: ‘DCTOM.DAE’
DUMPS SINCE LAST DAE DISPLAY: 0
EVENTS SINCE LAST DAE DISPLAY: 0
TOTAL DUMPS SUPPRESSED:14557
SUPPRESSION RATE:
99%
A LAST
LAST
TOTAL DATE OF SYMPTOM STRING INFORMATION:
C DATE
SYSTEM EVENTS DUMP
ABEND REASON MODULE CSECT
V 12/01/95 PT31
15 04/06/93 S00C4 00000011 NUCLEUS IOSPURGB
11/27/95 PT31
144 08/21/95 S0002 00000030 IFG0199B #UNKNOWN
11/27/95 PT31
12 10/05/95 S004E 00C90202 DSNIDM DSNIMS1W
——————————————— DAE ENTRY DETAILS ——————- ROW 1 TO 9
TOTAL EVENTS: 15
TYPE: SVC DUMP
SYMPTOM STRING TRUNCATED
DATE
TIME
SYSTEM NAME
LAST (MOST RECENT) EVENT: 12/01/95 18:59:55 PT31
DUMP TAKEN:
04/06/93 23:58:31 PTIA
SYMPTOMS USED FOR DUMP SUPPRESSION:
MVS RETAIN
KEY KEY SYMPTOM DATA
EXPLANATION
MOD/ RIDS/ NUCLEUS
LOAD MODULE NAME
CSECT/ RIDS/ IOSPURGB
ASSEMBLY MODULE CSECT NAME
PIDS/ PIDS/ 5752SC1C3
PRODUCT/COMPONENT IDENTIFIER
AB/S AB/S 00C4
ABEND CODE-SYSTEM
REXN/ RIDS/ IOSPURGA
RECOVERY ROUTINE CSECT NAME
FI/ VALU/H 41B000101F3BD500300D98F3 FAILING INSTRUCTION AREA
REGS/ REGS/ 0E022
REG/PSW DIFFERENCE
REGS/ REGS/ 09258
REG/PSW DIFFERENCE
HRC1/ PRCS/ 00000011
ABEND REASON CODE
***************************** BOTTOM OF DATA *****************************
Each IPCS command creates symbol equates in the dump directory.
Some commands create hundreds of these entries. All of this activity
causes heavy control area/control interval split activity in the IPCS
VSAM dump directory. That’s why I always recommend doing most
of your IPCS processing in batch and only then using the ISPF interface.
You will have already suffered the performance penalty for the VSAM
split activity and the VSAM file will be “settled in” as such.
The IPCS Primary Option Menu looks much the same as in previous
MVS/ESA releases with the exception of Options 4 and 6. For those
active IPCS users in MVS/ESA Version 4 you may find it irritating that
the IPCS command Option 4 is now Option 6. Later, you will find
Option 4 INVENTORY a useful tool to prevent excessive typing. If
you use my #IPCSTJB CLIST, you may never have to go to IPCS
Option 0, which is used to set dump processing information. If you
decide to process a dump and enter information in the IPCS Option 0
screen, make sure you initiate dump processing by using a dialog
Option 1 list or an IPCS command and IPCS will load the dump into
the IPCS VSAM dump directory.
IPCS Option 1 is the BROWSE panel. You will find this full-screen
browse facility very helpful in working backward in storage for eyecatchers or running control block addresses. See Figure 5. The
ADDRESS field can be an absolute address, such as 0000010, which
will list storage at location 10. If I append a percent sign (%) to the end
of the address 00000010.%, this means use this value as a 24-bit
address pointer and list that storage area. If I use a question mark(?),
this simply means use a 31-bit address. If I have a full-screen Option 1
display, I can place a % or ? at the end of an address and simply go
there. It is a very handy facility! IPCS Option 1 has various commands
that will allow you to manipulate the storage entries in this stack. If I
enter the letter R over the address portion of the stack entry, IPCS will
create another duplicate stack entry. I can also use the letter E to edit a
stack entry to change the attributes from AREA to STRUCTURE(CVT)
using my 00000010.% pr evious example.
Other IPCS Option 1 stack commands include F, which will use the
IPCS CBFORMAT command against this pointer (which must be an
IPCS structure). Using F will allow you to format the control block
with one letter. Using letters I and D will allow you to insert and delete
Figure 7: IPCS VSAM Dump Directory Reorganization
//*
//***************************************************************
//* PERFORM TEMPORARY EXPORT OF CLUSTER BEFORE REORGANIZATION *
//***************************************************************
//*
//EXPORT EXEC PGM=IDCAMS,
// REGION=5M
//AMSDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//EXPOUT DD DSN=&&EXPOR T,
//
DISP=(,PASS,DELETE),
//
UNIT=(cart,,DEFER),
//
LABEL=(1,SL)
//SYSIN DD *
EXPORT
DCTOM.DDIR.DUMP
OUTFILE(EXPOUT)
TEMPORARY
/*
//*
//***************************************************************
//* DELETE EXISTING CLUSTER AFTER TEMPORARY EXPORT.
*
//***************************************************************
//*
//DELETE EXEC PGM=IDCAMS,COND=(0,NE),
// REGION=5M
//AMSDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE DCTOM.DDIR.DUMP CLUSTER
/*
//*
//***************************************************************
//* IMPORT CLUSTER BACK TO DASD TO REORGANIZE IT.
*
//***************************************************************
//*
//IMPORT EXEC PGM=IDCAMS,COND=(0,NE),
// REGION=5M
//AMSDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//IMPDSN DD DSN=&&EXPOR T,
// DISP=(OLD,DELETE,DELETE)
//SYSIN DD *
IMPORT INFILE(IMPDSN) OUTDATASET(DCTOM.DDIR.DUMP)
/*
stack pointers appropriately. Letters H and L will allow you to create
31-bit and 24-bit stack pointers respectively.
The IPCS Option 2 menu lists the bulk of the online dialog functions
you can use with IPCS. Selection 1 of SYMPTOMS will execute the
VERBEXIT SYMPTOMS command, which I sometimes find useful.
Selection 2 will perform a STATUS SYSTEM CONTENTION CPU
FAILDATA REGS, which I like a lot, except for the CONTENTION
which takes a long time to be processed. I would prefer the failure data
and registers (FAILDATA and REGS) be reported along with the SYSTEM information. Be careful not to blindly enter commands that may
take a lot of time and won’t solve your problem quickly. Selection 3
WORKSHEET will invoke a STATUS SYSTEM WORKSHEET
which is critical to solving problems involving global system analysis
(RSM dumps and standalone dumps in particular). You will see key
system indicators side-by-side for analysis. Selection 4 is the SUMMARY of ADDRESS SPACE and STARTED tasks and invokes the
SUMMARY KEYFIELD which is one of my favorite IPCS commands
to use to see at a glance the important ASCB/TCB/RB/CDE fields
of interest. Selection 5 invokes the ANALYZE CONTENTION IPCS
command, which may run longer than most IPCS commands due to
all of the symbol equates it must create. Selection 6 is COMPONENT
which displays a panel of all the different component analysis and trace
information you can do. There is an overwhelming temptation to just
start doing component traces. Resist the urge, and read about the component trace in the IBM manual, MVS/ESA Diagnosis: Using Dumps
and Traces (LY28-1845) before running these facilities.
Selection 7 will show you a trace formatting panel which covers
CTRACE (component trace),GTFTRACE,MTRACE (in storage syslog),
SYSTRACE (system trace which used to be VERBEXIT TRACE),and
MERGE (merge multiple traces). I would recommend using the IPCS
SYSTEM TRACE (SYSTRACE) Option off of the Selection 7 panel
SYSTEM STRATEGIES
(actually it is Option 2 then 7 then 4). The
SYSTRACE command will allow you to
specify special criteria to the system to get
only the trace records you need. A new facility in MVS/ESA Version 5 is the TIME format.
Now LOCAL/GMT timestamps look like
14:32:52.977663 instead of a hex timestamp
like AC24EEC-12787FE05. If you enter the
IPCS command yourself, it would be SYSTRACE TIME(LOCAL).
Of the items in the IPCS Option 3 Utility
Menu, I only use Selection 5 (DAE processing).
This online facility allows you to look at
the dump analysis and elimination (DAE)
dataset and (optionally) change entries in it
(see Figure 6). The DAE information combined with in-storage LOGREC information
(VERBEXIT LOGDATA) will provide just
the right amount of diagnostic data to solve
most problems.
IPCS Option 4 is the new INVENTORY
option. It will allow you to delete dump
directory information with or without deleting
the original dump dataset. I use this delete
dump (DD) option the most, although some
of the other things you can do are:
■ BR - activates the BROWSE option
of the IPCS dialog for that source;
■ DD - deletes descriptions of the source
and, optionally, the source dataset;
■ DT - deletes translation results for
the source;
■ LA - lists dump description with
storage attributes;
■ LB - lists dump description with
record locations;
■ LD - lists dump description with
dumped storage summary;
■ LT - lists dump description with
translation results;
■ LZ - lists dump description with
storage attributes, record locations,
dumped storage summary and
translation results; and
■ SD - established the source as both
the local and global IPCS default.
IPCS Option 5 SUBMIT allows you to submit IPCS batch jobs while under IPCS. My
#IPCSTJB CLIST will not support this option
and I don’t know why you would want to do
such a thing. It is important to diagnose one
problem at a time, and this option does not
allow you to do that!
IPCS Option 6 is the list of all the IPCS
commands you can use. IPCS Option 6 is
also my favorite, since I’ve learned all of
these commands and usually know exactly
what I want to do. If you spend a few minutes every other day learning my favorite
IPCS commands (which I will cover later),
in no time you will know enough to solve
most problems.
IPCS COMMANDS: AUTHOR’S FAVORITES
The IPCS SELECT CURRENT ERROR
command will display the ASID, JOBNAME,
ASCBADDR and SELECTION CRITERIA
for the appropriate address spaces. An example
of SELECT CURRENT ERROR would be:
ASID
————
0001
00B2
JOBNAME
———————
*MASTER*
TSOUSER
ASCBADDR SELECTION CRITERIA
———————— —————————————————
00FD5180 CURRENT
00F4FA00 ERROR
The
ERROR
indicator
is
any
ASCB/ASXB/TCB error indicator that indicates the address space is in error. It’s handy
to issue the IPCS CBSTAT command to get this
address space (ASCB) STATUS) as follows:
ISSUE CBSTAT XXXXXXXX. STRUCTURE(ASCB)
(where XXXXXXXX. is the ASCBADDR)
The CBSTAT information is a summarized
version of the VERBEXIT SRMDATA command which I will cover later. You can find
out if a address space is swapped in or out and
the reasons why such as input terminal wait
(user hasn’t pressed enter) or detected wait
(ENQ or DFHSM recall for example). You
will also get information on address space status such as if the address space was forced out
(S0A22 abend).
IPCS stands for
Interactive Problem
Control System,
although most people
(myself included)
use it just for
looking at unformatted
storage dumps.
The IPCS STATUS SYSTEM command
will provide you with pertinent information
such as when the dump was taken. The field to
note is the PROGRAM REQUESTING
DUMP. The most common entries would be
SVCDUMP for a synchronous dump (the
current TCB/RP are in the failing task for the
dump) or IEAVTSDT for a scheduled dump
(system issued SDUMP or abend, and you
must find failing TCB/RB in the dump).
I usually issue the IPCS STATUS FAILDATA
REGISTERS command to obtain the PSW
and the general/access/control REGISTERS.
The IPCS STATUS FAILDATA REGISTERS
will do an implied IPCS WHERE command
and tell you (if possible) the storage the
PSW points to which can be very handy. The
IPCS STATUS WORKSHEET command is
most important in scheduled SVCDUMPs
(IEAVSDT) for real storage manager (RSM)
failures or standalone dumps. IPCS STATUS
WORKSHEET will provide you critical data in
the logical configuration communications area
(LCCA) to determine if a processor is spinning
(IHR1 offset X’208’), dispatcher flags are at
offset X’21C’ and automatic CPU recovery
[ACR] is at offset X’2B4’. The PSA fields of
note are the current ASCB/TCB, supervisor
bits (SUPER at X’228’ locks held CLHS at
offset X’2F8’) and functional recovery routine
(FRR) stack areas at offset X’380’. I would
recommend you get comfortable with looking
at these areas in a non-critical SVCDUMP
other than a RSM problem or a standalone
dump to get a feel for the data areas.
The IPCS WHERE command will take an
address and inspect the MVS/ESA link pack
directory entries (LPDE) and contents directory
entries (for non-LPA modules) to tell you what
load module is at this address. It would be a
nice IBM option to have a special overlay
structure that would tell you the CSECT
(SMP/E MOD entry) of the storage. You have to
take the load module address and figure out the
CSECT offset to determine the PTF level of the
module. If you do a IPCS WHERE command
for a NUCLEUS module, you will get the proper information for a IBMLINK search since the
system nucleus is linkedited with the scatterload attribute. ACTIVE STORAGE is not supported for this command (which could be
another IBM enhancement).
The IPCS SUMMARY JOBSUMMARY
will report on all system jobnames and completion codes at a single glance. Remember you
may be dealing with more than one non-zero
completion code. IPCS will internally invoke
the IPCS CBSTAT facility for the address space
which will give you information on whether
the JOBNAME is in a long wait, swapped out
or if another condition exists. The COMP field
of the SUMMARY JOBSUMMARY is the
most important field in this listing. For a
COMP of 0405C000 the first byte indicates
that a STEP abend has been requested. If it
was a X’80’then a dump has been requested.
To see the rest of the indicators for the COMP
completion code, look at field TCPCMP in the
SYS1.MACLIB macro IKJTCB. It is important to know the exact details of how the
abend occur red. This additional information
may help you solve the problem quicker.
The IPCS SUMMARY KEYFIELD command will show the key ASCB fields (and corresponding IPCS CBSTAT information from
SRM) that will let you see at a glance exactly
what has happened. For the program request
blocks (PRBs) listed under the task control
blocks (TCBs) remember the TCBs are from
oldest to newest but the PRBs are from newest
to oldest in the IPCS SUMMARY KEYFIELD.
In the report from the IPCS SUMMARY FORMAT the TCBs are oldest/newest and the PRBs
SYSTEM STRATEGIES
are also oldest/newest but you are presented with a great deal of information to absorb, and most times this will serve to confuse the problem solver. When you just need to take a quick look at some storage,
nothing beats the IPCS LIST command. The LIST defaults are established in the IPCS SETDEF command (in our case listing 200 bytes).
The IPCS list command output has a field called KEY(XY) where X is
the storage protect key and Y is another indicator. If this KEY field is
KEY(FF) then the stor age key is not known. Refer to SYS1.MACLIB
member BLSRDRPX for more details on these storage key/reference
bit settings. The IPCS LIST command also uses the 24-bit indicator
(%) and the 31-bit indicator (?) as a pointer to storage listed. I have
found it very useful to use the LIST xxxxxxxx. STRUCTURE command (where xxxxxxxx. is the address) because the STRUCTURE keyword will provide hex offsets from your address which can be useful for
getting module offset information.
I find myself issuing the SYSTRACE TIME(LOCAL) command to
get the system trace table information (this was formerly executed as
VERBEXIT TRACE). I usually perform a find for ‘ *’to see any event
that was marked as an exception by IPCS. The good information is
usually toward the back of the trace table. Make sure to back up a few
entries and see what happened immediately before (let’s say) your
SVC abend (indicator would be *SVC). If you had a control block
chain of more than a few entries and suspected a broken chain entry,
how would you solve this on a timely basis? The IPCS RUNCHAIN
command will trace through control blocks that have pointers to other
control blocks for a single chain. If you want the system to go through
control block chains at many levels, then use the IPCS SCAN command (and prepare for a long wait). If I wanted to run through the
MVS/ESA subsystem control blocks and create IPCS equate entries for
SSCVT001, SSCVT002, etc., I would issue this command:
NaSPA board member Tom Bryant has more than 18 years of experience
in data processing, with 15 of those years as an MVS/XA/ESA systems
programmer.
©1996 Technical Enterprises, Inc. Reprinted with permission of
Technical Support magazine. For subscription information, email
mbrship@naspa.net or call 414-768-8000, Ext. 116.
RUNCHAIN ADDRESS(10.%+128?+18?) NAME(SSCVT) LINK(4) +
LENGTH(32) EXEC((LIST X)) CHARACTER
The address field takes the value (or generated values) from the
ADDRESS field and creates a control block called SSCVTxxx (where
xxx is a generated number). Our forward pointer is at X’4’ which is
indicated by the LINK field. We know our SSCVT field entry is 32
bytes long, hence the LENGTH(32) field. For each time we invoke the
control block equate routine, list the current SSCVTxxx created in
character from the EXEC((LIST X)) CHARACTER. This command
can save you hours of time going through control block chains. Try a
variation of this command to go through the ASCB or TCB chains.
The IPCS LPAMAP and IPCS VERBEXIT NUCMAP commands
will present you information on the MVS/ESA link pack area and the
nucleus respectively. I prefer to invoke both of these commands using
EPA (entry point address) since I am more address-conscious in the
dump than module-name-conscious.
The last IPCS command I will examine is the VERBEXIT
SRMDATA command. This output will present detailed SRM user
control block (OUCB) information such as the existence of a PRIVILEGED PROGRAM, the SWAP OUT reason for a DETECTED
WAIT, TERMINAL INPUT or other, where the user has been
swapped (such as auxiliary storage). Additionally, for MVS/ESA
Version 5 SRM goal mode environments you will see the SERVICE
CLASS and WORKLOAD information. Since this is a large amount
of output, I perform a FIND command for ASID in column 2 and continue the finds while I look at the data. See macro IRAOUCB in
SYS1.MODGEN for more information on the SRM OUCB. Figure 7
is the JCL I use to periodically reorganize the IPCS VSAM dump
directory which will become fragmented over time.
I hope this article has given you a feel for IPCS in an MVS/ESA
Version 5 environment, and provided shortcuts you can use to make your
problem solving a brief encounter instead of a lifetime commitment. ts
TECHNICAL SUPPORT OCTOBER 1996
Download