*DECK S$SETPT 
          PROC S$SETPT(RP$,STATUS$);
#**       S$SETPT -  COLLECT RAW PARAM. OF RP$ AND STATUS$             #
#                                                                      #
#     CALLING SEQUENCE-                                                #
#         S$SETPT(RP$,STATUS$):                                        #
#                                                                      #
#     GIVEN-                                                           #
#         RP$ = ARRAY CONTAINING TYPES OF RAW PARAMETERS.              #
#         STATUS = INDICATES WHETHER AND WHAT ERROR HAS BEEN FOUND.    #
#                                                                      #
#     DOES-                                                            #
#         SETS RP$ TO NEXT AVAILABLE VALUE                             #
  
  
          BEGIN 
          ITEM I             I=0; 
  
          XREF
          ITEM  SRTOMRG      B;        # TRUE IF SORT RUN, NOT MERGE   #
          XREF
              BEGIN 
              PROC  S$GTCSP;           # GET C-S-PARAMETERS            #
              PROC S$CONCT;  # (DIS)CONNECT NOS-BE FILES               #
              PROC  S$GINPR;           # GET INTERACTIVE PARAMETER     #
              ITEM  S$SPLEN      I;    # LENGTH OF SPEC-PART ARRAY     #
              END 
          XREF
*CALL SPECPR$ 
          XREF
*CALL S$CALLR 
  
  
*CALL A 
  
*CALL RP$ 
  
*CALL STATUS$ 
  
          XREF
              BEGIN 
              PROC  S$CMFRF;           # FREE FIXED BLOCK              #
              PROC  S$LOAD; 
              PROC  S$ULOAD;
              END 
  
          ITEM  CLOADED      B=FALSE;  # TRUE IF CONTROL CARD LOADED   #
          ITEM  ILOADED      B=FALSE;  # TRUE IF INTERACTIVE LOADED    #
  
  
CONTROL DISJOINT; 
  
CONTROL INERT;
  
CONTROL EJECT;
  
  
          IF S$CALLR EQ 1 THEN
              BEGIN 
              IF NOT CLOADED THEN 
                  BEGIN 
                  S$LOAD("S$GTCSP");
                  CLOADED = TRUE;      # RESET LOADED FLAG             #
                  END 
              S$GTCSP(RP$, STATUS$);
              IF RP$TYPE EQ RP$T"$END$"  THEN 
                  BEGIN 
                  S$ULOAD("S$GTCSP"); 
                  CLOADED = FALSE;
                  END 
              IF S$CALLR  #STILL# EQ  1  THEN 
#***#             RETURN; 
  
#                   OTHERWISE FALL THRU                                #
  
          IF CLOADED THEN 
              BEGIN 
              S$ULOAD("S$GTCSP"); 
              CLOADED = FALSE;
              END 
              END 
  
          IF S$CALLR EQ 4 THEN
              BEGIN 
              IF NOT ILOADED THEN 
                  BEGIN 
                  S$CONCT(0);  # NOS-BE CONNECT I-O                    #
                  S$LOAD("S$GINPR");
                  ILOADED = TRUE; 
                  END 
              S$GINPR(RP$, STATUS$);
              IF RP$TYPE EQ RP$T"$END$"  THEN 
                  BEGIN 
                  S$ULOAD("S$GINPR"); 
                  ILOADED = FALSE;
                  S$CONCT(1);  # NOS-BE DISCONNECT I-O                 #
                  END 
              RETURN; 
              END 
# SET RP$ FROM SPEC-PART ARRAY                                         #
  
          I = I + 1;
          IF I LQ S$SPLEN THEN
              BEGIN 
              RP$TYPE    = SPECPR$TYPE[I];
              RP$ORDINAL = SPECPR$ORDIN[I]; 
              RP$GROUP   = SPECPR$GROUP[I]; 
              RP$VALUE   = SPECPR$VALUE[I]; 
          RP$VALUEC = SPECPR$VALUC[I];
#***#         RETURN; 
              END 
          ELSE
              BEGIN 
              RP$TYPE = RP$T"$END$";
              IF S$SPLEN GR 0 THEN S$CMFRF(S$SPECP);
              S$SPLEN = 0;    # RESET SPEC-PART LENGTH #
#***#         RETURN; 
              END 
  
          END # S$SETPT # 
          TERM
