MQSeries and DataQueue programs Example

LANSA Integrator

MQSeries and DataQueue programs Example

This example illustrates both MQSeries and DataQueue access in the one program.

********** Beginning of RDML commands **********
FUNCTION   OPTIONS(*DIRECT)
********** 
DEFINE     FIELD(#JSMSTS) TYPE(*CHAR) LENGTH(20)
DEFINE     FIELD(#JSMMSG) TYPE(*CHAR) LENGTH(255)
DEFINE     FIELD(#JSMCMD) TYPE(*CHAR) LENGTH(255)
**********
********** Stop MQ fields going across by prefixing with JSM
********** 
DEFINE     FIELD(#JSMQMGR) TYPE(*CHAR) LENGTH(48)
DEFINE     FIELD(#JSMQNAME) TYPE(*CHAR) LENGTH(48)
********** 
DEFINE     FIELD(#JSMRQMGR) TYPE(*CHAR) LENGTH(48)
DEFINE     FIELD(#JSMREPLYQ) TYPE(*CHAR) LENGTH(48)
********** 
DEFINE     FIELD(#JSMWAIT) TYPE(*DEC) LENGTH(8) DECIMALS(0)
DEFINE     FIELD(#JSMMSIZE) TYPE(*DEC) LENGTH(8) DECIMALS(0)
DEFINE     FIELD(#JSMDEPTH) TYPE(*DEC) LENGTH(8) DECIMALS(0)
DEFINE     FIELD(#JSMCCSID) TYPE(*DEC) LENGTH(8) DECIMALS(0)
DEFINE     FIELD(#JSMPST) TYPE(*CHAR) LENGTH(1)
DEFINE     FIELD(#JSMPTY) TYPE(*DEC) LENGTH(8) DECIMALS(0)
DEFINE     FIELD(#JSMMID) TYPE(*CHAR) LENGTH(24)
DEFINE     FIELD(#JSMCID) TYPE(*CHAR) LENGTH(24)
DEFINE     FIELD(#JSMMTYPE) TYPE(*DEC) LENGTH(9) DECIMALS(0)
**********
********** Data Queue
**********
DEFINE     FIELD(#JSMQLIB) TYPE(*CHAR) LENGTH(10)
DEFINE     FIELD(#JSMQNME) TYPE(*CHAR) LENGTH(10)
DEFINE     FIELD(#JSMQKEY) TYPE(*CHAR) LENGTH(256)
**********
DEFINE     FIELD(#ORDER) TYPE(*CHAR) LENGTH(10)
DEFINE     FIELD(#NAME) TYPE(*CHAR) LENGTH(50)
DEFINE     FIELD(#STREET) TYPE(*CHAR) LENGTH(50)
DEFINE     FIELD(#CITY) TYPE(*CHAR) LENGTH(50)
DEFINE     FIELD(#STATE) TYPE(*CHAR) LENGTH(5)
DEFINE     FIELD(#ZIP) TYPE(*CHAR) LENGTH(5)
********** 
DEFINE     FIELD(#LINENUM) TYPE(*DEC) LENGTH(3) DECIMALS(0)
DEFINE     FIELD(#PARTNUM) TYPE(*DEC) LENGTH(3) DECIMALS(0)
DEFINE     FIELD(#PARTDSC) TYPE(*CHAR) LENGTH(50)
DEFINE     FIELD(#PARTAMT) TYPE(*DEC) LENGTH(10) DECIMALS(2)
DEFINE     FIELD(#PARTQTY) TYPE(*DEC) LENGTH(3) DECIMALS(0)
**********
**********
DEF_LIST   NAME(#WRKLST) FIELDS((#LINENUM) (#PARTNUM) (#PARTDSC)
          ( #PARTAMT) (#PARTQTY)) TYPE(*WORKING)
**********
CHANGE     FIELD(#JSMQMGR) TO('TEST.QMANAGER')
CHANGE     FIELD(#JSMQNAME) TO('TEST.QUEUE')
**********
********** Get Queue Depth
********** 
CALL       PGM(JSMMQDEPTH) PARM(#JSMQMGR #JSMQNAME #JSMDEPTH #JSMSTS #JSMMSG)
          NUM_LEN (*DEFINED)
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
**********
DISPLAY    FIELDS((#JSMDEPTH))
********** 
********** Open service
**********
USE        BUILTIN(JSM_OPEN) TO_GET(#JSMSTS #JSMMSG)
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
**********
********** Load service
**********
USE        BUILTIN(JSM_COMMAND) WITH_ARGS('SERVICE_LOAD SERVICE(XMLQueueService)') 
          TO_GET(#JSMSTS #JSMMSG) 
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
********** Get message
********** 
CHANGE     FIELD(#JSMQLIB) TO(JSMSRC)
CHANGE     FIELD(#JSMQNME) TO(JSMQUEUE)
CHANGE     FIELD(#JSMQKEY) TO(*BLANK)
CHANGE     FIELD(#JSMWAIT) TO(5000)
**********
CALL       PGM(JSMDQGET) PARM(#JSMQLIB #JSMQNME #JSMQKEY #JSMWAIT
          #JSMSTS #JSMMSG) NUM_LEN(*DEFINED
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
CALL       PGM(JSMMQGET) PARM(#JSMQMGR #JSMQNAME #JSMWAIT #JSMMSIZE
          #JSMMID #JSMCID #JSMRQMGR #JSMREPLYQ #JSMMTYPE #JSMSTS #JSMMSG)
          NUM_LEN(*DEFINED)
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
********** Receive XML
********** 
CHANGE     FIELD(#JSMCMD) TO('RECEIVE XSL(RECEIVEORDER) SERVICE_LIST
          (LINENUM,PARTNUM,PARTDSC,PARTAMT,PARTQTY)')
**********
USE        BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET
          (#JSMSTS #JSMMSG #WRKLST)
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
********** 
DISPLAY    FIELDS((#ORDER))
**********
********** Send XML
********** 
CHANGE     FIELD(#JSMCMD) TO('SEND XSL(SENDORDER)
          SERVICE_LIST(LINENUM,PARTNUM,PARTDSC,PARTAMT,PARTQTY)')
**********
USE        BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) 
          TO_GET(#JSMSTS #JSMMSG #WRKLST)
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
********** Put new message
********** 
CHANGE     FIELD(#JSMCCSID) TO(0)
CHANGE     FIELD(#JSMMTYPE) TO(8)
CHANGE     FIELD(#JSMMID) TO(*BLANK)
CHANGE     FIELD(#JSMCID) TO(*BLANK)
CHANGE     FIELD(#JSMPST) TO(Y)
CHANGE     FIELD(#JSMPTY) TO(4)
CHANGE     FIELD(#JSMRQMGR) TO(*BLANK)
CHANGE     FIELD(#JSMREPLYQ) TO(*BLANK)
********** 
CALL       PGM(JSMMQPUT) PARM(#JSMQMGR #JSMQNAME #JSMCCSID #JSMPST
          #JSMPTY #JSMMID #JSMCID #JSMMTYPE #JSMRQMGR #JSMREPLYQ
          #JSMSTS #JSMMSG) NUM_LEN(*DEFINED)
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
CALL       PGM(JSMDQPUT) PARM(#JSMQLIB #JSMQNME #JSMQKEY
          #JSMSTS #JSMMSG) 
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
********** Close service
**********                                 
USE        BUILTIN(JSM_CLOSE) TO_GET(#JSMSTS #JSMMSG) 
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 
********** SUB ROUTINES 
**********                            
SUBROUTINE NAME(CHECK) PARMS((#JSMSTS *RECEIVED) (#JSMMSG *RECEIVED))
********** 
IF         COND('#JSMSTS *NE OK')
**********     
DISPLAY    FIELDS((#JSMSTS) (#JSMMSG))
********** 
USE        BUILTIN(JSM_CLOSE) TO_GET(#JSMSTS #JSMMSG)
********** 
MENU       MSGTXT('Java service error has occurred')
********** 
ENDIF                                        
********** 
ENDROUTINE 
********** End of RDML commands **********