*DECK S$GTIIN 
          PROC S$GTIIN(RP$,OWNFILE);
#**       S$GTIIN -  COLLECT RAW PARAM. OF RP$ TO FORM SPEC-PARTS      #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$GTIIN(RP$):                                                #
#                                                                      #
#     GIVEN-                                                           #
#         RP$ = ARRAY CONTAINING TYPES OF RAW PARAMETERS.              #
#         OWNFILE = TRUE IFF FILE NAME OF OWNCODE GIVEN.               #
#                                                                      #
#     DOES-                                                            #
#         INTERACTIVELY QUERIES USER TO FORM SPEC-PARTS RELATED        #
#          TO SUPPLYING RECORDS.                                       #
  
          BEGIN 
          ITEM  OWNFILE      B;        # TRUE IFF OWN FILE NAME GIVEN  #
  
*CALL A 
  
*CALL LINE$ 
*CALL QUERY$
  
*CALL RP$ 
  
*CALL RSFLAGS 
  
  
          XREF
              BEGIN 
              PROC  S$ABORT;
              PROC  S$ANSEP;           # GETS ENTRY POINT NAME FROM I/U#
              PROC  S$ANSFI;           # GETS FILE NAME FROM I/U       #
              PROC  S$ANSNM;           # GETS NON-NEGATIVE INTEGER     #
              PROC  S$ANSYN;           # GETS Y/N ANSWER FROM I/U      #
              PROC  S$PUTLN;           # PUT OUT A LINE                #
              ITEM  S$SMFLG  I;        # FLAG SORT OR MERGE            #
              ITEM S$HLP   I;    # DETERMINE WHAT HELP NEEDED          #
              END 
  
  
          SWITCH  GTINLOC 
               ,  OWN1FN
               ,  OWN1NA
               ,  OWN2FN
               ,  OWN2NA
               ,  OWNMFL
               ,  INPUTF
               ,  INFILES 
               ,  GONEINF 
               ,  GTINEND 
               ;
  
          ITEM  EPOINTN      C(7);     # NAME OF ENTRY POINT OWN1 SUB. #
          ITEM  FILENA       C(7);     # FILE NAME CONTAINING OWNCODE  #
          ITEM  GNSW         I=1;      # INDEX TO SWITCH GTINLOC       #
          ITEM  I            I; 
          ITEM  L            I; 
          ITEM  NUM          I;        # NUMBER OF INPUT FILES         #
          ITEM  YES          B;        # INDICATES RESPONSE TO S$ANSYN #
  
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
          FUNC  DEC(VALUE) C(10); 
              ITEM  VALUE       I;     # VALUE TO BE CONVERTED         #
              ITEM  C10PLUS     C(20);
              ITEM  I            I; 
              ITEM  N            I; 
              BEGIN 
              C10PLUS = "         0          "; 
              N = VALUE;
              IF N LS 0  THEN 
                  N = -N; 
              IF N GR 999999999 THEN
                  BEGIN 
                  C10PLUS = " *********          "; 
                  I = 0;
                  END 
              ELSE
                  BEGIN 
                  FOR I = 9 WHILE N NQ 0  DO
                      BEGIN 
                      C<I,1>C10PLUS = N - (N/10)*10 + 27; 
                      N = N/10; 
                      I = I - 1;
                      END 
                  END 
              IF VALUE LS 0 THEN
                  C<I,1>C10PLUS = "-";
              DEC = C<I,10>C10PLUS; 
              END  # DEC #
  
CONTROL EJECT;
CONTROL EJECT;
  
#      CHECK FLAG, IF FIRST TIME OR RESTART THEN RESET SWITCH          #
  
          IF B<0,1>S$FLAGS EQ 0 THEN
              BEGIN 
              GNSW = 1;                # RESET SWITCH FOR GTIIN        #
              B<0,1>S$FLAGS = 1;       # CHANGE FLAG                   #
              END 
  
          $BEGIN
          IF GNSW LS 1
           OR GNSW GR 9 THEN
              S$ABORT("S$GTIIN-1"); 
          $END
  
          GOTO GTINLOC[GNSW]; 
  
