This blog explain the user to configure the machines to work on TXSeries with IBM MQ using XAClient transactions.

First you need to configure the server machine where you need to install Latest IBM MQ and create the Queue manager and its objects and where listener should be running.

User can either setup same machine as client and server or can use different machine for server setup

TXSeries provides the MQ samples and server and client configuration files, user can find those files in the TXSeries (CICS) installation directory.

ex: $cics_Installation_directory/cics/examples/RM_Support/WMQ

Here are the below mentioned steps to configure Server machine and create QM objects and start the Listener.

MQ Server Machine

1. Install the IBM MQ Server (prefer to install the latest level of MQ)

2. From TxSeries installed directory (from the machine where TXSeries is running ) copy the below mentioned .sh and .mqsc files to create the QM and its objects
$cics_Installation_directory/cics/examples/RM_Support/WMQ copy cics_mqcfgserver.sh, cics_mqsamp.mqsc to MQ Server machine /tmp/Tx

Note: On the MQ Server machine , make sure to create the user cics and should be the part of mqm group

3. After copying the above files, run the below command
./cics_mqcfgserver.sh QMGRname (you need to pass the Queue manager name, otherwise it will ask you to pass the name of the QM)
It will create the QM and local queues and its objects.

ex: ./cics_mqcfgserver.sh QM1

4. After creating QM, alter the QM objects (MQ v71 and above)

alter qmgr chlauth(disabled)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
After that restart the QM1 (optional)

6 Then run the listener
runmqlsr -m Qmgrname -t tcp -p portno &

ex: runmqlsr –m QM1 –t tcp –p 9812 &

Below are the Steps build switchload file, create cics region, PUT and GET messages using XA Client

1. On TxSeries machine, install the IBM MQ client ( Latest version of MQ )

2. Set the environment variable to cics sample directory
export CICS_MQ_SAMPLE_INSTALL_DIR=/cics_installation_directory/cics/examples/RM_support/WMQ

ex: export CICS_MQ_SAMPLE_INSTALL_DIR=/usr/lpp/cics/examples/RM_support/WMQ

3. Route to /cics_installation_dir/cics/examples/RM_support/WMQ directory and build the switch load file.
make -f cics_mq_sample.mk CLIENT

cics_mq_sample.mk will build the switch load (amqzscix) file using the MQ client libraries and You need to pass the variable Client or server
depends on whether user wants to build switch load file for client or server (here used client as I want do the XA-Client transactions)

4. Next step is to create the cics regions, you need to pass the region name while running the command (this file is also present under $cics_Installation_directory/cics/examples/RM_support/WMQ directory)

./cics_mqcfgclient.sh region_name

ex: ./ cics_mqcfgclient.sh MQTEST

cics_mqcfgclient.sh – creates the cics regions and it creates the database entry for PD, TD, MQD, TDD stanza to make put and get transactions.

Below is the output looks like:

cics regions data will be created in /var/cics_regions/region_name

Issue the command : cicscp –v status all – it displays the sfs server details and all cics_regions details

Note: If sfs server not created and its not in running state , while creating region either manually or by using cics_mqcfgclient.sh creates the sfs server and it starts the server.

Note: Before starting the cics_region, do the below changes in the regions database XAD entry and regions environment file.

5. Route to /var/cics_regions/region_name/database/XAD, add the XAOpen details in XAD.stanza file as below and save the file

XAOpen=”channel=SYSTEM.DEF.SVRCONN,trptype=tcp,conname=serverip(portnumber),qmname=qmgrname”

Or use cicsupdate command to update using command line

cicsupdate –c xad –r region_name MQXA XAOpen=”channel= SYSTEM.DEF.SVRCONN,trptype=tcp,conname=MQserverIP(portno.),qmname=qmgrname

ex: cicsupdate -c xad -r MQTEST MQXA XAOpen=”channel=SYSTEM.DEF.SVRCONN,trptype=tcp,conname=9.126.146.104(9812),qmname=QM1

Afer updating XAD.stanza file looks like below. Make sure that XAOpen and SwichloadFile details are proper before starting the cics_region

6. Route to /var/cics_regions/region_name/ , add the QMgr details in the environment file present

Open the environment file, and the QMgr name in CICS_MQ_QMGR_NAME=QMgrname and save the file

ex: CICS_MQ_QMGR_NAME=QM1

7. Copy AMQCLCHL.TAB from MQ server machine (/var/mqm/qmgrs/QMName/@ipcc) to MQ client machine /var/mqm

8. Next to start the cics_region , run the below command to start the region for the first time

cicscp –v start region region_name StartType=cold

To check, XA_open is successful or not, go to regions directory and check for the log

/var/cics_regions/region_name/console.0000x

Note:If XA_Open is not successful, then the console.0000 file log says , XA_Open failed, In that case you need to check for the cause for the error (Most of the time error occurs, when cics users not in mqm group in the MQ server, set the auth info details, make sure listener is in running state etc)

9. cicscp –v status all run the command to check the cics_region is in running state.

10. Now all set to do the PUT and GET transactions, As I used AIX , user has to use cicslterm

Type cicslterm and press enter, take the user cics console, where user need to put and get the messages and Get the messages.

The cicslterm console looks like below and it displays the cics_regions are in running state. (Make sure that no other regions are in running state)

Once you enter the cicslterm conole – press enter key from Keyboard.

And enter MPUT – To put the message to the Queue and press enter key

The cics region data logs you can check in the /var/cics_regions/region_name/data direcotry

/var/cics_regions/MQTEST/data

-bash-4.2# ls
CCIN.out CKTI.out CPLD.out CPLI.out CRTI.out CSMT.out CSZL.out MQSAMP.LOG statsfile
MQSAMP.LOG – The log will be recorded here, whenver user PUT or GET transacation made.

