*COMDECK PRODCLS
  
  $BEGIN
    # THIS ARRAY DEFINES THE FILE DIRECTORY FOR THE CPM SCRATCH 
      FILE.#
  
    DEF FILEDIRSIZE #10#;   # WORD SIZE OF FILE DIRECTORY # 
  COMMON FDCOMM;
    ARRAY FILEDIR [0:0] S(FILEDIRSIZE); 
      BEGIN 
        ITEM FDNAME C(0,0,10);      # FILE NAME # 
        ITEM FDDATE C(1,0,10);      # CREATION DATE # 
        ITEM FDTIME C(2,0,10);      # CREATION TIME # 
        ITEM FDMASTERPTR U(3,0,60); # WORD ADDRESS OF MASTER MODULE 
                                      DIRECTORY. #
        ITEM FDMODCOUNT U(4,0,60);  # NUMBER OF MODULES ON THE FILE#
        ITEM FDNEXTFREEWD U(5,0,60);# ADDRESS OF NEXT FREE WORD # 
        ITEM FDEXECDATE   C(6,0,10); # DATE OF PROGRAM EXEC. #
        ITEM FDEXECTIME   C(7,0,10); # TIME OF PROGRAM EXEC. #
      END 
  
    # THIS ARRAY DEFINES 1 ENTRY OF THE MASTER MODULE DIRECTORY # 
  
    DEF MMDSIZE #9#;   # WORD SIZE OF MASTER MODULE DIR. ENTRY #
  COMMON MMDCOMM; 
    ARRAY MASTERMODDIR [0:0] S(MMDSIZE);
      BEGIN 
        ITEM MMDPROGID    C(0,0,10); # PROGRAM-ID # 
        ITEM MMDDATE      C(1,0,10); # DATE COMPILED #
        ITEM MMDTIME      C(2,0,10); # TIME COMPILED #
        ITEM MMDMODULEPTR U(3,0,60); # WORD ADDRESS OF MODULE # 
        ITEM MMDSPAREWD1  U(4,0,60); # SPARE ENTRY #
        ITEM MMDSPAREWD2  U(5,0,60); # SPARE ENTRY #
        ITEM MMDSPAREWD3  U(6,0,60); # SPARE ENTRY #
        ITEM MMDCALLERMOD U(7,0,60); # INDEX OF MODULE WHICH CALLED 
                                        THIS MODULE # 
        ITEM MMDSPAREBIT1 B(8,0,1); # SPARE ENTRY # 
        ITEM MMDOLDMODULE B(8,1,1); # TRUE IF THERE IS A MORE 
                                      RECENT MODULE WITH THE
                                      SAVE PROGID. #
        ITEM MMDSUBPROG  B(8,2,1); # TRUE IF THE MODULE BELONGS 
                                     TO A SUBROUTINE( IE. CALLED
                                     FROM ANOTHER SUB-PRGM ) #
      END 
  
    # THIS ARRAY DEFINES THE MODULE DIRECTORY FOR A MODULE #
  
    DEF MDTABLEMAX #50#;   # NUMBER OF TABLES IN MODULE # 
    DEF MODDIRSIZE #3#;   # WORD SIZE OF MODULE DIR. ENTRY #
    ARRAY MODDIR [0:MDTABLEMAX] S(MODDIRSIZE);
      BEGIN 
        ITEM MDTABLEPTR   U(0,0,60);  # WORD ADDRESS OF THIS TABLE# 
        ITEM MDENTRYSIZE  U(1,0,60);  # ENTRY SIZE IN WORDS # 
        ITEM MDENTRYCOUNT U(2,0,60);  # NUMBER OF ENTRIES IN TABLE #
      END 
  $END
  
