*DECK S$5FROM 
          PROC S$5FROM(NPARMS,ARRY);
#**       SM5FROM -  GATHER PARAMETERS ABOUT FROM                      #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         CALL SM5FROM(<FILE-1>, ..., <FILE-N>)                        #
#           (THIS CALLS THE MACHINE-DEPENDENT ROUTINE SM5FROM WHICH    #
#            COUNTS PARAMETERS AND PUTS THE VALUE OF EACH PARAMETER    #
#            INTO AN ARRAY THAT IS A PARAMETER TO S$5FROM.)            #
#                                                                      #
#     GIVEN-                                                           #
#         <NPARMS> = NUMBER OF PARAMETERS ORIGINALLY SUPPLIED.         #
#         <ARRY> = ARRAY WITH <FILE-1>, ..., <FILE-N>.                 #
#         <FILE> = FILE FROM WHICH RECORDS WILL BE READ FOR S/MERGING. #
#                                                                      #
#     DOES-                                                            #
#         IF CALLED IN WRONG ORDER,                                    #
#             ISSUE A DIAGNOSTIC, AND                                  #
#             RETURN.                                                  #
#         IF MORE THAN 100 PARAMETERS WERE ORIGINALLY SUPPLIED,        #
#             ISSUE A DIAGNOSTIC, AND                                  #
#             RETURN.                                                  #
#         FOR EACH <FILE-I>,                                           #
#             SAVE RAW PARAMETER OF-                                   #
#                 TYPE = RP$T"<FILE>".                                 #
  
  
          BEGIN 
          ITEM  NPARMS       I;        # NUMBER OF ORIGINAL PARAMETERS #
          ITEM TMP     I;              #TEMP STORAGE OF RP$VALUE       #
          ARRAY ARRY  [1:100];
              ITEM ARRY$VAL     I(0, 0,60);      # <FILE-I>            #
  
          XREF
              BEGIN 
              PROC  S$ERROR;           # NUMBER OF ORIGINAL PARAMETERS #
              FUNC  S$INSEQ  B;        # TRUE IFF CALL IN SEQUENCE     #
              PROC  S$SVREL;           # SAVE RAW PARAM. FROM RELOC.   #
              END 
  
  
*CALL A 
  
*CALL E$
  
*CALL RP$ 
  
*CALL SQ$ 
  
          ITEM  I            I; 
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
CONTROL EJECT;
  
  
#     IF CALLED IN THE WRONG ORDER,                                    #
#         ISSUE A DIAGNOSTIC, AND                                      #
#         RETURN.                                                      #
  
          IF NOT S$INSEQ(SQ$"SM5FROM")  THEN
              BEGIN 
              S$ERROR(E$110);          # CALL OUT OF SEQUENCE          #
#***#         RETURN; 
              END 
  
#         IF MORE THAN 100 PARAMETERS WERE ORIGINALLY SUPPLIED         #
#             ISSUE A DIAGNOSTIC, AND                                  #
#             RETURN.                                                  #
  
              IF NPARMS GR 100 THEN 
                  BEGIN 
                  S$ERROR(E$108);      # TOO FEW/MANY PARAMETERS       #
#***#             RETURN; 
                  END 
  
#     SET FILE FROM WHICH RECORDS READ FOR SORTING OR MERGING.         #
  
          FOR I=1 STEP 1 UNTIL NPARMS DO
              BEGIN 
              RP$TYPE = RP$T"INFILE"; 
              RP$VALUE = ARRY$VAL[I]; 
              IF ( RP$VALUE GQ 1 ) AND ( RP$VALUE LQ 99 ) THEN
                  BEGIN 
                  TMP = RP$VALUE; 
                  IF RP$VALUE LQ 9 THEN 
                      BEGIN 
                      C<0,10>RP$VALUE = "TAPE*     "; 
                      B<24,6>RP$VALUE = O"33" + TMP;
                      B<30,30>RP$VALUE =0;
                      END 
                  ELSE
                      BEGIN 
                      C<0,10>RP$VALUE = "TAPE*     "; 
                      B<24,6>RP$VALUE = O"33" + TMP/10; 
                      B<30,6>RP$VALUE = O"33" + 
                          ( TMP - (( TMP/10)*10));
                      B<36,24>RP$VALUE = 0; 
                      END 
                  END 
              S$SVREL(RP$); 
              END 
  
          END # S$5FROM # 
          TERM
