COMTVLV 
COMMON
  
#     COMTVLV - VALIDATION TABLE DEFINITIONS, ITEMS AND ARRAYS.       # 
  
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL FI;
      BEGIN  # COMTVLV #
  
# 
***   COMTVLV - VALIDATION TABLE DEFINITIONS, ITEMS AND ARRAYS. 
* 
*     COMTVLV DEFINES THE VALIDATION TABLE (*VT*), THE ASSOCIATED 
*     VALIDATION PROBLEM TYPES AND THE VALIDATION ERROR MESSAGES
*     USED BY THE *SSVAL* ROUTINES. 
* 
# 
  
  
# 
*     DEFINITION OF VALIDATION ERROR FLAGS IN THE *VT* ENTRY. 
*     (BIT LOCATION OF THE ERROR FLAGS).
# 
  
      DEF BNON       #09#;           # NO CARTRIDGE # 
      DEF BINH       #10#;           # *FCT* INHIBIT BIT SET #
      DEF BLOS       #11#;           # CARTRIDGE LOST # 
      DEF BEWP       #12#;           # *FCT* WRITE PARITY BIT SET # 
      DEF BCON       #13#;           # *FCT* CONFLICT BIT SET # 
      DEF BFRO       #14#;           # *FCT* FROZEN BIT SET # 
      DEF BSOF       #15#;           # START OF FRAGMENT SET #
      DEF BILL       #16#;           # ILL-FORMED CHAIN # 
      DEF BINC       #17#;           # INTERSECTING CHAIN # 
      DEF BINS       #18#;           # INTERSECTING STREAM #
      DEF BRER       #19#;           # *PFC* READ ERROR FLAG SET #
      DEF BMSH       #20#;           # MISSING HEAD OF CHAIN #
      DEF BMUL       #21#;           # MULTIPLE OWNERS #
      DEF B1ST       #22#;           # FIRST OWNER DETECTED # 
      DEF BSCA       #23#;           # SCATTERED FILE DETECTED #
      DEF BSME       #24#;           # SMMAP ENTRY ERROR #
      DEF BSYS       #25#;           # *PFC* SYSTEM ERROR FLAG #
  
  
# 
*     DEFINE THE RANGE OF VALIDATION ERROR FLAGS. 
# 
  
      DEF VPS        #9#;            # STARTING BIT NUMBER #
      DEF VPX    #25#;       # ENDING BIT NUMBER #
  
# 
*     VALIDATION PROBLEM TYPES. 
*       EACH ERROR FLAG IS ASSIGNED A TYPE TO REFLECT THE 
*       SERIOUSNESS/TYPE OF ERROR.  THE ERROR TYPES FOR EACH
*       ERROR FLAG ARE RECORDED IN THE *VTPTYPES* ARRAY.
# 
  
      DEF VPT1       #1#;            # PROBLEM TYPE 1 # 
      DEF VPT2       #2#;            # PROBLEM TYPE 2 # 
      DEF VPT4       #4#;            # PROBLEM TYPE 4 # 
  
  
  
      COMMON TVLVCOM; 
  
        BEGIN  # TVLVCOM COMMON BLOCK # 
                                                      #$$#
              ITEM $$TVLV$$ C(20) = "****** COMTVLV *****"; 
                                                      #$$#
  
