Dave's IPCS page :: FAQ

I let him run on, this Papier-Mâché Mephistopheles, and it seemed to me that if I tried I could poke my forefinger through him, and would find nothing inside but a little loose dirt, maybe.
-- From Joseph Conrad's Heart of Darkness
Can I email the FAQ writer to help me shoot a dump in IPCS?

Please read my contact page. Sending me email asking how to shoot your dumps in IPCS is an exercise in futility.

That being said, I'd love to get tips you might have to put here to share with others.


How do I learn how to shoot dumps using IPCS?

Some suggestions but not a complete list:



How do I change the width of the IPCS output?

There's trouble in paradise. You have this gorgeous widescreen monitor and you're using more than 80 columns in IPCS but then you'd like to copy&paste some IPCS output into an email. Use the following command to change the output of some IPCS commands:
IP PROFILE LINESIZE(80)
And to set it back to max out to your terminal width:
IP PROFILE NOLINESIZE
Hint #1: IP PROFILE LIST shows the profile settings.

Hint #2: I've found that IP VERBX MTRACE displays better with IP PROFILE NOLINESIZE after the recent z/OS level that added the better formatting.


How do I suppress that annoying BLS18160D prompt?

With the IPCS default setting, everytime you initialize a dump, there's a prompt:
BLS18160D May summary dump data be used by dump access?  Enter Y to use, N to bypass. 
99% of the time, you want the summary dump so you can eliminate this prompt by issuing this command:
IP SETDEF NOCONFIRM
Hint: You'll need to reissue the command if you reinit your dump directory.


How do I change the default length of the LIST command?

The default is a huge 4 bytes! Change it so you don't have to add "LENGTH(xxx)" on every LIST command:
IP SETDEF LENGTH(4096) 
Hint: You'll need to reissue the command if you reinit your dump directory.


How do I see the storage key on the LIST command?

Use the SETDEF command to display Machine information:
IP SETDEF DISPLAY(MACHINE)
Here's an example showing that the ECVT resides in Key 0 memory:
IP LIST ECVT
ECVT - Extended Communications Vector Table                            
LIST 019C7018. ASID(X'0001') LENGTH(X'0388') STRUCTURE(Ecvt)           
ASID(X'0001') ADDRESS(019C7018.) KEY(00) ABSOLUTE(17F99018.)           
+00000 019C7018.                   C5C3E5E3 02821528 |        ECVT.b..|
Hint: You'll need to reissue the command if you reinit your dump directory.


How do I change the dump directory volume when I allocate the IPCS dump directory?

The IBM CLIST that allocates the dump directory has a volume name of VSAM01 and if you use the ISPF IPCS dialog, you'll probably have an error. Here's the command that allocates the IPCS dump directory that you can invoke outside of the IPCS dialog to specify allocation attributes:
 TSO %BLSCDDIR VOLUME(volume)   
In addition to the volume, here are the current keywords that BLSCDDIR takes: BUFFERSPACE() DATACLAS() DSNAME() FILE() MGMTCLAS() NDXCISZ() RECORDS() STORCLAS()


What commands should I issue after creating a new IPCS dump directory?

These are subject to your needs but here's what I do:
IP SETDEF NOCONFIRM
IP SETDEF LENGTH(4096) 
IP SETDEF DISPLAY(MACHINE)


How do I speed up IPCS performance?



How do I format STCK values?

In z/OS 1.4 and higher there is a new LISTTOD command available:
IP LISTTOD tod_hex_string
This is the older method which also works in later releases:
IP CBF address STR(TODCLOCK)


How do I see offsets with the IPCS LIST command?

Here's a sample LIST command:

