The official ISRDDN documentation has now made it into the OS/390 R2.10 books. This section remains available because of the info at the start of the document, the more readable pictures, and because the page provides a clickable index. There may be some differences between this document and the official publications. |
The ISRDDN Diagnostic utility
© IBM Corp, 1999, All Rights Reserved.
Draft v0.01 Oct 11, 1999
This page provides information about the ISRDDN utility which is shipped with ISPF version 4. Most of the features described here are available in Versions 4.5 and 4.8 of ISPF (OS/390 2.5 and higher). A few of the features described here are not currently available in ISRDDN but are being considered for inclusion in the future. These include the updated duplicates display, Mod5 support, VTOC point and shoot, disabling of confirmation panels, FIND and LOCATE processing and a few other minor things. Most of the features which are not yet available in ISRDDN are available in the latest release of TASID which is available from download at this site. (Note, however, that the storage viewing facilities in TASID are significantly different than those in ISRDDN).
Descriptions on this page of unavailable features does not mean that those features will be made available in the future because such plans are always subject to change.
ISRDDN was recently updated by OW37566. Please see the description for OW37566 to see which features were added by that APAR.
The contents of this page are being considered for inclusion in the ISPF User's Guide, so please direct comments about this documentation to the author at nadel@us.ibm.com.
Revisions since Oct 5 draft:
Storage location file must be sequential. PDS member not supported.
Added that ISRDDN will check for mixed concatenations automatically.
![]()
The ISRDDN diagnostic utility
The Current Data Set Allocations list
List of figures in this document
![]()
ISRDDN is a utility that was written to assist IBM support personnel in evaluating and solving problems. It provides a list of allocated DD names, a list of system ENQs, a list of data sets causing system ENQ contention, and a primitive means of viewing storage within a TSO user’s address space. ISRDDN also provides some facilities for gathering information about your environment.
To invoke the ISRDDN program, type TSO ISRDDN on any ISPF command line.
ISRDDN can be used to manipulate the data sets which are allocated, but it also provides enough facilities to answer questions like
| Where did a module I have loaded come from? | |
| What data sets contain member ABC? | |
| Are the I/O errors and ABENDs I’m getting due to mixed record format allocations? | |
| Who is currently allocated to data set ‘SYS1.BRODCAST’? | |
| What member names or LPA load modules are duplicated in my current allocations? | |
| How many members are in the allocated libraries and which libraries are empty? | |
| Am I running ISPF out of LPA or from STEPLIB? |
The allocated DD name list shows you all of the DD names allocated to your TSO session. From the list you can perform functions such as Edit or Compress against individual data sets, DD names, or sets of DD names. You can also perform actions against the entire list of displayed DD names
The ENQ list, which is available by typing ENQ on the allocation list command line, shows you ENQs on your system. You can limit the size of the list by specifying the QNAME, RNAME, job, user or address space name, and system name.
The ENQ contention list, available by typing CON on the allocation list command line, shows you ENQ contentions on your system for data sets (QNAME SYSDSN).
You can Browse storage using the BROWSE primary command from the allocation list. You can only browse storage which an unauthorized program can see (key 8 storage).
The Current Data Set Allocations list
When you start ISRDDN, you will see the Current Data Set Allocations list. On the right side of the display is a list of DD names and their associated data sets. The list of data sets may also contain indicators of DUMMY allocations, subsystem files or allocations to the terminal. The DD name is shown in white unless the first data set in the concatenation is scrolled off the top of the screen. If the first data set in a concatenation is not on the screen, the DD name will be yellow.
In the center of the display is a column of 1 character input fields preceded by greater-than signs (>).
These input fields are used for line commands such as E for edit or I for information.
The left side of the display contains columns of information about individual data sets. When you scroll right or left, the left side of the screen will change.
Initially the left side of the screen will contain the volume name and disposition. If the disposition is red, then there are other jobs waiting to use this data set as shown in Figure 1. Use the Q line command to see what jobs are waiting. Also, you can view VTOC information for a volume by placing the cursor on the volume name and pressing the Enter key.
If you scroll right once, you will see the attributes of each data set as shown in Figure 2. For some types of allocations, such as subsystem allocations, you may see different information. ISRDDN will automatically check for mixed concatenations when it is started. If you have concatenations of mixed data set types or formats, you will be shown a message to that effect when you press the ENTER key or scroll the first time.
If you scroll right a second time, you will see information (Figure 3) including whether the DD name is open and if so, by how many active DCBs. You will also see the indicator *SMS* if the data set is SMS managed, and information about jobs waiting on the resource. For JES files you may see additional information such as the class and the writer name.
Some primary commands (MEMBER and COUNT) place messages in a fourth status screen (Figure 4), If messages exist and you scroll right again, you will see the messages. The message screen is only shown if messages exist so if messages do not exist, a third scroll to the right will return you to the initial screen.
The Current Data Set Allocations list supports both primary commands and line commands. The displayed list is the list of DD names that you can see by scrolling up and down. You can use primary commands to limit what is in the displayed list. Many of the primary commands work only on the displayed list, so it is important to know that you can limit the contents of the list. ISRDDN can also create some pseudo-DD names which show useful system data set names. For example, the LPA command adds two pseudo-DD names, LINKLIST and LPALIB which contain lists of the current link list and LPA libraries.
The line commands and primary commands are listed below. Each command contains an example of how you might use the command to solve a particular problem, but of course the commands are not limited to just these problems. Specific usage examples are given to show you how ISRDDN can be used as a problem solving tool in a wide range of situations.
Allocation list line commands are entered next to a DD name or data set. By default the allocation list is in short format. This means that for concatenations, the DD name is next to the first data set name in the concatenation.
When a line command is entered next to a DD name, the command is intended to work on the DD allocation rather than the data set named on that line. For example, an E command next to the DD name which refers to a concatenation will edit the whole concatenation. If you want to edit just the first data set in a concatenation, use the LONG command to place the list in long format. In long format, the DD name for a concatenation is on a separate line so that you can place line commands next to the first data set name in the concatenation.
The edit, browse, view, and member list commands are sensitive to the results of the MEMBER primary command. When the MEMBER primary command searches the displayed list for a member or members matching a name pattern, the member or pattern is shown in the list. Placing an E, B, V, or M next to a name in which the member or pattern was found will display either a member list with member names matching the pattern or the specific found member. See the MEMBER primary command for more information.
The E line command edits a data set or concatenation. It can be used on any data set or any DD name allocated to a data set (real or VIO). You might want to use the E line command for editing temporary files such as JCL which was created by file tailoring and written to the ISPCTLn DD name.
The B line command browses a data set or concatenation. It can be used on any data set or any DD name allocated to a data set (real or VIO). You can use the B line command for browsing allocated files. For example, the compress option in the PDF utilities, option 3.1, creates a listing data set which is sometimes allocated to the ISPCTL1. When you press the HELP key after compressing a data set in option 3.1, you may see that the listing was saved in a temporary data set. The B line command in ISRDDN is an easy way to browse that data set.
Use the V command to view a data set or concatenation. This is similar to E (edit) but there is no SAVE command. Use this when you want to view a data set and modify it for easier viewing without risking changes to the data set.
or Z - CompressUse the FREE command to free an allocation. The Free command must be specified next to a DD name, although F commands next to data sets in a concatenation with an F next to the DD name are ignored because those data sets are removed from the list before the F commands are processed.
The F command uses SVC 99 (dynamic allocation) to free the DD name. However, if SVC 99 can not free the data set, ISRDDN invokes TSO’s FREE command which may write a message to the screen with information on why the free failed. This command is useful when you need to free allocations such as those left by prematurely terminated or poorly behaved programs.
Use the Compress command to compress partitioned data sets. The compress command can be used with data sets that are allocated as shared and can be used next to data set names or DD names.
The I command attempts to invoke the PDF data set information utility to display information about a data set. It can be used next to any real data set name. VIO data sets are not supported. This command can provide information such as the number of allocated directory blocks or a data set’s SMS management class, or other information that is not shown by scrolling the Current Data Set Allocations list left or right.
The Q command will show all SYSDSN and SPFEDIT ENQs that exist for a data set. This command is useful when you want to see what other users or jobs are using a data set you have allocated. Using the Q command provides the same information as using the ENQ primary command and selecting an RNAME of the data set name.
Allocation list primary commands
Primary commands are used to limit the contents of the displayed list, to add pseudo DD names, to operate on all the contents of the displayed list and to invoke other ISRDDN options.
All primary commands can be invoked with their minimum unique name. For example, MEMBER can be abbreviated as M while CLIST can be abbreviated as CL. In this list, the name if the primary commands are shown with the minimum abbreviation in capital letters.
and EXclude
and LocateONLY and EXCLUDE are used to limit the DD names in the displayed list. They take one operand, a whole or partial DD name. For example the command O PLI causes the list to contain only DD names which contain the string "PLI" such as STEPLIB and ISPPLIB. EXCLUDE can also be abbreviated as X.
The ONLY and EXCLUDE commands are useful when you want to limit the DD names or pseudo-ddnames that are operated on by commands like MEMBER and DUPLICATES. They are also helpful in reducing the size of the displayed list so that it is easier to view.
FIND and LOCATE search the list for a string. LOCATE looks only at DD names and always locates the first matching DD name. FIND looks at everything currently in the displayed list and finds the string starting at the cursor position. You can repeat a FIND operation by pressing the RFIND key.
When a string is found by FIND, the string is highlighted and the cursor is placed on the string.
When a string is found by LOCATE, the string is highlighted and the cursor is placed in the line command area next to the located DD name.
The RESET command rebuilds the list. In most screen formats the list is automatically rebuilt when you press enter. However, if you have used the COUNT command or the MEMBER command and have messages showing in the list, you may need to use the RESET command to refresh the list.
and LONgThe SHORT and LONG commands alter the format of the list. The SHORT command places the DD name of a concatenation next to the first data set (see Figure 1 ). The LONG commands formats the list with DD names of concatenations placed on a separate line before the data set names (see Figure 5).
The short format shows more information on one screen. Use the long format when you want to use line commands that operate on whole concatenations, such as E and V, on only the first data set in a concatenation.
The Member command is probably the most useful command in ISRDDN. MEMBER searches the displayed list (or just DD names containing a given string) for members which match a pattern. For example, the command M ISRSUBS will search the data sets in the displayed list, the job pack area and the link pack directory for members named ISRSUBS. Data sets which contain the member will be flagged with a message on the left side of the list as shown in Figure 6.
If the name is the name of a loaded module in the job pack area or LPA, you will also see a panel similar to the panel shown in Figure 9.
When a member name is used on the member command (eg: M ISRSUBS) and an E, V, B line command is used next to a data set in which the member was found, that single member is edited, viewed or browsed. When the M line command is used, the member list is show with that member at the top.
When a member name pattern is used on the member command (eg: M ISR*) the E, V, B and M line commands will display member lists with members that match the given pattern.
Use the MEMBER command in situations where you don’t know where a member is coming from or where you suspect that you may be accessing the wrong copy of a member. For example, if you are developing ISPF panels and you don’t see your version of the panel being displayed, you can issue the MEMBER command to search for other copies of the panel.
Usually the MEMBER command operates on the entire displayed list. You can add a second operand which is a partial DD name. For example, the command M ISRSUBS PL would search only DD names with the string PL in it such as ISPLLIB or STEPLIB. This avoids having to use the ONLY command to limit the search.
The CLIST command creates a CLIST which contains TSO ALLOCATE statements to reproduce the allocations in the displayed list. The CLIST name is ‘userid.ISRDDN.CLIST’ or ‘prefix.userid.ISRDDN.CLIST’.
Use this command when you want to change allocations for testing purposes. For example, to add a panel library to your ISPPLIB concatenation,
The COUNT command displays the number of members in a partitioned data set. The number of members is shown in the message area on the left side of the list.
COUNT can be used to find out if you have empty data sets in your concatenations. For example, if you want to find out if all members of an SCLM controlled library system were successfully promoted, you can edit the hierarchy, invoke ISRDDN and use the COUNT command to verify that all of the expected libraries in the concatenation are empty.
Like the MEMBER command, you can add a whole or partial DD name to limit the number of DD names which are searched.
The DUPLICATES command searches all of the partitioned data sets in the displayed list and also LPA and displays a list of duplicate names. From the duplicates list, you can use the E (edit), B (browse), and V (view) line commands to view the PDS member or LPA storage. Use the duplicates command to see where you might have potential conflicts with old or modified versions of load modules, Rexx or CLIST programs, ISPF panels or other PDS members.
For module names found in the link pack directory, the address of the module and its size are shown on the left side of the screen. If the name is an alias of a different module, the real name (major name) is shown instead of the size.
The duplicates list is shown in Figure 7:
Apf, LInklist, Parmlib, and LPa
The APF, LINKLIST, PARMLIB and LPA commands add and remove pseudo-DD names which show the defined APF libraries, link list libraries, PARMLIB libraries and LPA libraries respectively. These pseudo DD names are shown as if they are allocated DD names, but no actual allocation to the libraries is made. You can use most of the primary and line commands with these names just as you would with real DD names.
Since some installations limit access to the libraries in this list, you may see a confirmation panel when trying to read the contents of these lists. In the confirmation panel, shown in Figure 8, you can type the word YES to process the libraries, or SKIP to process the libraries and avoid the confirmation panel in the future.
Dynamic LPA, Link lists, PARMLIB and APF lists are all supported.
The LINKLIST and LPA commands add both the LINKLIST and LPALIB pseudo DD names,
To delete any of these pseudo-DD names, enter the appropriate command a second time. For example, to add APF libraries to the list, use the APF command. To remove the libraries from the list, enter the APF command a second time.
The original text of this message was shipped inadvertently, but over the years, people have seemed to like it, so we left it in.
and LoadThe SELECT command searches the job pack area (JPA) and link pack area (LPA) to see if a module is loaded. If the module is found to be loaded, you will see the CSVQUERY Results panel shown in Figure 9:
The information shown in the CSVQUERY results panel is mostly derived by issuing a CSVQUERY macro. The data set name from which the module was loaded is shown if it can be determined, but because of the way this information is gathered, it can be incorrect if the original DD name from which the data set was loaded was reallocated since the module was loaded. This situation should be extremely rare.
On the CSVQUERY Results panel, you can use the TAB key to place the cursor inside the boxes describing the load module. If you then press the ENTER key, you can browse the load module in storage.
The SELECT command is useful in situations where you need to know where a loaded program came from, such as times when you think you might be running mixed levels of ISPF or of an application running under ISPF.
If a module is not loaded but you want to see its attributes, you can use the LOAD command instead of the SELECT command. LOAD will use the current tasklib such as ISPLLIB but you should verify that the loaded module came from the source you were expecting it to come from. LOAD will automatically browse the load module storage.
The CUSTOM command shows several settings about your ISPF installation. It shows the values that used to be set in the ISPDFLTS CSECT but are now in the ISPF configuration table, and it shows the values configured in module ISPTCM. This command is helpful when you are having trouble with the way certain programs are invoked. For more information on ISPTCM, see the ISPF Planning and Customization Guide.
The MLIST command displays the eyecatchers for some of the ISPF CSECTs contained in modules ISPSUBS and ISRSUBS. This command can sometimes be used to verify that you are running with a particular level of maintenance because the eyecatchers in most ISPF modules contain a release number or a PTF level.
ISRDDN provides a method of browsing storage using ISPF browse. The storage can be browse as unformatted data, as minimally formatted data or as a side by side hexadecimal and EBCDIC dump format. In addition, ISRDDN provides allows you to automatically chain lists, view arrays, and view the data pointed to by control blocks which are mainly lists of pointers, such as the CVT.
The BROWSE primary command accepts a storage address, module name, or TSO TEST style address locator string. Some examples of invoking BROWSE are shown here:
B ISRSUBS | Browse the already loaded module named ISRSUBS. |
B 10. | Browse storage at hexadecimal location 10. In order to distinguish hexadecimal addresses from module names, absolute addresses must end with a period. |
B 0.+21c?+b4?+108?+8 | Browse storage based on a TSO TEST style string. In this case, the control block called the Protected Step Control Block or PSCB is shown. |
B ISRSUBS+60? | Browse the address pointed to by the 4 bytes at offset hexadecimal 60 into module ISRSUBS. |
B ? or B +0? | When executed from within the storage browser, this command will use the address 0 bytes from the beginning of the displayed storage as a pointer and will start a new browse session to show that storage. |
You can view ENQs on the system using the ENQ command. You will see a display similar to the one shown in Figure 10. You can reduce the size of the list by specifying a QNAME, RNAME, address space name and/or system name. All entries are treated as prefixes, so you may not need to specify complete names.
The Major column shows the QNAME. The Minor field shows the RNAME and if the RNAME is 8 bytes or less, it shows the hexadecimal representation of the RNAME next to the EBCDIC representation.
In the System ENQ Status list, the job name field will be color coded to indicate the type of ENQ that the address space holds or is waiting for. Green indicates a shared ENQ. Red indicates an exclusive ENQ. If an address space does not hold the ENQ but is waiting for it, the job name will be in reverse video.
On narrow screens, you can scroll right or left for more information. By scrolling left and right you will see the system name, and ENQ options (SYS (system), SYSS (systems), STEP, G (global) and R (reserve)). On wide screens, such as a 3278 Mod 5, you will see all of the information on one screen and will not have to scroll left or right.
On the System ENQ Status display, press END to return to the Current Data Set Allocations list, or enter CON to view the System ENQ Contention display. You can also use the ALL command to view all ENQs or use the RESET command to see only the data set ENQs (QNAME SYSDSN) for your TSO user id.
You can view ENQ contention on the system by using the CON command. When ENQ contention exists, you will see a screen similar to the ENQ Status List shown in Figure 10, but without the input fields. When no contention exists, a message will be displayed instead of the list.
On the System ENQ Contention display, press END to return to the Current Data Set Allocations list, or enter ENQ to view the System ENQ Status display.
By using the BROWSE command within ISRDDN, you can view the contents of storage within your address space.
When you are browsing storage, you can use any of the standard ISPF browse primary commands. There are several additional primary commands which you can use to format and move around in the storage list.
Invoke a new storage browse request. See the examples above. When the BROWSE command is invoked within an existing browse session, a new browse session is started. The END command will return you to the previous browse session. To end all of the sessions and return to the Current Data Set Allocations list, use the CANCEL command.
Browse can also be used for point and shoot. Type B on the command line, place the cursor over an address within the display and press enter. A new browse session will be started to view the storage pointed to by the cursor. If the cursor is not on a valid, accessible address, you will get an error message.
Display storage data as unformatted text. Storage is shown on the screen without any formatting. The data on a line is the data that immediately follows the data on the previous line. Because the FIND command is actually searching the screen image and not storage itself, it is best to search storage while in the RAW display format. Note however, that even in unformatted displays, if your search string would span lines, FIND will not locate the string. To get around this problem, search for the string in RAW format, then enter the command B +20 and find the string again. This will shift the display by 32 bytes (hexadecimal 20) and the line breaks will occur in a different place.
Display the storage as an unformatted string of data with offsets shown on the left side of the screen. Use this format to give you a better context of the storage you are browsing.
Display the storage in both hexadecimal and EBCDIC, the way you might see the format in a dump (see Figure 11). On wide screens, such as a 3278 Mod 5, the format will include 16 bytes per line (8 sets of 4 bytes). On narrower screens, the format will contain 8 bytes per line (4 sets of 4 bytes). FORMAT is the default format that you will see whenever a storage browse session is started.
The WIDE and NARROW commands switch the display between wide and narrow formats regardless of the type of terminal you are using. If the screen is too narrow to handle the wide format, you will need to scroll right and left to see all of the data.
When you are viewing a linked list, you can use the CHAIN command to view more than one link at a time. The syntax for CHAIN is
CHAIN [offset [ length ]]
where offset is a hexadecimal offset of the 4 byte pointer to the next link and length is a hexadecimal minimum length to show for each link. The default for offset is zero. The default for length is whatever will fit on one line in the current display format. The chain will be considered terminated when a pointer of zero is found, a pointer to the first node is found, or a pointer to unavailable storage is found. Entering the CHAIN command a second time turns the CHAIN formatting off.
For example, to see the current ASCB chain, enter ISRDDN and type
B 10.??+C?
CHAIN 8 20
You will see a screen that like that shown in Figure 12:
In the CHAIN format display, the offsets on the left are the offsets within a particular link followed by the actual address of the start of the line.
When you are viewing storage that is an array, you can show the array elements a separate blocks of storage. The syntax of the ARRAY command is
ARRAY [ dimension [ length ]]
where dimension is the number of array elements and length is the length of each element. The default for length is 4.
For example, the static link list table is an array. Assuming that each element is 45 bytes (hexadecimal 2D) and that you want to see the first 30 entries,
Enter ISRDDN and type
B 10.?+4DC?+8
ARRAY 4 2D
You should see as screen that looks like that shown in Figure 13:
In the ARRAY format display, the offsets on the left are the array element number followed by the address of the displayed line.
Many control blocks are mainly lists of pointers. For example, the Communications Vector Table or CVT is an OS/390 control block that points to many other control blocks. The ARRAYP command will show the data pointed to by the pointers in a control block. Use the ARRAYP command when you are looking for the offset of a pointer to a particular storage location.
The syntax of the ARRAYP command is
ARRAYP [ dim [ length]]
where dim is the decimal number of pointers in the array, and length is the hexadecimal length of each element pointed to by the pointer. The default for length is whatever will fit on one line in the current display format.
For example, to see what is pointed to by elements of the CVT, enter ISRDDN and type:
B 10.?
ARRAYP
You may see a screen like that shown in Figure 14:
In the ARRAYP format display, the offsets on the left are the offsets within the array of pointers followed by the pointer itself. This is followed by the data to which the pointer refers.
Defining named storage locations
If you will be browsing the same storage locations or control blocks frequently, you may want to set up a file which names those storage locations so that you can use a name on the BROWSE command.
To allow the BROWSE command to use a named reference to storage, you need to allocate a sequential file to the DD name ISRDDN. Within that file each line is either a comment or a named storage location.
Comments start with a semi colon.
Location definitions have a the name as the first word, followed by a TSO TEST style locator string. Anything after the locator string is ignored. The TSO TEST locator string may use another defined name as a starting point. If the locator string can not be resolved due to syntax errors, or other errors, the line is ignored.
Figure 15: A Sample ISRDDN named storage file
For example, if you allocate a sequential file like the one shown in Figure 15 to DD name ISRDDN, you could then browse your User Profile Table, which stores your TSO PROFILE settings, by typing B UPT on the command line.
![]()
List of figures | |
Figure 1: The Current Data Set Allocations list in short format | Figure 8: The pseudo-DD name read confirmation panel |