COMPVLC 
COMMON
          CTEXT  COMPVLC - VALIDATE ACCESS LEVEL OR CATEGORY STRING.
          SPACE  4,10 
          IF     -DEF,QUAL$,1 
          QUAL   COMPVLC
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       COMPVLC - VALIDATE ACCESS LEVEL OR CATEGORY STRING. 
*         J. HOLLISTER       82/11/03.
          SPACE  4,25 
***       COMPVLC VALIDATES AN ACCESS CATEGORY STRING AND/OR
*         AN ACCESS LEVEL STRING, AND CALCULATES THE VALUES 
*         CORRESPONDING TO THE STRING SPECIFIED.
* 
* 
*         ASSEMBLY OPTIONS -
* 
*                VAC$ - ASSEMBLE CODE TO SEARCH ACCESS CATEGORY TABLE.
*                       IF *TACT* NOT DEFINED, ASSEMBLE TABLE.
* 
*                VAL$ - ASSEMBLE CODE TO SEARCH ACCESS LEVEL TABLE. 
*                       IF *TALV* NOT DEFINED, ASSEMBLE TABLE.
* 
*                SCH$ - ASSEMBLE SEARCH CODE.  IF *SCH$* IS NOT DEFINED 
*                       BUT *VAC$* AND/OR *VAL$* ARE DEFINED, ASSEMBLE
*                       ONLY THE APPROPRIATE TABLE(S).
* 
*                REL$ - GENERATE RELOCATED CODE FOR USE IN ZERO-LEVEL 
*                       OVERLAY (THIS TAG IS DEFINED IN *COMPRLI*). 
          SPACE  4,10 
 SCH$     IF     DEF,SCH$ 
 VAC$     IF     DEF,VAC$ 
 VAC      SPACE  4,10 
**        VAC - VALIDATE ACCESS CATEGORY STRING.
* 
*         ENTRY  (A) = ADDRESS OF ACCESS CATEGORY STRING. 
* 
*         EXIT   (A) = ACCESS CATEGORY VALUE. 
*                (A) .LT. 0 IF ACCESS CATEGORY NOT VALID. 
* 
*         USES   T3, T4, T7.
* 
*         CALLS  STN. 
  
  
 VAC      SUBR               ENTRY/EXIT 
          STD    T7          SAVE STRING ADDRESS
 REL$     IF     DEF,REL$ 
          LDC.   TACT        SAVE TABLE FWA 
 REL$     ELSE
          LDC    TACT 
 REL$     ENDIF 
          STD    T4 
          LDC    TACTL       SAVE TABLE LENGTH
          STD    T3 
          RJM    STN         SEARCH TABLE FOR NAME
          UJN    VACX        RETURN 
 VAC$     ENDIF 
          SPACE  4,10 
 VAL$     IF     DEF,VAL$ 
 VAL      SPACE  4,10 
**        VAL - VALIDATE ACCESS LEVEL STRING. 
* 
*         ENTRY  (A) = ADDRESS OF ACCESS LEVEL STRING.
* 
*         EXIT   (A) = ACCESS LEVEL VALUE.
*                (A) .LT. 0 IF ACCESS LEVEL NOT VALID.
* 
*         USES   T3, T4, T7.
* 
*         CALLS  STN. 
  
  
 VAL      SUBR               ENTRY/EXIT 
          STD    T7          SAVE STRING ADDRESS
 REL$     IF     DEF,REL$ 
          LDC.   TALV        SAVE TABLE FWA 
 REL$     ELSE
          LDC    TALV 
 REL$     ENDIF 
          STD    T4 
          LDN    TALVL       SAVE TABLE LENGTH
          STD    T3 
          RJM    STN         SEARCH TABLE FOR NAME
          UJN    VALX        RETURN 
 VAL$     ENDIF 
 STN      SPACE  4,10 
