*COMDECK UTMPTDCLS
  
# ******************************************************************** #
  
# COMMON FOR MD UTILITY COMMON MEMORY MANAGER INTERFACE POINTERS ETC.#
  
        COMMON DB$MCPT; 
  
          BEGIN              # DB$MCPT COMMON BLOCK # 
  
# ITEMS PREFIXED "OV" ARE NOT RELATED TO ANY SPECIFIC MEMORY BLOCK #
  
            ITEM OVERFERR U; # OVERFLOW ERROR SPECIAL PROC ADDRESS #
            ITEM OVERFLOW B; # TRUE IFF OVERFLOW DAMAGING TO BLOCKS # 
            ITEM OVLLEVEL I; # CURRENT OVERLAY LEVEL NUMBER # 
  
# ITEMS PREFIXED BY "CAL" ARE FOR CST BUILDER, CONSTRAINT AREA LIST    #
# MEMORY BLOCK.                                                        #
  
            ITEM CALADDR  U; # CONSTRAINT AREA LIST BLOCK ADDRESS WORD #
            ITEM CALPOINT U; # CONSTRAINT AREA LIST BLOCK POINTER WORD #
  
# ITEM PREFIXED "CHK" IS FOR CST BUILDER CURRENT CHECKSUM LIST BLOCK #
  
            ITEM CHKSMBP  U; # CURRENT CHECKSUM LIST BLOCK POINTER WD#
  
# ITEMS PREFIXED BY "CIT" ARE FOR CST BUILDER, CONSTRAINT INTEGRITY    #
# TABLES LIST MEMORY BLOCK.                                            #
  
            ITEM CITADDR  U; # CONSTR INTEG TABLE BLOCK ADDRESS WORD   #
            ITEM CITPOINT U; # CONSTR INTEG TABLE BLOCK POINTER WORD   #
  
# ITEMS PREFIXED "DBP" ARE FOR THE DB PROC TABLE MANAGED MEMORY BLOCK#
  
            ITEM DBPROCBP U; # DATA BASE PROC TABLE BLOCK POINTER WD.#
            ITEM DBPTADDR U; # DBPT BLOCK ADDRESS OF WD. AFTER HEADER#
  
# ITEMS PREFIXED "EXT" ARE FOR THE CST BUILDER EXTENSION MEMORY BLOCK#
  
            ITEM EXTNADDR U; # EXTENSION BLOCK ADDR OF WD AFTER HEADR#
            ITEM EXTPOINT U; # EXTENSION BLOCK FIRST WD ADDR POINTER #
  
# ITEMS PREFIXED "PLO" ARE FOR CST BUILDER PRIVACY LOCK TABLE BLOCK # 
  
            ITEM PLOKADDR U; # PRIVACY LOCK TABLE BLOCK ADDRESS WORD #
            ITEM PLOPOINT U; # PRIVACY LOCK TABLE BLOCK POINTER WORD #
  
# ITEMS PREFIXED "POP" ARE FOR CST BUILDER PROC OPTION TABLE BLOCK #
  
            ITEM POPPOINT U; # PROC OPTION TABLE BLOCK POINTER WORD # 
            ITEM POPTADDR U; # PROC OPTION TABLE BLOCK ADDRESS WORD # 
  
# ITEMS PREFIXED "SCH" ARE FOR THE CST BUILDER SCHEMA MEMORY BLOCK #
  
            ITEM SCHEADDR U; # SCHEMA BLOCK ADDR OF WORD AFTER HEADER#
            ITEM SCHPOINT U; # SCHEMA BLOCK FIRST WD. ADDRESS POINTER#
  
# ITEMS PREFIXED "SUB" ARE FOR THE CST BUILDER SUBSCHEMA MEMORY BLOCK#
  
            ITEM SUBPOINT U; # SUBSCHEMA BLOCK FIRST WD ADDR POINTER #
            ITEM SUBSADDR U; # SUBSCHEMA BLOCK ADDR OF WD AFTER HEADR#
  
# ITEMS PREFIXED "WOR" ARE FOR CST BUILDER WORK BLOCK MEMORY BLOCK #
  
            ITEM WORKADDR U; # WORK BLOCK ADDRESS OF WD. AFTER HEADER#
            ITEM WORPOINT U; # WORK BLOCK FIRST WORD ADDRESS POINTER #
  
                                                                         CORTOPL