# 
*     THE VALIDATION TABLE. 
*       THE VALIDATION TABLE (VT) IS USED AS A FAST METHOD TO 
*       FOLLOW CHAINS AND PROBLEMS WITH CHAINS.  IT 
*       HAS A 1 WORD ENTRY FOR EACH AU.  THESE ENTRIES
*       ARE PARALLEL TO THE *FCT* BEING EXAMINED.  MEMORY FOR THE 
*       TABLE WILL BE ALLOCATED AT THE END OF THE PROGRAM FIELD LENGTH
*       DURING PROGRAM EXECUTION.  THE SIZE REQUIRED WILL BE
*       EQUAL TO 1931 * (THE MAXIMUM NUMBER OF CUBES IN A GROUP WHICH 
*       IS 161.  NOTE - SPACE EXISTS FOR
*       *FCT* ORDINAL 0 EVEN THOUGH IT IS NOT USED. 
* 
# 
  
  
        BASED 
        ARRAY VTTABLE [0:0] S(1);    # *VT* TABLE # 
          BEGIN 
          ITEM VT$ITEM    U(00,00,60);
          END 
  
# 
*     ENTRIES ARE ADDED TO THE *VT* TABLE AT A LOCATION DETERMINED
*     BY THEIR *FCT* ORDINAL AND STREAM NUMBER. 
*     THIS ARRAY IS USED TO BUILD THE LINK (SUBSCRIPT) TO A *VT*
*     ENTRY.
* 
# 
  
        BASED 
        ARRAY VTLINK [0:0] S(1);     # TO BUILD THE LINK TO A *VT*
                                       ENTRY #
          BEGIN 
          ITEM VTL$WORD   U(00,00,60);  # REFERENCE FULL ENTRY #
          ITEM VTL$GRT    U(00,45,04);        # NEXT GROUP ORDINAL #
          ITEM VTL$AU     U(00,49,11);          # NEXT *AU* # 
          END 
  
        ITEM VTFIRST    I;           # INDEX OF FIRST ENTRY IN *VT* # 
        ITEM VTLAST     I;           # INDEX OF END OF *VT* # 
        ITEM VTPTR      I;           # INDEX OF CURRENT ENTRY # 
  
  
  
# 
*     VALIDATION TABLE ENTRY.  THIS ARRAY DESCRIBES EACH ENTRY (AU) 
*       IN THE *VT* TABLE.
*       - WARNING - 
*        THE *VTPTYPES* ARRAY AND THE *VTERMSGS* ARRAY DEPEND 
*        ON THE ORDER AND MEANING OF THE ERROR FLAGS. 
* 
# 
  
        ARRAY VTENTRY [0:0] S(1);    # *VT* TABLE ENTRY # 
          BEGIN 
          ITEM VTEN$WORD  U(00,00,60);  # REFERENCE WHOLE ENTRY # 
          ITEM VTEN$ALOC  B(00,00,01);  # ALLOCATED # 
          ITEM VTEN$ALOCR U(00,00,01);  # ALLOCATED REDEFINED # 
          ITEM VTEN$HOC   B(00,01,01);  # HEAD OF CHAIN # 
          ITEM VTEN$EOC   B(00,02,01);  # END OF CHAIN #
          ITEM VTEN$OWN   B(00,03,01);  # *PFC* OWNER # 
          ITEM VTEN$OCL   U(00,04,02);  # OFF CARTRIDGE LINK #
          ITEM VTEN$PROB  U(00,06,03);  # SUMMARY OF PROBLEM TYPES #
          ITEM VTEN$TYP4  B(00,06,01);  # TYPE4 PROBLEM # 
          ITEM VTEN$TYP2  B(00,07,01);  # TYPE2 PROBLEM # 
          ITEM VTEN$TYP1  B(00,08,01);  # TYPE1 PROBLEM # 
          ITEM VTEN$NONE  B(00,BNON,01);  # NO CARTRIDGE #
          ITEM VTEN$INHB  B(00,BINH,01);  # *FCT* INHIBIT ON #
          ITEM VTEN$LOST  B(00,BLOS,01);  # *FCT* LOST ON # 
          ITEM VTEN$EWPE  B(00,BEWP,01);  # *FCT* EWPE ON # 
          ITEM VTEN$CONF  B(00,BCON,01);  # STREAM CONFLICT ON #
          ITEM VTEN$CONR  U(00,BCON,01);  # CONFLICT REDEFINED #
          ITEM VTEN$FROZ  B(00,BFRO,01);  # STREAM FROZEN ON #
          ITEM VTEN$FROZR U(00,BFRO,01);  # FROZEN REDEFINED #
          ITEM VTEN$SOF   B(00,BSOF,01);  # STREAM SOF ON # 
          ITEM VTEN$SOFR  U(00,BSOF,01);  # SOF REDEFINED # 
          ITEM VTEN$ILL   B(00,BILL,01);  # ILL-FORMED CHAIN DETECTED # 
          ITEM VTEN$INTC  B(00,BINC,01);  # INTERSECTING CHAIN DETECTED 
                                          # 
          ITEM VTEN$INTS  B(00,BINS,01);  # INTERSECTING STREAM 
                                            DETECTED #
          ITEM VTEN$RERR  B(00,BRER,01);  # *PFC* READ ERR FLAG ON #
          ITEM VTEN$MSH   B(00,BMSH,01);  # MISSING HOC # 
          ITEM VTEN$MULT  B(00,BMUL,01);  # MULTIPLE *PFC* OWNERS # 
          ITEM VTEN$1ST   B(00,B1ST,01);  # FIRST OWNER FLAG #
          ITEM VTEN$SCAT  B(00,BSCA,01);  # SCATTERED FILE FLAG # 
          ITEM VTEN$SME   B(00,BSME,01);  # SMMAP ENTRY ERROR # 
          ITEM VTEN$SYS   B(00,BSYS,01);  # SYSTEM ERROR #
          ITEM VTEN$FCF   B(00,26,01);  # FREE CARTRIDGE FLAG # 
          ITEM VTEN$LOOP  B(00,28,01);  # DETECT LOOP # 
          ITEM VTEN$RPTED B(00,29,01);  # REPORTED FLAG # 
          ITEM VTEN$POINT U(00,30,15);  # HOC POINTER # 
          ITEM VTEN$LINK  U(00,45,15);  # NEXT LINK IN CHAIN #
          ITEM VTEN$LINKH U(00,45,04);  # NEXT *GRT* ORDINAL #
          ITEM VTEN$LINKL U(00,49,11);  # NEXT *AU* # 
          END 
  
  
  
# 
*     VTPTYPES - IS AN ARRAY USED TO ASSIGN PROBLEM TYPES TO
*                EACH ERROR FLAG IN THE *VT* ENTRY. 
# 
  
        ARRAY VTPTYPES [VPS:VPX] S(1);
          BEGIN 
          ITEM VTP$TYP    U(00,00,60) = [ 0,  # NONE #
          VPT1,                      # INHB # 
          VPT2,                      # LOST # 
          VPT2,                      # EWPE # 
          VPT4,                      # CONF # 
          VPT4,                      # FROZ # 
          VPT4,                      # SOF #
          VPT4,                      # ILL #
          VPT4,                      # INTC # 
          VPT4,                      # INTS # 
          VPT1,                      # RERR # 
          VPT2,                      # MSH #
          VPT2,                      # MULT # 
          0,                         # FIRST (NO PROBLEM) # 
          VPT1,                      # SCAT # 
          VPT2,                      # *CSU* #
          VPT1];                     # SYS #
          END 
  
# 
*     VTERMSGS - IS THE ARRAY TO RELATE A SPECIFIC ERROR
*                TEXT TO THE VALIDATION ERROR FLAG. 
*                THE ERROR TEXT IS DEFINED IN *COMUVLD*.
# 
  
        ARRAY VTERMSGS [VPS:VPX] S(4);  # *VT* ERROR MSGS # 
          BEGIN 
          ITEM VTER$MSG   C(00,00,40) = [ ENONE,
          EINHB,
          ELOST,
          EEWPE,
          ECONF,
          EFROZ,
          ESOF, 
          EILL, 
          EINTC,
          EINTA,
          ERERR,
          EMSH, 
          EMULT,
          "0",                       # NO MESSAGE FOR THIS ERROR FLAG # 
          ESCAT,
          ESME, 
          ESYS   ]; 
          END 
  
  
        END  # TVLVCOM COMMON BLOCK # 
  
      END  # COMTVLV #
  
                                               CONTROL LIST;
