|
On Mon, 2004-01-26 at 14:20, GKern@xxxxxxxxxxxxxxxx wrote: > Here is the exact code - note the first statement sets SocketData to > *Blanks - which to me, should clear the buffer. Please correct me if I'm > wrong? > > * Load socket field and determine number of bytes in field... > C Eval SocketData = *Blanks > C Eval SocketData = HL7 > > C Eval SocketData = %Trim(SocketData) + End_Block > C Eval SocketData = %Trim(SocketData) + Car_Return > C Eval SockDtaLen = %Len(SocketData) > > * Loop until message is accepted... > C Eval Tries = *Zero > C Eval Ack = No > C Dou Ack = Yes or Tries = 3 > * Send the segment to the server over the socket... > * (NOTE - Need to add 2 to SockDtaLen since SocketData is defined as > * VARYING - which adds 2 extra bytes to the field since the first > * two bytes contain a binary value that identifies the actual length > * of the data in the variable length field...) > C Eval RC = > Write(SD:%Addr(SocketData):SockDtaLen+2) Here is part of the problem. You send the address of a varying length field, which includes the length in the first two bytes. Perhaps try Write(SD:%Addr(SocketData)+2:SockDtaLen) Don't forget to loop in case where rc is greater than 0, but not equal to SockDtaLen. Regards, Rich
This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.