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.