Consultor Eletrônico



Kbase 21002: SonicMQ Adapter: Example Running 4GL Procedure in Batch Mode
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/10/2008
Status: Unverified

FACT(s) (Environment):

Progress 9.1B

SYMPTOM(s):

Cannot WAIT-FOR input from a stream. (3268)

Trying to access the SonicMQ Adapter

Batch mode

FIX:

/* Code example */
DEFINE VARIABLE ptpsession AS HANDLE.
DEFINE VARIABLE consumerH AS HANDLE.
DEFINE VARIABLE txt AS CHAR.
DEF VAR jmsOK AS LOGICAL INITIAL TRUE.

INPUT FROM myinp.txt.
OUTPUT TO "myoutput.txt".
/* Creates a session object. */
RUN jms/ptpsession.p PERSISTENT SET ptpsession("-H pcrwe2 -S 5162").
RUN setBrokerURL IN ptpsession ("pcrwe2:2506").
RUN beginSession IN ptpsession.

RUN createMessageConsumer IN ptpsession (
THIS-PROCEDURE,
"test",
OUTPUT consumerH).
RUN receiveFromQueue IN ptpsession ("SampleQ1",
?,
consumerH).

/* Start receiving messages */
RUN startReceiveMessages IN ptpsession.

/* Wait to receive the messages. */
RUN waitForMessages IN ptpsession ("inWait",THIS-PROCEDURE,?).
IF NOT jmsOK THEN
DO:
RUN deleteSession IN ptpsession.
END.

PROCEDURE test:
DEFINE INPUT PARAMETER messageH AS HANDLE.
DEFINE INPUT PARAMETER msgConsumerH AS HANDLE.
DEFINE OUTPUT PARAMETER replyH AS HANDLE.

txt = DYNAMIC-FUNCTION('getText':U IN messageH) .
/* Quit procedure depending on message text */
IF txt = "quit" THEN DO :
jmsOK = FALSE.
END.
MESSAGE "Message text: " + txt.

RUN deleteMessage IN messageH.

END.
FUNCTION inWait RETURNS LOGICAL:
RETURN jmsOK.
END.