WHERE subcommand — identify an area at a given address
- The address space text
- The specified address
- The name of the area in the dump at the specified address. The
name can be:
- The name of a load module. For nucleus CSECTs, the load module
name is IEANUC0x, where x is obtained from field CVTNUCLS. Externally
defined CSECTs within the nucleus are identified following the load
module name. Externally defined CSECTs in other load modules are
not displayed. To be displayed, the module name must conform to the following naming conventions:
- The name is 1 through 8 characters.
- The first character is an uppercase EBCDIC letter or one of the
following national characters:
$ (X'5B') # (X'7B') @ (X'7C')
- The remaining characters are uppercase EBCDIC letters, national characters, or EBCDIC decimal digits.
If a module name does not conform to these conventions, IPCS displays:MODULE(SPECIALNAME)
- The name of a control block. The parameter STRUCTURE is displayed followed by the control block name.
- The name of an area of storage that is not a module or a control block. IPCS displays AREA followed by the name of the area.
- The name of a load module. For nucleus CSECTs, the load module
name is IEANUC0x, where x is obtained from field CVTNUCLS. Externally
defined CSECTs within the nucleus are identified following the load
module name. Externally defined CSECTs in other load modules are
not displayed.
- The offset into the identified area.
- The name of the system area containing the specified address,
which can be:
- Common service area (CSA)
- Fixed link pack area (FLPA)
- Modified link pack area (MLPA)
- Pageable link pack area (PLPA)
- Private
- Prefixed save areas (PSA)
- Read only nucleus
- Read/write nucleus
- System queue area (SQA)
BLS18451I Unable to identify the area at 'addr space' address xxxxxxxx
If IPCS issues this message, enter one or more of the dump analysis subcommands, such as SUMMARY and STATUS, then reenter the WHERE subcommand. Based the dump processing for the analysis subcommands, IPCS may now be able to identify the area.
- If WHERE can associate the location identified by data-descr with a block of storage containing that location, X is set to describe the block of storage containing the location.
- If WHERE cannot associate the location identified by data-descr with a block of storage containing that location, X is set to describe the location identified by data-descr.
WHERE will not change X if error conditions occur, such as syntax errors or an unresolvable data-descr.
When used as a primary command, WHERE stacks a pointer to the address, but does not change the value of X. Use option 1 (BROWSE) of the IPCS dialog to find the pointer.
You can invoke WHERE as an IPCS subcommand or as an IPCS primary command. (This section refers to both the subcommand and the primary command as the “WHERE command.”) The WHERE command is useful for identifying locations of addresses found in other reports produced by IPCS subcommands.
- Addresses in the LPA and Nucleus The WHERE command has the greatest benefit when used on addresses in the following system areas:
- Fixed link pack area (FLPA)
- Modified link pack area (MLPA)
- Pageable link pack area (PLPA)
- Read-only nucleus
- Read-write nucleus.
For addresses in these areas, the WHERE command returns the name of a load module.
The WHERE command provides the most specific information for addresses located in the nucleus. The WHERE command provides the name of the externally defined CSECTs within the nucleus in which the address is located. They are identified following the load module name. For nucleus CSECTs, the load module name is IEANUCOx, where x is obtained from field CVTNUCLS. Externally defined CSECTs in other load modules are not displayed.
When you invoke WHERE for an address in any of the parts of the LPA, it returns the name of a load module that contains a number of CSECTs. To find the exact CSECT you are looking for, you must do one of the following:- If the address is in the section of dump that fits into memory, you can enter the WHERE subcommand from the Browse option of the IPCS dialog. When you press F3 to exit the WHERE output, the Browse panel will scroll to the location of that CSECT in the dump.
- If the address is not in the section of dump in memory, you can use the AMBLIST service aid to format and print the load module. The AMBLIST service aid gives you a list of the component CSECTs in the load module. See z/OS MVS Diagnosis: Tools and Service Aids for more information about using AMBLIST.
- Addresses in private storage The WHERE primary command can also be used on addresses in private and extended private area storage.
- Private area analysis may identify load modules and offsets within them.
- It may also associate the address of interest with data areas.
- z/OS® R2 IPCS adds the ability
to associate addresses with pages containing application subpools,
AREA(SUBPOOLspKEY(key), where
- sp
- A three-digit decimal subpool number between 0 and 255.
- key
- A two-digit decimal storage key between 0 and 15.
The IPCS storage map entries describe subpools in increments of 4096-byte pages associated with subpools rather than the 8-byte units of allocated storage within them.
- Addresses in other areas of storage The WHERE primary command can also be used on addresses in other areas of storage:
- Common storage area (CSA)
- Prefixed save area (PSA)
- System queue area (SQA).
For addresses in these areas, the information provided is less specific than the information provided for the LPA and nucleus addresses. When issued on an address in these areas, WHERE returns one of the following:- The name of a control block. The parameter STRUCTURE is displayed followed by the control block name.
- The name of an area of storage (not a module or control block). The parameter AREA is typically displayed followed by the name of the area.
- The names of the load modules that are loaded by LOAD with GLOBAL=YES option from the current ASID, if the address is in the CSA or ECSA storage.
- When WHERE Does Not Work If after examining the return code IPCS determines that the area pointed to by the specified address cannot be identified, IPCS issued message BLS18451I with the address and ASID:
BLS18451I Unable to identify the area at ASID(X'0032') address 005CD478
This situation sometimes occurs when the dump directory does not contain enough information about the area of the dump. Try entering the SUMMARY or STATUS subcommand. These subcommands should fill missing information in the dump directory. Then reenter the WHERE subcommand:ASID(X'0032') 005CD478. AREA(CURRENT)+5CC478 IN PRIVATE
The detail of the report generated by the WHERE command depends to a large extent on how much you have processed the dump. For example, if after initializing a dump, you enter WHERE, IPCS generates a minimal report. But if you enter WHERE again later in your IPCS session, after entering a number of subcommands, a more detailed report will probably be produced.
- Syntax
{ WHERE } data-descr { W } [SELECT([AREA][MODULE][STRUCTURE])]
-------- SETDEF-Defined Parameters -------------------------
Note: You can override the following SETDEF parameters.
See SETDEF subcommand — set defaults.[ FLAG(severity) ] [ PRINT | NOPRINT ] [ TERMINAL | NOTERMINAL ] [ TEST | NOTEST ]
- Parameters
- data-descr
- Specifies an address in a dump through the data description parameter,
which consists of five parts:
- An address (required)
- Address processing parameters (see note below)
- An attribute parameter (optional)
- Array parameters (optional)
- A remark parameter (optional)
Data description parameter explains the use and syntax of the data description parameter.Note:- An ASID may optionally be specified as part of the data description parameter. If the specified address is in private storage, and no ASID is specified, the default ASID is the only ASID searched.
- ACTIVE, MAIN, and STORAGE cannot be specified.
- SELECT([AREA][MODULE][STRUCTURE])
- Specifies the data types to be returned as results of the WHERE
command.
- AREA
- Allows WHERE to associate the location of interest with AREAs.
- MODULE
- Allows WHERE to associate the location of interest with MODULEs.
- STRUCTURE
- Allows WHERE to associate the location of interest with STRUCTUREs.
- Return Codes
See Standard subcommand return codes for a description of the return codes produced by the WHERE subcommand.
- Example 1: Determine where an absolute address is located.
- Action
COMMAND ===> IPCS WHERE FD2834.
- Result
WHERE generates the following output line, showing that the specified address, in address space X'0058' is X'20D14' bytes into CSECT IOSUCB, which is located in load module IEANUC01 in the READ/WRITE NUCLEUS.
IPCS OUTPUT STREAM -------------------------------------- LINE 0 COLS 1 78 COMMAND ===> _ SCROLL ===> CSR ****************************** TOP OF DATA *********************************** ASID(X'0058') 00FD2834. IEANUC01.IOSUCB+020D14 IN READ/WRITE NUCLEUS ****************************** END OF DATA ***********************************
If the address you specified is in the portion of the dump in memory, the WHERE subcommand also takes you to that address in the dump when you press F3 to exit this screen.
If the primary command are used in this example, the item that contains the address are added to the pointer stack. If more than one item contains the address, the item with the smallest offset are added to the pointer stack.
- Action
- Example 2: Use WHERE from system trace table output, which
provides a history of the most recent events in the system. The WHERE
command can save you from having to leave the system trace table to
find the information needed. For example, if you are going through
the table and you see a PSW that interests you, you can use the WHERE
command to find out to what module the PSW points. Instead of having
to use the VERBEXIT NUCMAP, LPAMAP, or go into the Browse panel of
the IPCS dialog, you can type WHERE directly from the system trace
table and find out the module name. Also, if you enter WHERE as a
primary command it will put a pointer to the module on the stack. Choose option 4 from the IPCS Primary Option Menu. Then, enter the system trace table with:
Now, enter WHERE on the command line of the system trace table.===> SYSTRACE
IPCS OUTPUT STREAM ---------------------------------------- LINE 471 COLS 1 78 COMMAND ===> WHERE 1D073D0 SCROLL ===> CSR 01 001B 009F8E88 SVCR 78 070C2000 81D07386 00000000 00000080 7FFFDD10 01 001B 009F8E88 SVC 78 070C3000 81D073B2 0000E101 00000030 7FFFDD10 01 001B 009F8E88 SVCR 78 070C3000 81D073B2 00000000 00000030 7FFFDD10 01 001B 009F8E88 SVC 78 070C1000 81D073D0 0000E101 00000010 7FFFDD80 01 001B 009F8E88 SVCR 78 070C1000 81D073D0 00000000 00000010 7FFFDD80 01 001B 009F8E88 SVCR 2A 070C1000 8001B832 00000000 00000000 009F8CF0 01 001B 009F8E88 SVC 78 070C2000 8001B93E 00000003 00000190 00006C60 01 001B 009F8E88 SVCR 78 070C2000 8001B93E 00000000 00000190 00006C60 01 001B 009F8E88 SVC 78 070C0000 80008B50 00000002 00000368 00000000 01 001B 009F8E88 SVCR 78 070C0000 80008B50 00000000 00000368 00006A88 01 001B 009F8E88 SVC 38 070C1000 80008C4E 00000000 00000006 00006C78 01 001B 009F8E88 PC ... 0 811520D2 00108 01 001B 009F8E88 PT ... 0 811520D2 001B 01 001B 009F8E88 SVCR 38 070C1000 80008C4E 00000000 00000002 00F3FB14 01 001B 009F8E88 SVC 78 070C0000 80019294 00000002 00000358 00000000 01 001B 009F8E88 SVCR 78 070C0000 80019294 00000000 00000358 00006730 01 001B 009F8E88 ?EXPL 0003 77007B16 C3629700 00000003 01 000E 009F6E88 SRB 070C0000 811A3180 0000000E 00F42200 00F4222C 80 01 000E 00000000 SSRV 2 80FFB540 000A002C 7F000000 00000000 00000000 01 000E 00000000 SSRV 12A 80007478 00B9E8B0 40000000 00000000 00000000 01 000E 009F6E88 DSP 070C0000 800073C2 00000000 000070C0 00B9E8B0 00 01 000E 009F6E88 SSRV 1 80007388 00B9E8B0 00000001 00000000 00000000 01 001B 009F8E88 DSP 070C0000 800192C8 00000000 00000002 00006B48 00 01 001B 009F8E88 SVC 78 070C2000 8001936C 0000E572 00001000 00000000 01 001B 009F8E88 SVCR 78 070C2000 8001936C 00000000 00001000 7FFE0000 01 001B 009F8E88 SVC 78 070C2000 800199B8 0000EF72 00000018 00000000 01 001B 009F8E88 SVCR 78 070C2000 800199B8 00000000 00000018 01B1E640 01 001B 009F8E88 SVC F0 070C2000 80014912 80014910 00000000 0000677C 01 001B 009F8E88 *SVC D 070C1000 80FE5CFC 80014910 80000000 80FF0000 01 001B 009F8E88 PC ... 0 811808CE 00506 01 001B 009F8E88 PC ... 0 82106B2A 00503 ****************************** END OF DATA ***********************************
- Result
WHERE generates the following dump display reporter panel. It tells you that the address is 03D0 hexadecimal bytes into load module IGC0004B in the extended PLPA.
IPCS OUTPUT STREAM -------------------------------------- LINE 0 COLS 1 78 COMMAND ===> _ SCROLL ===> CSR ****************************** TOP OF DATA *********************************** ASID(X'001B') 01D073D0. IGC0004B+03D0 IN EXTENDED PLPA ****************************** END OF DATA ***********************************
Because WHERE was invoked as a primary command, WHERE also stacks a pointer to the beginning of the load module, X'1D07000'. The pointer will appear in the Browse option of the IPCS dialog. The following shows using WHERE in the system trace table.
DSNAME('D46IPCS.DRVC400.SA00001') POINTERS ----------------------------------- COMMAND ===> _ SCROLL ===> CSR PTR Address Address space Data type 00001 00000000 ASID(X'0003') AREA Remarks: 00002 000006B0 ASID(X'0003') AREA Remarks: 00003 00FD7420 ASID(X'0001') STRUCTURE(Cvt) Remarks: Communications Vector Table ------------------------------------------------------------------------------- |00004 01D07000 ASID(X'001B') MODULE(IGC0004B) | | Remarks: | ------------------------------------------------------------------------------- **************************** END OF POINTER STACK *****************************
- Result
- Example 3: Use WHERE from a logrec buffer in a dump. WHERE
can help you look through this table. For example, if you are examining
the error PSW in the VERBEXIT LOGDATA report and want to know where
address X'120E298' in the error PSW points to, you can use
WHERE directly from this screen.
IPCS OUTPUT STREAM -------------------------------------- LINE 0 COLS 1 78 COMMAND ===> WHERE 120E298 SCROLL ===> CSR ****************************** TOP OF DATA *********************************** * * * * * L O G D A T A * * * * * TYPE: SOFTWARE RECORD REPORT: SOFTWARE EDIT REPORT DAY.YEAR (SVC 13) REPORT DATE 197.95 SVC: VS 2 REL 3 ERROR DATE 158.95 MODEL:3090 HH:MM:SS.T SERIAL:170067 13::1:44.9 JOBNAME: D22AMSTR ERRORID: SEQ=17095 CPU=0041 ASID=0047 TIME=13:31:43.9 < Some Output Not Shown > TIME OF ERROR INFORMATION PSW: 070C2000 8120E298 INSTRUCTION LENGTH: 02 INTERRUPT CODE: 000D FAILING INSTRUCTION TEXT: 581097E6 0A0D4830 C0105800 REGISTERS 0-7 GR: 00000000 04C78000 006F72D8 0000E601 006F72D8 7FF12080 00000004 00EE5500 AR: 0124E1B8 00000000 00000000 00000000 00000000 00000000 00000000 00000000
- Result
First, all items that contain this address are displayed using the dump display reporter panel. The message below shows that the PSW you want to examine more closely is 200 bytes into CSECT IGVSTSKT. That CSECT is in load module IEANUC01 in the read-only nucleus.
IPCS OUTPUT STREAM -------------------------------------- LINE 0 COLS 1 78 COMMAND ===> _ SCROLL ===> CSR ****************************** TOP OF DATA *********************************** ASID(X'0058') 0120E298. IEANUC01.IGVSTSKT+0200 IN READ ONLY NUCLEUS ****************************** END OF DATA ***********************************
When you press F3 to exit this screen, IPCS will stack the pointer to the beginning of the CSECT, so when you go back into Browse you can look at all of the detailed information in that register or PSW.
DSNAME('D46IPCS.DRVC400.SA00001') POINTERS ----------------------------------- COMMAND ===> _ SCROLL ===> CSR PTR Address Address space Data type 00001 00000000 ASID(X'0003') AREA Remarks: 00002 000006B0 ASID(X'0003') AREA Remarks: 00003 00FD7420 ASID(X'0001') STRUCTURE(Cvt) Remarks: Communications Vector Table ------------------------------------------------------------------------------- |00004 0120E298 ASID(X'0058') MODULE(IEANUC01) | | Remarks: | ------------------------------------------------------------------------------- **************************** END OF POINTER STACK *****************************
- Result
- Example 4: Determine where an absolute address is located.
- Action
COMMAND ===> where cda800.
- Result
WHERE generates the following output line, showing that the specified address is a TCB in the PRIVATE area.
CDA800. STRUCTURE(TCB)-10 IN PRIVATE
- Action
- Example 5: Determine the name of a module in
storage.
- Action Given an address, enter a WHERE subcommand specifying the address.
COMMAND ===> where 04a8001a
- Result
IPCS identifies the address space containing the module, the module name (if the name conforms to IPCS naming conventions), the offset of the address into the module, and the storage area containing the module.
ASID(X'0179') 04A8001A. IGC0006A+1A IN EXTENDED PLPA
- Action
- Example 6: Determine the name of a module in storage when
the module name does not conform to IPCS naming conventions.
- Action Given an address, enter a WHERE subcommand specifying the address.
COMMAND ===> where 04ab001a
- Result
IPCS provides the same information shown in the previous example, but instead of the name of the module, IPCS displays “SPECIALNAME”. IPCS also expands the name in hexadecimal characters, and shows the module name as an eye-catcher in the output.
ASID(X'0179') 04AB001A. SPECIALNAME+A01A IN EXTENDED PLPA +0000 C9C7C3F0 F0F1F3C0 | IGC0013{ |
- Action