# THE FOLLOWING ITEMS ARE BLOCK POINTER WORDS FOR CMM BLOCKS USED      # CORTOPL
# ACROSS ALL OVERLAYS OF DBMSTRD.                                      # CORTOPL
                                                                         CORTOPL
            ITEM ARDIRBP U;  # AREA DIRECTORY BLOCK POINTER            # CORTOPL
            ITEM ARINFOBP U; # AREA INFORMATION BLOCK POINTER          # CORTOPL
            ITEM CSTDIRBP U; # CST/SUBSCHEMA DIRECTORY BLOCK POINTER   # CORTOPL
            ITEM CUTBP U;    # CONSTRAINT USE TABLE BLOCK POINTER      #
            ITEM KEYINFOBP U; # KEY INFORMATION TABLE POINTER          #
            ITEM MDCHKSMBP U;# MD SCHEMA CHECKSUM LIST BLOCK POINTER   #
            ITEM PCUTBP U;   # PRE CONSTRAINT USE TABLE POINTER        #
            ITEM PITBP U;    # PERM FILE INFO TABLE BLOCK POINTER      #
            ITEM VERDIRBP U; # VERSION DIRECTORY TABLE BLOCK POINTER   #
            ITEM VERINFBP U; # VERSION INFORMATION TABLE BLOCK POINTER #
            ITEM PFUNCBBP U; # PFN/UN COMBO LIST BLOCK POINTER         # CORTOPL
            ITEM WRKBUFBP U; # WORK BUFFER BLOCK POINTER.              #
            ITEM SCDRBP U;   # SCHEMA DIRECTORY BLOCK POINTER          # CORTOPL
  
  
# 
*     ARRAY WHERE THE INDEX TO THE PFN IS STORED. 
* 
*     THE INDEX IS NOT CREATED UNTIL THE FIRST TIME THE PFN OVERFLOWS.
# 
      BASED ARRAY PFX;
        BEGIN 
        ITEM PXPFW1    U(00,00,60);    # WORD 1                        #
        ITEM PXPFNAME  U(00,00,42);    # PERMANENT FILE NAME           #
        ITEM PXPFW2    U(01,00,60);    # WORD 2                        #
        ITEM PXPFNID   U(01,00,42);    # PERMANENT FILE ID/UN          #
        ITEM PXPFW3    U(02,00,60);    # WORD 3                        #
        ITEM PXPFPACK  U(02,00,42);    # PACK/FAMILY/SET NAME          #
        END 
      ITEM PFXA;                   # TABLE SPACE ALLOCATED             #
      ITEM PFXL;                   # LENGTH CURRENTLY IN USE           #
  
  
# 
*     LIST OF SWAPPED OUT TABLE SEGMENTS
# 
      BASED ARRAY SWAPLIST; 
        BEGIN 
        ITEM SWLWORD  I(00,00,60);  # SWAP LIST WORD                   #
        ITEM SWLPRU   I(00,00,24);  # PRU LOCATION OF SEGMENT          #
        ITEM SWLPRUL  I(00,24,15);  # PRU LENGTH OF SEGMENT            #
        ITEM SWLPLOC  I(00,42,18);  # LOCATION OF THE POINTER TO THE   #
                                    # TABLE FROM WHICH THIS SEGMENT    #
                                    # WAS WRITTEN.                     #
        END 
  
      ITEM SWPLISTA;               # LENGTH OF THE SWAPLIST ALLOCATION #
      ITEM SWPLISTL;               # LENGTH OF THE SWAPLIST            #
  