IP LIST 0189F340. LENGTH(128)
0189F340. C5C3E5E3 020467D0 E2E5E2C3 D7D3C5E7 |ECVT...}SVSCPLEX| 
0189F350. 00000000 00000000 0157D510 0157D5EA |..........N...N.| 
0189F360. 0157D6D0 0157D7DA 29C78228 00000000 |..O}..P..Gb.....| 
0189F370. 80000000 A9D48040 00000000 00000000 |....zM. ........| 
0189F380. 00000000 00000000 00000000 022F0048 |................| 
Although not obvious, at least to me from reading the IPCS manual, you can simply add "STR" to the end of the LIST command to see offsets displayed on each line:
IP LIST 0189F340. LENGTH(128) STR
+00000 0189F340. C5C3E5E3 020467D0 E2E5E2C3 D7D3C5E7 |ECVT...}SVSCPLEX| 
+00010 0189F350. 00000000 00000000 0157D510 0157D5EA |..........N...N.| 
+00020 0189F360. 0157D6D0 0157D7DA 29C78228 00000000 |..O}..P..Gb.....| 
+00030 0189F370. 80000000 A9D48040 00000000 00000000 |....zM. ........| 
+00040 0189F380. 00000000 00000000 00000000 022F0048 |................| 


How do I find out the ASID for a jobname?

To see a list of ASIDs with jobnames, use this command:
IP SELECT ALL 
Here is some example output:
ASID JOBNAME  ASCBADDR  SELECTION CRITERIA 
---- -------- --------  ------------------ 
0001 *MASTER* 00FD9B00  ALL
0002 PCAUTH   00F59500  ALL
0003 RASP     00F59380  ALL
...
003F PORTMAP  00FC4900  ALL


How do I process dumps that don't match the OS I'm using IPCS on?

For example, the SYSTRACE command fails with an error like this:

********  INVALID CONTROL BLOCK  TOB /02 AT 019721F8 = E3D6C240/01.
********  ERROR OBTAINING  TTCH/03 AT 7F06B000   RC = 04.          
******** SYSTEM TRACE PROCESSING IS TERMINATED.                    
You need to use the SYS1.MIGLIB that matches the operating system level where the dump was taken. For example, run IPCS in batch and steplib to the correct SYS1.MIGLIB. Where I work, we copy SYS1.MIGLIB to a dataset that has the OS level in it and a front end panel allows us to select the right level for the dump.

IBM recommends that you use the IPCS that matches the operating system level.


How do create my own definitions for the CBFORMAT command?

You use the BLSQMDEF and BLSQMFLD macros. See the Saver example made from the IHASAVER macro.
IP CBF 6F50. MODEL(SAVER)
SaveArea: 00006F50                                                  
   +0000  PLI...... 00000000  PREV..... 00000000  NEXT..... 07D09FFC
   +000C  GRS14.... 80FDFF08  GRS15.... 87D04560  GRS0..... FD000014
   +0018  GRS1..... 00006FE8  GRS2..... 00000040  GRS3..... 007E7AD4
   +0024  GRS4..... 007E7AB0  GRS5..... 007FFB00  GRS6..... 007D9FE0
   +0030  GRS7..... FD000000  GRS8..... 007FCD88  GRS9..... 007FF2E0
   +003C  GRS10.... 00000000  GRS11.... 007FFB00  GRS12.... 8351FBAA
I prefer the IHASAVER names for the non-register fields instead of the ones in the standard provided method of displaying the register save area:
ip cbf 6F50.     STR(regsave)
SA: 00006F50                                                 
   WD1...... 00000000  HSA...... 00000000  LSA...... 07D09FFC
   RET...... 80FDFF08  EPA...... 87D04560  R0....... FD000014
   R1....... 00006FE8  R2....... 00000040  R3....... 007E7AD4
   R4....... 007E7AB0  R5....... 007FFB00  R6....... 007D9FE0
   R7....... FD000000  R8....... 007FCD88  R9....... 007FF2E0
   R10...... 00000000  R11...... 007FFB00  R12...... 8351FBAA


How do I fix "IPCSPR00 not found" error?

You get this error message after invoking IPCS:
BLS04017I parmlib member IPCSPR00 not found 
One thing you can do is to create a personal parmlib dataset with a bare bones IPCS parmlib member in it. I allocate two libraries to ddname IPCSPARM:
//IPCSPARM DD DISP=SHR,DSN=userid.PARMLIB   
//         DD DISP=SHR,DSN=SYS1.IBM.PARMLIB  
In my userid.PARMLIB PDS there is the IPCSPR00 member:
/* BARE BONES IPCS PARMLIB MEMBER - 2007-01-31 */   
   LINELENGTH(137) PAGESIZE(60) NODSD NOPDR;       


How can I undermine my dump taking and viewing?

One key way to hurt these processes is to have the incomplete and out of date dump parmlib members.

