*DECK RMTLOG
USETEXT COMCBEG 
USETEXT COMCAPR 
USETEXT COMCCAE 
USETEXT COMQDEF 
USETEXT COMQFIL 
USETEXT COMQNET 
USETEXT COMQRMB 
    PROC RMTLOG (MSGTEXT, MSGLENGTH); 
      BEGIN    # RMTLOG # 
# 
**    RMTLOG     LOG MESSAGE FOR REMOTE PARTNER.
* 
*     RMTLOG IS CALLED TO LOG A MESSAGE TO BE SEND TO THE REMOTE
*     PARTNER APPLICATION.  RMTLOG BUILDS A MESSAGE BUFFER AND
*     APPENDS IT TO A LINKED LIST OF MESSAGES TO BE SENT BY 
*     RMTSMB. 
* 
*     PROC RMTLOG (MSGTEXT, MSGLENGTH)
* 
*     ENTRY      MSGTEXT = MESSAGE TO BE LOGGED 
*                MSGLENGTH = LENGTH IN CHARACTERS OF MSGTEXT
*                ACN = APPLICATION CONNECTION NUMBER. 
* 
*     EXIT       FILERMB UPDATED IF FIRST MESSAGE 
*                REMOTE MESSAGE BUFFER BUILT AND LINKED 
* 
*     PROCESS    CALL CONLOG TO LOG MESSAGE LOCALLY 
*                CALL CHKCMM TO GET CMM BUFFER
*                MOVE MESSAGE TO BUFFER 
*                IF NO BUFFERS IN CHAIN:  
*                  SET AFT POINTER TO NEW BUFFER. 
*                ELSE:  
*                  FIND LAST BUFFER IN CHAIN
*                  CHAIN NEW BUFFER TO LAST.
# 
  
      BASED ARRAY MSGTEXT [0:0] S(7); 
        BEGIN 
        ITEM MSGTEXT$   C(00,00,70); # MESSAGE TO BE LOGGED # 
        END 
  
      ITEM MSGLENGTH  I;           # LENGTH OF MESSAGE IN CHARACTERS #
  
# 
****  XREF
# 
      XREF
        BEGIN 
        FUNC CHKCMM     U;         # GET CMM BUFFER # 
        PROC CONLOG;               # LOG CONNECTION MESSAGE # 
        PROC NAME;                 # DEBUG CODE # 
        END 
  
# 
****  XREF END
# 
  
  
      ITEM RMBADR     U;
  
        $BEGIN
        NAME("RMTLOG"); 
        $END
  
      CONLOG(LOC(MSGTEXT),MSGLENGTH); 
      RMBADR = CHKCMM(0, ( (MSGLENGTH+9)/10 + 1) ); 
      P<RMB> = RMBADR;
      RMB$LENC = MSGLENGTH;        # STORE MESSAGE LENGTH # 
      RMB$LINK = 0;# SIGNAL END OF CHAIN #
      C<0,MSGLENGTH>RMB$TEXT = C<0,MSGLENGTH>MSGTEXT$;
      IF FILERMB EQ 0              # IF NO PREVIOUS BUFFERS # 
      THEN
        BEGIN 
        FILERMB = RMBADR;          # STORE AT HEAD OF CHAIN # 
        END 
  
      ELSE
        BEGIN 
        P<RMB> = FILERMB;          # POINT TO FIRST BUFFER #
        ASLONGAS RMB$LINK NE 0     # SEARCH FOR LAST BUFFER # 
        DO
          BEGIN 
          P<RMB> = RMB$LINK;
          END 
  
        RMB$LINK = RMBADR;         # LINK NEW BUFFER TO PREVIOUS LAST # 
        END 
  
      END  # RMTLOG # 
    TERM