# 
* 
*               T A B L E   L E N G T H   C O N T R O L . 
* 
*     THE BASIC TABLE LENGTH CONTROL FIELDS ARE CONTAINED IN THE FIRST
*     WORD OF THE TABLE HEADER. 
*     IF THE CONTROL INDICATOR (TLCCT) IS "FALSE" THE TLC HEADER
*     CONSISTS OF ONLY THAT ONE WORD. 
*     IN THAT CASE THE TABLE IS ALLOWED TO GROW IN CENTRAL MEMORY 
*     WITHOUT LIMIT.
* 
*     WHEN THE CONTROL INDICATOR IS TRUE, IF THE TABLE SIZE ATTEMPTS TO 
*     GROW LARGER THAN TLCTMXL (EXCLUDING THE HEADER) THE CONTENTS WILL 
*     BE WRITTEN OUT TO THE TABLE SWAP FILE.
* 
*     BEFORE THE FIRST TABLE DUMP OCCURS THE TABLE CONTENTS WILL BE 
*     ONE CONTIGUOUS SET OF DATA, EQUAL IN LENGTH TO TLCUSED. 
*     THE FIRST TIME THE TABLE IS DUMPED, IT WILL BE SPLIT AND WRITTEN
*     AS TWO SEPARATE DISK SEGMENTS, BEGINNING AT (TLCHLEN + TLCDSBW) 
*     AND (TLCHLEN + TLCBSBW) WITH A TOTAL LENGTH OF TLCUSED. 
* 
*     AFTER THAT FIRST DUMP, THE TABLE IS PARTITIONED INTO TWO PARTS. 
*     THE FIRST PARTITION IS THE RESIDENT DISK SEGMENT, WHICH CAN BE
*     USED FOR READING TABLE SEGMENTS FROM THE DISK WHEN THEY ARE TO BE 
*     SCANNED OR MODIFIED.
*     FOLLOWING EACH SEGMENT DUMP, THE MOST RECENTLY DUMPED SEGMENT IS
*     LEFT IN THE DISK SEGMENT PARTITION. 
* 
*     THE SECOND PARTITION IS THE BUILD SEGMENT, WHICH BEGINS AT
*     (TLCHLEN + TLCBSBW) AND HAS THE LENGTH OF (TLCUSED - TCLBSBW).
*     THIS IS THE PORTION THAT IS BEING BUILT AND HAS NOT YET BEEN
*     DUMPED TO THE DISK. 
# 
  
      BASED ARRAY TLC;
        BEGIN 
        ITEM TLCWORD  I(00,00,60);  # TABLE LENGTH CONTROL WORD        #
        ITEM TLCCT    B(00,00,01);  # TRUE FOR A CONTROLLED TABLE      #
        ITEM TLCXT    B(00,01,01);  # TRUE FOR AN INDEXED TABLE        #
        ITEM TLCPAD   I(00,06,18);  # NUMBER OF WORDS USED FOR PAD     #
        ITEM TLCUSED  I(00,24,18);  # SPACE ACTUALLY USED IN BLOCK     #
        ITEM TLCLEN   I(00,42,18);  # LENGTH INCLUDING CONTROL WORDS   #
# 
*     THE FOLLOWING ENTRIES ARE PRESENT ONLY WHEN TLCCT IS TRUE.
* 
*     TLC TABLE HEADER LENGTH.
# 
        ITEM TLCHLEN  U(01,45,15);  # TABLE HEADER LENGTH              #
# 
*     RESIDENT DISK SEGMENT DESCRIPTORS.
# 
        ITEM TLCDSOR  U(01,00,15);  # RESIDENT DISK SEGMENT ORDINAL    #
        ITEM TLCDSBW  U(01,15,15);  # DISK SEGMENT BEGINNING WORD      #
        ITEM TLCDSWL  U(01,30,15);  # DISK SEGMENT WORD LENGTH         #
        ITEM TLCDSMF  B(02,00,01);  # DISK SEGMENT MODIFICATION FLAG   #
# 
*     BUILD SEGMENT DESCRIPTOR
# 
        ITEM TLCBSBW  U(02,30,15);  # BUILD SEGMENT BEGINNING WORD     #
                                    # (OFFSET FROM THE TABLE HEADERS)  #
  
# 
*     MAXIMUM LENGTH OF THE TOTAL TABLE (EXCLUDING THE HEADERS) 
# 
        ITEM TLCTMXL  U(02,45,15);  # TABLE MAXIMUM CM LENGTH          #
  
# 
*     DISK SEGMENT ORDINAL DESCRIPTORS. 
* 
*     ONE WORD FOR EACH TABLE SEGMENT THAT HAS BEEN WRITTEN TO THE
*     SWAP FILE.
*     USE SEGMENT ORDINAL AS SUBSCRIPT TO ACCESS THESE DESCRIPTORS. 
# 
        ITEM TLCSPRU  I(00,00,24);  # PRU LOCATION OF DISK SEGMENT     #
        ITEM TLCSLEN  I(00,42,18);  # SEGMENT LENGTH IN WORDS          #
        END 
  
  
          END                # DB$MCPT COMMON BLOCK # 
  
# ******************************************************************** #
  