CSMT.out – This will contains the Tx Terminal and CICSUSER details who invoke the transaction

-bash-4.2# cat CSMT.out
ERZ011004I/1301 06/06/18 14:26:13.796697144 MQTEST 8454250/0001 : Processing terminal installation request for device type ‘vt100’ from user ‘CICSUSER’ on host ‘aixfp1’ using device ‘/dev/pts/0’.
ERZ011010I/1345 06/06/18 14:26:13.831152448 MQTEST 8454250/0001 : Terminal ‘D4X2’ autoinstall complete for user ‘CICSUSER’, netname ‘D4AIXFX2’, model ‘vt100’.
ERZ011012I/2014 06/06/18 14:32:05.990966658 MQTEST 8454250/0001 D4X2: Terminal ‘D4X2’ with netname ‘D4AIXFX2’ has been uninstalled.

12. After putting the message, check the curdepth of the CICS.LOCAL.QUEUE – on the MQ server machine

runmqsc QM1
display ql(cics.local.queue)

On the Txseries cicslterm console- Ctrl +L to clear the screen and type MGET – press enter key

Ctrl+L – to clear the screen and CESF to come out from the cicslterm console.

After MGET transaction, check the log data in /var/cics_regions/region_name/data

MQSAMP.LOG – data as below

CSMT.out – data as below
ERZ011004I/1301 06/06/18 14:47:56.755800197 MQTEST 8454302/0001 : Processing terminal installation request for device type ‘vt100’ from user ‘CICSUSER’ on host ‘aixfp1’ using device ‘/dev/pts/0’.
ERZ011010I/1345 06/06/18 14:47:56.786933871 MQTEST 8454302/0001 : Terminal ‘G4X2’ autoinstall complete for user ‘CICSUSER’, netname ‘G4AIXFX2’, model ‘vt100’.

Note: If user is not confident using cicslterm console commands, can try the below command directly

To put the messages :

cicslterm –r region_name –t MPUT (cicslterm –r MQTEST –t MPUT)

once this command is entered , user need to enter CESF to come out from the console

To get the messages:

cicslterm –r region_name –t MGET (cicslterm –r MQTEST –t MGET)

Check for /var/mqm/errors for any errors or warnings or FDC.

Warnings / Errors user could see in /var/mqm/errors

AMQ9202: Remote host ” not available, retry later.

EXPLANATION:
The attempt to allocate a conversation using TCP/IP to host ” for channel
SYSTEM.DEF.CLNTCONN was not successful. However the error may be a transitory
one and it may be possible to successfully allocate a TCP/IP conversation
later.

Solution:
If this is the case, Try to restart the Queue manager and Listener on the MQ server machine

This completes the XA client transaction with TxSeries using IBM MQ

Below steps explains the user to enable the CKTI monitor (Trigger monitor) and do PUT transaction:

a. Update the MQD stanza in the cics_region
cicsupdate -c mqd -r $CICSRegion QM MQMgrName=$QmgrName MQInitiationQueName=$InitQName MonitorTrigger=yes AutoStart=yes

ex: cicsupdate -c mqd -r MQTEST QM MQMgrName=QM1 MQInitiationQueName=CICS.TRIG.QUEUE MonitorTrigger=yes AutoStart=yes

b. Add the MQServer details in the cics_region environment file

MQSERVER=”SYSTEM.DEF.SVRCONN/TCP/Serverip(port)

ex: MQSERVER=”SYSTEM.DEF.SVRCONN/TCP/9.126.146.104(9812)”

c. Once you done with MQD and environment data update, stop the cics_region and start the region

cicscp –v stop region region_name

cicscp –v start region MQTEST StartType=cold

d. Check the /var/cics_regions/region_name/console.00001 is created with log and check for error , XA_Open success /failed and CKTI monitor is started or not

ERZ094009I/0010 06/06/18 15:48:52.067604601 MQTEST 11927556/0008 : CKTI multiprocess initiation queue monitor started
ERZ010020I/0068 06/06/18 15:48:52.068129259 MQTEST 11927556/0008 : *** CICS startup is complete ***
ERZ010129I/0334 06/06/18 15:48:52.082248622 MQTEST 11927556/0008 : CICS startup id: ‘MQTEST180606154850’
ERZ022137I/1285 06/06/18 15:48:52.083008403 MQTEST 11534552/0001 : Purging transient data queues (CTDP).
ERZ010144I/0375 06/06/18 15:48:52.158928609 MQTEST 12124262/0001 : Application server 103 started
ERZ024090I/0314 06/06/18 15:48:52.165799402 MQTEST 11141238/0001 : Checkpointing completed

e. Check the CKTI.out file in /var/cics_regions/region_name/data

f. Now Put the message – follow the same step mentioned in Step No. 11

cicslterm –r region_name –t MPUT

g. Now route to /var/cics_regions/region_name/data

MQSAMP.out says show the Putting the messages to the queue and GET is happening automatically

References:
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.ins.doc/q008600_.htm
https://www.ibm.com/support/knowledgecenter/en/SSAL2T_8.1.0/com.ibm.cics.tx.doc/tasks/t_inst_tx_console.html
https://www.ibm.com/support/knowledgecenter/en/SSAL2T_8.1.0/com.ibm.cics.tx.doc/tasks/t_adm_ckti_config_sampl.html
https://www.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/tasks/t_adm_ckti.html
https://www.ibm.com/support/knowledgecenter/en/SSAL2T_8.2.0/com.ibm.cics.tx.doc/t_conf_ckti_mq.html
https://www.ibm.com/developerworks/community/blogs/DoMoreWithTXSeries/entry/ckti_a_walkthrough?lang=en

Join The Discussion

Your email address will not be published.