*DECK SMOPT 
          IDENT  SMOPT
          TITLE  SMOPT -  GATHER PARAMETERS ABOUT OPTIONS 
          COMMENT  GATHER PARAMETERS ABOUT OPTIONS
          SPACE  4
**        SMOPT -  GATHER PARAMETERS ABOUT OPTIONS
* 
*     CALLING SEQUENCE- 
*         CALL SMOPT(<OPTION-1>, ..., <OPTION-N>) 
* 
*     GIVEN-
*         A1 = ADDRESS OF ACTUAL PARAMETER LIST.
* 
*     DOES- 
*         SETS NPARMS = NUMBER OF PARAMETERS. 
*         SETS ARRY = ARRAY CONTAINING OPTIONS. 
*         CALLS S$OPT(NPARMS, ARRY) 
  
  
          ENTRY  SMOPT
 SMOPT    SUBR
          CALL   S$CPARM     COUNT PARAMETERS, SET A1 = APLIST
          SA2    X1          X2 = NUMBER OF PARAMETERS
          BX6    X2 
          SA6    NPARMS 
  
          SB7    L
          SX6    X6-L 
          IFTHEN X6<0        IF NPARMS < L, 
            SB7    X2          SET INDEX = NPARMS 
            ENDIF.
  
          SB1    1           CONSTANT 1 
 SMOPT1   SA1    A1+B1       GET ADDRESS OF NEXT OPTION 
          SA2    X1          GET VALUE
          BX6    X2 
          SA6    A6+B1       SAVE VALUE 
          SB7    B7-1        DECREMENT INDEX
          NZ     B7,SMOPT1   IF MORE OPTIONS, LOOP
  
          SA1    APLIST 
          CALL   S$OPT       S$OPT(NPARMS, ARRY); 
  
          EXIT
  
  
 APLIST   VFD    42/,18/NPARMS
          VFD    42/,18/ARRY
  
 NPARMS   BSS    1           NUMBER OF PARAMETERS ORIGINALLY SUPPLIED 
 L        EQU    9           MAX. NUMBER OF OPTIONS + 1 
 ARRY     BSS    L           ARRAY OF VALUES OF OPTIONS 
          ERRNZ  NPARMS+1-ARRY
  
  
          END 
