*DECK S$GTINR 
          PROC S$GTINR(RP$);
#**       S$GTINR -  ESTIMATED NUMBER OF RECORDS TO BE SORTED          #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$GTINR(RP$):                                                #
#                                                                      #
#     GIVEN-                                                           #
#         RP$ = ARRAY CONTAINING TYPES OF RAW PARAMETERS               #
#                                                                      #
#     DOES-                                                            #
#         INTERACTIVELY QUERIES THE USER FOR ESTIMATED NUMBER          #
#         (OR RANGE) OF RECORDS TO BE SORTED                           #
  
          BEGIN 
  
*CALL A 
  
*CALL QUERY$
  
*CALL RP$ 
  
*CALL RSFLAGS 
          XREF
              BEGIN 
              PROC  S$ABORT;           # HANDLE INTERNAL ABORT ERROR   #
              PROC  S$ANSNM;           # GETS NON-NEGATIVE INTEGER     #
              PROC  S$ANSYN;           # GETS Y/N ANSWER FROM I/U      #
              PROC  S$PTQUE;           # PUT QUERY TO USER             #
              ITEM  S$HLP   I;         # DETERMINES WHAT HELP IS GIVEN #
              END 
  
          SWITCH  GTINRLOC
               ,  GTINRSTART
               ,  GTINREND
               ;
  
          ITEM  GRSW         I=1;      # INDEX TO GTINRLOC             #
          ITEM  NUM          I;        # NUMERIC RESPONSE FROM S$ANSNM #
          ITEM  YES          B;        # INDICATE RESPONSE TO S$ANSYN # 
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
CONTROL EJECT;
  
#      CHECK FLAG, IF FIRST TIME OR RESTART THEN RESET SWITCH          #
  
          IF B<3,1>S$FLAGS EQ 0 THEN
              BEGIN 
              GRSW = 1;                # RESET SWITCH  FOR GTINR       #
              B<3,1>S$FLAGS = 1;       # CHANGE FLAG                   #
              END 
  
          $BEGIN
          IF GRSW LS 1
            OR GRSW GR 2 THEN 
              S$ABORT("S$GTINR"); 
          $END
  
          GOTO GTINRLOC[GRSW];
  
# ASK USER TO GIVE AN ESTIMATE OF NUMBER OF RECORDS TO BE SORTED       #
  
GTINRSTART: 
          QUERY$LINE[1] = 
       "GIVE AN ESTIMATE OF THE MAXIMUM NUMBER OF RECORDS TO BE SORTED";
          QUERY$LLINE[1] = 62;
          QUERY$NLINES = 1; 
          S$HLP = 550;
          S$ANSNM(QUERY$, NUM); 
          RP$TYPE = RP$T"ENR";
          RP$VALUE = NUM; 
          GRSW = 2;    # GTINREND # 
#***#     RETURN; 
  
  
# SET RP$TYPE TO $END$ TO INDICATE END OF S$GTINR                      #
  
GTINREND: 
          QUERY$LINE[1] = "THANK YOU. SORT/MERGE NOW BEGINS.";
          QUERY$LLINE[1] = 33;
          QUERY$NLINES = 1; 
          S$PTQUE(QUERY$);
  
          RP$TYPE = RP$T"$END$";
#***#     RETURN; 
  
          END # S$GTINR # 
          TERM
