We have a system selling passenger train tickets. This system is running
under OS/390 and uses CICS TS V1R2 and DB2 V5.2. Now we want to develop a client-server version of our system using MQSeries. We want to change the client's part of our system. The system's kernel must stay the same. (New version must support our legacy system). Where do we begin?
Developing an MQSeries client-server continued. See part 1.
The idea of using FEPI (you will be using Formatted Support) is that the LU2 emulation can run in the same CICS region as the transaction, or they can be in diffferent regions. You also get lots of parallel and multiprocessing operations. The idea would be to write an emulation program using the EXEC CICS FEPI commands to run your existing ticketing applications. As far as these existing applications are concerned, they are running at a real 3270 Terminal and don't know that they are being used through an emulation rather than a real person.
When operating with FEPI Formatted, your code will get the LU2 screen in the form of a rectangular array, and you just fillin the parts which represent fields. Alternatively, you can use a Keystroke technique to fillin the screen. The main thing to grasp is that error handling MUST be completely coded - it turns out that coping with errors raised by the existing applications (error messages or fields turning red etc.) is more complicated than the normal usage path.
If you are going to drive this operation via MQ, then you will have seen that CICS has facilities for processing queues and initiating transactions using the message. You probably do not need to write your own message dispatcher, the CICS supplied function should be adequate. However, I do recommend putting the MQ processing into a different program from the 3270 emulation (so that you can reuse the latter for a different transport, like access from a CICS Transaction Gateway process.
For management purposes, you might want to have distinct CICS regions just doing the MQ activity. This is a good arrangement, and you can either route the emulation function into another CICS region (probably overkill) or run the emulation in that MQ region (probably the best arrangement).
You might want to involve your local IBM Technical Support to review your design as FEPI coding does have some 'features' that you could miss. Alternatively, you could talk to IBM's FEPI expert (which I immodestly claim to be!) via your local IBM channels.
In either case, you are going to end up with a package that encapsulates your existing operations in such a way that they can be driven in new ways.
I'm somewhat wary of your technical environment: At the end of the year DB2
v5 will be out of service as will be CTS 1.2. For non-Java customers, there
is no real difference between CTS 1.3 and CTS 2.2, so you should be
planning to go away from CTS 1.2 to CTS 2.2 in one jump and use DB2 v7 for
This was first published in November 2002