*COMDECK /PUTDDT/ 
 PUT$DT   TITLE     GET RL FOR RT=D/T PUT 
 PUT$DT   CAP.RM    ,NOENTRY
 PUT$D    BSS       0 
 PUT$T    BSS       0 
          SB6       DT.TYPE 
          EQ        DCDT.SQ 
 DT.TYPE  BSS       0 
          BX3       X4
          SB7       B4
          F.RM      MNR            CHECK REC LENGTH .GE. MNR
          IX2       X4-X1 
          NG        X2,ERR167      JUMP TO ERR.RM IF NOT
          F.RM      MRL            CHECK REC LENGTH .LE. MRL
          ZR        X1,DTEXIT 
          IX2       X1-X4 
          NG        X2,ERR167      JUMP TO ERR.RM IF NOT
 DTEXIT   BSS       0 
          JP        B5
 DCDT.SQ  BSS       0 
 .MD      IFNE      #BETA#,0
          F.RM      WSAD,2
          F.RM      WSAB,X5        0=SCM WSA, 1=LCM WSA 
 .MD      ELSE
          F.RM      WSA,2 
 .MD      ENDIF 
          F.RM      LP,1           FIND BCP OF RECORD DES. PARM 
          PX.3      X1             DIVID CHARACTER COUNT
          SA4       TENTH          BY TEN 
          FX.3      X.3*X4         TO GET 
          UX7       X3             WORD COUTN 
          IX4       X7+X7          MULTIPLY WORD COUNT
          IX1       X1-X4          BY TEN 
          LX4       2              TO GET REMAINING 
          IX1       X1-X4          CHARACTER COUNT
          LX4       B1,X1          MULTIPLY CHARACTERS BY SIX 
          SX1       X4-1           SUBTRACT ONS 
          LX4       1              TO GET 
          IX1       X1+X4          BITS - 1 
          SB.4      X1
          MX4       1              SET UP MASK TO REMOVE
          IX2       X2+X7 
 .MD      IFNE      #BETA#,0
          ZR        X5,SCM1        IF WSA IN SCM
          RX1       X2             GET CONTENT OF COUNT FIELD FROM LCM. 
          EQ        NXT1
          SPACE     1 
 SCM1     BSS       0 
 .MD      ENDIF 
          SA1       X2             GET CONTENT OF COUNT FIELD FROM SCM. 
 .MD      IFNE      #BETA#,0
 NXT1     BSS       0 
 .MD      ENDIF 
          AX4       B.4,X4         LEADING GARBAGE
          F.RM      LL,3           FIND LENGTH OF COUNT FIELD 
          BX4       -X4*X1         REMOVE LEADING GARBAGE 
          LX1       B1,X.3         MULTIPLY 
          SB.4      B.4-59         DETERMINE NO. OF BITS IN WORD
          LX.3      2              BY SIX 
          IX1       X1+X.3         TO GET 
          SB.2      X1             BITS 
          SB.4      -B.4
          EQ        B.2,B.4,CNV.DB IF EQUAL LNG.OF CNT FLD CONVERT TO BI
          GE        B.2,B.4,TJNXWD ELSE IF GREATER CONVERT NEXT WORD
          SB.4      B.4-B.2        ELSE SHIFT OFF GARBAGE 
          AX4       B.4,X4         ON RIGHT 
          SB.4   B.4-1             MASK OFF GARBAGE GENERATED 
          MX3    1                 BY SIGN EXTENSION BIT
          AX3    B.4               WHEN LP IS WORD BOUNDARY 
          BX4    -X3*X4            ALIGNED
          EQ        =XCNV.DB       GO CONVERT TO BINARY 
 TJNXWD   BSS       0 
          MX3       59             -1 
          SB4       B2-B4          REDUCE LENGTH BY AMOUNT IN FIRST WORD
          IX2       X2-X3          (SECOND WORD)
 .MD      IFNE      #BETA#,0
          ZR        X5,SCM2        IF WSA IN SCM
          RX.3      X2             PICK UP SECOND WORD FROM LCM 
          EQ        NXT2
          SPACE     1 
 SCM2     BSS       0 
 .MD      ENDIF 
          SA.3      X2             PICK UP SECOND WORD FROM SCM 
 .MD      IFNE      #BETA#,0
 NXT2     BSS       0 
 .MD      ENDIF 
          LX4       B.4,X4         SHIFT FRST WRD BY NO BITS REMAINING
          LX.3      B.4,X.3        PUT REMAINING CHAR IN LOW END
          MX7       1 
          SB.4      B.4-59         SET UP MASK TO 
          LX7       B.4,X7
          BX.3      -X7*X.3        REMOVE GARBAGE 
          BX4       X4+X.3         OR INTO FIRST WORD 
          EQ        B4,B0,TJCHKT
