The DIRMAP utility performs a complex reconciliation of the configuration files from HERCULES and includes analysis of the VM/370 Control Program. This reconciliation correlates all of the configuration information found in these files and renders a diagnostic reference summary.
DIRMAP
also validates the contents of the system files and volume container files, directly reading the underlying system volumes to ensure that their allocation byte maps (a byte-representation stored on Cylinder 0 Track 0 Record 4 of every properly formatted Control Program volume). This additional validation step ensures that the protective areas are correctly represented in the DIRECTORY file.
dirmap /DirectFile:“E:\Emulation\Vm370.6Pack.1.3.Orig\sixpack.direct.a.txt” /SYSFILE:“E:\Emulation\Vm370.6Pack.1.3.Orig\dmksys.assemble.b.txt” /SNTFile:“E:\Emulation\Vm370.6Pack.1.3.Orig\dmksnt.assemble.b.txt” /RIOFile:“E:\Emulation\Vm370.6Pack.1.3.Orig\dmkrio.assemble.b.txt” /AllocMap:“141 241 34f 440 540 6f0” /HerculesConf:“E:\Emulation\Vm370.6Pack.1.3.Orig\sixpack.conf”
The output of this tool is a 62 page report DIRMAP.LOG.txt which includes a full printout of each of the input files as well as other diagnostic information.
The cover page provides a confirmation of the settings used at the time of invocation.
VV VV MM MM VV VV MMM MMM 3333333333 777777777777 MM00000000 333333333333 77777777777MM MM0000000000 33 VV33 77VV 77 MMMM00MM 00 V33 VV 77M MM 00MM 00 33 VV 77MM 00MM 00 3333VV VV 77 MM 00MM 00 3333 VVVV 77 MM 00MM 00 33 VV 77 MM 00MM 00 33 77 00 00 33 33 77 00 00 333333333333 77 0000000000 3333333333 77 00000000 VM/370 Release 6 "SixPack" version 1.3 CP Directory and System File Mapping Utility Current Configuration Parameter : Value ------------ : ------------ DASDTable : E:\Emulation\operations.workspace\dasdtab.c DirectFile : E:\Emulation\Vm370.6Pack.1.3.Orig\sixpack.direct.a.txt SYSFile : E:\Emulation\Vm370.6Pack.1.3.Orig\dmksys.assemble.b.txt RIOFile : E:\Emulation\Vm370.6Pack.1.3.Orig\dmkrio.assemble.b.txt SNTFile : E:\Emulation\Vm370.6Pack.1.3.Orig\dmksnt.assemble.b.txt AllocMap : 141 241 34f 440 540 6f0 IgnoreUser : $PERM$ $FPCK$ HerculesConf : E:\Emulation\Vm370.6Pack.1.3.Orig\sixpack.conf LogFile : E:\Emulation\operations.workspace\Dirmap.log MaxLines : 60
Because all input files are considered to be “part of the whole”, all contents are redisplayed in the output report. For each file a header is displayed and line numbers are prefixed to each line for diagnostic reference.
( Start:sixpack.direct.a.txt )________________________________________________________________________________ Parent Folder.......E:\Emulation\Vm370.6Pack.1.3.Orig Date Created........12/26/2020 8:41:08 PM Accessed.......12/26/2020 8:41:09 PM Modified.......12/26/2020 8:41:09 PM File Size...........27011 File Type...........Notepad++ Document 00001 | *********************************************************************** SIX00010 00002 | * This is the VM directory for the VM/370 'SixPack' system. * SIX00020 00003 | *********************************************************************** SIX00030 00004 | DIRECTORY 141 3350 VM50-1 SIX00040 00005 | SIX00050 00006 | *********************************************************************** SIX00060 00007 | * Next are the locked out areas for ease of mapping. They mark * SIX00070 . . . ( End :sixpack.direct.a.txt )________________________________________________________________________________
The Channel Allocation Map is used to see how devices are used within the configuration.
The visual representation provided by the map depicts devices as they are defined in DMKRIO:
Channel 00 Allocation Map ______________________________________________________________________ 0...4...8...C...0...4...8...C...0...4...8...C...0...4...8...C... 00 ....+++++++.+++++++++++........+++++++++++++++++................ 40 ++++++++++++++++................................................ 80 ................................................................ C0 ++++++++++++++++................................................ 67 Devices in this Channel
For each device defined (whether or not it is in DMKRIO), the device characteristics are shown for the HERCULES configuration file, DMKRIO and the CP Directory (dedicated devices):
RIO 004 Dev:3215 RIO 005 Dev:3215 RIO 006 Dev:3215 RIO 007 Dev:3215 RIO 008 Dev:3215 RIO 009 Dev:3215 Herc 009 @75 0009 3215-C NOPROMPT RIO 00A Dev:3215 Herc 00A @91 000A 1052 NOPROMPT RIO 00C Dev:2540R Herc 00C @61 000C 3505 io/card.txt ascii eof trunc RIO 00D Dev:2540P Class:P Herc 00D @65 000D 3525 io/punch.txt ascii RIO 00E Dev:1403 Feature:UNVCHSET Class:A Herc 00E @69 000E 1403 io/print1.listing RIO 00F Dev:1403 Feature:UNVCHSET Class:A Herc 00F @70 000F 1403 io/print2.listing RIO 010 Dev:3277 CP 010 is Dedicated To User MVS as VAddr 0C1 RIO 011 Dev:3277 RIO 012 Dev:3277 RIO 013 Dev:3277 RIO 014 Dev:3277 RIO 015 Dev:3277 RIO 016 Dev:3277 RIO 01F Dev:3215 RIO 020 Dev:2701 RIO 021 Dev:2701 RIO 022 Dev:2701 RIO 023 Dev:2701 RIO 024 Dev:2701 RIO 025 Dev:2701 RIO 026 Dev:2701 RIO 027 Dev:2701 RIO 028 Dev:2701 RIO 029 Dev:2701 RIO 02A Dev:2701 RIO 02B Dev:2701 RIO 02C Dev:2701 RIO 02D Dev:2701 RIO 02E Dev:2701 RIO 02F Dev:2701 RIO 040 Dev:2701 RIO 041 Dev:2701 RIO 042 Dev:2701 RIO 043 Dev:2701 RIO 044 Dev:2701 RIO 045 Dev:2701 RIO 046 Dev:2701 RIO 047 Dev:2701 RIO 048 Dev:2701 RIO 049 Dev:2701 RIO 04A Dev:2701 RIO 04B Dev:2701 RIO 04C Dev:2701 RIO 04D Dev:2701 RIO 04E Dev:2701 RIO 04F Dev:2701 CP 0B1 is Dedicated To User RSCS as VAddr 078 CP 0B2 is Dedicated To User RSCS as VAddr 079 CP 0B3 is Dedicated To User RSCS as VAddr 07A RIO 0C0 Dev:3278-DYNAMIC Herc 0C0 @80 00C0.32 3270 RIO 0C1 Dev:3278-DYNAMIC Herc 0C1 @80 00C0.32 3270 RIO 0C2 Dev:3278-DYNAMIC Herc 0C2 @80 00C0.32 3270 RIO 0C3 Dev:3278-DYNAMIC Herc 0C3 @80 00C0.32 3270 RIO 0C4 Dev:3278-DYNAMIC Herc 0C4 @80 00C0.32 3270 RIO 0C5 Dev:3278-DYNAMIC Herc 0C5 @80 00C0.32 3270 RIO 0C6 Dev:3278-DYNAMIC Herc 0C6 @80 00C0.32 3270 RIO 0C7 Dev:3278-DYNAMIC Herc 0C7 @80 00C0.32 3270 RIO 0C8 Dev:3278-DYNAMIC Herc 0C8 @80 00C0.32 3270 RIO 0C9 Dev:3278-DYNAMIC Herc 0C9 @80 00C0.32 3270 RIO 0CA Dev:3278-DYNAMIC Herc 0CA @80 00C0.32 3270 RIO 0CB Dev:3278-DYNAMIC Herc 0CB @80 00C0.32 3270 RIO 0CC Dev:3278-DYNAMIC Herc 0CC @80 00C0.32 3270 RIO 0CD Dev:3278-DYNAMIC Herc 0CD @80 00C0.32 3270 RIO 0CE Dev:3278-DYNAMIC Herc 0CE @80 00C0.32 3270 RIO 0CF Dev:3278-DYNAMIC Herc 0CF @80 00C0.32 3270 Herc 0D0 @80 00C0.32 3270 Herc 0D1 @80 00C0.32 3270 Herc 0D2 @80 00C0.32 3270 Herc 0D3 @80 00C0.32 3270 Herc 0D4 @80 00C0.32 3270 Herc 0D5 @80 00C0.32 3270 Herc 0D6 @80 00C0.32 3270 Herc 0D7 @80 00C0.32 3270 Herc 0D8 @80 00C0.32 3270 Herc 0D9 @80 00C0.32 3270 Herc 0DA @80 00C0.32 3270 Herc 0DB @80 00C0.32 3270 Herc 0DC @80 00C0.32 3270 Herc 0DD @80 00C0.32 3270 Herc 0DE @80 00C0.32 3270 Herc 0DF @80 00C0.32 3270
SYSOWN (System Owned) volumes in the VM/370 Control Program rely on understanding, at the cylinder level, how storage is to be used internally, valid allocation byte maps are crucial for proper operation and system stability.
For each requested volume in the command line, the allocation byte map is retrieved directly from the physical container file and interpreted so the systems programmer will have a reliable source of reference.
A volume is “composed” (the BASE file has SHADOW changes applied) if the HERCULES definition contains a referenced “Shadow File”. This is automatically determined by reading the HERCULES Configuration file.
Allocation Byte Maps From DASD (141 241 34f 440 540 6f0) ***** * Device Address 141 ***** Volume : E:\Emulation\Vm370.6Pack.1.3.Orig\disks\vm3350-1.141.cckd Shadow : sf=E:\Emulation\Vm370.6Pack.1.3.Orig\disks\shadows\vm3350-1_ Composed On : C:\Users\sjzop\AppData\Local\Temp\vm3350-1.141.cckd.CV.cckd VolSer(VM50-1) :555 cylinders
The allocations are then shown exactly as they were entered using the native FORMAT/ALLOCATE utility.
Allocations Found On This Volume ALLOCATE StartCyl EndCyl -------- -------- -------- PERM 0000 0010 DRCT 0011 0011 DRCT 0012 0012 PERM 0013 0019 TEMP 0020 0079 TDSK 0080 0099 PERM 0100 0554
Because the allocation byte map is not readily visible to the systems programmer after the volume has been installed, it is a best-practice to insert “markers” in the CP Directory file which are representative of the volume's allocation characteristics:
Protective MDisk Definitions Needed For This Volume GUARDIAN MDISK <cuu> <devtype> Start Count VolSer AM <readpw> <writepw> <multpw> -------- ----- ----- --------- ----- ----- ------ -- -------- --------- -------- $PERM$ MDISK <cuu> <devtype> 0000 0011 VM50-1 R <readpw> <writepw> <multpw> $DRCT$ MDISK <cuu> <devtype> 0011 0001 VM50-1 R <readpw> <writepw> <multpw> $DRCT$ MDISK <cuu> <devtype> 0012 0001 VM50-1 R <readpw> <writepw> <multpw> $PERM$ MDISK <cuu> <devtype> 0013 0007 VM50-1 R <readpw> <writepw> <multpw> $TEMP$ MDISK <cuu> <devtype> 0020 0060 VM50-1 R <readpw> <writepw> <multpw> $TDSK$ MDISK <cuu> <devtype> 0080 0020 VM50-1 R <readpw> <writepw> <multpw> $PERM$ MDISK <cuu> <devtype> 0100 0455 VM50-1 R <readpw> <writepw> <multpw>
Finally, we have the Minidisk Allocations which the CP Directory defines for each volume. +
signs indicate USED space .
dots indicate FREE space. There is one position per cylinder on the volume. The device characteristics are consulted to determine the size limits of the volume:
Volume VM50-1 has 555 Allocation Units On 3350CKD *** *** NOTES: Full-Pack MDisks are NOT Mapped *** Ignoring Users ($PERM$ $FPCK$) *** CMS MDisk Max Size is 115 Cylinders *** 0....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+.... 000000 ++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 000100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 000200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 000300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 000400 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 000500 ++++++++++++++++++++++++++++++++++++++++++++........... 0....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....
The visual representation is followed by a cylinder-ordered mapping of the volume as defined in the CP DIRECTORY file provided. Passwords are included and the entry also includes the “ENDCYL” calculation used in calculating potentially overlapping MDISK extents.
____ Item UserName VAdr Start Count EndCyl AM RPasswd WPasswd MPasswd >>>> 1 PERM 101 0000 0010 0009 R SKIP 2 MAINT 141 0000 0555 0554 MW >>>> 3 PERM 102 0011 0002 0012 R >>>> 4 TEMP 100 0013 0057 0069 R >>>> 5 TDSK 100 0070 0030 0099 R >>>> 6 OPERATOR 191 0100 0003 0102 WR ALL WRITE MULT >>>> 7 MAINT 190 0103 0061 0163 MR ALL WRITE MULT >>>> 8 MAINT 299 0164 0014 0177 WR ALL WRITE MULT >>>> 9 MAINT 194 0178 0035 0212 MR ALL WRITE MULT >>>> 10 MAINT 193 0213 0035 0247 MR ALL WRITE MULT >>>> 11 MAINT 393 0248 0085 0332 MR ALL WRITE MULT >>>> 12 MAINT 294 0333 0035 0367 MR ALL WRITE MULT >>>> 13 MAINT 394 0368 0110 0477 MR ALL WRITE MULT >>>> 14 MAINT 191 0478 0035 0512 MR ALL WRITE MULT >>>> 15 MAINT 494 0513 0017 0529 MR ALL WRITE MULT >>>> 16 PERM 103 0530 0014 0543 R
Unused space (if any) is then displayed for reference. Unused space is calculated after applying the IgnoreUser
command line directives even though they are displayed in other mapping outputs.
Unused Space Map ---------------------------- ....10 to ....10 Len(.....1) ...544 to ...554 Len(....11)
The Volume Metadata section is the collection of all information extracted from other system configuration statements contained within DMKSYS ASSEMBLE
and DMKSNT ASSEMBLE
files.
If this volume is identified in a “SYSOWN” statement within DMKSYS
, the type of space defined there, is shown here.
Volume Metadata ---------------------------- SYSOWN [TEMP Volume] Checkpoint [Start: 553 Count: 2] Error [Start: 549 Count: 2] Nucleus [Start: 530 Count: 19] Warm Restart [Start: 551 Count: 2] CMS Seg [Start:(001,1) Segments: (1) Pages:(0-32)(33)] CMSSEG Seg [Start:(002,1) Segments: (240) Pages:(3840-3855)(16)] CMSVSAM Seg [Start:(003,1) Segments: (224,225,226,227,228) Pages:(3584-3679)(96)] CMSAMS Seg [Start:(004,1) Segments: (230,231,232,233,234,235) Pages:(3680-3807)(128)] CMSDOS Seg [Start:(006,1) Segments: (241) Pages:(3856-3863)(8)] INSTVSAM Seg [Start:(007,1) Segments: (251) Pages:(4016-4023)(8)] IMAG3800 Seg [Start:(008,1) Segments: Pages:(5)]
This analysis is important because it tells us where items across these definition files are misaligned.
In the case of the VM/370 SixPack 1.3 Beta 3 configuration, it was discovered that the DEVICE 6F0
VOLSER VM50-6
which contains the CMSUSER MDISKS does not have a valid allocation byte map. Because this is a SYSUSR
volume, the error is not fatal, but if it were to be added to the Control Program's SYSOWN
list, the VM Control Program would not be able to successfully mount this unit.
***** * Device Address 6f0 ***** Volume : E:\Emulation\Vm370.6Pack.1.3.Orig\disks\vm3350-6.6f0.cckd Shadow : sf=E:\Emulation\Vm370.6Pack.1.3.Orig\disks\shadows\vm3350-6_ Composed On : C:\Users\sjzop\AppData\Local\Temp\vm3350-6.6f0.cckd.CV.cckd VolSer(VM50-6) :-1 cylinders Allocations Found On This Volume ALLOCATE StartCyl EndCyl -------- -------- -------- Protective MDisk Definitions Needed For This Volume GUARDIAN MDISK <cuu> <devtype> Start Count VolSer AM <readpw> <writepw> <multpw> -------- ----- ----- --------- ----- ----- ------ -- -------- --------- --------
Here are the entries from DMKSYS:
00001 | SYS TITLE 'DMKSYS FOR 3350 RELEASE 6' DMK00010 00002 | DMKSYS CSECT DMK00020 00003 | COPY OPTIONS DMK00030 00004 | SYSUSR VM50-5,VM50-6 00005 | SYSOWN (VM50-1,TEMP),(VM50-2,PAGE),(VM50-3,TEMP),(VM50-4,PAGE) DMK00050 00006 | SYSRES SYSVOL=VM50-1, X 00007 | SYSRES=141, X 00008 | SYSTYPE=3350, X 00009 | SYSNUC=(530,19), X 00010 | SYSWRM=(551,2,VM50-1), X 00011 | SYSERR=(549,2,VM50-1), X 00012 | SYSCKP=(553,2,VM50-1)
Corrections must be applied to the allocation byte map on this unit before proceeding. This can only be done using the FORMAT/ALLOCATE utility.
Fortunately this is a simple procedure wherein only Cylinder 0 needs to be Formatted and Allocated.
Here's where deviation from best-practices can be problematic… Because there is no full-pack MDISK defined for volume VM50-6
, the directory must be corrected, put online, then the FORMAT/ALLOCATE utility can be more easily operated directly from MAINT.
The corrected DIRECTORY file including this and other fixes is available here: SIXPACK DIRECT A (corrected)
This file must be uploaded to MAINT's 191(A) disk.
Be careful to rename the existing file on MAINT's 191(A) disk as a backup - if you don't rename this file during the transfer command.
Restart the SixPack system, logon as MAINT, press ESC
and transfer the file to the system.
An example of the transfer command might be: transfer host=vm “Direction=send” “LocalFile=<path_to_corrected_directory_file>\sixpack.direct.a.corrected.txt” “HostFile=FIXED6P DIRECT A1” mode=ascii host=vm recfm=fixed lrecl=80 exist=replace
Once the transfer is complete, return to the 3270 session by pressing the RETURN key and you will probably see the following message displayed File transfer terminal → host complete (with records segmented)
IMPORTANT: The line-ending format of this file has MACINTOSH (Carriage-Return) marks. The file MUST be properly formatted with NO line exceeding 80 characters in length (excluding the line-endings). So to verify the file, please review the upload to be sure it looks correct.
DIRECT FIXED6P DIRECT A1 ( EDIT
DIRECT
command to make sure that everything transferred correctly) EOJ DIRECTORY NOT UPDATED
DIRECT
command without the ( EDIT
option and the directory should be placed online. You will see the following messages:direct fixed6p direct a
DMKUDR476I System Directory loaded from volume VM50-1
EOJ DIRECTORY UPDATED AND ON LINE
Verify that the changes were correctly applied to CP by logging OFF of MAINT and then back ON as MAINT.
Issuing the following command cp query virtual dasd
should cause the following to be displayed:
cp query virtual dasd DASD 093 3350 VM50-4 R/W 0040 CYL DASD 094 3350 VM50-4 R/W 0040 CYL DASD 141 3350 VM50-1 R/W 0555 CYL DASD 190 3350 VM50-1 R/W 0061 CYL DASD 191 3350 VM50-1 R/W 0035 CYL DASD 193 3350 VM50-1 R/W 0035 CYL DASD 194 3350 VM50-1 R/W 0035 CYL DASD 19D 3350 VM50-2 R/W 0070 CYL DASD 19E 3350 VM50-2 R/W 0070 CYL DASD 232 3350 VM50-2 R/W 0555 CYL DASD 233 3350 VM50-3 R/W 0555 CYL DASD 234 3350 VM50-4 R/W 0555 CYL DASD 235 3350 VM50-5 R/W 0555 CYL DASD 236 3350 VM50-6 R/W 0555 CYL <--- NOTE: This Full-Pack Addition DASD 294 3350 VM50-1 R/W 0035 CYL DASD 299 3350 VM50-1 R/W 0014 CYL DASD 393 3350 VM50-1 R/W 0085 CYL DASD 394 3350 VM50-1 R/W 0110 CYL DASD 494 3350 VM50-1 R/W 0017 CYL
You may now proceed to use the FORMAT/ALLOCATE program.