Mapping storage areas using DSECT information
By using the DSECT command from within the interactive report, storage areas can be mapped based on PDS or PDSE data set members containing assembler macro or DSECT copybooks.
The DSECT command (see DSECT for syntax), can be entered from the command line of any display, or via PF key assignment. By default, the DSECT command is assigned to PF4.
File View Services Help ┌─────────────────────────── Storage DSECT Mapping ───────────────────────────┐ │ │ │ Enter the name of the Dsect in the Dsect Name field to be used to map the │ │ storage address provided in the Address field. Press PF4 to display a list │ │ of all available Dsects. Optionally a specific Dsect can be used by │ │ supplying a Dataset and Member name in the DSN field. In this case if a │ │ Dsect name is not provided it will be made equal to the member name. │ │ │ │ Address │ │ Dsect Name │ │ DSN . . . │ │ │ │ │ │ F1=Help F3=Exit F12=Cancel │ └─────────────────────────────────────────────────────────────────────────────┘ First Operand Address . . : 0002A120 (3808 bytes of storage addressable) First Operand Length. . . : 8 First Operand Storage . . : 00000000 0986888C *.....fh.* Second Operand Address. . : 0002A110 (3824 bytes of storage addressable) Second Operand Length . . : 4 Second Operand Storage. . : C1C2C3CF *ABC.* F1=Help F3=Exit F5=RptFind F6=Actions F7=Up F8=Down F10=Left F11=Right
You can now supply the start address (if not already filled in), and the name of the DSECT to use when mapping the storage area. The Address field is 64-bit enabled. For details, see Specifying 64-bit addresses.
The name of the DSECT can be provided in one of two ways:
- Just the DSECT name can be entered, in which case the IDIDSECT concatenation is searched for a match (see IDIDSECT concatenation for details). If multiple occurrences of the requested DSECT exist in the IDIDSECT concatenation, then press PF4 and select the appropriate one from the resulting list of all available DSECTs. A DSECT is selected from the list using an 'S', or it can be Edited by entering an 'E'.
- The data set and member name where the specified DSECT is stored can be supplied. If a DSECT name is not provided, then it defaults to be the same as the PDS or PDSE member name.
File View Services Help ─────────────────────────────────────────────────────────────────────────────── Dsect mapping for DFHCSADS at address 4de20 Line 1 Col 1 80 Command ===> ________________________________________________ Scroll ===> CSR
CICS DUMP: SYSTEM=QXPM2C61 CODE=ASRA ID= MVS2 2019/06/25 13:47:55 0004DE20 +0000 DSECT DFHCSADS DFHCSABA EQU * 0004DE20 +0000 00000248 0000D0A0 17EB4D00 983C1ECE 80BF4DA8 80800000 18685160 18642330 000003FD 18973FB8 00000BAF 00000000 983C1A40 18973000 18685160 18684B70 00051D80 17F90680 CSAOSRSA DS 18F CSASOSI DS 0B 0004DE68 +0072 00 CSASSI1 DS B CSAFPURG EQU X'80' CSAFTCAB EQU X'40' CSASDTRN EQU X'20' CSACSDOP EQU X'02' CSASOSON EQU X'01' CSAKCMI DS 0B 0004DE69 +0073 10 CSASSI2 DS B F1=Help F3=Exit F5=RptFind F6=Actions F7=Up F8=Down F10=Left F11=Right
Scroll up/down or right/left as needed to display more DSECT information.
Press PF3 to return from the Storage DSECT Mapping Map display.
IDISYSLB concatenation
The DSECT command and IDIPDSCU utility both use, internally, the assembler to generate ADATA which is then used to determine field names and offsets. The SYSLIB DD, used by the assembler, is dynamically allocated to the same data set as the source DSECT. However this may be insufficient where, for example, an assembler macro is used to generate the DSECT and that macro does not exist in the DSECT data set. To allow for this situation additional SYSLIB data sets can be specified by allocating them to an IDISYSLB DD.
For example, data set MY.DSECTS has 1 member in it, CICSSIT, for generating the CICS DFHSIT DSECT:
000001 * GENERATE THE CICS DFHSIT DSECT
000002 DFHSIT TYPE=DSECT
000003 END
Using this data set or member in the DSECT command or IDIPDSCU utility will not generate a usable DSECT as the DFHSIT macro will not be resolved. Therefore, the IDISYSLB DD can be used. For example:
//UTIL1 EXEC PGM=IDIPDSCU,PARM=('MY.DSECTS')
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*
//IDISYSLB DD DISP=SHR,DSN=CICS.TS61.CICS.SDFHMAC
When using the DSECT command during interactive reanalysis, or when using IDIPDSCU in ISPF, use the TSO ALLOCATE command:
ALLOCATE FILE(IDISYSLB) DS('CICS.TS61.CICS.SDFHMAC') SHR