It might sometimes be interesting to know what storage has been allocated within a CA IDMS Central Version and additionally know if there are storage blocks which have been allocated with a storage ID (STGID).
These storage IDs most of the time, are defined with readable, displayable characters, but they can also be a hexadecimal string.
Is it possible to display these storage blocks and their storage IDs, and secondly, if these storage IDs are not displayable, is it possible to display them in hexadecimal notation ?
The contents of CA IDMS Storage Pools can be displayed by means of the LOOK task, using the STORAGE POOL parameter.
Example :
LOOK STORAGE POOL
IDMSLOOK - OPSYS=z/OS Release 19.0 Service pack 4 tape GJJ04I
STORAGE POOL
Addr=00060008 Size=00003000 Task=0 Owner=CSA -SYSCSA Short-
Addr=3AD0C008 Size=00153000 Task=0 Owner=CSA -SYSCSA Short-
Addr=3F2D2008 Size=00007C00 Task=0 Owner=CSA -SYSCSA Short-
(K) Addr=3F0DE008 Size=00000480 Task=1 Owner=00237FC8 DB Short
(K) Addr=3F329008 Size=00000980 Task=12 Owner=0023E378 Systce Short
Addr=00063008 Size=0000A980 Task=1 Owner=CSA -SYSCSA Short-
(K) Addr=3F317008 Size=00000880 Task=12 Owner=0023E378 Systce Short
Addr=0006F008 Size=00000080 Task=1 Owner=00237FC8 Systce Short
Addr=0006DA88 Size=00001000 Task=1 Owner=CSA -SYSCSA Short-
Addr=3F0DF008 Size=00000100 Task=0 Owner=002376B8 HCLW DB Short
Addr=3EB1D008 Size=00000780 Task=79 Owner=00248FA8 User Short
(K) Addr=3F138008 Size=00000080 Task=67 Owner=00248FA8 DB Short
Addr=3F334008 Size=00000D80 Task=79 Owner=CSA -SYSCSA Short-
(K) Addr=3EB32008 Size=00000080 Task=26 Owner=CSA WSV2 Shared Short
Addr=3F30C208 Size=00000080 Task=14 Owner=CSA -SYSCSA Short-
Addr=3EB1C008 Size=00000400 Task=27 Owner=00246B68 SBà. Shared Short
The output from this command shows the storage address, its size, the task number that acquired the storage, the owner of the storage, the Storage ID (if it exists) and the type of storage.
In this example, "HCLW", "WSV2" and "SBà." are storage IDs. The last one clearly contains non-displayable characters.
If you want to see this storage ID in hexadecimal representation, you can do this as follows.
DCMT D MEM 3EB1C000 32
<Addr> <Offset> <Hex> <Character>
3EB1C000 00000000 3AE4A320 00000400 E6C1C9E3 E3C1C25C *.Ut.....WAITTAB**
3EB1C010 00000010 000003AC 00000007 3EB1C044 0000002D *..........{à....*
The first fullword, 3AE4A320, is the address of the storage RCE. This RCE contains the storage ID if one is defined.
To display the contents of this storage ID in hexadecimal, you need to issue another DCMT DIS MEMORY command, this time, for the RCE itself :
DCMT D MEM 3AE4A320 32
<Addr> <Offset> <Hex> <Character>
3AE4A320 00000000 01420002 0000001B 00000400 3EB1C000 *.â............{.*
3AE4A330 00000010 3AE403B0 3AE40288 00000000 E2C24432 *.U.^.U.h....SBà.*
The storage ID is found at offset X'1C' in the RCE : its contents in hexadecimal is X'E2C24432'.
Note :
The above procedure used two DCMT DIS MEMORY commands in order to find the storage RCE. As of CA IDMS release 18.0, it is possible to use "indirect addressing" with DCMT DIS MEMORY commands. This feature can be used here to display the storage RCE with only ONE DCMT command, as follows :
DCMT D MEM 3EB1C000 % 32
<Addr> <Offset> <Hex> <Character>
3AE4A320 00000000 01420002 0000001B 00000400 3EB1C000 *.â............{.*
3AE4A330 00000010 3AE403B0 3AE40288 00000000 E2C24432 *.U.^.U.h....SBà.*
The address 3EB1C000 is the address of the beginning of the storage block (see point 1 and 2 above).
The % sign tells the DCMT command that the address in front of the % sign is an indirect address, meaning, we do not want to see the contents of the storage at 3EB1C000, but use the contents of the first fullword found at 3EB1C000 as a "new address" and display the contents found at that new (indirect) address.
For more information about the
LOOK STORAGE, see
DCMT DISPLAY MEMORY, see