# QUERY AS TO WHETHER THERE IS ONE INPUT FILE AND NO OWN1 OR OWN2 SUB. #
  
OWN1FN: 
  
# IF MERGE RUN THEN DO NOT ASK ABOUT OWNCODE 1 OR 2, CHECK INPUT FILES #
  
          IF S$SMFLG NQ 1 THEN  # IF NOT SORT RUN                      #
              GOTO INPUTF;
          QUERY$LINE[1] = 
     "DO YOU HAVE JUST ONE INPUT FILE AND NO OWN1 OR OWN2 SUBROUTINES ";
          QUERY$LLINE[1] = 64;
          QUERY$NLINES = 1; 
          S$HLP = 200;
          S$ANSYN(QUERY$,YES);
          IF NOT YES  THEN
              BEGIN 
  
# QUERY AS TO WHETHER THERE IS AN OWN1 SUBROUTINE                      #
  
              QUERY$LINE[1] =         "DO YOU HAVE AN OWN1 SUBROUTINE ";
              QUERY$LLINE[1] = 31;
              QUERY$NLINES = 1; 
              S$HLP = 201;
              S$ANSYN(QUERY$,YES);
              IF YES  THEN
                  BEGIN 
  
# GET NAME OF FILE CONTAINING OWNCODE SUBROUTINE                       #
  
                  QUERY$LINE[1] = 
  "WHAT IS THE NAME OF THE FILE CONTAINING YOUR OWNCODE SUBROUTINE(S) ";
                  QUERY$LLINE[1] = 67;
                  QUERY$NLINES = 1; 
                  S$HLP = 210;
                  S$ANSFI(QUERY$,FILENA); 
                  RP$TYPE = RP$T"OWNFILE";
                  RP$VALUEC = FILENA; 
                  GNSW = 2;    # OWN1NA # 
                  OWNFILE = TRUE; 
#***#             RETURN; 
  
# GET NAME OF OWN1 SUBROUTINE                                          #
  
OWN1NA: 
                  QUERY$LINE[1] = 
                            "WHAT IS THE NAME OF YOUR OWN1 SUBROUTINE ";
                  QUERY$LLINE[1] = 41;
                  QUERY$NLINES = 1; 
                  S$HLP = 201;
                  S$ANSEP(QUERY$,EPOINTN);
                  RP$TYPE = RP$T"OWN1NAME"; 
                  RP$VALUEC = EPOINTN;
                  GNSW = 3;    # OWN2FN # 
#***#             RETURN; 
                  END 
              ELSE
                  BEGIN 
  
# QUERY AS TO WHETHER THERE IS A OWN2 SUBROUTINE                       #
  
OWN2FN: 
                  QUERY$LINE[1] =     "DO YOU HAVE AN OWN2 SUBROUTINE ";
                  QUERY$LLINE[1] = 31;
                  QUERY$NLINES = 1; 
                  S$HLP = 202;
                  S$ANSYN(QUERY$,YES);
                  IF YES  THEN
                      BEGIN 
                      IF NOT OWNFILE  THEN
                          BEGIN 
  
# GET NAME OF FILE CONTAINING OWNCODE SUBROUTINE                       #
  
                          QUERY$LINE[1] = 
  "WHAT IS THE NAME OF THE FILE CONTAINING YOUR OWNCODE SUBROUTINE(S) ";
                          QUERY$LLINE[1] = 67;
                          QUERY$NLINES = 1; 
                          S$HLP = 210;
                          S$ANSFI(QUERY$,FILENA); 
                          RP$TYPE = RP$T"OWNFILE";
                          RP$VALUEC = FILENA; 
                          GNSW = 4;    # OWN2NA # 
                          OWNFILE = TRUE; 
#***#                     RETURN; 
                          END 
                      ELSE
  
# GET NAME OF OWN2 SUBROUTINE                                          #
  
OWN2NA: 
                          BEGIN 
                          GNSW = GNSW + 1;
                          QUERY$LINE[1] = 
                            "WHAT IS THE NAME OF YOUR OWN2 SUBROUTINE ";
                          QUERY$LLINE[1] = 41;
                          QUERY$NLINES = 1; 
                          S$HLP = 202;
                          S$ANSEP(QUERY$,EPOINTN);
                          RP$TYPE = RP$T"OWN2NAME"; 
                          RP$VALUEC = EPOINTN;
                          GNSW = 5;    # OWNMFL # 
