*DECK S$ANSFI 
          PROC S$ANSFI(QUERY$,FILENA);
#**       S$ANSFI -  ENSURES PROPERLY FORMED FILENAME                  #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$ANSFI(QUERY$,FILENA):                                      #
#                                                                      #
#     GIVEN-                                                           #
#         QUERY$ = QUERY AS TO THE NAME OF THE FILE CONTAINING         #
#                   OWNCODE SUBROUTINE(S)                              #
#         FILENA = NAME OF THE FILE CONTAINING OWNCODE SUBROUTINE(S)   #
#                                                                      #
#     DOES-                                                            #
#         QUERY AS TO THE NAME OF THE FILE CONTAINING OWNCODE          #
#          SUBROUTINE(S) AND ENSURES A PROPERLY FORMED FILENAME        #
  
          BEGIN 
  
*CALL A 
  
*CALL LINE$ 
  
*CALL QUERY$
  
          XREF
              BEGIN 
              PROC  S$GTANS;
              PROC  S$PUTLN;
              END 
  
          ITEM  FILENA       C(7);     # FILE NAME CONTAUNING OWNCODE  #
          ITEM  I            I; 
          ITEM  REASKQ       B;        # REASK QUESTION                #
          ITEM  VALID        B; 
  
          PROC TESTFILENAME(LINE$,VALID); 
#**       TESTFILENAME -  CHECK FOR VALID FILE NAME                    #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         TESTFILENAME(LINE$,VALID):                                   #
#                                                                      #
#     GIVEN-                                                           #
#         LINE$ = CONTAINS FILE NAME GIVEN BY USER                     #
#         VALID = TRUE IF FILE NAME IS VALID                           #
#                                                                      #
#     DOES-                                                            #
#         CHECKS EACH CHARACTER OF THE FILE NAME GIVEN BY THE USER     #
#         TO BE CERTAIN THAT THE FIRST CHARACTER IS A LETTER AND THE   #
#         REMAINDER OF THE CHARACTERS ARE LETTERS A/O NUMBERS AND THE  #
#         LENGTH OF THE FILE NAME DOES NOT EXCEED 7 CHARACTERS         #
#         IF THE FILE NAME IS VALID                                    #
#             SETS VALID = TRUE                                        #
#         ELSE                                                         #
#             SETS VALID = FALSE                                       #
  
  
          BEGIN 
          XREF
              PROC  S$PUTLN;
  
*CALL A 
  
*CALL LINE$ 
  
  
          ITEM CH          C(1);
          ITEM I           I; 
          ITEM N           I; 
          ITEM VALID       B; 
  
          IF C<0,1>LINE$LINE LS "A" 
           OR C<0,1>LINE$LINE GR "Z"  THEN
              BEGIN 
              LINE$LINE = 
                           "A FILE NAME MUST BEGIN WITH A LETTER (A-Z)";
              LINE$LENGTH = 42; 
              S$PUTLN(LINE$); 
              VALID = FALSE;
#***#         RETURN; 
              END 
          FOR I=1 STEP 1 UNTIL 6  DO
              BEGIN 
              CH = C<I,1>LINE$LINE; 
              IF CH EQ " " THEN 
                  FOR N = I+1 STEP 1 UNTIL 9 DO 
                      BEGIN 
                      IF C<N,1>LINE$LINE NQ " " THEN
                          GOTO ERROR; 
                      END 
                  GOTO GOOD;
              IF NOT(( CH GQ "A" AND CH LQ "Z") 
               OR ( CH GQ "0" AND CH LQ "9" ))  THEN
                  BEGIN 
ERROR:  
                  LINE$LINE = 
               "A FILE NAME MUST BEGIN WITH A LETTER (A-Z) AND CONSIST";
                  LINE$LENGTH = 54; 
                  S$PUTLN(LINE$); 
                  LINE$LINE = 
                 "OF NOT MORE THAN 7 LETTERS AND/OR DIGITS (NO BLANKS)";
                  LINE$LENGTH = 52; 
                  S$PUTLN(LINE$); 
                  VALID = FALSE;
#***#             RETURN; 
                  END 
              END 
  
          IF C<7,3>LINE$LINE NQ " " THEN
              BEGIN 
              LINE$LINE = 
                    "A FILE NAME CAN NOT EXCEED 7 CHARACTERS IN LENGTH";
              LINE$LENGTH = 49; 
              S$PUTLN(LINE$); 
              VALID = FALSE;
#***#         RETURN; 
              END 
  
GOOD: 
          VALID = TRUE; 
  
          END #TESTFILENAME#
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
CONTROL EJECT;
  
PUTLINE:  
  
          FOR I=1 STEP 1 UNTIL QUERY$NLINES  DO 
              BEGIN 
              LINE$LINE = QUERY$LINE[I];
              LINE$LENGTH = QUERY$LLINE[I]; 
              S$PUTLN(LINE$); 
              END 
  
          S$GTANS(LINE$,REASKQ);
  
          IF REASKQ  THEN 
              GOTO PUTLINE; 
  
          TESTFILENAME(LINE$,VALID);
          IF NOT VALID  THEN
              GOTO PUTLINE; 
  
          FILENA = LINE$LINE; 
  
          END # S$ANSFI # 
          TERM