**        STN - SEARCH TABLE FOR NAME.
* 
*         ENTRY  (T7) = FWA OF BUFFER CONTAINING NAME.
*                (T4) = FWA OF TABLE TO BE SEARCHED.
*                (T3) = LENGTH OF TABLE TO BE SEARCHED. 
* 
*         EXIT   (A) = TABLE INDEX OF MATCHING ENTRY. 
*                (A) .LT. 0 IF ENTRY NOT FOUND IN TABLE.
* 
*         USES   T1, T2, T3, T7.
  
  
 STN3     LDD    T1          SET POINTER TO NEXT TABLE ENTRY
          ADD    T7 
          SBD    T2 
          STD    T1 
          SBD    T4          CHECK IF ALL ENTRIES IN TABLE CHECKED
          PJN    STN1        IF NOT END OF TABLE
  
 STN      SUBR               ENTRY/EXIT 
          LDD    T4          SET LWA OF TABLE 
          ADD    T3 
          SBN    1
          STD    T1 
          SOD    T7          PRESET NAME BUFFER FWA-1 
 STN1     LDN    4           SET NAME BUFFER POINTER
          ADD    T7 
          STD    T2 
 STN2     LDI    T2          COMPARE BYTES OF NAMES 
          SBI    T1 
          NJN    STN3        IF NO MATCH
          SOD    T1          DECREMENT TABLE POINTER
          SOD    T2          DECREMENT NAME BUFFER POINTER
          SBD    T7 
          NJN    STN2        IF MORE TO COMPARE 
          AOD    T1          NAME FOUND - CALCULATE INDEX 
          SBD    T4 
          SHN    -2 
          UJN    STNX        RETURN 
 SCH$     ENDIF 
          SPACE  4,10 
 VAC$     IF     DEF,VAC$ 
 TACT     IF     -DEF,TACT
**        TACT - TABLE OF VALID SECURITY ACCESS CATEGORIES. 
  
  
 TACT     BSS    0
          LOC    0
          VFD    48/0L"ACM00" 
          VFD    48/0L"ACM01" 
          VFD    48/0L"ACM02" 
          VFD    48/0L"ACM03" 
          VFD    48/0L"ACM04" 
          VFD    48/0L"ACM05" 
          VFD    48/0L"ACM06" 
          VFD    48/0L"ACM07" 
          VFD    48/0L"ACM08" 
          VFD    48/0L"ACM09" 
          VFD    48/0L"ACM10" 
          VFD    48/0L"ACM11" 
          VFD    48/0L"ACM12" 
          VFD    48/0L"ACM13" 
          VFD    48/0L"ACM14" 
          VFD    48/0L"ACM15" 
          VFD    48/0L"ACM16" 
          VFD    48/0L"ACM17" 
          VFD    48/0L"ACM18" 
          VFD    48/0L"ACM19" 
          VFD    48/0L"ACM20" 
          VFD    48/0L"ACM21" 
          VFD    48/0L"ACM22" 
          VFD    48/0L"ACM23" 
          VFD    48/0L"ACM24" 
          VFD    48/0L"ACM25" 
          VFD    48/0L"ACM26" 
          VFD    48/0L"ACM27" 
          VFD    48/0L"ACM28" 
          VFD    48/0L"ACM29" 
          VFD    48/0L"ACM30" 
          VFD    48/0L"ACM31" 
 TACTL    BSS    0
          LOC    *O 
 TACT     ENDIF 
 VAC$     ENDIF 
          SPACE  4,10 
 VAL$     IF     DEF,VAL$ 
 TALV     IF     -DEF,TALV
**        TALV - TABLE OF SECURITY ACCESS LEVELS. 
  
  
 TALV     BSS    0
          LOC    0
          VFD    48/0L"ALM0"
          VFD    48/0L"ALM1"
          VFD    48/0L"ALM2"
          VFD    48/0L"ALM3"
          VFD    48/0L"ALM4"
          VFD    48/0L"ALM5"
          VFD    48/0L"ALM6"
          VFD    48/0L"ALM7"
 TALVL    BSS    0
          LOC    *O 
 TALV     ENDIF 
 VAL$     ENDIF 
          SPACE  4,10 
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
  
 VAC$     IF     DEF,VAC$ 
          IF     DEF,SCH$,1 
 VAC      EQU    /COMPVLC/VAC 
          IF     -DEF,TACT,2
 TACT     EQU    /COMPVLC/TACT
 TACTL    EQU    /COMPVLC/TACTL 
 VAC$     ENDIF 
  
 VAL$     IF     DEF,VAL$ 
          IF     DEF,SCH$,1 
 VAL      EQU    /COMPVLC/VAL 
          IF     -DEF,TALV,2
 TALV     EQU    /COMPVLC/TALV
 TALVL    EQU    /COMPVLC/TALVL 
 VAL$     ENDIF 
  
 QUAL$    ENDIF 
  
          ENDX