#***#                     RETURN; 
                          END 
                      END 
                  ELSE
                      BEGIN 
  
OWNMFL: 
                      IF NOT OWNFILE THEN 
                          GOTO INPUTF;
                      QUERY$LINE[1] = 
     "ARE YOUR OWNCODE RECORDS FIXED IN LENGTH (NOT VARYING)";
                       QUERY$LLINE[1]= 70;
                       QUERY$NLINES = 1;
                       S$ANSYN(QUERY$, YES);
                       IF YES THEN
                           BEGIN  # FIXED LENGTH #
                           QUERY$LINE[1] =
      "WHAT IS THE FIXED LENGTH OF THESE RECORDS (IN CHARACTERS)";
                           S$ANSNM(QUERY$,NUM); 
                           RP$TYPE = RP$T"OWNFL"; 
                           RP$VALUE = NUM;
                           GNSW = 6;  # INPUTF #
                           RETURN;
                           END
                       ELSE   # VARIABLE LENGTH # 
                          BEGIN 
                          QUERY$LINE[1] = 
      "WHAT IS THE MAXIMUM LENGTH OF THESE RECORDS (IN CHARACTERS)";
                          S$ANSNM(QUERY$,NUM);
                          RP$TYPE = RP$T"MRL";
                          RP$VALUE = NUM; 
                          GNSW = 6;  # INPUTF # 
                          RETURN; 
                          END 
# QUERY AS TO HOW MANY INPUT FILES                                     #
  
INPUTF: 
                      QUERY$LINE[1] = 
                                    "HOW MANY INPUT FILES DO YOU HAVE ";
                      QUERY$LLINE[1] = 33;
                      QUERY$NLINES = 1; 
                      S$HLP = 220;
                      S$ANSNM(QUERY$,NUM);
              IF NUM GR 100 THEN
                  BEGIN 
                  LINE$LINE = " THIS NUMBER MUST BE LESS THAN 101"; 
                  LINE$LENGTH = 40; 
                  S$PUTLN(LINE$); 
                  GOTO INPUTF;
                  END 
                      IF NUM EQ 1  THEN 
                          BEGIN 
                          GOTO GONEINF; 
                          END 
                      ELSE
                          BEGIN 
  
# GET NAME OF ALL INPUT FILES  (1 - NUM)                               #
  
                          GNSW = 7;    # INFILES #
                          FOR I=1 STEP 1 UNTIL NUM  DO
                              BEGIN 
                      QUERY$LINE[1] = " ";
                      QUERY$LINE[1] = 
                        "WHAT IS INPUT FILE NUMBER "; 
                      C<25,10>QUERY$LINE[1] = DEC(I); 
                      QUERY$LLINE[1] = 40;
                              QUERY$NLINES = 1; 
                              S$HLP = 225;
                              S$ANSFI(QUERY$,FILENA); 
                              RP$TYPE = RP$T"INFILE"; 
                              RP$VALUEC = FILENA; 
#***#                         RETURN; 
INFILES:  
                              END #FOR# 
                              GOTO GTINEND; 
                          END 
                      END 
                  END 
              END 
              BEGIN 
  
# GET NAME OF JUST ONE INPUT FILE  (NO OWN1 OR OWN2 SUBROUTINES)       #
  
GONEINF:  
              QUERY$LINE[1] =    "WHAT IS THE NAME OF YOUR INPUT FILE ";
              QUERY$LLINE[1] = 36;
              QUERY$NLINES = 1; 
              S$HLP = 225;
              S$ANSFI(QUERY$,FILENA); 
              RP$TYPE = RP$T"INFILE"; 
              RP$VALUEC = FILENA; 
              GNSW = 9;    # GTINEND #
#***#         RETURN; 
              END 
  
# SET RP$TYPE TO $END$ INDICATING END OF $GTIIN                        #
  
GTINEND:  
          RP$TYPE = RP$T"$END$";
#***#     RETURN; 
  
  
          END # S$GTIIN # 
          TERM