These are usually the BLSxxxxx and the xxxIPCSP members.


How can I ensure I have the correct parmlib members for dumps?

The best way, in the FAQ writer's opinion, is a MVS parmlib concatenation. The first library in the PARMLIB concatenation has all of the installation's overrides to the IBM default members. There will be no IPCS parmlib members in this library. The second library is the distributed parmlib from IBM specific for that release. You avoid having to copy all of the members needed by dump processing for each release by always getting the correct members as the come from IBM.

Steps to achieve this:

  1. Add parmlib statements to your LOADxx member:
    *        |<------------- DATASET NAME ------------->| VOLUME
    *---+----1----+----2----+----3----+----4----+----5----+----6
    PARMLIB  SYS1.PARMLIB                                 *MCAT*
    PARMLIB  SYS1.IBM.PARMLIB                             ******
    
  2. IPL and then ensure that the concatenation is in use:

    D PARMLIB
                             
     IEE251I 09.11.01 PARMLIB DISPLAY 003    
      PARMLIB DATA SETS SPECIFIED            
      AT IPL                                 
      ENTRY  FLAGS  VOLUME  DATA SET         
        1      S    MCAT01  SYS1.PARMLIB      <-- Usually on master cat volume     
        2      S    ZOSAR1  SYS1.IBM.PARMLIB  <-- On SYSRES 
    
  3. Rather than delete them, I prefer a 3.3 move of the dump processing members out of the first parmlib dataset into a temporary library so you can recover a member if you select the wrong one.
  4. IPL again or issue this command to fix non-IPCS dump processing:
    S BLSJPRMI,SUB=MSTR
    Note: your BLSJPRMI started task may be old and you need the latest one from the IBM provided SYS1.PROCLIB. The new one removes the hard coded SYS1.PARMLIB so it can use the PARMLIB concatenation.


Tip: On a related note, I also recommend applying this technique to the PROCLIBs too:



How can I tell which control block models I have?

It's listed in the Friendly manual of course. But another way to see what the current IBM supplied definitions at the operating system level is to browse the BLSCECT member in the parmlib. This also allows you to see how IPCS works.


Is the dump a complete dump?

It's not so much of a problem now with non-static dumps but there is always the danger with the pre-allocated SYS1.DUMPxx datasets to get a partial dump.
IP LIST E0. BLOCK(0) L(16) 
If its all zeros, then the dump was completely taken.


When was the system IPL'd?

IP IPLDATA  


What are some new IBM IPCS functions?



How do I run IPCS in batch?

If don't want to tie up your TSO session on a huge Stand Alone Dump or to quickly format the SYSTRACE for a dump from an earlier operating system, you can run IPCS in Batch:
// job card here 
//*                                                          
//IPCSBTCH EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4M,TIME=1439 
//*STEPLIB  DD DISP=SHR,DSN=SYS1.MIGLIB,UNIT=3390,VOL=SER=pack <- optional 
//SYSPROC  DD DISP=SHR,DSN=SYS1.SBLSCLI0                     
//SYSTSPRT DD SYSOUT=*                                       
//IPCSPRNT DD SYSOUT=*                                       
//*IPCSPARM DD DISP=SHR,DSN=userid.PARMLIB    <-optional                   
//*         DD DISP=SHR,DSN=SYS1.IBM.PARMLIB  <-optional            
//SYSTSIN  DD *                                              
 PROFILE MSGID                                               
 DELETE SPFTEMP1.IPCSBAT.SAD.DDIR                 
 BLSCDDIR DSNAME(userid.SPFTEMP1.IPCSBAT.SAD.DDIR) +        
          VOLUME(vvvvvv) +                                   
          RECORDS(25000)                                     
 IPCS                                                        
 SETDEF DSNAME('your.dump.dsname') +    
        LIST NOCONFIRM LENGTH(4096) DISPLAY(MACHINE)         
 VERBX SADMPMSG       /* TRIVIA ABOUT THE DUMP PROCESS */    
 COPYCAPD             /* SHOW CAPTURED DUMPS (IF ANY) */     
 SYSTRACE TIME(LOCAL)                                        



Return to the main IPCS page.


Last Updated: 2011-04-11
This web page is © 2011+ by David Alcock. All Rights Reserved.