*COMDECK  CCLGNP
          TITLE  CCLGNP  -  GET NEXT PARAMETER
**        CCLGNP  -  GET NEXT PARAMETER 
* 
*         TWO ENTRY POINTS ARE PROVIDED.
*         CCLGNP WILL CHECK THE LAST SEPARATOR.  IF IT IS 
*         A TERMINATOR  (. OR ) ) THEN AN ERROR MESSAGE IS
*         ISSUED. 
*         CCLGNP1 DOES NOT CHECK THE SEPARATOR. 
  
*         IF NO MORE PARAMETER ARE ON THIS CARD THEN GET THE NEXT CARD
*         IF SKIPPING IS IN PROGRESS THE CARD IMAGE AT W.RACS 
*         IS MOVED TO CSBUF BEFORE THE NEXT CARD IS READ
*         INTO W.RACS 
* 
*         EXIT   X5 = 0, IF OK ELSE X5=1
*                IACERR - ADDRESS OF ERROR MESSAGE
*                         ZERO IF NO ERRORS 
  
 CCLGNP   SUBR   =
          SA5    ANSSEP 
          SX6    1R.
          SX7    1R)
          BX6    X5-X6
          BX7    X5-X7
          ZR     X6,GNP8     IF TERMINATOR
          ZR     X7,GNP8     IF TERMINATOR
          SX3    MSG101 
          NG     X5,GNP9     IF LAST PARAMETER HAD NO SEPARATOR 
          JP     GNP2 
  
 CCLGNP1  SUBR   =
          SA5    CCLGNP1
          BX7    X5 
          SA7    CCLGNP      SET RETURN ADDRESS 
  
 GNP2     BSS 
 EXP      IFNE   PB.EXP,0 
          SA1    PBCOND      1 = PROC BODY CONDITIONAL
          ZR     X1,GNP2A    NOT PROC BODY CONDITIONAL
  
          RJ     CCLGNO      NEXT OPERAND (PROC BODY EXPRESSION)
          NZ     X5,GNP9     ERROR X3 HAS CODE
  
          JP     CCLGNP      RETURN 
  
  
 GNP2A    BSS    0
 EXP      ENDIF 
          MX7    0
          SA7    GNPSEP 
 GNP3     BSS 
          SA2    SCATBF1
          RJ     =XSTRANS 
  
          SA3    IACERR 
          NZ     X3,GNP9     ERRORS IN STRANS 
  
          SA1    IACIDP      CHECK DIALOG 
          NZ     X1,GNP7     RETURN X5=0 DURING DIALOG
  
          SA5    ANSSEP 
          SA4    ANSPSP 
          BX6    X4 
          PL     X5,GNP7     IF PARAMETER FOUND 
  
          SA6    GNPSEP      SAVE PREVIOUS SEPARATOR
          SA4    ANSCHR 
          SX3    MSG101      $LAST NON-BLANK CHAR. MUST BE SEP.$
          NZ     X4,GNP9     IF SOME CHARACTERS WERE FOUND BUT
                               NO SEPARATOR FOLLOWS 
          SA1    CCSKIP 
          NZ     X1,GNP3.1   IF SKIPPING IN PROGRESS
  
 OSNOSBE  IFNE   HOST,SC2 
          SA1    RSTRICT
          ZR     X1,GNP6     IF NO RESTRICTED PARAMETERS
  
          SA1    W.RACS      PLACE COMMAND IMAGE IN DAYFILE 
          SA2    SCATBF1
          RJ     STRPKS      PACK COMMAND IMAGE 
  
          RJ     DCI         DISPLAY COMMAND IMAGE
  
 OSNOSBE  ENDIF 
  
          JP     GNP6        READ NEXT LINE OF COMMAND
  
  
*         WHEN SKIPPING MOVE THE CARD IMAGE AT W.RACS INTO
*         THE BUFFER CSBUF.  IF CSBUF IS FULL OVERWRITE 
*         THE LAST CARD.
  
 GNP3.1   BSS    0
          SA2    CSBUF-1     GET CURRENT OFFSET 
          SX0    X2-CSBUFL
          NG     X0,GNP4     IF ROOM FOR ANOTHER CARD 
  
          SX2    X2-CSBUFCL  RESET CURRENT LOCATION,OVERWRITE LAST CARD 
          SA3    CSBUFOV
          SX7    X3+B1
          SA7    CSBUFOV     STORE COUNT OF SUPPRESSED CARDS
 GNP4     BSS 
          SX6    X2+CSBUFCL 
          SA6    CSBUF-1     STORE CURRENT LOCATION 
          SB7    CSBUF+X2+8 
          SA1    W.RACS 
          SB6    CSBUF+X2    START OF LOCATION IN CSBUF 
 GNP5     BSS 
          BX7    X1 
          SA7    B6 
          SB6    B6+B1
          SA1    A1+B1
          LT     B6,B7,GNP5 
          MX7    0
          SA7    A7+B1       ENSURE ZERO BYTE 
 GNP6     BSS 
          RJ     CCLCCN      CONTROL CARD, NEXT 
  
          NZ     X5,GNP8     IF ANOTHER CARD DOES NOT EXIST 
  
          SA1    W.RACS 
          SB2    V.CCC
          RJ     =XSTRFZB 
          SA2    SCATBF1
          MX2    0           CLEAR HEADER 
          RJ     =XSTRUPS    UNPACK 
          SA2    SCATBF1
          RJ     =XSTRDTC 
          JP     GNP3 
  
 GNP7     BSS 
          SA4    GNPSEP 
          MX5    0           EXIT FLAG =  OK
          BX7    X4 
          ZR     X4,CCLGNP   EXIT IF SEP. NOT SAVED 
          SA7    ANSPSP      CORRECT PREVIOUS SEPARATOR 
          JP     CCLGNP      EXIT 
  
  
 GNP8     BSS 
          SX3    MSG103      $STATEMENT INCOMPLETE$ 
 GNP9     BSS 
          SA2    PBCOND 
          SA1    IACICF 
          NZ     X2,GNP9A    .IF/.ELSE/.ENDIF 
          ZR     X1,GNP10    ERR MSG TO DAYFILE - NONINTERACTIVE
  
 GNP9A    BSS    0
          BX7    X3 
          SA7    IACERR      STORE ERR ADDRESS
          JP     GNP11       SKIP DAYFILE MESSAGE 
  
 GNP10    BSS    0
          RJ     STRMGA      ASSEMBLE AND ISSUE ABORT MESSAGE 
  
 GNP11    BSS    0
          SX5    1           INDICATE ERROR 
          JP     CCLGNP      EXIT 
  
 GNPSEP   BSS    1
