*COMDECK  CCLDSB
          TITLE  CCLDSB  -  DAYFILE STATEMENT BUFFER
**        DSB  -  DAYFILE STATEMENT BUFFER
* 
*         WRITE THE CARD IMAGES AT CSBUF AND W.RACS TO THE DAYFILE. 
*         WHEN SKIPPING, CONTINUATION CARDS CAUSE A PROBLEM 
*         BECAUSE IF THE CARD IS A SKIP TERMINATOR (ENDIF,ENDW,WHILE) 
*         AND IF THE STATEMENT CONTINUES ONTO FOLLOWING CARDS, THE
*         ENTIRE STATEMENT (MULTIPLE CARDS) MUST BE READ BEFORE 
*         A DECISION IS MADE ABOUT WHETHER OR NOT THEY ARE TO 
*         BE PRINTED ON THE DAYFILE 
*         TO SOLVE THIS PROBLEM A BUFFER (CSBUF) IS USED TO RETAIN
*         THE PREVIOUS CARDS OF A CONTINUED STATEMENT.  CCLGNP
*         MOVES A CARD IMAGE FROM W.RACS TO CSBUF BEFORE IT READS 
*         THE NEXT CARD (VIA CCLCCN). 
* 
*         THE CARDS OF A PROCEDURE HEADER WILL ALSO BE STORED 
*         IN CSBUF.  THEY ARE PRINTED ON THE DAYFILE ONLY 
*         IF THERE IS AN ERROR IN THE PROCEDURE HEADER. 
* 
*         ENTRY  X1 = 1, IF SKIPPING PREFIX IS TO BE ADDED. 
* 
  
 CCLDSB   SUBR   =
          SA4    MSGOPT 
          BX7    X1 
          MX5    0
          MX6    0
          SA7    DSBSPF      SAVE PREFIX FLAG 
          BX7    X4 
          SA7    DSBOPT      SAVE MESSAGE OPTION
          SA6    DSBEND      CLEAR END FLAG 
 DSB1     BSS 
          SX6    X5-CSBUFL+CSBUFCL
          NZ     X6,DSB2     IF NOT FOURTH CARD 
  
*         THREE CARDS HAVE NOW BEEN WRITTEN.  IF ANY CARDS
*         WERE SUPPRESSED, IT IS THE FOURTH CARD AND PERHAPS
*         OTHERS.  IF CARDS WERE SUPPRESSED NOW WRITE THE 
*         ERROR MESSAGE IN PLACE OF THE SUPPRESSED CARDS. 
  
          SA1    CSBUFOV
          ZR     X1,DSB2     IF NO OVERFLOW 
  
          RJ     CDD         CONVERT BINARY TO DECIMAL DISPLAY
  
          SB2    B2-1 
          MX7    1
          AX7    X7,B2
          BX7    X4*X7
          SA5    DSBOPT 
          BX6    X5 
          SA6    MSGOPT      SET MESSAGE OPTION 
          SX0    MSGBUF 
          SA7    MSGBUF 
          LX0    18 
          SX3    MSG125 
          BX3    X0+X3
          RJ     =XSTRMSG    $NUMBER OF SUPPRESSED CARDS=  XX$
  
          SX5    CSBUFL-CSBUFCL 
 DSB2     BSS 
          SA2    CSBUF-1     OFFSET OF END OF LAST CARD IN CSBUF
          IX0    X5-X2
          SX7    X5+CSBUFCL  ADD SPACE FOR ONE CARD 
          SA7    DSBCSO      SAVE NEXT OFFSET 
          SX3    CSBUF+X5    ADDRESS OF CARD TO PRINT 
          NG     X0,DSB3     IF A CARD IS STILL IN CSBUF
  
          SA2    W.RACS 
          ZR     X2,DSB5     EXIT IF W.RACS EMPTY 
  
          SX3    A2          W.RACS 
          MX7    1
          SA7    DSBEND      SET DONE FLAG
 DSB3     BSS 
          SA1    DSBSPF 
          ZR     X1,DSB4     IF NO SKIP PREFIX
          SX0    CCSKPF      SKIP PREFIX
          LX3    18 
          BX3    X0+X3
 DSB4     BSS 
          SA5    DSBOPT 
          BX7    X5 
          SA7    MSGOPT 
          RJ     =XSTRMSG 
  
          SA5    DSBCSO 
          SA1    DSBEND 
          ZR     X1,DSB1     IF MORE TO PRINT 
  
 DSB5     BSS 
          SX7    MOJDT       NOMINAL MESSAGE OPTION 
          SA7    MSGOPT 
          JP     CCLDSB      EXIT 
  
 DSBCSO   BSS    1           TO SAVE NEXT OFFSET
 DSBEND   BSS    1           END FLAG 
 DSBOPT   BSS    1           TO STORE MESSAGE OPTION
 DSBSPF   BSS    1           ADD SKIP PREFIX FLAG 
