Table of Contents

The DIRMAP Utility

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.

How to Read DIRMAP.LOG

  1. Cover Page (page 1)
  2. Line-By-Line Reprints (pages 2 - 22)
  3. Channel Allocation Map (pages 23 - 52)
  4. Allocation Byte Maps from DASD (pages 53 - 55)
  5. VM Directory-specified MDISK allocations (pages 56 - 62)

Cover Page

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

Line-By-Line Reprints

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 )________________________________________________________________________________
 
  

Channel Allocation Map

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
        

Allocation Byte Maps from DASD

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>

VM MDisk Allocations

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)]
        

Findings

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.

Applying Corrections

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.

Verify the Corrections

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.