|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Triggering a CICS application |
« View previous topic :: View next topic » |
Author |
Message
|
DELLIPIZ |
Posted: Thu Nov 06, 2008 7:00 pm Post subject: Triggering a CICS application |
|
|
Acolyte
Joined: 08 Oct 2003 Posts: 70
|
I have some questions on triggering a CICS application:
1) First of all, can I have multiple processes triggering the same CICS program:
For example:
Process name . . . . . . . . TEST.REQUEST.ONE
Disposition . . . . . . . . : QMGR XXXX
Description . . . . . . . . : KICKS OFF FMPTA99 ON MVS
Application type . . . . . : CICS
Application ID . . . : TA99
Process name . . . . . . . . TEST.REQUEST.TWO
Disposition . . . . . . . . : QMGR XXXX
Description . . . . . . . . : KICKS OFF FMPTA99 ON MVS
Application type . . . . . : CICS
Application ID . . . : TA99
2) If so, can I use the 'User data' field in the MQ process to pass information to the CICS program. For example, I would like to pass the queue name of where the data is coming from along with the length
of the data. Is that possible? If so, how would that be coded in a PL1 program?
Thanks so much! |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Nov 06, 2008 8:24 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Bad design
- The data length should be irrelevant as it is subject to change
- the source queue is already present in the TMC2 structure. Why pass it to CICS a second time?
- I would suggest that you use the userdata/trigger data fields to specify which copy book to use with the messages for that queue. Mind you, as you may have different message types you may have to pass a list...
 _________________ MQ & Broker admin |
|
Back to top |
|
 |
DELLIPIZ |
Posted: Thu Nov 06, 2008 8:58 pm Post subject: |
|
|
Acolyte
Joined: 08 Oct 2003 Posts: 70
|
Hi,
Thanks for the response. I guess I should explain what I am trying to do.
Currently, we receive ISO 8583 (1100) records via Expedite / CICS. We have a continous receive setup on the mailbox, so that once we receive data in that mailbox, we kick off the CICS program. Each customer who sends us data has a different file length... some send 260 bytes, some send 150, 142, etc. That field length is specified in the continous receive setup for that customer and that is how we handle it now. However, in one mailbox, we can have multiple ISO 8583s sent by the customer. In my example below, we have 2 1100s.... each being 142 in length.
1100........10129381 350 0000000991001442380811031246470000000000001007372
20249915 09055991053USD040281628881100........10129381 350 0000000991001442380811031246470000000000001007372
20249915 09055991053USD04028162888
Now I need to be able to replace the whole mailbox process and use MQ instead.
So I'll have some customers sending lengths of 260, 150, 142, etc.... and some sending more than one IS0 8583 in one MQ message. The length that each customer sends does not change.
So to sum it up, I need to be able to handle multiple record lengths and be able to seperate the ISO 8583 (1100) messages if more than one is sent.
With that said, any suggestions would be appreciated.
Also, you said that 'I would suggest that you use the userdata/trigger data fields to specify which copy book to use with the messages for that queue. Mind you, as you may have different message types you may have to pass a list...' I'm not sure what you mean by the list? Can you give me an example of how this would look? And also, how I could access it via my PL1 program.
Thanks again! |
|
Back to top |
|
 |
bob_buxton |
Posted: Fri Nov 07, 2008 2:56 am Post subject: |
|
|
 Master
Joined: 23 Aug 2001 Posts: 266 Location: England
|
If each MQ queue only receives messages of a given length you could hard code that information in the trigger data of the queue definition which is passed to the application. You wouldn't need to define multiple process definitions.
However if a queue could receive a mixture of message lengths the trigger message does not contain any information specific to the message that caused the trigger to be issued. Remember that a triggered application should process all the messages on the queue - information from the first message might not be the same in subsequent messages. _________________ Bob Buxton
Ex-Websphere MQ Development |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Nov 07, 2008 3:06 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
And note that you could probably inspect the start of the message to define the type and have that program dispatch the message to the relevant process queue. Now if you can also determine/inspect the length of the corresponding message you can further refine your dispatch model.
So you have a receive queue with the triggered dispatch program and a bunch of triggered process queues with information pertinent to your transaction. Each process queue can have it's own process for triggering. All of these processes can trigger the same transaction, each with different parms.
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
DELLIPIZ |
Posted: Fri Nov 07, 2008 6:23 am Post subject: |
|
|
Acolyte
Joined: 08 Oct 2003 Posts: 70
|
Thanks for your time!
I think you are saying that I can pass the message length of the individual ISO 8385 in the 'Trigger Data' field in the queue, let's say 142 in one queue and 260 in another queue, while still triggering the same PROCESS, but I'm still not sure how my program can use that information to pick up the message off the queue only 142 or 260 tytes at a time. Cause, as I mentioned earlier, in one MQ message, I can have multiple 142 length ISO 8593s, so I still need a way to seperate them, since they are just coming in as a blob of data. |
|
Back to top |
|
 |
Vitor |
Posted: Fri Nov 07, 2008 9:43 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
DELLIPIZ wrote: |
I'm still not sure how my program can use that information to pick up the message off the queue only 142 or 260 tytes at a time. Cause, as I mentioned earlier, in one MQ message, I can have multiple 142 length ISO 8593s, so I still need a way to seperate them, since they are just coming in as a blob of data. |
As indicated on your other thread here you can only read an entire message at a time. It's up to you to chop up the message buffer using any method you see fit. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
DELLIPIZ |
Posted: Mon Nov 10, 2008 5:54 am Post subject: |
|
|
Acolyte
Joined: 08 Oct 2003 Posts: 70
|
I'm running with MQ on MVS. How do I use that TMC2 structure in my MQGET command, so I know which queue to 'get' from?
Thanks! |
|
Back to top |
|
 |
bob_buxton |
Posted: Mon Nov 10, 2008 6:49 am Post subject: |
|
|
 Master
Joined: 23 Aug 2001 Posts: 266 Location: England
|
DELLIPIZ wrote: |
I'm running with MQ on MVS. How do I use that TMC2 structure in my MQGET command, so I know which queue to 'get' from?
Thanks! |
In CICS the MQTM structure is passed to your application as Start Data and can be accessed via an EXEC CICS RETRIEVE command.
See the CSQ4Cxxxx sample programs shipped with the product for examples in Cobol and C. _________________ Bob Buxton
Ex-Websphere MQ Development |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|