CNV.DB    ON.RM     C1,TJCHKT 
          OFF.RM    SB,NOSIGN 
          MX3    6
          LX3    6
          BX1    X4*X3
          SX1    X1-72B 
          NZ     X1,NOZERO
          SX1    37B
          IX4    X4-X1
          EQ     NOSIGN 
 NOZERO   BSS       0                                                   AT25  11
          SX1       X1+72B-33B                                          AT25  12
          PL        X1,NOSIGN                                           AT25  13
          SX2       33B                                                 AT25  14
          IX4       X2+X4                                               AT25  15
 NOSIGN   SA3       BLANKS         PICK UP
          LX.3      1              WORD OF ZEROS
          MX1       1              SET UP MASK
          SB4       B2-59          CALCULATE MASK COUNT 
          LX1       B.4,X1         EXTEND MASK
          BX.3      -X1*X.3        MASK OFF EXTRA ZEROS 
          IX4       X4-X.3         SUBYRACT OFF ZEROS 
          SB.4      B.4-B1         CALC SHIFT COUNT TO
          AX7       B.4,X4         LEFT JUSTIFY DEC NUMBER
          SB.4      B.4+60         RESET BIT COUNT
          MX.3      54             SET CHAR MASK
 TJCNV1   EQ        B.4,B0,TJCHKT  IF BIT COUNT ZERO EXIT 
          LX7       6              SHIFT IN NEXT CHAR 
          BX4       -X.3*X7        MASK OFF CHAR
          SB.4      B.4-6          DECREMENT BIT COUNT
          ZR        X4,TJCNV1      IF CHAR ZERO CHECH NEXT CHAR 
          SX4       X4-22B         ELSE,
          ZR        X4,TJCNV1      IF CHAR BLANK CHECK NEXT CHAR
          SX4       X4+22B         ELSE,RESET CHAR
          EQ        B4,B0,TJCHKT   IF ONLY CHARACTER
 TJCNV2   BSS       0 
          LX7       6              SHIFT IN NEXT CHAR 
          IX1       X4+X4          MULTIPLY COUNT BY 10 
          LX4       3 
          IX1       X4+X1 
          BX4       -X3*X7         MASK OFF CHARACTER 
          SB4       B4-6           DECREMENT BIT COUNT
          IX4       X4+X1          ADD NEW DIGIT
          GT        B4,B0,TJCNV2   IF MORE, RETURN
 TJCHKT   BSS       0 
          SB2       #TT#
          F.RM      RT,3,B4 
          NE        B2,B4,TJSTCW   IF NOT T-TYPE SET EXIT 
          F.RM      TL,3           FIND LENGTH OF TRAILER 
          IX1       X4*X3          (NUM TRAILERS) * (LEN OF TRAILER)
          F.RM      HL,3
          IX4       X1+X3          ADD HEADER LENGTH
 TJSTCW   BSS       0 
          JP        B6
 ERR167   BSS       0 
          S"ERRREG" 167B
          EQ        =YERR$RM
* END /PUTDDT/
