*DECK GETPAR
USETEXT COMCBEG 
USETEXT COMRDSD 
PROC GETPAR(PARM);
# TITLE GETPAR - GET NEXT PARAMETER FORM DSD BUFFER # 
  
      BEGIN # GETPAR #
  
# 
**    GETPAR - GET NEXT PRARMETERFROM DSD BUFFER
* 
*     GET THE NEXT PRARMETER FROM THE DSD L DISPLAY 
*     COMMAND BUFFER. 
* 
*     PROC GETPAR(PARM) 
* 
*     ENTRY      - DSD L DISPLAY COMMAND BUFFER 
* 
*     EXIT       - PARM HOLDS THE NEXT PARAMETER,FORMAL PARAMETER 
*                  AND END OF COMMAND FLAG. 
* 
*     PROCESSING -
*         FOR I=1 WHILE (I LE MAXCMDSIZE AND NOT SEP) DO
*           DSD$POS = DSD$POS+1 
*           IF NEXT CHARACTER IS SEP
*           THEN
*             SEP=TRUE
*           ELSE
*             IF NEXT CHARACTER IS "="
*             THEN
*               PAR$FOR=CURRENT PARAMETER 
*               CURRENT PARAMETER=0 
*               I=1 
*             ELSE
*               I=I+1 
*               ADD NEXT CHARACTER TO CURRENT PARAMETER 
*           IF SEP
*           THEN
*             PAR$ACT=CURRENT PARAMETER 
*           ELSE
*             PAR$ACT=0 
*         RETURN
# 
  
#     PARAMETER PASSED IN # 
      ARRAY  PARM[0:0] S(2);
        BEGIN 
        ITEM  PAR$FOR   C(00,00,07); # FORMAL PARAMETER # 
        ITEM  PAR$EOC   B(00,54,01); # END OF COMMAND FLAG #
        ITEM  PAR$ACTLEN I(00,55,5); # ACTUAL PARAMETER LENGTH #
        ITEM  PAR$ACT   C(01,00,07); # ACTUAL PARAMETER # 
        ITEM  PAR$WD1   U(01,00,60); # ZERO WORD #
        END 
  
  
      ITEM  I I;
      ITEM  SEP B;
  
      ARRAY CUR[0:0]  S(1); 
        BEGIN 
        ITEM  CURC  C(0,0,10);
        ITEM  CURI  U(0,0,60);
        END 
  
CONTROL EJECT;
  
      CURC[0] = BLANK;
      PAR$EOC[0] = FALSE; 
      SEP = FALSE;
      FOR I = 0 WHILE (I LE MAXCMDSZ AND NOT SEP) DO
        BEGIN 
        IF C<DSD$POS[0],1>DSD$CMDC[0] EQ ","
        THEN
          BEGIN 
          SEP=TRUE; 
          END 
        ELSE
          BEGIN 
          IF (C<DSD$POS[0],1>DSD$CMDC[0] EQ "." OR
              C<DSD$POS[0],1>DSD$CMDC[0] EQ " " OR
              B<DSD$POS[0]*6,6>DSD$CMDC[0] EQ 0  OR 
              DSD$POS[0] EQ 64) 
          THEN
            BEGIN 
            SEP = TRUE; 
            PAR$EOC[0] = TRUE;
            END 
          ELSE
            BEGIN 
            IF (C<DSD$POS[0],1>DSD$CMDC[0] EQ "=" ) 
            THEN
              BEGIN 
              PAR$FOR[0] = CURC[0]; 
              CURC[0] = BLANK;
              I=0;
              END 
            ELSE
              BEGIN 
              C<I,1>CURC[0] = C<DSD$POS[0],1>DSD$CMDC[0]; 
              I = I + 1;
              END 
            END 
          END 
        DSD$POS[0] = DSD$POS[0] + 1;
        END 
      IF SEP
      THEN
        BEGIN 
        PAR$ACT[0] = CURC[0]; 
        PAR$ACTLEN[0] = I;
        END 
      ELSE
        BEGIN 
        PAR$WD1[0] = 0; 
        END 
      RETURN; 
      END 
  
      TERM
