*DECK SM5SEQS 
          IDENT  SM5SEQS
          TITLE  SM5SEQS -  GATHER PARAMETERS ABOUT COL-SEQUENCE
          COMMENT  GATHER PARAMETERS ABOUT COL-SEQUENCE 
          SPACE  4
**        SM5SEQS -  GATHER PARAMETERS ABOUT COL-SEQUENCE 
* 
*     CALLING SEQUENCE- 
*         SM5SEQS(<'CHAR'>, ..., <'CHAR'>); 
* 
*     GIVEN-
*         <'CHAR'> = A STRING CONTAINING ONE CHARACTER; MUST BE 
*                    SURROUNDED BY APOSTROPHES( ' ) 
* 
*     DOES- 
*         SETS NPARMS = NUMBER OF PARAMETERS SPECIFIED. 
*         SETS ARRY = ARRAY OF VALUES OF PARAMETERS.
*         CALLS S$5SEQS(NPARMS, ARRY);
*         CHECK TO MAKE SURE THERE ARE NO MORE THAN 100 PARAMETERS
*                  BUT THIS IS FUTHER CHECKED AND APPROPRIATELY 
*                  DIAGNOSED ELSE WHERE 
  
  
          ENTRY  SM5SEQS
 SM5SEQS  SUBR
          SB1    1           CONSTANT 1 
          SB7    -1          COUNT OF PARAMETERS
 SM5SEQS1 SB7    B7+B1       INCREMENT COUNT OF PARAMETERS
          SA2    A1+B7       GET ADDRESS OF NEXT PARAMETER
          NZ     X2,SM5SEQS1 IF MORE PARAMETERS, LOOP 
  
          SB6    MAXPARMS 
          IFTHEN B7>B6       IF TOO MANY GIVEN PARAMETERS,
            SB7    MAXPARMS    KEEP ONLY SOME 
            ENDIF.
  
          SB6    0           INDEX TO PARAMETERS
SM5SEQS2  SA2    A1+B6       GET ADDRESS OF NEXT PARAMETER
          MX4    -18
          BX0    X4*X2       SEE IF WE HAVE PART-WORD INFORMATION 
          ZR     X0,OK
* FETCH BEGINNING CHARACTER POSITION IN BITS 24-27
          LX0    36 
          MX2    -4 
          BX2    -X2*X0      BCP IN X2
          SX3    6
          IX2    X3*X2       BCP IN BITS
          SB2    X2          FOR MNS= 
          SB4    0           FOR MNS= 
* FETCH LENGTH IN CHARACTERS FROM BITS 30-47
          LX0    -6 
          MX2    -18
          BX2    -X2*X0      LENGTH IN X2 
          IX0    X2*X3       LENGTH IN BITS, FOR MNS= 
          SA2    A1+B6       SOURCE FIRST WORD ADDRESS IN X2
          SX4    ARRY+B6
          SX7    B6 
          SA7    SAVEB6 
          SX7    A1 
          SA7    SAVEA1 
          SA3    =10R 
          BX7    X3 
          SA7    ARRY+B6
          CALL   MNS= 
          SA1    SAVEA1 
          SA1    X1 
          SA2    SAVEB6 
          SB6    X2 
          EQ     SM5SEQS3 
OK        SA3    X2          GET VALUE OF NEXT PARAMETER
          BX6    X3 
          SA6    ARRY+B6     STORE VALUE IN *ARRY*
SM5SEQS3  SB6    B6+B1       INCREMENT INDEX
          LT     B6,B7,SM5SEQS2  IF MORE VALUES TO MOVE, LOOP 
  
          SX6    B7          STORE NUMBER OF PARAMETERS 
          SA6    NPARMS 
  
          SA1    APLIST      ACTUAL PARAMETER LIST
          CALL   S$5SEQS
          EXIT
  
  
 APLIST   VFD    42/,18/NPARMS
          VFD    42/,18/ARRY
  
 NPARMS   BSS    1           NUMBER OF PARAMETERS IN *ARRY* 
  
 MAXPARMS EQU    100+1
 ARRY     BSS    MAXPARMS 
  
 SAVEA1   BSS    1
 SAVEB6   BSS    1
  
          END 
