*DECK DB$CPFN 
USETEXT SCANTXT 
      FUNC DB$CPFN B; 
      BEGIN 
 #
* *   DB$CPFN - CHECK THAT LITERAL IS A          PAGE  1
* *             VALID PFN 
* *   R. M. PAPPE                                DATE  07/28/80 
* 
* DC  PURPOSE 
* 
*     CHECK THAT LITERAL IN CURWORD IS A VALID PFN. 
* 
* DC  ENTRY CONDITIONS
* 
*     CURWORD CONTAINS THE LITERAL. 
*     DB$CLNG CONTAINS THE LENGTH OF THE NAME (IN CHARACTERS).
* 
* DC  EXIT CONDITIONS 
* 
*     DB$CPFN IS TRUE IF THE LITERAL IS A VALID PFN.
*     OTHERWISE, DB$CPFN IS FALSE.
* 
* DC  CALLING ROUTINES
* 
*     DB$SR32 - STORE PERMANENT FILE NAME 
*     DB$SR54 - STORE VERSION NAME
* 
* DC  CALLED ROUTINES 
* 
*     NONE
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     CHECK THAT THE LITERAL IN CURWORD STARTS WITH AN ALPHABETIC 
*     CHARACTER FOLLOWED BY 0 TO 6 ALPHANUMERIC CHARACTERS. 
*     "TRUE" IS RETURNED IF THE LITERAL IS A VALID PFN, OTHERWISE,
*     "FALSE" IS RETURNED.
* 
 #
  
#     LOCAL ITEMS                                                      #
  
      ITEM I;                      # INDEX FOR -FOR- LOOP              #
  
      IF DB$CLNG LQ 7 
      THEN
        BEGIN 
        IF C<0,1> CURWORD[0] GQ "A" 
          AND C<0,1> CURWORD[0] LQ "Z"
        THEN
          BEGIN 
          FOR I = 1 STEP 1
            UNTIL DB$CLNG - 1 
          DO
            BEGIN 
            IF C<I,1> CURWORD[0] GQ "A" 
              AND C<I,1> CURWORD[0] LQ "9"
            THEN
              BEGIN 
              TEST I; 
  
              END 
            ELSE
              BEGIN 
              DB$CPFN = FALSE;
              RETURN; 
  
              END 
            END              # END FOR LOOP                            #
          DB$CPFN = TRUE; 
          RETURN; 
  
          END 
        END 
        DB$CPFN = FALSE;
        RETURN; 
  
      END 
      TERM
