TMSG
          IDENT  TMSG 
          ENTRY  TMSG 
          SYSCOM B1 
          TITLE  TMSG - TAF MESSAGE TO DAYFILE. 
*COMMENT  TMSG - TAF MESSAGE TO DAYFILE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 TMSG     SPACE  4,10 
****      TMSG - TAF MESSAGE TO DAYFILE 
* 
*         A. E. SCHIPPERS.   80/06/27.
* 
*         TMSG IS AN INTERFACE ROUTINE WHICH WILL ISSUE A 
*         MESSAGE TO THE *TAF* DAYFILE FROM A SYSTEM TASK.
  
*IF DEF,TRANC5
*         NOTE   THIS IS THE COBOL5 VERSION OF TMSG.
*ENDIF
*IF DEF,TRANF4
*         NOTE   THIS IS THE FORTRAN4 VERSION OF TMSG.
*ENDIF
*IF DEF,TRANF5
*         NOTE   THIS IS THE FORTRAN5 VERSION OF TMSG.
*ENDIF
 TMSG     SPACE  4,20 
***       TMSG - TAF MESSAGE TO DAYFILE.
* 
*         ENTRY  COMPASS - SCALL TMSG,(MESSAGE,LENGTH)
*                COBOL - ENTER TMSG USING MESSAGE[, LENGTH].
*                FORTRAN - CALL TMSG(MESSAGE,LENGTH)
* 
*         WHERE - MESSAGE    DATA ITEM CONTAINING THE DAYFILE MESSAGE.
*                            COBOL - 01 LEVEL ITEM. 
*                            FORTRAN - HOLLERITH. 
* 
*                 LENGTH     LENGTH OF MESSAGE IN CHARACTERS. 
*                            COBOL - 01 LEVEL COMPUTATIONAL-1 DATA
*                            NAME.
*                            FORTRAN - INTEGER. 
* 
*         EXIT   MESSAGE ISSUED TO DAYFILE. 
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 3, 4, 6. 
*                B - 1, 2, 3. 
* 
*         MACROS SYSTEM.
* 
*         NOTE   SYSTEM TASKS ARE THE ONLY TASKS ALLOWED TO ISSUE 
*                MESSAGES TO THE *TAF* DAYFILE. 
 TMSG     SPACE  4,10 
*         COMMON DECKS. 
  
*CALL     COMKMAC 
 TMSG     SPACE  4,10 
*         THE FOLOWING CODE IS CONDITIONALLY PUT ON THE 
*         COMPILE FILE AT MODIFICATION TIME.  THIS CODE 
*         ALSO SETS VALUES FOR CONDITIONAL ASSEMBLY OF SOME 
*         CODE LATER IN THIS DECK.
  
 .1       SET    0
*IF DEF,TRANC5
 .1       SET    .1+1 
 .2       SET    0           COBOL5 VERSION 
*ENDIF
*IF DEF,TRANF4
 .1       SET    .1+1 
 .2       SET    1           FORTRAN4 VERSION 
*ENDIF
*IF DEF,TRANF5
 .1       SET    .1+1 
 .2       SET    2           FORTRAN5 VERSION 
*ENDIF
 .A       IFNE   .1,1 
  
*         ONE AND ONLY ONE OF THE TLIBXX LIBRARIES MUST BE
*         DEFINED AT MODIFICATION TIME. 
  
          ERR                MODIFICATION ERRORS
  
 .A       ENDIF 
 TMSG     SPACE  4,10 
          VFD    42/0LTMSG,18/TMSG
 TMSG     SUBR               ENTRY/EXIT 
          SB1    1
          SA1    A1 
          BX3    X3-X3
 .B       IFEQ   .2,0        IF COBOL5 VERSION
  
*         PROCESS PARAMETER LIST FOR COBOL5.
  
          MX3    -18         GET LENGTH OF MESSAGE
          BX4    X1 
          LX4    17-53
          BX3    -X3*X4 
 .B       ENDIF 
 .C       IFEQ   .2,1        IF FORTRAN4 VERSION
  
*         PROCESS PARAMETER LIST FOR FORTRAN4.
  
  
*         NO SPECIAL PROCESSING NEEDED. 
  
 .C       ENDIF 
 .D       IFEQ   .2,2        IF FORTRAN5 VERSION
  
*         PROCESS PARAMETER LIST FOR FORTRAN5.
  
  
*         NO SPECIAL PROCESSING NEEDED. 
  
 .D       ENDIF 
          SA2    A1+1        GET NEXT PARAMETER 
          ZR     X2,TMS1     IF LENGTH PARAMETER NOT SPECIFIED
          SA2    X2+         FWA OF LENGTH
          SX3    X2+         LENGTH 
 TMS1     SX2    10          CHARACTERS PER WORD
          IX6    X3/X2       GET NUMBER OF FULL WORDS.
          SB2    X6+
          SX4    B0+
          SX2    10          CHARACTERS PER WORD
          UX3    X3,B7
          IX2    X6*X2       CHARACTERS IN FULL WORDS 
          LX3    X3,B7
          IX2    X3-X2       NUMBER OF CHARACTERS IN LAST WORD
          SX3    6           BITS PER CHARACTER 
          IX3    X2*X3       MASK FOR CHARACTERS IN LAST WORD 
          ZR     X2,TMS2     IF LAST WORD FULL
          MX4    1
          SB3    -1 
          SB3    X3+B3       SHIFT COUNT
          AX4    B3 
 TMS2     SA2    X1+B2       GET LAST WORD OF MESSAGE 
          SX6    A2          SAVE ADDRESS OF LAST WORD
          SA6    TMSA 
          BX6    X2          SAVE LAST WORD OF MESSAGE
          SA3    A2+B1       GET WORD FOLLOWING MESSAGE 
          SA6    A6+B1
          BX6    X3          SAVE WORD FOLLOING MESSAGE 
          SA6    A6+B1
          BX6    X4*X2       ZERO OUT TRAILING BITS 
          SA6    A2 
          BX6    X6-X6       ZERO OUT WORD FOLLOWING MESSAGE
          SX3    X1 
          SA6    A6+1 
          SYSTEM TMS,R,X3,B0 ISSUE *TMS* REQUEST
          SA2    TMSA        ADDRESS OF LAST WORD OF MESSAGE
          SA3    A2+B1       RESTORE LAST WORD OF MESSAGE 
          BX6    X3 
          SA6    X2+
          SA3    A3+B1       RESTORE WORD FOLLOWING MESSAGE 
          BX6    X3 
          SA6    X2+1 
          EQ     TMSGX       EXIT.
  
  
  
*         STORAGE FOR WORDS DESTROYED BY TMSG REQUEST.
  
 TMSA     BSS    3
          END 
