*DECK DB$WRTZ 
          IDENT  DB$WRTZ
          TITLE  DB$WRTZ - WRITE Z TYPE RECORDS 
          COMMENT  WRITE Z TYPE RECORDS 
          DATA   10L  DB$WRTZ 
*#
* *   DB$WRTZ - WRITE Z TYPE RECORDS             PAGE  1
* *   BOB MCALLESTER                             DATE  08/20/82 
* 
* DC  PURPOSE 
* 
*     WRITE A Z TYPE RECORD TO THE OUTPUT FILE. 
*     PROVIDE TRAILING ZERO BYTE. 
* 
* DC  ENTRY CONDITIONS
* 
* D   PARAMETERS
* 
*     -FET-                  OUTPUT FILE FET
*     -RECORD-               THE RECORD TO BE WRITTEN 
*     -COUNT-                THE NUMBER OF CHARACTERS IN THE MESSAGE
* 
* D   ASSUMPTIONS 
* 
*     STANDARD SYMPL CALLING SEQUENCE 
* 
* DC  EXIT CONDITIONS 
* 
*     NONE
* 
* DC  CALLING ROUTINES
* 
*     DB$LINE                WRITE A LINE TO THE OUTPUT FILE
* 
* DC  CALLED ROUTINES 
* 
*     WTO=                   WRITE ONE WORD (COMMON DECK COMCWTO) 
* 
*                            CALLED BY WTO= 
*     CIO=                   CALL CENTRAL I-O PROCESSOR 
*     RCL=                   RELINQUISH THE CENTRAL PROCESSOR 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     IN POINTER IN THE FET.
*     FET CODE AND STATUS FIELD.
* 
* DC  DESCRIPTION 
* 
*     THE WORDS CONTAINING THE RECORD ARE WRITTEN, ONE WORD AT A TIME 
*     USING WTO=. 
*     THE LAST WORD IS STRIPPED OF ANY CHARACTERS THAT ARE NOT INCLUDED 
*     IN THE RECORD COUNT.
*     THE STRIPPED CHARACTERS ARE REPLACED BY SPACES, EXCEPT THAT 
*     TWELVE ZERO BITS ARE LEFT IN THE LAST WORD. 
*     AN ADDITIONAL WORD IS ADDED IF IT IS REQUIRED FOR THE TWELVE
*     ZERO BITS.
*#
  
          SST 
          ENTRY  DB$WRTZ
          LIST   X
          B1=1
  
FILL      DATA   8L 
  
  
WRTZ4     RJ     WTO=        WRITE THE LAST WORD OF THE RECORD
  
  
DB$WRTZ   EQ   *+1S17        ENTRY/EXIT 
          SB1    1
          SA2    A1+B1       (X2) = RECORD LOCATION 
          SA3    A2+B1       (X3) = COUNT LOCATION
          SA1    X1+2        (X1) = -IN- POINTER FROM FET 
          SA5    X2+         (X5) = FIRST WORD OF RECORD
          SA3    X3+
          SB3    X3+         (B3) = COUNT 
  
*         LOOP TO WRITE SUCCESSIVE WORDS TO THE FILE
  
WRTZ1     BX6    X5          (X6) = WORD TO BE WRITTEN
          SB3    B3-10       REDUCE COUNT 
          SA5    A5+B1       (X5) = NEXT WORD 
          LT   B3,B1,WRTZ2   JUMP IF LAST WORD
          RJ     WTO=        WRITE ONE WORD FROM X6 
          BX1    X7          (X1) = NEW -IN- POINTER
          EQ   WRTZ1
  
*         PROCESS THE LAST WORD OF THE RECORD 
  
WRTZ2     SB3    B3+10       (B3) = NUMBER OF CHARACTERS IN LAST WORD 
          SB4    B3+B3
          SB4    B4+B3
          SB4    B4+B4       (B4) = 6 * (B3)
          SB4    B4-B1
          MX0    1
          AX0    B4,X0       (X0) = CHARACTER MASK
          SA2    FILL        (X2) = 8 SPACES
          BX6    X0*X6       STRIP EXTRA CHARACTERS FROM THE RECORD 
          BX2    -X0*X2      STRIP LEADING SPACES FROM FILL 
          BX6    X6+X2       APPEND SPACE FILL
          SB3    B3-9 
          MI   B3,WRTZ4      WRITE LAST WORD IF LESS THAN 9 CHARACTERS
  
*         IT IS NECESSARY TO ADD AN EXTRA WORD. 
  
          EQ   B3,B1,WRTZ3   JUMP IF 10 CHARACTERS
  
          SX4    1R 
          BX6    X6+X4       SPACE FILL THE 10TH CHARACTER
  
WRTZ3     RJ     WTO=        WRITE LAST WORD CONTAINING DATA
          BX1    X7          (X1) = NEW -IN- POINTER
  
          SX6    B0          APPEND A TRAILING ZERO WORD
          EQ   WRTZ4
  
 QUAL$    EQU    1
          SPACE  3,42 
*CALL IOLIST
*CALL COMCWTO 
          END 
