*DECK S$ANSNM 
          PROC S$ANSNM(QUERY$,NUM); 
#**       S$ANSNM -  ENSURES NON-NEGATIVE INTEGER RETURNED IN NUM      #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$ANSNM(QUERY$,NUM):                                         #
#                                                                      #
#     GIVEN-                                                           #
#         QUERY$ = QUERY AS TO THE NUMBER OF INPUT FILES               #
#         NUM = NON-NEGATIVE INTEGER                                   #
#                                                                      #
#     DOES-                                                            #
#         QUERY AS TO THE NUMBER OF INPUT FILES AND ENSURES THE        #
#          RESPONSE TO BE A PROPERLY FORMED NON-NEGATIVE INTEGER       #
  
          BEGIN 
          ITEM  NUM          I; 
  
*CALL A 
  
*CALL LINE$ 
  
*CALL QUERY$
  
          XREF
              BEGIN 
              PROC S$AHELP;            # ASK USER IF HELP WANTED       #
              PROC  S$GTANS;
              PROC  S$PUTLN;
              END 
  
          ITEM  CHAR         C(1);
          ITEM  ERRCOUNT     I;        # COUNT OF USER ERRORS          #
          ITEM  I            I; 
          ITEM  REASKQ       B;        # REASK QUESTION                #
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
CONTROL EJECT;
  
          ERRCOUNT = 0; 
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; 
  
          IF LINE$LINE EQ "I DON'T KNOW" THEN 
              BEGIN 
              LINE$LINE = 
               "SORT/MERGE DOES NOT KNOW EITHER - TWO WILL BE ASSUMED"; 
              LINE$LENGTH = 53; 
              S$PUTLN(LINE$); 
              NUM = 2;
#***#         RETURN; 
              END 
  
          NUM = 0;
          FOR I=0 WHILE C<I,1>LINE$LINE GQ "0"
           AND C<I,1>LINE$LINE LQ "9" 
            AND NUM LQ 999999  DO 
              BEGIN 
              CHAR = C<I,1>LINE$LINE; 
              NUM = 10 * NUM + B<0,6>CHAR - O"33";
              I = I+1;
              END#FOR#
  
          IF C<I,80-I>LINE$LINE NQ " " THEN 
              BEGIN 
              CHAR = C<I>LINE$LINE; 
              LINE$LINE = 
               "NON-DIGIT (*) FOUND - PLEASE RETYPE DECIMAL NUMBER";
              C<11>LINE$LINE = CHAR;
              LINE$LENGTH = 50; 
              S$PUTLN(LINE$); 
              ERRCOUNT = ERRCOUNT + 1;
              IF ERRCOUNT EQ 2 THEN 
                  BEGIN 
                  S$AHELP;
                  ERRCOUNT = 2; 
                  END 
#***#         GOTO PUTLINE; 
              END 
  
          END # S$ANSNM # 
          TERM
