*DECK S$CPARM 
          IDENT  S$CPARM
          TITLE  S$CPARM -  SET APLIST WITH PARAMETER COUNT 
  
          COMMENT  SET APLIST WITH PARAMETER COUNT
          SPACE  4
**        S$CPARM -  SET APLIST WITH PARAMETER COUNT
* 
*     CALLING SEQUENCE- 
*         CALL   S$CPARM
* 
*     GIVEN-
*         A1 = APLIST 
* 
*     DOES- 
*         COUNTS THE NUMBER OF PARAMETERS IN THE GIVEN ACTUAL PARAMETER 
*         LIST.  SETS *NPARMS* TO THE SMALLER OF THIS NUMBER AND
*         CONSTANT *MAXPARMS*.  (*MAXPARMS* SHOULD BE SET LARGER THAN 
*         THE MAXIMUM LEGAL NUMBER OF PARAMETERS FOR ANY CALL.) 
*         SETS UP A NEW APLIST WITH *NPARMS* THE FIRST PARAMETER
*         FOLLOWED BY *NPARMS* PARAMETERS FROM THE GIVEN APLIST.
  
  
          ENTRY  S$CPARM
 S$CPARM  SUBR
          SB1    1           CONSTANT 1 
          SB7    0           COUNT OF PARAMETERS
 CPARM1   SA2    A1+B7       GET ADDRESS OF NEXT PARAMETER
          SB7    B7+B1       INCREMENT COUNT OF PARAMETERS
          NZ     X2,CPARM1   IF MORE PARAMETERS, LOOP 
          SB7    B7-1        DO NOT COUNT ZERO-WORD TERMINATOR
  
          SB6    MAXPARMS 
          IFTHEN B7>B6       IF TOO MANY GIVEN PARAMETERS,
            SB7    B6          KEEP ONLY SOME 
            ENDIF.
  
          SB6    0
 CPARM2   SA2    A1+B6
          BX6    X2 
          SA6    APLIST+1+B6
          SB6    B6+1 
          LT     B6,B7,CPARM2      IF MORE ADDRESSES TO MOVE, LOOP
  
          SX6    B7          STORE NUMBER OF PARAMETERS 
          SA6    NPARMS 
  
          SA1    APLIST 
          EXIT
  
  
 MAXPARMS EQU    100
 APLIST   VFD    42/0,18/NPARMS 
          BSS    MAXPARMS 
  
 NPARMS   BSS    1           NUMBER OF PARAMETERS 
  
  
          END 
