*DECK FFSUVUN 
      FUNC FFSUVUN(USERNAME) B; 
*CALL COPYRITE
# TITLE FFSUVUN - VALIDATE USER NAME.                                  #
  
      BEGIN                            # FFSUVUN                       #
  
# 
**    FFSUVUN - VALIDATE USER NAME. 
* 
*     C. J. RAMSAY                     85/10/10.
* 
*     THIS FUNCTION VERIFIES THAT A VARIABLE CONFORMS TO NOS USER 
*     NAMING CONVENTIONS. 
* 
*     ENTRY  USERNAME - VARIABLE CONTAING USER NAME TO BE VERIFIED
* 
*     EXIT   FFSUVUN = TRUE - USER NAME OK
*                      FALSE - USER NAME CONTAINS ILLEGAL CHARACTERS. 
* 
*     METHOD TEST EACH CHARACTER TO BE BETWEEN A-Z OR 0-9 OR *. 
* 
# 
  
      DEF CHARA     # O"01" #;         # DISPLAY CODE A                #
      DEF CHARNINE  # O"44" #;         # DISPLAY CODE 9                #
      DEF CHARSTAR  # O"47" #;         # DISPLAY CODE *                #
  
      ITEM USERNAME U;                 # USER NAME TO BE VERIFIED      #
  
      ITEM CHAR     U;                 # CURRENT CHARACTER             #
      ITEM K        I;                 # LOOP VARIABLE                 #
      ITEM VALID    B;                 # VALID FLAG                    #
  
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE
# 
      VALID = TRUE;                    # VALID BY DEFAULT              #
      IF C<0,1>USERNAME EQ 0
      THEN
        BEGIN                          # NO USER NAME                  #
        VALID = FALSE;                 # ILLEGAL USER NAME             #
        END;
      FOR K = 0 STEP 1 WHILE (K LS 7) AND 
                             (C<K,7-K>USERNAME NQ 0) AND
                             (VALID)
      DO
        BEGIN                          # VALIDATE EACH CHARACTER       #
        CHAR = C<K,1>USERNAME;         # PICK UP NEXT CHARACTER        #
        IF (CHAR LS CHARA OR CHAR GR CHARNINE) AND
           (CHAR NQ CHARSTAR) 
        THEN
          BEGIN                        # NOT IN ALLOWABLE RANGE        #
          VALID = FALSE;               # ILLEGAL USER NAME             #
          END 
        END 
  
      FFSUVUN = VALID;
  
      RETURN; 
  
      END                              # FFSUVUN                       #
  
      TERM
