Consultor Eletrônico



Kbase P51306: SonicMQ 4GL adapter appendText example for multipart message
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   31/10/2003
Status: Unverified

FACT(s) (Environment):

Progress 9.1D

FACT(s) (Environment):

SonicMQ 5.x

SYMPTOM(s):

appendText does not work for multipart messages

Hitting 32K limit for the Character string part

CAUSE:

appendText was used on the wrong handle

FIX:

You need to run appendText on the message part which is the text message
before adding the part to the multipart message. Below the example code:

DEFINE VARIABLE ptpsession AS HANDLE.
DEFINE VARIABLE messagePartH AS HANDLE.
DEFINE VARIABLE messageH AS HANDLE.
DEF VAR cTextString AS CHAR INITIAL "This is a test".
DEF VAR cText2String AS CHAR INITIAL "This is a 2 test".
DEF VAR contentIDString AS CHAR INITIAL "test".
DEF VAR content2IDString AS CHAR INITIAL "test2".
DEF VAR v30Ktext AS CHAR.
/* Creates a session object. */
RUN jms/ptpsession.p PERSISTENT SET ptpsession ("-H localhost -S 5162 ").
RUN setBrokerURL IN ptpsession ("localhost:2506").
RUN SETUSER IN ptpsession ("Administrator").
RUN setPassword IN ptpsession ("Administrator").
RUN beginSession IN ptpsession.

/* Create a multipart message */
RUN createMultipartMessage IN ptpsession (OUTPUT messageH).
/* Create a Sonic text message */
RUN createTextMessage IN ptpsession (OUTPUT messagePartH).
RUN setText IN messagePartH (cTextString).
v30Ktext = FILL("Z",30000) .
RUN appendText IN messagePartH (v30Ktext).
RUN appendText IN messagePartH (v30Ktext).
/* Add part to multipart message */
RUN addMessagePart IN messageH (INPUT messagePartH, INPUT contentIDString).

RUN setText IN messagePartH (cText2String).
RUN appendText IN messagePartH (v30Ktext).
RUN appendText IN messagePartH (v30Ktext).

RUN addMessagePart IN messageH (INPUT messagePartH, INPUT content2IDString).

RUN sendToQueue IN ptpsession ("SampleQ1", messageH, ?, ?, ?).

RUN deleteMessage IN messageH.
RUN deleteMessage IN messagePartH.
RUN deleteSession IN ptpsession.