4 Implementing CICS Applications
This chapter contains the following sections:
- Presentation of the z/OS Simple Application
- Verifying the CICS Application Installation
- Presentation of Simple Application on COBOL-IT / BDB
- Implementing Synchronous CICS Transactions With a Limited Number of Parallel Instances
- Implementing Asynchronous CICS Non-Delayed Transactions
- Implementing Asynchronous CICS Delayed Transactions
- Implementing CICS Application Using Temporary Storage (TS) Queues
- Managing TD Queue Intrapartititions
- Implementing CICS Application Using Temporary Storage (TS) Queue POOL
- Implementing Distributed Program Link (DPL)
- Implementing CICS Common Work Area (CWA)
- Implementing a CICS Transaction Work Area (TWA)
- Implementing Integration with WebSphere MQ
- Implementing Using Multiple Session Management
- Implementing Using ART for CICS TCP/IP Socket Interface
- Implementing Transferring CICS Regions
- Implementing Intersystem Communication
- Implementing Submitting JCL/KSH Online
- Implementing ART for CICS Control Utility
- Implementing Printing CICS Runtime Applications Data
- Implementing Invoking Web Services from CICS Applications
- Implementing CICS as HTTP Client
- Implementing CICS as HTTP Server
- Implementing ART for CICS Application Server Customized Callback Support
- Implementing Resource-Based Authorization
- Implementing COBOL Program Debugging in CICS Runtime
- CICS Runtime Logs
- The CICS Runtime Server Logs
- Disabling and Enabling Programs
- CICS Runtime C Program Support
4.1 Presentation of the z/OS Simple Application
The chapter contains the following topics:
- Introduction
- Description of the CICS Simple Application Components
- Configuring a Standard CICS Application With CICS Runtime
- CICS Runtime Configuration
Parent topic: Implementing CICS Applications
4.1.1 Introduction
This application was initially developed on a z/OS platform implementing COBOL programs used in batch and CICS contexts with VSAM and QSAM files and DB2 tables.
Data was unloaded from z/OS and converted and reloaded on a UNIX platform using Oracle Tuxedo Application Rehosting Workbench.
The language components were converted or translated from z/OS to UNIX by Oracle Tuxedo Application Rehosting Workbench.
These components use two major Oracle Tuxedo Application components, Batch Runtime and CICS Runtime, to emulate the technical centralized features of their original z/OS environment. Here, we will focus on the particular case of the CICS Runtime implementing COBOL Programs using CICS statements and DB2 statements.
This Simple Application manages the customers of a company through a set of classical functions like creation, modification and deletion.
Parent topic: Presentation of the z/OS Simple Application
4.1.2 Description of the CICS Simple Application Components
All of the CICS components are declared with the same name, in
the z/OS CICS CSD File. All of the resource declarations are made
inside a z/OS CICS GROUP named PJ01TERM
. This group is
declared in the z/OS CICS LIST PJ01LIST
used by CICS
at start up to be automatically installed.
Parent topic: Presentation of the z/OS Simple Application
4.1.2.1 Mapsets
Table 4-1 Simple Application Mapsets
Name | Description |
---|---|
RSSAM00
|
Customer maintenance entry menu |
RSSAM01
|
Customer data inquiry screen |
RSSAM02
|
Customer data maintenance screen (create, update and delete customer) |
RSSAM03
|
Customer list screen |
Parent topic: Description of the CICS Simple Application Components
4.1.2.2 Programs
Table 4-2 Simple Application Program
Name | Description |
---|---|
RSSAT000
|
Customer maintenance entry program |
RSSAT001
|
Customer data inquiry program |
RSSAT002
|
Customer data maintenance program (new customer, update and delete customer) |
RSSAT003
|
Customer list program |
Parent topic: Description of the CICS Simple Application Components
4.1.2.3 Transactions Codes
Table 4-3 Transaction Codes
Name | Description |
---|---|
SA00
|
Main entry transaction code (program RSSAT000) |
SA01
|
Customer inquiry (program RSSAT001) |
SA02
|
Customer maintenance (program RSSAT002) |
SA03
|
Customer list (program RSSAT003) |
Parent topic: Description of the CICS Simple Application Components
4.1.2.4 VSAM File
Table 4-4 Simple Application VSAM File
DDName | DataSetName | Description |
---|---|---|
ODCSF0
|
PJ01AAA.SS.VSAM.CUSTOMER | VSAM Main Customer File |
Parent topic: Description of the CICS Simple Application Components
4.1.3 Configuring a Standard CICS Application With CICS Runtime
The first example uses the CICS Simple File-to-Oracle application which uses only a z/OS VSAM File converted into a UNIX Oracle Table.
In our example, all of the UNIX components resulting from
platform migration are stored in the trf
directory.
The COBOL programs and BMS mapsets should be compiled and
available as executable modules in the respective directories
${HOME}/trf/cobexe
and
${HOME}/trf/MAP_TCP.
Parent topic: Presentation of the z/OS Simple Application
4.1.3.1 CICS Simple File-to-Oracle Application UNIX Components
This section contains the following topics:
4.1.3.1.1 COBOL Program Files
The ${HOME}/trf/cobexe
directory contains the
Simple Application CICS executable programs:
${HOME}/trf/cobexe/RSSAT000.gnt
${HOME}/trf/cobexe/RSSAT000.gnt
${HOME}/trf/cobexe/RSSAT002.gnt
${HOME}/trf/cobexe/RSSAT003.gnt
Parent topic: CICS Simple File-to-Oracle Application UNIX Components
4.1.3.1.2 The Mapset Files
The ${HOME}/trf/MAP_TCP
directory contains the
Simple Application Data z/OS BMS mapsets compiled:
${HOME}/trf/MAP_TCP/RSSAM00.mpdef
${HOME}/trf/MAP_TCP/RSSAM01.mpdef
${HOME}/trf/MAP_TCP/RSSAM02.mpdef
${HOME}/trf/MAP_TCP/RSSAM03.mpdef
Parent topic: CICS Simple File-to-Oracle Application UNIX Components
4.1.4 CICS Runtime Configuration
For a standard application, in addition to the initial settings, the following CICS resources in the same Group must be implemented:
- Basic CICS transactions (synchronous and simultaneous).
- COBOL Programs without SQL statements, CICS TS queues.
- Mapsets.
- VSAM file (logical name and associated data accessors).
To configure these resources:
- Declare these resources in their respective CICS Runtime Resource Configuration File.
- Configure the CICS Runtime Tuxedo Servers Groups and Servers to manage these resources. See Reference for a full description of which configuration files are used with each server.
The following topics describe in detail the configuration process:
- Declaring CICS Resources to the CICS Runtime
- Declaring CICS Transactions Codes
- Declaring a CICS COBOL Program
- Declaring CICS Mapsets
- Declaring ISAM Files Resulting From a z/OS VSAM File Conversion
- Modifying the CICS Runtime Tuxedo Servers
- Modifying the CICS Runtime Tuxedo Servers Groups
Parent topic: Presentation of the z/OS Simple Application
4.1.4.1 Declaring CICS Resources to the CICS Runtime
Each resource is declared in the file corresponding to its type (program, transaction …). Each resource defined in a resource file must belong to a group.
In the following examples using the CICS Simple File-to- Oracle Application, we will use the CICS Runtime Group name SIMPAPP
and all our *.desc
files will be located in the ${home}/trf/config/resources
directory.
Note:
In these configuration files, each line beginning with a "#" is considered as a comment and is not processed by CICS RuntimeParent topic: CICS Runtime Configuration
4.1.4.2 Declaring CICS Transactions Codes
These declarations are made by filling the
transactions.desc
file for each transaction you have
to implement.
For each transaction you have to declare in a csv format
- The name of the transaction (mandatory).
- The CICS Runtime Group name (mandatory).
- A brief description of the transaction (optional, at least one blank)
- The name of the program started by this transaction (mandatory).
In the File-to-Oracle Simple Application example, we have to
declare four transactions: SA00
, SA01
,
SA02
and SA03
in the SIMPAPP
Group, starting the corresponding COBOL programs
RSSAT000
, RSSAT001
, RSSAT002
and RSSAT003
.
Once filled, the transactions.desc file looks like this:
Listing 4‑1 Simple Application transactions.desc File
#Transaction Name ;Group Name ; Description ;Program Name
SA00;SIMPAPP; Home Menu Screen of the Simple Application;RSSAT000
SA01;SIMPAPP; Customer Detailed Information Screen of the Simple Application;RSSAT001
SA02;SIMPAPP; Customer Maintenance Screen of the Simple Application;RSSAT002
SA03;SIMPAPP; Customer List of the Simple Application;RSSAT003
Parent topic: CICS Runtime Configuration
4.1.4.3 Declaring a CICS COBOL Program
All the programs used by the transactions previously declared,
directly or indirectly through EXEC CICS
statements
like LINK, XCTL, START
… must be declared in the
same Group.
These declarations are made in the programs.desc
file for each program to implement.
For each program you have to declare in a csv format:
- The name of the program (mandatory)
- The CICS Runtime Group name (mandatory)
- A brief description of the program (optional, at least one blank)
- The language in which the program is written COBOL (default)
In our Simple Application example, the only programs needed are
RSSAT000
, RSSAT001
, RSSAT002
and RSSAT003
which are all coded in the COBOL
language
Once filled, the programs.desc file looks like this:
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE;
RSSAT000;SIMPAPP; Home Menu Program of the Simple Application ;COBOL
RSSAT001;SIMPAPP; Customer Detailed Information Program of the Simple Application ;COBOL
RSSAT002;SIMPAPP; Customer Maintenance Program of the Simple Application
RSSAT003;SIMPAPP; Customer List of the Simple Application ;COBOL
Note:
Nothing is declared in the language field of RSSAT002, meaning that the LANGUAGE of this program is COBOL by default.Parent topic: CICS Runtime Configuration
4.1.4.4 Declaring CICS Mapsets
To converse with end-users thru 3270 terminals or emulators,
declare to CICS Runtime all of the physical mapsets
(*.mpdef
file) used in the COBOL programs previously
defined thru the specific EXEC CICS
statements
described above in this document.
These declarations are made by filling the
mapsets.desc
file for each mapset you have to
implement.
The input format of each of your mapset definitions must respect the following format description:
- On the first free physical line, type the [
mapset
] keyword. - On the next line, enter the keyword
name=
followed by the name of your mapsets. - On the next line, enter the keyword
filename=
followed by the physical path of your physical mapsets (.mpdef
file).
In our Simple Application example, the mapsets used in our COBOL
programs are RSSAM00
, RSSAM01
,
RSSAM02
and RSSAM03.
Once filled, the mapsets.desc file looks like this:
[mapset]
name=ABANNER
filename=<KIXDIR>/sysmap/abanner.mpdef
[mapset]
name=RSSAM00
filename=<HOME>/demo/MAP_TCP/RSSAM00.mpdef
[mapset]
name=RSSAM01
filename=<HOME>/demo/MAP_TCP/RSSAM01.mpdef
[mapset]
name=RSSAM02
filename=<HOME>/demo/MAP_TCP/RSSAM02.mpdef
[mapset]
name=RSSAM03
filename=<HOME>/demo/MAP_TCP/RSSAM03.mpdef
Note:
Themapsets.desc
file does not accept UNIX variables, so a fully expanded path must be provided in this file.
<KIXDIR>
: must be replaced by the value of the${KIXDIR}
variable of the~/.profile
.<HOME>
: must be replaced by the value of the${HOME}
variable of the~/.profile.
Parent topic: CICS Runtime Configuration
4.1.4.5 Declaring ISAM Files Resulting From a z/OS VSAM File Conversion
Previously, before declaring one or more files to CICS Runtime, all the physical components, files, accessor programs, COBOL Copybooks etc. must have been generated by the Oracle Tuxedo Application Rehosting Workbench Data components.
Among all the components built or converted by the Oracle Tuxedo Application Rehosting Workbench Data components, only accessor programs on converted VSAM files are used by CICS Runtime. The reason is that, once migrated, no file can be directly accessed. The file can only be accessed indirectly through an accessor program dedicated to the management of this file (one and only one accessor program per source file).
The Simple Application uses only the CUSTOMER Oracle table,
resulting from the Oracle Tuxedo Application Rehosting Workbench
Data Conversion of the z/OS VSAM KSDS file
PJ01AAA.SS.VSAM.CUSTOMER
.
RM_ODCSF0
(RM for Relational Module), to declare to CICS Runtime.
Note:
ODCSF0
represents the logical name previously defined in CICS that pointed to the physical file name PJ01AAA.SS.VSAM.CUSTOMER
. Consequently, it is also the only file name known from the CICS COBOL program to access this file by EXEC CICS
statements.
4.1.4.5.1 To Declare the ISAM Migrated Files:
- Modify the Tuxedo envfile adding a new variable, if not already present, describing all the VSAM/ISAM files used in the programs previously defined.
For our Simple Application example the following line must be entered, (for simplicity, we have located the file in the same place as the ubbconfig, envfile and tuxconfig files but this is not mandatory.
DD_VSAMFILE=${HOME}/trf/config/tux/desc.vsam
- If the file does not exist, physically create the
desc.vsam
file at the indicated location. - Modify the
desc.vsam
file by adding a new line describing the different information fields used by the accessor in a "csv" format for each accessor/file used.
For our Simple Application example, the following line is entered:
Listing 4‑4 Simple Application ISAM File Declaration
#DDname;Accessor;DSNOrganization;Format;MaxRecordLength;KeyStart;KeyLength
ODCSF0;RM_ODCSF0;I;F;266;1;6
Where:
ODCSF0
Is the Data Description Name (logical name) used in the EXEC CICS Statements.
RM_ODCSF0
Is the name of the accessor program managing the access to the Oracle table resulting from the data conversion of the former VSAM File
I
The Data Set Name organization is indexed
F
Fixed, all the records have the same fixed length format.
266
Maximum record length.
1
Key position in the file (1 means first column or first character).
6
Key length.
4.1.4.6 Modifying the CICS Runtime Tuxedo Servers
To manage CICS application transactions, in addition to the servers previously defined:
- Implement the CICS Runtime Tuxedo Server
ARTSTRN
.This server manages only basic CICS Runtime transactions, those that are the most often used: synchronous (not delayed) and simultaneous (not only one at a time).
- Indicate to CICS Runtime to start only the transactions belonging to the
SIMPAPP
CICS Runtime Group name.The following example of a
*SERVERS
section of the Tuxedoubbconfig
file shows the configuration of aARTSTRN
server.
Listing 4‑5 Simple Application CICS Runtime Server Tuxedo Configuration
*SERVERS
…
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP "
…
Where
*SERVERS
Tuxedo ubbconfig Keyword indicating a Server Section definition.
SRVGRP
Is the Tuxedo Group Name to which ARTSTRN
belongs.
SRVID
Is the identifier of a Tuxedo Server of
ARTSTRN
.
CONV=Y
Indicates that this server operates in a conversational mode.
MIN=1 and MAX=1
Indicates that only one instance of this server must be run.
REPLYQ=Y
Indicates that this server will respond.
RQADDR=QCNX015
Name of the Tuxedo queue used for the responses.
CLOPT
Is a quoted text string passed to the server containing its parameters.
-o
Indicates the file used for the standard output messages of the server.
-e
Indicates the file used for the error output messages of the server.
-r
Is a Tuxedo parameter used to provide statistical reports.
-s KIXR
Indicates the CICS Runtime name where the KIXR transaction is run.
-l SIMAPP
Indicates that only the transaction of the SIMAPP group are to be selected.
Parent topic: CICS Runtime Configuration
4.1.4.7 Modifying the CICS Runtime Tuxedo Servers Groups
To be started, the ARTSTRN
server must be defined
in a Tuxedo Server Group previously defined (and not commented) in
the ubbconfig
file.
In our example, ARTSTRN
belong to the Tuxedo Server
Group GRP02 (SRVGRP=GRP02
).
*GROUPS
…
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
TMSNAME="TMS_ORA"
Where
*GROUPS
Tuxedo ubbconfig Keyword indicating a Server Section Group section definition.
GRPNO=
Tuxedo Group.
ENVFILE=
Path of the Tuxedo envfile.
TMSNAME=
Name of the Tuxedo Transaction Manager Server executable.
Parent topic: CICS Runtime Configuration
4.2 Verifying the CICS Application Installation
The following topics describe how to verify your CICS application installation:
- Using the Tuxedo tmadmin psr Commands
- Using the Tuxedo tmadmin psc Commands
- Using the CICS Runtime Application
Parent topic: Implementing CICS Applications
4.2.1 Using the Tuxedo tmadmin psr Commands
Enter the Tuxedo tmadmin psr
command to check that
all of the CICS Runtime required servers (ARTTCPL
,
ARTCNX
, and ARTSTRN
) are running and that
their messages conform to the Tuxedo documentation and this
document.
Listing 4‑7 tmadmin psr Simple Application Installation Check
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
BBL 200933 KIXR 0 2 100 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 2 100 ( IDLE )
ARTSTRN QKIX110 GRP02 20 6 300 ( IDLE )
> quit
#
Parent topic: Verifying the CICS Application Installation
4.2.2 Using the Tuxedo tmadmin psc Commands
Another possible check can be made by entering the Tuxedo
tmadmin psc
command to display all the different
Tuxedo Services running.
In addition to the CICS Runtime System transactions/services
(CSGM
, CESN
, CESF
…),
you can now see the transaction codes of your CICS Runtime
application SA00
, SA01
, SA02
and SA03
Listing 4‑8 tmadmin psc Simple Application Installation Check
# tmadmin
...
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 1 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 1 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 3 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 3 AVAIL
> quit
#
Parent topic: Verifying the CICS Application Installation
4.2.3 Using the CICS Runtime Application
Before using the CICS application, you have to populate the ISAM files accessed by your application. Then, access CICS Runtime with a 3270 Terminal or Emulator, with a UNIX x3270 command. It should be:
# x3270 ${HOSTNAME}:${TCPNETADDR}
Where:
${HOSTNAME}
Is the System UNIX variable containing the name of the UNIX machine on which you are running CICS Runtime.
${TCPNETADDR}
Is the port number for your UNIX 3270 emulator set up by your Tuxedo Administrator at installation time in the ubbconfig file.
- You will receive the Good Morning Message.
- Clear it by pressing the
Clear
key of your 3270 emulator keypad. - Type the main transaction code SA00 (of your CICS Runtime application) in the top left corner:
Figure 4-1 Simple Application Transaction Code Entry
- The main menu of the application is displayed:
Figure 4-2 Simple Application Main Menu
- Navigate through the screens of the application to check that they are displayed without errors.
Parent topic: Verifying the CICS Application Installation
4.3 Presentation of Simple Application on COBOL-IT / BDB
Based on BDB with XA protocol, the CICS COBOL programs compiled by COBOL-IT can access the indexed ISAM files which are converted from Mainframe VSAM files through the ART Workbench. The following sections describes the configurations that should be done in ART CICS Runtime to enable this application.
- Configuring ubbconfig File in CICS Runtime
- Building BDB TMS Server
- Exporting Variables Before Booting Up ART Servers
Parent topic: Implementing CICS Applications
4.3.1 Configuring ubbconfig File in CICS Runtime
Add the MRM parameter in the group entry of *GROUPS and *RMS
section in Tuxedo ubbconfig
file. See the following
example:
Listing 4‑9 Adding MRM Parameter in ubbconfig File Example
*GROUPS
GRP02
GRPNO=12
MRM=Y
*RMS
MRMG_RM1
SRVGRP=GRP02
RMID=15
TMSNAME="TMS_BDB"
OPENINFO="BERKELEY-DB:/home2/work10/data"
Where:
*GROUPS
Tuxedo ubbconfig keyword indicating the definitions of Servers Groups.
GRPNO
Indicates the Tuxedo Group.
MRM= Y
Indicates that this server group can support multiple resource managers.
*RMS
Tuxedo ubbconfig keyword indicating the definitions of resource managers.
MRMG_RM1
Indicates the logical name of RMS entry.
SRVGRP
Indicates the name of the group associated with this RM.
RMID
Indicates the unique ID number of this RM in the group. ID number must be between 1 and 31.
TMSNAME
Indicates the name of the transaction manager server associated
with the group specified by SRVGRP
.
OPENINFO
Indicates the resource manager dependent information needed when opening resource manager for the associated group.
Parent topic: Presentation of Simple Application on COBOL-IT / BDB
4.3.2 Building BDB TMS Server
To build the BDB TMS server, add the following lines to
$TUXDIR/udataobj/RM:
:
BDB_HOME=/opt/cobol-it-64-bdb
BERKELEY-DB:db_xa_switch:-L/opt/cobol-it-64-bdb/lib -ldb-18.1
After updating the RM file, execute the following command to build TMS server for BDB:
buildtms -v -r BERKELEY-DB -o $APPDIR/TMS_BDB
Parent topic: Presentation of Simple Application on COBOL-IT / BDB
4.3.3 Exporting Variables Before Booting Up ART Servers
Export the following variables explicitly before booting up the ART servers:
DD_VSAMFILE
export DD_RBDB02=${DATA}/MTWART.ES.SFI.RCIBDB02.BDB0122
RBDB02
is the logical file name.COB_ENABLE_XA
export COB_ENABLE_XA=1
Parent topic: Presentation of Simple Application on COBOL-IT / BDB
4.4 Implementing Synchronous CICS Transactions With a Limited Number of Parallel Instances
In some particular cases, the number of transactions bearing the same transaction code running simultaneously has to be limited, for performance constraints for example.
On z/OS, this limit cannot be defined in the transaction
resource itself but is defined in a distinct resource named
TRANCLASS (transaction class) that contains a specific
MAXACTIVE
parameter describing the maximum number of
concurrent instances of the same transaction.
To link a transaction to a transaction class, to inherit its
parameters, especially the MAXACTIVE
parameter, the
z/OS CICS transaction resource has a TRANCLASS field containing the
name of the TRANCLASS resource.
This instance management is performed differently on UNIX with
CICS Runtime. The maximum number of transactions running
concurrently is defined by the number of servers offering the same
transaction. This maximum number and the minimum number are
indicated respectively in the MAX
and MIN
parameters of the ARTSTRN
definition in the
*SERVERS
section of the Tuxedo file
ubbconfig
.
It means that the maxactive parameter is not taken in account to manage these limits except in the following very particular case:
- The Special Case of Transaction Classes With MAXACTIVE=1
- Modification of the ubbconfig File for Sequential Transactions
- Checking the ARTSTR1 Configuration
Parent topic: Implementing CICS Applications
4.4.1 The Special Case of Transaction Classes With MAXACTIVE=1
The MAXACTIVE=1
is really an exception in this
management because it indicates that no concurrent transaction
belonging to these kind of transaction classes can be run
simultaneously.
To manage this very particular case of sequential transactions, a Tuxedo CICS Runtime feature must be configured.
4.4.2 Modification of the ubbconfig File for Sequential Transactions
All of the transactions linked to transactions classes with a
MAXACTIVE
superior or equal to 2 are managed by the
CICS Runtime Tuxedo Server ARTSTRN
and do not required
modifying anything else. For the transactions with a
MAXACTIVE
parameter set to 1, an CICS Runtime Tuxedo
Server named ARTSTR1
is dedicated to their specific
management.
To activate this server, modify the ubbconfig file to add this server in the *SERVERS section:
Listing 4‑10 Adding a ARTSTR1 Server to ubbconfig
*SERVERS
…
ARTSTR1 SRVGRP=GRP02
SRVID=200
CONV=Y
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_str1 -e /home2/work9/demo/Logs/TUX/sysout/stderr_str1 -r -- -s KIXR -l SIMPAPP"
…
Where:
*SERVERS
Tuxedo ubbconfig Keyword indicating a Server Section definition.
SRVGRP
Is the Tuxedo Group Name to which ARTSTR1 belongs.
SRVID
Is the identifier of a ARTSTR1 Tuxedo Server.
CONV=Y
Indicates that this server operates in a conversational mode.
MIN=1 and MAX=1
Are mandatory and indicate that only one instance of this server must run.
CLOPT
Is a quoted text string passed to the server containing the parameters:
-o
Indicates the file used for the standard output messages of the server.
-e
Indicates the file used for the error output messages of the server.
-r
Is a Tuxedo parameter used to produce statistical reports.
-s
KIXR indicates the CICS Runtime name where the KIXR transaction is run.
-l SIMAPP
Note:
All of the CICS Runtime Transaction Servers (ARTSTRN, ARTSTR1, ARTATRN
and ARTATR1
) share the same CICS Runtime Transaction Group Servers, no modifications are required to the ubbconfig Server Group Section (*GROUPS).
4.4.2.1 Modifying the tranclasses.desc File
For ART CICS, concurrent transactions do not really need to be
bound to transactions classes with MAXACTIVE
parameters superior or equal to two because parallelism is the
default behavior.
For sequential transactions, it is mandatory because it is the
only way to declare these transactions to CICS Runtime. Declare
specific transaction classes defined with a
MAXACTIVE=1
parameter. Like the other CICS Runtime
resources, this one must belong to an CICS Runtime Group name. For
each TRANCLASS, declare in a csv format:
- The name of the transaction class (mandatory)
- The CICS Runtime Group name (mandatory)
- A brief description of the transaction class (optional, at least one blank)
- The maximum number of the same transaction to RUN (MAXACTIVE).
Note:
The MAXACTIVE parameter should be understood like a binary switch:- MAXACTIVE=1 <=> Sequential transaction class (mandatory)
- MAXACTIVE>1 (all the values are at this step equivalent) <=> Concurrent transaction (optional).
Examples:
TRCLASS1;SIMPAPP ; Tranclass with maxactive set to 1; 1
TRCLASS2;SIMPAPP ; Tranclass with maxactive set to 2; 2
TRCLAS10;SIMPAPP ; Tranclass with maxactive set to 10; 10
The first transclass TRCLASS1
has is maxactive
parameter equal to 1, indicating that all the transaction belonging
to this transclass must be managed sequentially by the
ARTSTR1
.
The two last tranclasses, TRCLASS2
and
TRCLASS10
, are in fact similar because their maxactive
parameters are superior to 1 indicating that the transactions
belonging to these tranclasses can run concurrently managed by the
ARTSTRN
server.
Note:
These two last definitions are optional. Their absence has the same meaning.4.4.2.2 Modifying the transactions.desc File
In addition to the first four mandatory fields of this csv format file (Transaction name, Group name, Description, Program name), you must add a twelfth field: TRANCLASS (Transaction Class name).
The TRANCLASS field must be separated from the Program field by eight semicolon characters (';') with at least one blank between each of them.
In our example, let us suppose that the CICS Runtime Simple Application must have the following MAXACTIVE limits:
- SA00: MAXACTIVE=0
- SA01: MAXACTIVE=1
- SA02: MAXACTIVE=2
- SA03: MAXACTIVE=10
Then these transactions must be linked to the following tranclasses that we have previously defined:
- SA00: none
- SA01: TRCLASS1
- SA02: TRCLASS2
- SA03: TRCLAS10
Once modified, the transactions.desc
file will look
like this:
Listing 4‑11 Example transactions.desc File
#Transaction Name ;Group Name ; Description ;Program Name
SA00;SIMPAPP; Home Menu Screen of the Simple Application;RSSAT000
SA01;SIMPAPP; Customer Detailed Information Screen of the Simple ; Application;RSSAT001; ; ; ; ; ; ; ;TRCLASS1
SA02;SIMPAPP; Customer Maintenance Screen of the Simple Application;RSSAT002; ; ; ; ; ; ; ; TRCLASS2
SA03;SIMPAPP; Customer List of the Simple Application;RSSAT003; ; ; ; ; ; ; ; TRCLASS10
Note:
- No modification is made to
SA00
meaning that no transaction class is associated with this transaction code. It means that this transaction is not associated with a MAXACTIVE=1 parameter and so is not sequential SA02
andSA03
are associated to transaction classes, respectively TRCLASS2 and TRCLASS10, defined with MAXACTIVE >= 2. Knowing that these transactions are not required, the result would be the exactly the same ifSA02
andSA03
were defined like SA00 without transaction classes.SA01
, which can run sequentially, is the only one where the transaction class field is mandatory. Verify that its associated transaction class,TRCLASS1
, is really defined with a MAXACTIVE=1
4.4.3 Checking the ARTSTR1 Configuration
The following topics describe how to verify ARTSTR1 configuration:
4.4.3.1 Using the Tuxedo tmadmin psr Commands
The ARTSTR1
, is shown below:
Listing 4‑12 Checking the ARTSTR1 Server with the tmadmin psr Commands
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 3 150 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
> quit
#
Parent topic: Checking the ARTSTR1 Configuration
4.4.3.2 Using the Tuxedo tmadmin psc Commands
No new service or transaction should appear.
In our example where ARTSTRN was the only server running, we can see that nothing changed when ARTSTR1 is also activated.
# tmadmin
...
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
> quit
#
Parent topic: Checking the ARTSTR1 Configuration
4.5 Implementing Asynchronous CICS Non-Delayed Transactions
These transactions are launched by specifics CICS EXEC CICS START TRANSID
requests coded in the CICS programs that are not using DELAY
or TIME
parameters to delay their execution.
If at least one of your programs contains this kind of statement, install, and activate some new features of CICS Runtime Tuxedo Severs without changing any other settings.
- Modifying the Tuxedo ubbconfig File to Manage Asynchronous Transactions
- Using Parallel Asynchronous Transactions
- Using Non-Parallel Asynchronous Transactions
Parent topic: Implementing CICS Applications
4.5.1 Modifying the Tuxedo ubbconfig File to Manage Asynchronous Transactions
The file is modified in the same manner as for the
ARTSTRN
and the ARTSTR1
servers, except
the "s" (synchronous) character used to prefix the name of these
servers should be replaced by the "a" (asynchronous) character.
Parent topic: Implementing Asynchronous CICS Non-Delayed Transactions
4.5.2 Using Parallel Asynchronous Transactions
To use parallel asynchronous transactions, with a
MAXACTIVE
parameter strictly superior to one, the
dedicated server is the ARTATRN
. Please refer to the
section describing the installation of the ARTSTRN
server to install the atrn_server.
To check your settings you can use also the tmadmin psr and psc commands.
For the Simple Application example we can see that:
- The psr command shows that a new server is running
ARTATRN
. - The psc command shows that five new services are running, one
is dedicated to the asynchronous transaction while each synchronous
transaction (
SA00
toSA03
) is duplicated (ASYNC_SA00
toASYNC_SA03
) to allow them to run in an asynchronous mode.
Listing 4‑14 tmadmin Commands Showing Parallel Asynchronous Transactions
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 4 200 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
> quit
{deimos:work9}-/home2/work9/demo/config/tux#{deimos:work9}-/home2/work9/demo/config/tux#
Parent topic: Implementing Asynchronous CICS Non-Delayed Transactions
4.5.3 Using Non-Parallel Asynchronous Transactions
To use non-parallel asynchronous transactions, with a MAXACTIVE
parameter exactly equal to one, the dedicated server is ARTATR1
.
Please refer to the section describing the reasons and the
installation of the ARTSTR1
server to install the
ARTSTR1
server.
To check your setting, you can use also the Tuxedo tmadmin psr and psc commands
For the Simple Application example we can see that:
- The psr command shows that a new server is running
ARTATR1
. - The psc command shows that no new services are running.
Listing 4‑15 tmadmin Commands Showing non-parallel Asynchronous Transactions
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 4 200 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
> quit
#
Parent topic: Implementing Asynchronous CICS Non-Delayed Transactions
4.6 Implementing Asynchronous CICS Delayed Transactions
ART CICS Runtime supports two methods for implementing
asynchronous CICS delayed transactions launched using
EXEC
CICS START TRANSID
requests:
- Implementing Asynchronous Transactions With ARTSRM Server
- Implementing Asynchronous Transactions With /Q
Parent topic: Implementing CICS Applications
4.6.1 Implementing Asynchronous Transactions With ARTSRM Server
On z/OS, there are some time-related CICS START API options can
be used to start a transaction at a specified time or after a
specified interval, such as AT
, TIME
,
AFTER
, and INTERVAL
. ART CICS Runtime
provides a server, ARTSRM
, for implementing these
options. For more information, refer to ARTSRM Configuration
in Oracle Tuxedo Application Runtime for CICS Reference
Guide.
To activate this server, configure ARTSRM
in the
*SERVERS
section in the UBBCONFIG
file.
You can configure a set of ARTSRM
servers only if they
are in the same group for each CICS region. Following is an
example.
Listing 4‑16 Example of Configuring ARTSRM in UBBCONFIG
*SERVERS
…
ARTSRM
SRVGRP=ARTGRP
SRVID=500
RESTART=Y
MAXGEN=5
GRACE=3600
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_srm -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
Note:
Although implementing asynchronous transactions with /Q is still supported, when theSTART TRANID/CANCEL
command is invoked, the request is submitted to the TRANCTL_[SYSID]
service advertised by ARTSRM
firstly. If the call gets the TPNOENT
fail code, then use /Q to redispatch the request.
Parent topic: Implementing Asynchronous CICS Delayed Transactions
4.6.2 Implementing Asynchronous Transactions With /Q
Asynchronous transactions are launched when
ASYNC_QSPACE
for EXEC START
is set with
option INTERVAL
or PROTECT
.
In this case, the transaction request is deposited into a Oracle Tuxedo /Q Queue, and when the time is ready, the transaction will be automatically invoked.
For this feature to be available, these components must be configured:
- An Oracle Tuxedo /Q Queue Space named
ASYNC_QSPACE
- An Oracle Tuxedo /Q Queue named
ASYNC_QUEUE
inASYNC_QSPACE
- The
TMQUEUE
andTMQFORWARD
servers dedicated to these asynchronous transactions.
Parent topic: Implementing Asynchronous CICS Delayed Transactions
4.6.2.1 Creating the Tuxedo /Q
CICS Runtime provides a UNIX script that creates all the Tuxedo /Q components: mkqmconfig.sh.
- Before using the script, define and export in your UNIX
~./.profile
file:- The
QMCONFIG
variableQMCONFIG
- containing the full directory path that stores the Tuxedo /Q Queue SpaceASYNC_QSPACE.
- The
KIX_QSPACE_IPCKEY
variable - containing the IPC Key for the Queue Space.Examples of ~/.profile variables and values:export QMCONFIG=${HOME}/trf/config/tux/kixqspace export KIX_QSPACE_IPCKEY=200955
- The
- Execute
mkqmconfig.sh
from the command line to create the Tuxedo /Q features.
Parent topic: Implementing Asynchronous Transactions With /Q
4.6.2.2 Modifying the Tuxedo ubbconfig File to Manage the Tuxedo /Q Queue
- The GQUEUE Server Group must be added to the ubbconfig file in the
*GROUP
section.Listing 4‑17 Simple Application Tuxedo Queue ubbconfig Example*GROUPS … # /Q GQUEUE GRPNO=1000 TMSNAME=TMS_QM TMSCOUNT=2 OPENINFO="TUXEDO/QM:/home2/work9/demo/config/tux/kixqspace:ASYNC_QSPACE"
Where:
*GROUPS
Tuxedo ubbconfig Keyword indicating definitions of Servers Groups.
GRPNO=
Tuxedo Group.
TMSCOUNT=
Number of Tuxedo Transaction Manager Servers.
TMSNAME
Name of the Tuxedo Transaction Manager Server executable.
OPENINFO=
Indicates to the Tuxedo /Q Transaction Manager QM, the QSPACE name to manage and its UNIX absolute path.
- Then, two servers,
TMQUEUE
andTMQFORWARD
, must be added to the ubbconfig file in the*SERVERS
section.
Listing 4‑18 Simple Application ubbconfig TMQUEUE
and TMQFORWARD
Example
*SERVERS
…
# /Q
TMQUEUE SRVGRP=GQUEUE
SRVID=1010
GRACE=0 RESTART=Y CONV=N MAXGEN=10
CLOPT="-s ASYNC_QSPACE:TMQUEUE -- "
TMQFORWARD
SRVGRP=GQUEUE
SRVID=1020
GRACE=0 RESTART=Y CONV=N MAXGEN=10
CLOPT="-- -n -i 2 -q ASYNC_QUEUE"
…
Where:
*SERVERS
Tuxedo ubbconfig Keyword indicating a Server Section definition.
SRVGRP
Is the Tuxedo Group Name which the server belongs to.
SRVID
Is the identifier of a Tuxedo Server.
MAXGEN=10
Specifies that the process can have up to 10 server restarts.
GRACE=0
Means there is no limit interval to contain the number of server restarts.
CONV=N
Indicates that this server operates in a non-conversational mode.
CLOPT
Is a quoted text string passed to the server containing its parameters.
Using the tmadmin psr
and psc
commands
check that four new servers and two new services are running:
Listing 4‑19 Simple Application TMQUEUE
and TMQFORWARD
tmadmin Example
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 4 200 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMQUEUE 01000.01010 GQUEUE 1010 0 0 ( IDLE )
TMQFORWARD 01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
> quit
#
Parent topic: Implementing Asynchronous Transactions With /Q
4.7 Implementing CICS Application Using Temporary Storage (TS) Queues
These transactions use CICS programs containing EXEC CICS
requests relative to CICS Temporary Storage Queues.
The statements used are EXEC CICS WRITEQ TS … END-EXEC, EXEC CICS READQ TS … END-EXEC, EXEC CICS DELETEQ TS … END-EXEC
.
If at least one of your programs contains one of these statements, install and activate the new features of CICS Runtime without changing your other settings.
To manage TS Queues, activate the ARTTSQ
CICS
Runtime Tuxedo Server.
- To activate this server, add this server to the
*SERVERS
section of the Tuxedo ubbconfig file:
Listing 4‑20 Activating the ARTTSQ in the ubbconfig File
*SERVERS
…
ARTTSQ SRVGRP=GRP02
SRVID=40
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tsq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tsq -r -- -s KIXR -l SIMPAPP"
Where:
*SERVERS
Tuxedo ubbconfig Keyword indicating a Server Section definition.
SRVGRP
Is the Tuxedo Group Name to which ARTTSQ
belongs.
SRVID
Is the identifier of a Tuxedo Server of ARTTSQ
.
MIN=1 and MAX=1
Indicates that only one instance of this server must be run.
CLOPT
Is a quoted text string passed to the server containing its parameters:
-o
Indicates the following file is used for the standard output messages of the server.
-e
Indicates the following file is used for the error output messages of the servers.
-r
Is a Tuxedo parameter used to have statistical reports.
-s KIXR
Indicates the CICS Runtime name where the transaction runs is KIXR.
-l SIMAPP
Indicates that only the components of the SIMAPP group are to be selected at start up.
Use the Tuxedo tmadmin psr
and psc
commands to check that the server is running and that six new
services are published:
Listing 4‑21 Checking ARTTSQ Server and Services are Running
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 3 150 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
TSM00004_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00003_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00002_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00001_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00000_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
> quit
{deimos:work9}-/home2/work9/demo/config/tux#
Parent topic: Implementing CICS Applications
4.7.1 Implementing Unrecoverable TS Queues
For unrecoverable TS Queues, no integrity is guaranteed by CICS Runtime concerning their content. For example, if an abend occurs at any point during a CICS transaction, work done on this TS is not rolled-back to the last consistency point.
TS Queues are stored in a sequential file in a dedicated
directory defined in the KIX_TS_DIR
UNIX environment
variable. This variable is defined and then exported from the
~/.profile
UNIX System File:
KIX_TS_DIR=${HOME}/trf/KIXTSDIR
Modify the Tuxedo ubbconfig file to activate the new
ARTTSQ
server dedicated to their management.
4.7.2 Implementing Recoverable TS Queues
For these TS Queues, CICS Runtime guarantees the integrity of their content. For example, if an abend occurs at any point during a CICS transaction, they are rolled-back to the last consistency point, if all is in order, their content is committed to become a new consistency point. These TS Queues are stored in Oracle Tables to benefit from the RDBMS integrity management.
Concerning the TS Queue, there is an enhanced behavior for reading a recoverable TS Queue.
On source CICS z/OS, CICS enqueuing is not invoked for READQ TS commands, thereby making it possible for one task to read a temporary storage queue record while another is updating the same record. To avoid this, use explicit enqueuing on the temporary storage queues so that concurrent executing tasks can read and change queues with the same temporary storage identifier
This behavior also allows one transaction to see or read a record freshly written in a recoverable TS Queue, even before it is committed, and after its rollback.
On target we don't have this limitation, but in particular:
- A reading transaction is not able to see a record that is just added and not yet committed.
- A reading transaction is not able to see a modification to the record that is not yet committed.
The following topic describes how to use Recoverable TS Queues:
4.7.2.1 To Use Recoverable TS Queues
To use recoverable TS Queues you need to define an Oracle Table to contain the TS Queues. CICS Runtime provides a UNIX script to create all these tables: crtstable_Oracle
.
- Before using the script define and export from your UNIX
~./.profile
file- The
ORA_USER
variable containing the user ID used to connect to Oracle. - The
ORA_PASSWD
variable containing the associated password.Examples of ~/.profile variables and values:
export ORA_USER="Oracle_User_1"
export ORA_PASSWD="Oracle_Pswd_1"
- The
- Once the variables have been set, execute the
crtstable_Oracle
script. - Then, modify the Tuxedo ubbconfig file to modify the Server Group used by ARTTSQ to establish the connection to Oracle in the
*GROUPS
section.Listing 4‑22 Example of the *GROUP Section of the Tuxedo ubbconfig File Concerning the Derver Group GRP02 used by the ARTTSQ Server.*GROUPS … GRP02 GRPNO=12 ENVFILE="/home2/work9/demo/config/tux/envfile" TMSNAME="TMS_ORA" OPENINFO="Oracle_XA:Oracle_XA+Acc=P/work9/work9+SesTm=600+LogDir=/home2/work9/demo/Logs/TUX/xa+DbgFl=0x20"
Where:
*GROUPS
Tuxedo ubbconfig Keyword indicating definitions of Servers Groups.
GRPNO=
Tuxedo Group number.
TMSNAME=
Name of the Tuxedo Transaction Manager Server executable.
OPENINFO=
Parameters send to the
Oracle_XA Manager
. - Use the Tuxedo psr and psc commands to check that Oracle is available; three new servers and three new services should be indicated:
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 4 200 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30003 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
TSM00004_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00003_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00002_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00001_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00000_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
> quit
#
Parent topic: Implementing Recoverable TS Queues
4.8 Managing TD Queue Intrapartititions
This chapter contains the following topics:
- Presentation of the Mechanism on Source Platform
- Automatic Transaction Initiation (ATI)
- Presentation of the Mechanism on Target Platform
- Runtime CICS Configuration of TD Queue Intrapartition
- Activating the ARTTDQ in the Tuxedo ubbconfig File
Parent topic: Implementing CICS Applications
4.8.1 Presentation of the Mechanism on Source Platform
This section contains the following topics:
Parent topic: Managing TD Queue Intrapartititions
4.8.1.1 Transient Data Control
The CICS transient data control facility provides a generalized queuing facility. Data can be queued (stored) for subsequent internal or external processing. Selected data, specified in the application program can be routed to or from predefined symbolic transient data queues: either intra-partition or extra-partition.
Transient data queues are intra-partition if they are associated with a facility allocated to the CICS region and extra-partition if the data is directed to a destination that is external to the CICS region. Transient data queues must be defined and installed before the first reference by an application program.
You can:
- Write data to a transient data queue (
WRITEQ TD
command) - Read data from a transient data queue (
READQ TD
command) - Delete an intrapartition transient data queue (
DELETEQ TD
command).
Note:
In this document we concentrate exclusively on intrapartition TD queues.Parent topic: Presentation of the Mechanism on Source Platform
4.8.1.2 Intra-partition Transient Data Queues
Intra-partition refers to data on direct-access storage devices for use with one or more programs running as separate tasks. Data directed to or from these internal queues is referred to as intra-partition data; it must consist of variable-length records.
When data is written to the queue by a user task, the queue can be used subsequently as input data by other tasks within the CICS region. All access is sequential, governed by read and write pointers. Once a record has been read, it cannot be read subsequently by another task. Intrapartition data may ultimately be transmitted upon request to the terminal or retrieved sequentially from the output dataset.
Typical uses of intra-partition data include:
- Message switching.
- Broadcasting.
- Database access.
- Routing of output to several terminals (for example, for order distribution).
- Queuing of data (for example, for assignment of order numbers or priority by arrival).
- Data collection (for example, for batched input from 2780 Data Transmission Terminals)
There are three types of intrapartition transient data queues:
Non-recoverable
Non-recoverable intrapartition transient data queues are recovered only on a warm start of CICS. If a unit of work (UOW) updates a non-recoverable intrapartition queue and subsequently backs out the updates, the updates made to the queue are not backed out.
Physically recoverable
Physically recoverable intrapartition transient data queues are recovered on warm and emergency restarts. If a UOW updates a physically recoverable intrapartition queue and subsequently backs out the updates, the updates made to the queue are not backed out.
Logically recoverable
Logically recoverable intrapartition transient data queues are recovered on warm and emergency restarts. If a UOW updates a logically recoverable intrapartition queue and subsequently backs out the changes it has made, the changes made to the queue are also backed out. On a warm or an emergency restart, the committed state of a logically recoverable intrapartition queue is recovered. In-flight UOWs are ignored.
Parent topic: Presentation of the Mechanism on Source Platform
4.8.2 Automatic Transaction Initiation (ATI)
For intrapartition queues, CICS provides the option of automatic transaction initiation (ATI).
A basis for ATI is established by the system programmer by specifying a non-zero trigger level for a particular intrapartition destination. When the number of entries (created by WRITEQ TD commands issued by one or more programs) in the queue reaches the specified trigger level, a transaction specified in the definition of the queue is automatically initiated. Control is passed to a program that processes the data in the queue; the program must issue repetitive READQ TD commands to deplete the queue.
When the queue has been emptied, a new ATI cycle begins. That is, a new task is scheduled for initiation when the specified trigger level is again reached, whether or not execution of the earlier task has ended. The exact point at which a new ATI cycle begins depends on whether or not the queue is defined as logically recoverable. If the queue is defined with a RECOVSTATUS of No or Physical, the new ATI cycle begins when the queue is read to QZERO. But if the queue is defined with a recoverability attribute of Logical, the new ATI cycle begins only after the task terminates after having read the queue to QZERO.
If an automatically initiated task does not empty the queue,
access to the queue is not inhibited. The task may be normally or
abnormally ended before the queue is emptied (that is, before a
QZERO condition occurs in response to a READQ TD
command). If the contents of the queue are to be sent to a
terminal, and the previous task completed normally, the fact that
QZERO has not been reached means that trigger processing has not
been reset and the same task is reinitiated. A subsequent WRITEQ TD
command does not trigger a new task if trigger processing has not
been reset.
Parent topic: Managing TD Queue Intrapartititions
4.8.3 Presentation of the Mechanism on Target Platform
This section contains the following topics:
4.8.3.1 Tuxedo /Q
Tuxedo /Q offers a robust and versatile queuing system with the same capabilities as TD queues and more.
Queues can be defined as recoverable or not, and triggering with a few different options is also available. The management of errors is much more sophisticated, and will simplify error management in case of ATI transaction failures on target.
Parent topic: Presentation of the Mechanism on Target Platform
4.8.3.2 Architecture Design
Table 4-5 Source to Target Mapping
Source Element | Target Correspondence |
---|---|
TD Queue intrapartition | Tuxedo /Q Queue. |
Associated transaction (TRANID) | Associated transaction offered by an ATR server. |
Trigger level | Trigger level. |
Recoverability: No|Physical|Logical | Similar levels available as on target, but with different configuration principles. |
The CICS verbs READQ TD, WRITEQ TD and DELETEQ TD (applied to intrapartition queues), now read, write or delete from a Tuxedo /Q queue. (tpenqueue and tpdequeue) in terms of tuxedo vocabulary.
If the Queue is logically recoverable, these actions are done in the current UOW, else they are done atomically, independently of the current UOW.
For information, inside CICS Runtime, this is done by adding the TPNOTRAN flag to operations on non-logically recoverable queues.
Parent topic: Presentation of the Mechanism on Target Platform
4.8.3.3 Triggering
In case of triggering, like in native CICS, a transaction will be automatically triggered, this transaction having to read the corresponding queue and process accordingly the messages.
In CICS Runtime these asynchronous transactions are offered and processed by a dedicated server type ARTATR, with either of its two variants ARTATR1 and ARTATRN.
These servers process all asynchronous transactions, more precisely, transactions submitted by START TRANSID, or by automatic Transaction Invocation related to td queue intrapartition.
In this case a specific CICS Runtime client, TDI_TRIGGER, is used to launch the corresponding asynchronous transaction, when the trigger level is reached.
Parent topic: Presentation of the Mechanism on Target Platform
4.8.4 Runtime CICS Configuration of TD Queue Intrapartition
This section has the following topics:
- CICS RuntimeResource Declaration
- /Q Configuration for TD Queue Intrapartition in CICS Runtime
- qopen Parameters
Parent topic: Managing TD Queue Intrapartititions
4.8.4.1 CICS RuntimeResource Declaration
Every CICS-like resource in CICS Runtime, is declared using a dedicated configuration file
stored in directory ${KIXCONFIG}
.
TD Queue extrapartition and TD Queue intrapartition resource declaration share very few arguments, and are semantically very different objects, even if using the same API for read and write operations.
This is the reason why, in CICS Runtime, we have separated TD Queue extrapartition resource configuration and TD Queue intrapartition resource configuration into two different resource files.
Intrapartition queues are declared in the file tdqintra.desc
, described in Oracle Tuxedo Application Runtime for CICS Reference Guide.
The important attributes are:
TDQUEUE(name)
The queue name, exactly identical to the queue name in the source configuration, This name must be the same as the name of the queue in the Tuxedo /Q configuration.
RECOVSTATUS(status)
Only the status NO or LOGICAL, are accepted, the difference between the two modes impacts the treatment of WRITEQ TD and READQ TD, more precisely LOGICAL making them part of the current UOW, while NO makes them atomic operations independent of the current UOW.
The difference between NO or PHYSICAL, is not defined in the resource configuration file but will be implemented using native tuxedo /Q configuration parameters, mapping to persistent /Q or non persistent.
TRANSID and TRIGGERLEVEL
In the current release are documentary only in tdqintra.desc
, it is their
value in /Q configuration which is taken in account.
QSPACENAME
New argument needed for /Q: defining into which QSPACE the current /Q is stored. This argument is mandatory and must match the QSPACENAME into which the actual /Q queue is physically stored.
Parent topic: Runtime CICS Configuration of TD Queue Intrapartition
4.8.4.2 /Q Configuration for TD Queue Intrapartition in CICS Runtime
For detailed and accurate information on qmadmin
and /Q configuration Using the ATMI /Q Component in the Tuxedo documentation.
The script mk_td_qm_config.sh
distributed with CICS
Runtime provides an example of qspace creation and then of queue
creation and configuration into /Q, to be used for TD
intrapartition queues.
This script uses three environment variables, which must be set according to your environment:
KIX_TD_QSPACE_DEVICE
: must contain the filename of the physical file containing the /Q database for TD queues.KIX_TD_QSPACE_NAME
: contains the name of the logical QSPACE to create, which will contains the queues.KIX_TD_QSPACE_IPCKEY
: a specific key which must be unique on the machine for the IPC used by the instance of /Q.
The creation of the device (KIX_TD_QSPACE_DEVICE
)
and of the QSPACE are very standard, we will not detail them.
The interesting part is related to queue configuration.
A qopen QspaceName
command, to open the qspace
which will contain the queues must be made before the creation of
any queue. The QspaceName
must match the
QSPACENAME
in the resource declaration of these
queue(s).
Below is an example of an interactive queue creation using
qmadmin
, where the questions asked by
qmadmin
are in normal font, while the entries typed in
by the user are in bold.
qopen TD_QSPACE
qcreate
Queue name: TEST
Queue order (priority, time, expiration, fifo, lifo): fifo
Out-of-ordering enqueuing (top, msgid, [default=none]): none
Retries [default=0]: 5
Retry delay in seconds [default=0]: 0
High limit for queue capacity warning (b for bytes used, B for blocks used,
% for percent used, m for messages [default=100%]): 5m
Reset (low) limit for queue capacity warning [default=0%]: 0m
Queue capacity command: "TDI_TRIGGER -t S049"
In a script an exact equivalent to this manual entry would be:
Listing 4‑25 qopen Script
qopen TD_QSPACE
qcreate TEST fifo none 3 0 5m 0m "TDI_TRIGGER -t S049"
Parent topic: Runtime CICS Configuration of TD Queue Intrapartition
4.8.4.3 qopen Parameters
TD_QSPACE
The QspaceName
must match the
QSPACENAME
in the resource declaration of these
queue(s).
Queue name
The name of the queue must match exactly the name provided in the resource declaration.
Queue order
The default dequeuing order when reading the queue, the setting
corresponding to TD intra native behavior is:
fifo
.
Out-of-ordering enqueuing
Not meaningful unless some application is using native /Q interface to write into these queue; for Runtime CICS only usage to set it to is: none
Retries
Defines the number of times a message will be put back on the queue in case of abort of the UOW having read this queue, to avoid resubmitting again and again an ATI transaction which fails because of a bad message, set this number to a reasonable number
When this number is reached, or at the first abort if you set it to zero, the message will be removed from this queue and put onto the error queue for further analysis.
Retry delay in seconds
If retries is not null, defines a delay before putting a record back on its queue, in case of rollback, the recommended value with Runtime CICS is the default value 0.
High limit for queue capacity warning
This is the much more flexible equivalent of the trigger level of TD queues. For a setting compatible with TD queues, set it to the trigger level and express it in number of messages. For example: 0m to suspend triggering, or 5m for a trigger level of 5 messages in the queue.
Reset (low) limit for queue capacity warning
This is the down level to be reached before resetting the trigger for the upper limit, for compatibility with TD queue behavior, it should be set to 0, (QZERO) which is the reset value for TD queues in CICS.
Queue capacity command:
This is the command to be launched when the trigger level is reached, in CICS Runtime it should be set to: TDI_TRIGGER -tb TRID
. Where TRID is the Transaction identifier of the transaction to trigger which should match the TRANSID of the resource configuration.
Tip:
ATR servers when processing an ATI, know whether the transaction reached QZERO or not, and whether it was a success or a rollback. So if QZERO is not reached, they resubmit the transaction in the same manner as on the source platform.But now it is the number of retries which will replace the ATIFACILITY parameter and will govern the fact that a rollbacked TD queue record will be resubmitted or not.
It is a progress compared with the source is that now the administrator can decide the number of resubmissions, and get the faulty messages on an error queue.
Parent topic: Runtime CICS Configuration of TD Queue Intrapartition
4.8.5 Activating the ARTTDQ in the Tuxedo ubbconfig File
To enable TDQ motoring, ARTTDQ server should be activated.
*SERVERS
…
ARTTDQ SRVGRP=GRP02
SRVID=40
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tdq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tdq -r -- -s KIXR -l SIMPAPP"
Where:
*SERVERS
Tuxedo ubbconfig Keyword indicating the definition of Server Section.
SRVGRP
The Tuxedo Group Name to which ARTTDQ belongs.
SRVID
The identifier of a Tuxedo Server of ARTTDQ.
MIN=1 and MAX=1
Indicates that only one instance of this server must be run.
CLOPT
A quoted text string passed to the server containing its parameters:
-o
Indicates the following file is used for the standard output messages of the server.
-e
Indicates the following file is used for the error output messages of the servers.
-r
Is a Tuxedo parameter used to have statistical reports.
-s KIXR
Indicates the CICS Runtime name where the transaction runs is KIXR.
-l SIMAPP
Indicates that only the components of the SIMAPP group are to be selected at start up.
Parent topic: Managing TD Queue Intrapartititions
4.9 Implementing CICS Application Using Temporary Storage (TS) Queue POOL
These transactions use CICS programs containing EXEC CICS
requests relative to CICS Temporary Storage Queues.
The statements used are EXEC CICS WRITEQ TS ... END-EXEC, EXEC CICS READQ TS ... END-EXEC, EXEC CICS DELETEQ TS ... END-EXEC.
If at least one of your programs contains one of these statements and the queue is defined with POOLNAME
(tsqmodel.desc
), install and activate the new features of CICS Runtime without changing your other settings.
To manage TS Queues with POOL, do the following steps:
- First, define database table to contain the TS Queue and POOL. CICS Runtime currently supports Oracle database and UDB
CICS Runtime provides a UNIX script,
crtsptable_{Oracle|UDB}
, to create all these tables. SetMT_DB_LOGIN
environment variable and then executecrtsptable_{Oracle|UDB}
to create these tables. SetMT_DB_LOGIN
to enter database connection information. For example:DBUSER/DBPASSWD@DBSID
. See for Listing 4‑27 an example for Oracle database users. - Second, modify the Tuxedo
UBBCONFIG
file to modify the server group used byARTTSQP
to establish the connection to Oracle in theUBBCONFIG *GROUPS
section. - Next, activate the
ARTTSQP
CICS Runtime Tuxedo server. To activate this server, add it to theUBBCONFIG SERVERS
section. See Listing 4‑28 - Last, use the Tuxedo
tmadmin
psr
andpsc
commands to check that the server is running and that new services are published. See Listing;4‑29 for an example.
When using ARTTSQP_UDB
, you may need to do the followings to rebind the server for new DB2 server/tables.
- Set environment variable
MT_DB_LOGIN
to enter database connection information. - Go to
$KIXDIR/bin
- Execute:
../tools/bind.sh tspool_UDB.bnd
Listing 4‑27 Example of the UBBCONFIG Configuration Concerning the Server Group GRP02 Used by ARTTSQP Server
*SERVERS
...
ARTTSQP SRVGRP=GRP02
SRVID=40
MIN=2 MAX=2
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tsqp -e /home2/work9/demo/Logs/TUX/sysout/stderr_tsqp -r -- -L list1"
...
Where:
*GROUPS
Is the Tuxedo UBBCONFIG
keyword indicating definitions of server groups.
GRPNO
Is the Tuxedo group number.
TMSNAME
Is the name of the Tuxedo Transaction Manager Server executable.
OPENINFO
Is the parameters sent to the Oracle_XA
Manager.
*SERVERS
...
ARTTSQP SRVGRP=GRP02
SRVID=40
MIN=2 MAX=2
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tsqp -e /home2/work9/demo/Logs/TUX/sysout/stderr_tsqp -r -- -L list1"
...
Where:
*SERVERS
Is the Tuxedo UBBCONFIG
keyword indicating a server section definition.
SRVGRP
Is the Tuxedo group name to which ARTTSQP
belongs.
SRVID
Is the identifier of a Tuxedo server of ARTTSQP
.
MIN=2 and MAX=2
Indicates that you run two instances of this server (you can run greater than or equal to one instance of this server).
CLOPT
Is a quoted text string passed to the server containing its parameters:
-o
Indicates the following file is used for the standard output messages of the server.
-e
Indicates the following file is used for the error output messages of the server.
-r
Is a Tuxedo parameter used to have statistical reports.
-L
Indicates the list of groups to be loaded by this server.
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
BBL 42444 KIXR 0 30 1500 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
ARTADM 00011.00010 GRP01 10 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 21 0 0 ( IDLE )
ARTTSQP 00012.00040 GRP02 40 0 0 ( IDLE )
ARTTSQ 00012.00045 GRP02 45 0 0 ( IDLE )
> psc -I 40
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
arttsqp_mib+ tsqp_mib_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSPOOL_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00004_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00004_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00003_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00003_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00002_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00002_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00001_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00001_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
> quit
#
Parent topic: Implementing CICS Applications
4.10 Implementing Distributed Program Link (DPL)
For several reasons, on z/OS, the Distributed Program Link
function enables a local CICS program (the client program) to call
another CICS program (the server program) in a remote CICS region
via EXEC CICS LINK
statements. CICS Runtime supports
this feature used in multi-CICS architecture like MRO among
migrated regions.
- To Detect That DPL Is Needed
- Modifying the Tuxedo ubbconfig File to Manage the DPL
- Declaring Remote Programs in CICS Runtime
Parent topic: Implementing CICS Applications
4.10.1 To Detect That DPL Is Needed
Unless you wish to use the DPL in a UNIX written application, check the technical specificities of the z/OS application
- Check on z/OS, using the CEDA system transaction, if at least one remote program is defined in the z/OS CICS CSD file. Such programs have some of their fields of the
REMOTE ATRIBUTES
section filed:Listing 4‑30 Checking for Remote Programs
DEF PROGR OVERTYPE TO MODIFY CICS RELEASE = 0610 CEDA DEFine PROGram( ) PROGram ==> Group ==> DEscription ==> .... REMOTE ATTRIBUTES DYnamic ==> No No ! Yes REMOTESystem ==> XXXX REMOTEName ==> YYYYYYYY Transid ==> ZZZZ EXECUtionset ==> Dplsubset Fullapi ! Dplsubset
Where (CICS default values are underlined):
DYNAMIC(YES|NO)
The following parameters cannot be overridden in the CICS LINK API. This field is only relevant for DPL use when it is set to NO and the three following fields are empty.
REMOTESYSTEM(name)
Remote CICS region name. An empty field is not relevant with
DYNAMIC(YES)
REMOTENAME(name)
Remote server program name. An empty field is not relevant with
DYNAMIC(YES)
because the default is the client program name (PROGram ==>).TRANSID(name)
Remote mirror transaction. An empty field is not relevant with
DYNAMIC(YES)
because the default is the mirror system transaction CSMI.EXECUTIONSET(FULLAPI|DPLSUBSET)
The DPL cannot use the full CICS API but only a subset. The DPLSUBSET parameter indicates explicit usage of a DPL subset of the CICS API, but note that this subset may also be sufficient to execute LINK in a non-DPL context without errors. On the other hand, this field may contain FULLAPI in a DPL context but does not ensure that no "Invalid Request errors" will follow if non-DPL API are used.
As described above, in some cases, the Remote Attributes declaration may not exist or can be incomplete. The reason is that these fields establish only some of the default values, some of the previous parameters in bold in the example are not provided in the
EXEC CICS LINK
API. - Then check in the programs, inside the
EXEC CICS LINK
API:- If the names of the programs called in this order match the names of programs defined in the CSD with remote attributes partially or fully informed.
- If these statement contain at least one of the optional remote parameters shown in italics in the following CICS LINK API (the others fields are not relevant for DPL).
Listing 4‑31 CICS LINK API For DPL
EXEC CICS LINK PROGRAM(…)
COMMAREA(…)
LENGTH(…)
DATALENGTH(…)
RETCODE(…)
SYSID(XXXX) : Remote CICS region name
SYNCONRETURN : Used for remote CICS syncpoint or rollback
TRANSID(XXXX) : Remote mirror transaction instead of the CSMI default
INPUTMSG(…)
INPUTMSGLEN(…)
END-EXEC
Parent topic: Implementing Distributed Program Link (DPL)
4.10.2 Modifying the Tuxedo ubbconfig File to Manage the DPL
If at least one of your programs use the DPL, install and
activate the ARTDPL
server without changing your other
settings.
To activate this server, modify your ubbconfig file to add this server to the *SERVERS
section of the Tuxedo ubbconfig file. This server belongs to the same Server Group as the Transactions Servers ( ARTSTRN, ARTSTR1, ARTATRN, ARTATR1
).
Listing 4‑32 ubbconfig File Example of a *SERVERS Section Describing the ARTDPL Server.
*SERVERS
…
ARTDPL SRVGRP=GRP02
SRVID=500
CONV=N
MIN=1 MAX=1 RQADDR=QKIXDPL REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_dpl -e /home2/work9/demo/Logs/TUX/sysout/stderr_dpl -r -- -s KIXD -l SIMPAPP"
…
Where:
*SERVERS
Tuxedo ubbconfig Keyword indicating a Server Section definition.
SRVGRP
Is the Tuxedo Group Name to which ARTDPL
belongs.
SRVID
Is the identifier of a Tuxedo Server of ARTDPL.
CONV=N
Indicates that this server operates in a non-conversational mode.
MIN=1 and MAX=1
Indicates that only one instance of this server must be run.
REPLYQ=Y
Indicates that this server will respond.
RQADDR=QKIXDPL
Name of the Tuxedo queue used for the responses.
CLOPT
Is a quoted text string passed to the server containing its parameters:
-o
Indicates the following file is used for the standard output messages of the server.
-e
Indicates the following file is used for the error output messages of the server.
-r
Is a Tuxedo parameter used to provide statistical reports.
-s KIXD
Indicates the CICS Runtime name where the KIXD transaction is run.
-l SIMAPP
Indicates that only the components of the SIMPDPL group are to be selected at start up.
Use the Tuxedo tmadmin psr
and psc
commands to check that this server is running and that no new
service is published:
Listing 4‑33 tmadmin Commands to Check ARTDPL Server
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTDPL QKIXDPL GRP02 500 0 0 ( IDLE )
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 5 250 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30003 0 0 ( IDLE )
TMQUEUE 01000.01010 GQUEUE 1010 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMQFORWARD 01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
> quit
#
Parent topic: Implementing Distributed Program Link (DPL)
4.10.3 Declaring Remote Programs in CICS Runtime
To allow an application to use distributed programs called in
EXEC CICS LINK
statements, these programs must be
declared to CICS Runtime.
- To declare REMOTE programs which can only use the DPL Subset of the CICS API:
- In the
programs.desc
file, setREMOTESYSTEM
(the 7th field of the csv format dataset), to remoteSYSID
name (KIXD
in sample of Listing 4‑32).The default is
local (empty field)
, meaning that local programs are declared because they can use the FULL CICS APIIn our Simple Application example, if we suppose that
RSSAT000
,RSSAT001
are remote andRSSAT002
andRSSAT003
are local, then theprograms.des
c file is set to:Listing 4‑34 Simple Application programs.desc Configuration of Remote Programs#PROGRAM;GROUP;DESCRIPTION;LANGUAGE;EXECKEY;STATUS;REMOTESYSTEM;REMOTENAME RSSAT000;SIMPAPP;Home Menu Program of Simple Application;COBOL; ;ENABLE;KIXD RSSAT001;SIMPAPP;Customer Detailed Inf Program of Simple Application;COBOL; ;ENABLE;KIXD RSSAT002;SIMPAPP;Customer Maintenance Program of the Simple Application;COBOL; ;ENABLE RSSAT003;SIMPAPP;Customer List of the Simple Application;COBOL; ;ENABLE
- In the
- Shutdown and reboot Tuxedo.
- Using the Tuxedo
tmadmin psr
andpsc
commands, check that new services for DPL programs are published and managed byARTDPL
:KIXD_RSSAT0001
andKIXD_RSSAT0003.
Note:
To avoid problems with homonyms, these distributed services have their names composed of the TuxedoDOMAINID
defined in the ubbconfig and the name of the program they manage.
Listing 4‑35 Using tmadmin Commands to Check DPL Services
{deimos:work9}-/home2/work9/demo/Logs/TUX/sysout# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
ARTDPL QKIXDPL GRP02 500 0 0 ( IDLE )
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 5 250 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30003 0 0 ( IDLE )
TMQUEUE 01000.01010 GQUEUE 1010 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMQFORWARD 01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
KIXD_RSSAT0+ dplsvc ARTDPL GRP02 500 KIXR 0 AVAIL
KIXD_RSSAT0+ dplsvc ARTDPL GRP02 500 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
TSM00004_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00003_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00002_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00001_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00000_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
> quit
# .
To reduce the scope of the services listed to only those managed
by ARTDPL
(SRVID=500), use the Tuxedo psc
command followed with the -i srvid
parameter to
restrict the display to a particular server id.
In our example, the srvid of the ARTDPL server is 500 as displayed just above.
Listing 4‑36 Using tmadmin Commands to Check Specific DPL Service in Verbose Mode
# tmadmin
...
> verbose
Verbose now on.
> psc -i 500
Service Name: KIXD_RSSAT003
Service Type: USER
Routine Name: dplsvc
Prog Name: /home2/work9/KIXEDO/bin/ARTDPL
Queue Name: QKIXDPL
Process ID: 1327244, Machine ID: KIXR
Group ID: GRP02, Server ID: 500
Current Load: 50
Current Priority: 50
Current Trantime: 30
Current Blocktime: 0
Current BUFTYPECONV: 0
Requests Done: 0
Current status: AVAILABLE
Service Name: KIXD_RSSAT001
Service Type: USER
Routine Name: dplsvc
Prog Name: /home2/work9/KIXEDO/bin/ARTDPL
Queue Name: QKIXDPL
Process ID: 1327244, Machine ID: KIXR
Group ID: GRP02, Server ID: 500
Current Load: 50
Current Priority: 50
Current Trantime: 30
Current Blocktime: 0
Current BUFTYPECONV: 0
Requests Done: 0
Current status: AVAILABLE
> quit
#
Parent topic: Implementing Distributed Program Link (DPL)
4.11 Implementing CICS Common Work Area (CWA)
On z/OS, the CWA is a common storage area defined in memory for a CICS region that programs can use to save and exchange data between themselves as long as this CICS region is running.
This area is addressed thru a pointer delivered by the CICS
statement EXEC CICS ADDRESS CWA
. If you find this CICS
statement in your application, you have to implement this feature
in CICS Runtime.
LINKAGE SECTION.
01 COMMON-WORK-AREA.
03 APPL-1-ID PIC X(4).
03 APPL-1-PTR USAGE IS POINTER.
03 APPL-2-ID PIC X(4).
03 APPL-2-PTR USAGE IS POINTER.
PROCEDURE DIVISION.
. . .
END-EXEC.
* Set up addressability to the CWA
EXEC CICS ADDRESS
CWA(ADDRESS OF COMMON-WORK-AREA)
END-EXEC.
After the CICS ADDRESS CWA, the address of the COBOL group named COMMON-WORK-AREA is set to the address of the CWA allocated by CICS, meaning that COMMON-WORK-AREA maps and refines this memory area. The total amount of this shared memory is fixed and defined at CICS start up.
Parent topic: Implementing CICS Applications
4.11.1 To Replicate CICS ADDRESS CWA Functionality in CICS Runtime
- Contact your z/OS CICS Administrator to know the size of memory implemented. (For your information this value is defined with the parameter WRKAREA of the DFHSIT. The default value is 512 bytes and the size can vary from 0 to 3584 bytes). Another way is to calculate the biggest size of the data record contained in the programs addressing the CWA
- Modify your
~/.profile
UNIX system file to export a new CICS Runtime variable,KIX_CWA_SIZE
, and set it to the value found in theWRKAREA
of theDFHSIT
. If this variable is not declared, note that the default value is 0 and the authorized interval from 0 to 32760 bytes.Example:
KIX_CWA_SIZE=512
- Modify your
~/.profile
UNIX system file to export a new CICS Runtime variable,KIX_CWA_IPCKEY
, and valorize it to a Unix IPC key to define the cross memory segment used as CWA.Example:
KIX_CWA_ IPCKEY=200944
- Restart Tuxedo to take all these changes into account.
Parent topic: Implementing CICS Common Work Area (CWA)
4.12 Implementing a CICS Transaction Work Area (TWA)
On z/OS, the TWA is a common storage area defined in memory for a CICS region that programs can use to save and exchange data between themselves during the execution time of one CICS transaction. In other words, this TWA can only be accessed by the programs participating in the transaction. This area is addressed thru a pointer delivered by the CICS statement EXEC CICS ADDRESS TWA.
. If you find an EXEC CICS ADDRESS TWA statement in your application, you have to implement this feature in CICS Runtime.
LINKAGE SECTION.
01 TRANSACTION-WORK-AREA.
03 APPL-1-ID PIC X(4).
03 APPL-1-PTR USAGE IS POINTER.
03 APPL-2-ID PIC X(4).
03 APPL-2-PTR USAGE IS POINTER.
PROCEDURE DIVISION.
. . .
END-EXEC.
* Set up addressability to the TWA
EXEC CICS ADDRESS
TWA(ADDRESS OF TRANSACTION-WORK-AREA)
END-EXEC.
After the CICS ADDRESS TWA
, the address of the
COBOL group named TRANSACTION-WORK-AREA
is set to the
address of the TWA allocated by CICS, meaning that
TRANSACTION -WORK-AREA
maps and refines this memory
area. The total amount of this shared memory is defined for each
transaction in the z/OS CSD
configuration file in the
field TWasize
.
The next screen shows the result of a z/OS CEDA
system transaction where the TWasize
parameter is set
to 122 for the SA00
transaction code:
Figure 4-3 z/OS ceda System Transaction Example

To replicate this functionality in CICS Runtime:
- Modify the CICS Runtime
transactions.desc
file to report the needed amount of TWA memory (TWasize>0
) - For each transaction using programs with
CICS ADDRESS TWA
statements, modify thetransactions.desc
file to declare itsTWasize
in the sixteenth field of this csv format file.Table 4-6 TWA Size Values Associated to Each Transaction Code of the Simple Application
Transaction TWA Size SA00
0
SA01
100
SA02
200
SA03
300
Listing 4‑39 Configuration of TWA in the transactions.desc File
#Transaction;Group;Description;Program; ; ; ; ; ; ;Status; ; ; ;Tranclass ;TWA Size SA00;SIMPAPP;pg for simpapp;RSSAT000; ; ; ; ; ; ;ENABLED SA01;SIMPAPP;pg for simpapp;RSSAT001; ; ; ; ; ; ;ENABLED; ; ; ; ;100 SA02;SIMPAPP;pg for simpapp;RSSAT002; ; ; ; ; ; ;ENABLED; ; ; ; ;200 SA03;SIMPAPP;pg for simpapp;RSSAT003; ; ; ; ; ; ;ENABLED; ; ; ; ;300
Note:
Nothing is indicated for the SA00 transaction that had a TWA size equal to zero. - Restart the CICS Runtime Tuxedo servers, the modifications can be seen in the different stderr files of the servers involved in the transaction management (ARTSTRN, ARTSTR1, ARTATRN and ARTATR1)
Listing 4‑40 stderr_strn TWA Example
|---------------------------------|
| TRANSACTIONS loaded : < 4> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP |RSSAT000 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA01|SIMPAPP |RSSAT001 | |N|N|001|N|N|ENABLED |USER |Y| |00100|999|
|SA02|SIMPAPP |RSSAT002 | |N|N|001|N|N|ENABLED |USER |Y| |00200|999|
|SA03|SIMPAPP |RSSAT003 | |N|N|001|N|N|ENABLED |USER |Y| |00300|999|
Parent topic: Implementing CICS Applications
4.12.1 Supporting TWA in ARTDPL
The programs within a transaction run by ARTDPL now can access TWA with following steps:
- Modify the CICS Runtime
transactions.desc
file to configure TWA Size needed for ARTDPL transaction.Listing 4‑41 Configuration of TWA for ARTDPL in the transactions.desc File#Transaction;Group;Description;Program; ; ; ; ; ; ;Status; ; ; ;Tranclass ;TWA Size CPMI;SIMPAPP;pg for simpapp;DFHMIRS; ; ; ; ; ; ;ENABLED; ; ; ; ;100
DFHMIRS
is the internal mirror program in CICS that handles inbound function shipping. In CICS RT, this mirror program should be defined under the transaction used to run the linked program in the transaction resource file if TWA is used. In the list, ARTDPL runs remote linked program under transaction named CPMI and it has TWA size equal to 100.Note:
Users should not name application program as DFHMIRS - Restart the CICS Runtime Tuxedo servers and the modifications can be seen in ARTDPL stdout file.
Listing 4‑42 stdout_dpl TWA Example
|---------------------------------| | TRANSACTIONS loaded : < 1> | |----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---| | | | | |C|C| |R|R| | |T| | | | |TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX| | | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT| | | | | |S|F| |S|T| |KEY |C| | |IVE| |----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---| |CPMI|SIMPAPP |DFHMIRS | |N|N|001|N|N|ENABLED |USER |Y| |00100|999| |-----------------------------------------------------------------------------------------------------|
Parent topic: Implementing a CICS Transaction Work Area (TWA)
4.13 Implementing Integration with WebSphere MQ
This chapter contains the followings topics:
- Using ART CICS Transaction Trigger Monitor (ARTCKTI)
- Rebuilding ART for CICS Servers
- Handling CICS Runtime Preprocessor of MQOPEN/MQCLOSE Calls
- Encoding Character Set
- Changing COMP-5 back to BINARY Data Type
Parent topic: Implementing CICS Applications
4.13.1 Using ART CICS Transaction Trigger Monitor (ARTCKTI)
The ART CICS Transaction Trigger Monitor (ARTCKTI
)
behaves the same as the CICS CKTI transaction. It listens on one or
multiple WebSphere MQ initiation queues, retrieves trigger messages
when a trigger event occurs, and then forwards the trigger messages
to the target transaction.
- Work Flow
- Command Configuration
- Configuring WebSphere MQ Servers to Trigger ART for CICS Transactions
Parent topic: Implementing Integration with WebSphere MQ
4.13.1.1 Work Flow
ARTCKTI
is a standalone Oracle Tuxedo server. The ARTCKTI
server behaves as follows:
- Monitor one or multiple WebSphere MQ initiation queues.
One server instance can only monitor WebSphere MQ initiation queues within the same WebSphere MQ queue manager. The queues in different WebSphere MQ queue managers should be monitored by separate
ARTCKTI
server instances. - When trigger message has arrived, the
ARTCKTI
server retrieves the message. - Retrieve the transaction ID from the trigger message.
- Transfer the trigger message from structure
MQTMC
toMQTMC2
Since
MQTMC
has many fields, it is always too complicated to send the structure as the parameter ofEXEC CICS START
call.MQTMC2
is used in CKTI to pass the structure as data to theSTART
request for the trigger monitor. - Invoke the target transaction, and send the MQTMC2 data.
Since CICS CKTI transaction starts the target transaction with asynchronized call (
EXEC CICS START
), theARTCKTI
server also starts the target transaction with asynchronized call (Tuxedotpacall
). - User transaction retrieves the trigger message by CICS
RETRIEVE
, and performs operations on the WebSphere MQ application queue.If the user transaction does not retrieve the message or the triggered transaction is not available, WebSphere MQ no longer sends trigger message in this condition. A new trigger message is issued until the WebSphere MQ initiation queue is reopened or a new trigger condition is met.
The following figure illustrates the behavior:
Figure 4-4 WebSphere MQ Trigger Condition

Note:
By default,ARTCKTI
is built with client mode and a specific Websphere MQ version. You need to rebuild ARTCKTI
server if your ARTCKTI
accesses Websphere MQ with server mode or if your Websphere MQ runtime version is lower than the version upon which the default ARTCKTI
is built. For more information, see Rebuild ARTCKTI Server.
Parent topic: Using ART CICS Transaction Trigger Monitor (ARTCKTI)
4.13.1.2 Command Configuration
ARTCKTI
accepts the following parameters for the ubbconfig file.
-i trigger_interval
: specifies the maximum time (in milliseconds) that theARTCKTI
server waits for a message to arrive at the WebSphere MQ initiation queue.-s retry_interval
: specifies the retry interval forARTCKTI
to reconnect to WebSphere MQ queue manager or reopen WebSphere MQ initiation queue upon failure.-m queue_manager_name
: specifies the name of the WebSphere MQ queue manager to be monitored.-q queue1,queue2,……
: specifies the name of the WebSphere MQ initiation queue to be monitored.
Parent topic: Using ART CICS Transaction Trigger Monitor (ARTCKTI)
4.13.1.3 Configuring WebSphere MQ Servers to Trigger ART for CICS Transactions
WebSphere MQ can trigger CICS transactions when one or more
messages are placed on the queue. ART for CICS provides
ARTCKTI
server as trigger monitor (equivalent to CICS
CKTI transaction).
To enable MQ Manager to trigger an ART for CICS transaction, the triggering queue and process need to be defined appropriately in the MQ Manager configuration.The following listing shows a sample configuration:
Listing 4‑43 Sample Configuration to Trigger ART for CICS Transactions
runmqsc MYMQM << EOF
DEFINE QLOCAL(INIT1) REPLACE LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE) DESCR('INITIATION QUEUE')
DEFINE QLOCAL(APP1) REPLACE LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE) DESCR('APPLICATION QUEUE') INITQ('INIT1') PROCESS('APP1.P') TRIGGER TRIGTYPE(FIRST)
DEFINE PROCESS(APP1.P) DESCR('PROCESS DEFINITION') APPLTYPE(UNIX) APPLICID('SA01')
DEFINE QLOCAL(APP2)
DEFINE CHANNEL(APP.C) CHLTYPE(SVRCONN)
DEFINE LISTENER(APP.L) TRPTYPE( TCP )
ALTER QMGR TRIGINT(0)
DEFINE QMODEL('SYSTEM.SAMPLE.REPLY') REPLACE DESCR('GENERAL REPLY QUEUE')
EOF
In the example above, INIT1
is defined as a trigger
queue associated with process APP1.P
, and specifies
that the FIRST
message placed on the queue will be
used for triggering. The process definition that follows defines
APPLTYPE
as UNIX and specifies ART for CICS
transaction ID to be triggered as APPLICID
.
Based on this definition, when the first message is queued on
INIT1
queue, ARTCKTI
trigger monitor will
START TRANID('SA01')
in ARTATRN
server.
The application transaction will usually drain the queue and
process all available messages. The next time a new message is
queued on INIT1
, it will be triggered again.
Parent topic: Using ART CICS Transaction Trigger Monitor (ARTCKTI)
4.13.2 Rebuilding ART for CICS Servers
Before rebuilding the CICS transaction servers, you need to prepare the WebSphere MQ RM Definitions, as discussed in this section. If ART for CICS transaction servers use different modes to access the WebSphere MQ, then you must perform the tasks described later in this section and upgrade Oracle Tuxedo after rebuilding the servers.
- Prepare WebSphere MQ RM Definitions
- Rebuild TMS_MQM Server
- Rebuild ART for CICS Transaction Servers
- Rebuild ARTCKTI Server
- Update Oracle Tuxedo UBBCONFIG and OPENINFO
Parent topic: Implementing Integration with WebSphere MQ
4.13.2.1 Prepare WebSphere MQ RM Definitions
Prepare WebSphere MQ RM definitions by adding the following in
$TUXDIR/udataobj/RM
file if using local WebSphere MQ
server:
# For building TMS_MQM server to work with local MQ server
MQSeries_XA_RMI:MQRMIXASwitchDynamic: /opt/mqm/lib64/libmqmxa64.so /opt/mqm/lib64/libmqm.so
# For building ARTSTR*/ARTATR*/ARTDPL server
MQSeries_XA_RMI_COB:MQRMIXASwitch: -L${MQMDIR}/lib64 -lmqmxa64 -lmqmcb
If using local WebSphere MQ client for remote connection to WebSphere MQ server, use this version (do not use duplicate entries in RM file):
# For building TMS_MQM server to work with local MQ client
MQSeries_XA_RMI:MQRMIXASwitchDynamic: /opt/mqm/lib64/libmqcxa64.so /opt/mqm/lib64/libmqic.so
# For building ARTSTR*/ARTATR*/ARTDPL server
MQSeries_XA_RMI_COB:MQRMIXASwitch: -L${MQMDIR}/lib64 -lmqcxa64 -lmqicb
Note:
${MQMDIR}
is the environment variable which indicates the installation path of MQM
.
Parent topic: Rebuilding ART for CICS Servers
4.13.2.2 Rebuild TMS_MQM Server
Build TMS_MQM
server and put it in a directory included in the
PATH
set in setenv
(for example,
$TUXDIR/bin
and $KIXDIR/bin
) with correct execute
permissions.
buildtms -r MQSeries_XA_RMI -o TMS_MQM
Parent topic: Rebuilding ART for CICS Servers
4.13.2.3 Rebuild ART for CICS Transaction Servers
Build transaction server (ARTSTR*/ARTATR*/ARTDPL
) and put them in $KIXDIR/bin
directory or a local directory under $APPDIR
(but then add it in the $PATH
definition in setenv
) with correct execute permissions. See an example for.
ARTATRN
buildartcics -M -r Oracle_XA -r MQSeries_XA_RMI_COB -o ARTATRN_ORA_MQM
Note:
-M
means "multiple RM involved".-r
flags specify RMs to link with. For example,-r Oracle_XA
points to Oracle DB RM definition, and-r MQSeries_XA_RMI_COB
points to MQ RM for COBOL programs.
Parent topic: Rebuilding ART for CICS Servers
4.13.2.4 Rebuild ARTCKTI Server
Build ARTCKTI
server if MQ-initiated transaction
support is required.
In general, default ARTCKTI
does not need to be
rebuilt unless WebSphere MQ version is changed or you need to use
it in MQ server mode. (Default version is for use with WebSphere MQ
client.)
To build the ARTCKTI
server, execute the following
command as the Oracle Tuxedo administrator with write permission
for the $KIXDIR/bin
directory:
buildserver -o $KIXDIR/bin/ARTCKTI -t -f "$KIXDIR/objs/ARTCKTI.o $KIXDIR/objs/list.o" -l "-L$MQMDIR/lib64 -lmqic_r"
The above is to build for use with WebSphere MQ client. For use with locally installed WebSphere MQ server, use the library shown below:
buildserver -o $KIXDIR/bin/ARTCKTI -t -f "$KIXDIR/objs/ARTCKTI.o $KIXDIR/objs/list.o" -l "-L$MQMDIR/lib64 -lmqm_r"
Note:
$MQMDIR
is the path where WebSphere MQ has been installed.
For more information, see ARTCKTI Configuration.
Parent topic: Rebuilding ART for CICS Servers
4.13.2.5 Update Oracle Tuxedo UBBCONFIG and OPENINFO
ARTCKTI
server does not need to be configured in the TMS group.
ARTSTR*/ARTATR*/ARTDPL
should be configured in the TMS group, and TMS group should be configured as MQM group.
Listing 4‑44 Example of Updating Oracle Tuxedo UBBCONFIG and OPENINFO
*GROUPS
# For ARTCKTI
GRP01
GRPNO=10
ENVFILE="/xxx/envfile"
#For ARTSTR/ATR/DPL
GRP02
GRPNO=12
ENVFILE="/xxx/envfile "
TMSNAME=TMS_ORA
TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/SYSADM1/SYSADM1+SqlNet=ANA99C1O+SesTm=600+LogDir=/home/oracle/DRIVERMQ/deploy/CICS_RT/LOGS/xa+DbgFl=0x20"
MRM=Y
*RMS
RM_MQM
SRVGRP=GRP02
RMID=2
TMSNAME="TMS_MQM"
TMSCOUNT=2
# For local MQ connection: The OPENINFO only needs to configure RM name and MQ manager name as following:
OPENINFO="MQSeries_XA_RMI_COB: MYMQM"
# For remote MQ connection: The OPENINFO needs to configure as following:
OPENINFO="MQSeries_XA_RMI_COB:qmname=MYMQM,channel=APP.C,trptype=TCP,AXLIB=/home/bofzhu/zhubf/tuxedo/tux1213L31/lib/libtux.so,conname=10.182.73.205(8000),tpm=Tuxedo"
AUTO=Y
*SERVERS
ARTCKTI
SRVGRP=GRP00
SRVID=1010
GRACE=0 RESTART=Y CONV=N MAXGEN=10
# -m means MQ manager name, -q means MQ queue name
# Refer to ARTCKTI Configuration in Oracle Tuxedo Application Runtime for CICS Reference Guide
CLOPT="-A -- -m MYMQM -q INIT1"
#Add all required ART*_MQM servers (here ARTSTRN, ARTATRN, and ARTDPL are shown)
ARTATRN_ORA_MQM
SRVGRP=GRP02
SRVID=60
MIN=3 MAX=3
CLOPT="-o xxx -e xxx -r -- -s xxx -l xxx"
ARTSTRN_ORA_MQM
SRVGRP=GRP02
SRVID=65
MIN=2 MAX=2
CLOPT="-o xxx -e xxx -r -- -s xxx -l xxx"
ARTDPL_ORA_MQM
SRVGRP=GRP02
SRVID=70
MIN=2 MAX=2
CLOPT="-o xxx -e xxx -r -- -s xxx -l xxx"
Parent topic: Rebuilding ART for CICS Servers
4.13.3 Handling CICS Runtime Preprocessor of MQOPEN/MQCLOSE Calls
For proper connection to WebSphere MQ, the sequence is
MQCONN
, MQOPEN
, MQxxx
(GET/PUT
), MQCLOSE
, and
MQDISC
. In mainframe CICS, MQCONN
and
MQDISC
are often handled by CICS as resource
management functions and applications only do
MQOPEN/MQxxx/MQCLOSE
.
To support this in ART for CICS, we use ART for CICS
pre-processor to convert MQOPEN/MQCLOSE
calls to
KIX_MQxxxx
wrappers, which then handle
MQCONN
and MQDISC
under the covers. This
approach also enables ART for CICS to handle connection issues and
re-connect if necessary. Check the pre-processor output to verify
that KIX_MQxxx
calls are there.
In terms of the MQ wrapper, MQ wrapper can help CICS transaction to recycle or free the MQ connection if the CICS transaction does not do this itself. prepro-cics.pl
introcues a switch MQ_wrapper
to enable this MQ wrapper. For every application server (for example, ARTSTR*/ARTATR*/ARTDPL
), CLOPT -m queue_manager_name
is introduced to specify the target MQ Manager, because MQ wrapper can help to do the MQCONNECT
before MQOPEN
but MQCONNECT
needs to know which MQ Manager that it should connect to. For more information, see MQ_wrapper and WebSphere MQ Queue Manager Name.
Parent topic: Implementing Integration with WebSphere MQ
4.13.4 Encoding Character Set
When using local WebSphere MQ client for remote connection to z/OS based MQ Manager, the EBCDIC-to-ASCII conversion is not automatically enabled. It can be enabled by setting MQGMO-CONVERT
flag in MQGET
options as shown in example below.
Listing 4‑45 Example for MQGMO-CONVERT
COMPUTE MQGMO-OPTIONS = MQGMO-WAIT
+ MQGMO-SYNCPOINT
+ MQGMO-FAIL-IF-QUIESCING
+ MQGMO-CONVERT
END-COMPUTE.
For MQPUT
the ASCII-to-EBCDIC conversion is done automatically if MQMD-FORMAT
is set to MQFMT-STRING
. For example,
MOVE MQFMT-STRING TO MQMD-FORMAT.
When using local WebSphere MQ server, with channel defined as SENDER
, transcoding can be done without program change by adding CONVERT (YES)
on the channel definition.
Parent topic: Implementing Integration with WebSphere MQ
4.13.5 Changing COMP-5 back to BINARY Data Type
Oracle Tuxedo ART Workbench adapts COBOL programs to target
environment, in part by changing some mainframe numeric data types
(BINARY/COMP
) to compatible data type
COMP-5
, which is the native equivalent. This is
transparent in COBOL applications.
However, on Linux, for Websphere MQ libraries this can cause an issue as they require the use of BINARY
types in the parameters passed in MQ calls. Similar data type mapping is done by Pro*COBOL pre-processor.
Therefore, change the WebSphere MQ interface definitions from
COMP-5
back to BINARY
before the final
compile stage. See an example of the changed MQ interface
definitions (BINARY
data type).
Listing 4‑46 Example of the Changed MQ Interface Definitions (BINARY Data Type)
01 QM-NAME PIC X(48) VALUE SPACES.
01 HCONN PIC S9(9) BINARY.
01 Q-HANDLE PIC S9(9) BINARY.
01 OPTIONS PIC S9(9) BINARY.
01 COMPLETION-CODE PIC S9(9) BINARY.
01 OPEN-CODE PIC S9(9) BINARY.
01 REASON-CODE PIC S9(9) BINARY.
01 CONN-REASON PIC S9(9) BINARY.
01 USER-DATA-LENGTH PIC S9(9) BINARY.
01 DATA-LENGTH PIC S9(9) BINARY.
01 TOTAL-NUM PIC S9(9) BINARY.
Parent topic: Implementing Integration with WebSphere MQ
4.14 Implementing Using Multiple Session Management
Note:
- The multiple session management function does not support conversational user transaction.
- The default user can only run CESN/CSGM transactions when the multiple session management function is enabled.
PA1
/PA2
cannot be used in user application when this feature is enabled.
- Writing User Plug-In for Application List
- Configuring CICS Runtime Configuration Files
- Configuring UBBCONFIG
- Starting, Switching, and Ending Sessions
Parent topic: Implementing CICS Applications
4.14.1 Writing User Plug-In for Application List
ART for CICS provides a system transaction, whose program name
is DFHALST
, to get and show application list for a
user when doing multiple session management. The transaction calls
a user plug-in to get the list.
You should provide this plug-in, and place the library in the correct library path so that DFHALIST
can call it. For more information about this plug-in, see CICS Runtime Integration with Application List Transaction in Oracle Tuxedo Application Runtime for CICS Reference Guide.
Parent topic: Implementing Using Multiple Session Management
4.14.2 Configuring CICS Runtime Configuration Files
The following topics describe how to configure the CICS Runtime Configuration file:
Parent topic: Implementing Using Multiple Session Management
4.14.2.1 Transaction Configuration File
You should define application list transaction (ALST) in transactions.desc
, and set the program to DFHALST
. ARTSTRN
servers will load this transaction.
ALST;SIMPAPP;Application list transaction;DFHALST
For more information, ALST (Application List Transaction) in Oracle Tuxedo Application Runtime for CICS Reference Guide
Parent topic: Configuring CICS Runtime Configuration Files
4.14.2.2 System Configuration File
You should configure GMTRAN=CESN
in
system.desc
to let ART for CICS initiate CESN
transaction automatically when a user connects to it.
[kixr]
APPLID=DBDCkixR
GMTRAN=CESN
Parent topic: Configuring CICS Runtime Configuration Files
4.14.3 Configuring UBBCONFIG
You should enable security to do multiple session management. For more information, see Security Configuration of the CICS Runtime.
You should configure the following servers to UBBCONFIG
. See the listing below for an example.
ARTTCPL
, specifying its-t
option. For more information, ARTTCPL/ARTTCPH Configuration in Oracle Tuxedo Application Runtime for CICS Reference Guide.ARTCNX
, specifying itsSYSID
.ARTSRM
(to prevent the same user connects to ART for CICS via different terminals).ARTSTRN
(to run application list transaction and user transactions).
Listing 4‑47 Example of Configuring UBBCONFIG
* SERVERS
ARTTCPL
SRVGRP=TCP00
SRVID=101
CLOPT=" -- -M 4 -m 1 -L //hostname:34582 -n //hostname:34583 -t ALST"
ARTCNX
SRVGRP=GRP01
SRVID=15
CONV=Y
MIN=1 MAX=1 RQADDR=QCNX015 REPLYQ=Y
CLOPT="-o /home2/work9/demo/LOGS/sysout/stdout_cnx -e /home2/work9/demo /LOGS/sysout/stderr_cnx -r -- -s KIXR "
ARTSRM
SRVGRP=GRP02
SRVID=18
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/LOGS/sysout/stdout_srm -e /home2/work9/demoLOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP"
ARTSTRN
SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=2 MAX=10 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/LOGS/sysout/stdout_strn -e /home2/work9/demo/LOGS/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
Parent topic: Implementing Using Multiple Session Management
4.14.4 Starting, Switching, and Ending Sessions
Boot the application, and connect to ART for CICS through a 3270 terminal. When you complete sign on, ART for CICS runs application list transaction (ALST) automatically, which shows you the application list.
Figure 4-5 ART for CICS Application List Transaction (ALST)

Parent topic: Implementing Using Multiple Session Management
4.14.4.1 Starting Sessions
To start up a transaction (also known as session), do one of the following:
- Move the cursor to the field at the left of the session that you want to activate, and press Enter.
DFHALST
actives the session and switches the display to the application screen. - Type /sessid in the command field and press Enter.
Parent topic: Starting, Switching, and Ending Sessions
4.14.4.2 Switching Sessions
To switch back to application list transaction from a user
transaction screen, press PA1
.
To switch to the next active transaction, press
PA2
.
Parent topic: Starting, Switching, and Ending Sessions
4.14.4.3 Ending Sessions
In user transaction, issue CICS RETURN
without
TRANSID
parameter to end the transaction, and then ART
for CICS terminates the session of the transaction.
You are not able to exit application list transaction; instead, you should disconnect from ART for CICS to terminate it.
Parent topic: Starting, Switching, and Ending Sessions
4.15 Implementing Using ART for CICS TCP/IP Socket Interface
In z/OS, CICS TCP/IP socket interface allows remote users to access CICS client/server applications over TCP/IP Internets. CICS TCP/IP provides a variant of the Berkeley Software Distribution 4.3 sockets interface, which is widely used in TCP/IP networks and is based on the UNIX system and other operating systems. The socket interface consists of a set of calls that your CICS application programs can use to set up connections, send and receive data, and perform general communications control functions.
ART for CICS now supports CICS TCP/IP socket interface, enabling you to use it when you develop new peer-to-peer applications in which both ends of the connection are programmable.
CICS Runtime server, ARTCSKL
, is ART for CICS
TCP/IP socket listener. When client request comes, it passes the
request to work task for processing, and then waits for another
client request. CICS Runtime transaction server,
ARTATRN/ARTATR1
, starts up and runs user-written
transactions.
You can use ART for CICS TCP/IP socket interface to write these transactions. The user-written transaction uses EXEC CICS RETRIEVE
commands to make a socket available to ARTATRN/ARTATR1
(it should use the output parameter to call takesocket()
), uses write/read()
to transfer data, and then closes the socket.
- ART for CICS TCP/IP Socket API
- The Client-Listener-Server Application Set
- ART for CICS TCP/IP Listener (ARTCSKL)
- Required Configurations
Note:
- ART for CICS TCP/IP only provides connection-oriented (TCP) services and does not support the IP (raw socket) protocol and connectionless (UDP) services. Supports both IPv4 and IPv6.
- Client applications and user transactions running in
ARTATRN/ARTATR1
can be written in both C and COBOL languages. The errno returned by C socket API on all supported platforms and the errno returned by COBOL socket API on AIX/Solaris platforms are different from mainframe; you should use macro definition inerrno.h
in your programs. - Client applications and user transactions running in
ARTATRN/ARTATR1
can be written in both C and COBOL languages. The errno returned by C socket API on all supported platforms and the errno returned by COBOL socket API on AIX/Solaris platforms are different from mainframe; you should use macro definition inerrno.h
in your programs. - Only supports to start user transactions using
EXEC CICS START
with no delay interval. - Only supports ASCII routines for those peer-to-peer applications (on both ends).
ARTCSKL
is the only supported socket listener; user-written listener is not supported.- Security function is not supported.
- If a user-written program depends on platform endianness and you want to migrate it to Linux platforms, you should change your code, reconsidering its order (on mainframe it is big endian); you do not need to worry about this issue if you want to migrate it to other platforms.
- ART for CICS TCP/IP Socket API
- The Client-Listener-Server Application Set
- ART for CICS TCP/IP Listener (ARTCSKL)
- Required Configurations
Parent topic: Implementing CICS Applications
4.15.1 ART for CICS TCP/IP Socket API
CICS TCP/IP socket API is a collection of socket calls that enable you to perform the following primary communication functions between application programs.
- Set up and establish connections to other users on the network
- Send and receive data to and from other users
- Close down connections
In addition to these basic functions, these APIs enable you to:
- Interrogate the network system to get names and status of relevant resources
- Perform system and control functions as required
ART for CICS supports the above functions as well, providing a set of C APIs and extended COBOL APIs. The following table lists the supported C APIs; the last three functions are provided by ART for CICS while other functions can use OS socket library directly.
Table 4-7 Supported C APIs
Call | Format | Description |
---|---|---|
accept()
|
|
A server issues the accept() call to accept a connection request from a client. The call uses a socket already created with a socket() call and marked by a listen() call.
|
bind()
|
|
The bind() call binds a unique local port to an existing socket. Note that, on successful completion of a socket() call, the new socket descriptor does not have an associated port.
|
close()
|
|
A close() call shuts down a socket and frees all resources allocated to the socket. If the socket refers to an open TCP connection, the connection is closed. If a stream socket is closed when input data is queued, the TCP connection is reset rather than being cleanly closed.
|
connect()
|
int connect(int s, struct sockaddr_in *name, int namelen) |
A connect() call attempts to establish a connection between a local socket and a remote socket. For a stream socket, the call performs two tasks.
|
fcntl()
|
signed int fcntl(int s, int cmd, int arg) |
The fcntl() call controls whether a socket is in blocking or nonblocking mode.
|
gethostid()
|
unsigned long gethostid() |
gethostid() gets the unique 32-bit identifier for the current host in network byte order. This value is the default home IP address.
|
gethostname()
|
int gethostname(char *name, int namelen) |
gethostname() returns the name of the host processor on which the program is running.
|
getpeername()
|
int getpeername(int s, struct sockaddr *name, int *namelen) |
getpeername() returns the name of the peer connected to a specified socket.
|
getsockname()
|
int getsockname(int s, struct sockaddr_in *name, int *namelen) |
A getsockname() call returns the current name for socket s in the sockaddr structure pointed to by the name parameter.
|
getsockopt()
|
int getsockopt(int s, int level, int optname, char *optval, int *optlen) |
getsockopt() gets options associated with a socket.
|
ioctl()
|
int ioctl(int s, unsigned long cmd, char *arg) |
The ioctl() call controls the operating characteristics of sockets.
|
listen()
|
int listen(int s, int backlog) |
The listen() call indicates a readiness to accept client connection requests.
|
read()
|
int read(int s, char *buf, int len) |
The read() call reads data on a specified connected socket.
|
recv()
|
- | The recv() call receives data on a specified socket.
|
recvfrom()
|
int recvfrom(int s, char *buf, int len, int flags, struct sockaddr_in *name, int *namelen) |
The recvfrom() call receives data on a specified socket. The recvfrom() call applies to any datagram socket, whether connected or unconnected.
|
select()
|
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) |
The select() call is useful in processes where multiple operations can occur, and it is necessary for the program to be able to wait on one or several of the operations to complete.
|
send()
|
int send(int s, char *msg, int len, int flags) |
send() sends data on an already-connected socket.
|
sendto()
|
int sendto(int s, char *msg, int len, int flags, struct sockaddr_in *to, int tolen) |
sendto() sends data to the address specified in the call.
|
setsockopt()
|
int setsockopt(int s, int level, int optname, char *optval, int *optlen) |
setsockopt() sets the options.
|
shutdown()
|
int shutdown(int s, int how) |
The shutdown() call shuts down all or part of a duplex connection.
|
socket()
|
int socket(int domain, int type, int protocol) |
The socket() call creates an endpoint for communication and returns a socket descriptor representing the endpoint.
|
write()
|
int write(int s, char *buf, int len) |
write() writes data on a connected socket.
|
getclientid()
|
int getclientid(int domain, struct clientid) |
A getclientid() call returns the identifier by which the calling application is known to the TCP/IP address space.
|
initapi()
|
int initapi(int max_sock, char *subtaskid) |
The initapi() call connects your application to the TCP/IP interface.
|
takesocket()
|
int takesocket(struct clientid *client_id, int hisdesc) |
takesocket() acquires a socket from another program.
|
Note:
takesocket()call can only be use in
ARTATRN/ARTATR1
givesocket()call is not supported.
The following lists the supported extended COBOL APIs:
Table 4-8 Supported Extended COBOL APIs
Call | Format | Description |
---|---|---|
ACCEPT
|
CALL 'EZASOKET' USING SOC-FUNCTION S NAME ERRNO RETCODE. |
A server issues the ACCEPT call to accept a connection request from a client.
|
BIND
|
CALL 'EZASOKET' USING SOC-FUNCTION S NAME ERRNO RETCODE. |
In a typical server program, the BIND call follows a SOCKET call and completes the process of creating a new socket.
|
CLOSE
|
CALL 'EZASOKET' USING SOC-FUNCTION S ERRNO RETCODE. |
The CLOSE call shuts down a socket and frees all resources allocated to it.
|
CONNECT
|
CALL 'EZASOKET' USING SOC-FUNCTION S NAME ERRNO RETCODE. |
The CONNECT call is issued by a client to establish a connection between a local socket and a remote socket.
|
FCNTL
|
CALL 'EZASOKET' USING SOC-FUNCTION S COMMAND REQARG ERRNO RETCODE. |
The blocking mode of a socket can either be queried or set to nonblocking using the FNDELAY flag described in the FCNTL call.
|
LISTEN
|
CALL 'EZASOKET' USING SOC-FUNCTION S BACKLOG ERRNO RETCODE. |
The LISTEN call:
|
READ
|
CALL 'EZASOKET' USING SOC-FUNCTION S NBYTE BUF ERRNO RETCODE. |
The READ call reads the data on sockets.
|
RECV
|
CALL 'EZASOKET' USING SOC-FUNCTION S FLAGS NBYTE BUF ERRNO RETCODE. |
The RECV call, like READ , receives data on a socket with descriptor S .
|
RECVFROM
|
CALL 'EZASOKET' USING SOC-FUNCTION S FLAGS NBYTE BUF NAME ERRNO RETCODE. |
The RECVFROM call receives data on a socket with descriptor S and stores it in a buffer.
|
SELECT
|
CALL 'EZASOKET' USING SOC-FUNCTION MAXSOC TIMEOUT RSNDMSK WSNDMSK ESNDMSK RRETMSK WRETMSK ERETMSK ERRNO RETCODE. |
In a process where multiple I/O operations can occur, it is necessary for the program to be able to wait on one or several of the operations to complete. |
SEND
|
CALL 'EZASOKET' USING SOC-FUNCTION S FLAGS NBYTE BUF ERRNO RETCODE. |
The SEND call sends data on a specified connected socket.
|
SENDTO
|
CALL 'EZASOKET' USING SOC-FUNCTION S FLAGS NBYTE BUF NAME ERRNO RETCODE. |
SENDTO is similar to SEND , except that it includes the destination address parameter.
|
SHUTDOWN
|
CALL 'EZASOKET' USING SOC-FUNCTION S HOW ERRNO RETCODE. |
The SHUTDOWN call can be used to close one-way traffic while completing data transfer in the other direction.
|
SOCKET
|
CALL 'EZASOKET' USING SOC-FUNCTION AF SOCTYPE PROTO ERRNO RETCODE. |
The SOCKET call creates an endpoint for communication and returns a socket descriptor representing the endpoint.
|
WRITE
|
CALL 'EZASOKET' USING SOC-FUNCTION S NBYTE BUF ERRNO RETCODE. |
The WRITE call writes data on a connected socket.
|
GETCLIENTID
|
CALL 'EZASOKET' USING SOC-FUNCTION CLIENT ERRNO RETCODE. |
GETCLIENTID call returns the identifier by which the calling application is known to the TCP/IP address space in the calling program.
|
IINITAPI
|
- | The INITAPI calls connect an application to the TCP/IP interface.
|
TAKESOCKET
|
|
The TAKESOCKET call acquires a socket from another program and creates a new socket.
|
Note:
GETSOCKOPT
, IOCTL
, SETSOCKOPT
, and GIVESOCKET
are not supported.
Parent topic: Implementing Using ART for CICS TCP/IP Socket Interface
4.15.2 The Client-Listener-Server Application Set
The image below shows the sequence of CICS Runtime commands and socket calls involved in setup. CICS Runtime commands are prefixed by EXEC CICS
; all other numbered items in this figure are ART for CICS TCP/IP calls.
Figure 4-6 The Client-Listener-Server Application Set

In this case, "Client" might be running TCP/IP under the OS/2 operating system or one of the various UNIX operating systems such as AIX*. "CICS Runtime Server ARTCSKL" and "ARTATRN/ARTATR1" processes both run under ART for CICS TCP/IP.
- Client Call Sequence
- Listener Call Sequence
- User Transaction Running in ARTATRN/ARTATR1 Call Sequence
Parent topic: Implementing Using ART for CICS TCP/IP Socket Interface
4.15.2.1 Client Call Sequence
Table 4-9 Client Call Sequence
Call | Description |
---|---|
(1)INITAPI
|
Connect the CICS application to the TCP/IP interface. Use the MAX-SOCK parameter to specify the maximum number of sockets to be used by the application. |
(2)SOCKET
|
This obtains a socket. You define a socket with 3 parameters:
For CICS TCP/IP, the domain can only be the TCP/IP internet domain ( Passing 0 for the protocol selects the default protocol. If successful, the |
(3)CONNECT
|
Client applications use this to establish a connection with a remote server. You must define the local socket s (obtained above) to be used in this connection and the address and port number of the remote socket. The system supplies the local address, so on successful return from CONNECT , the socket is completely defined, and is associated with a TCP connection (if stream) or UDP connection (if datagram).
|
(4)WRITE
|
This sends the first message to ARTCSKL if it runs in standard mode. The listener in standard mode requires ARTCSKL input format from the client in its first transmission. The message contains the CICS transaction code as its first 4 bytes of data. You must also specify the buffer address and length of the data to be sent.
|
(5)READ/WRITE
|
These calls continue the conversation with the server until it is complete. |
(6)CLOSE
|
This closes a specified socket and so ends the connection. The socket resources are released for other applications. |
Parent topic: The Client-Listener-Server Application Set
4.15.2.2 Listener Call Sequence
The Listener server, ARTCSKL
, is provided as part of ART for CICS TCP/IP. Figure 4-6 shows the calls issued by ARTCSKL
. Your client and server call sequences must be prepared to work with this sequence. For more information, see ART for CICS TCP/IP Listener (ARTCSKL).
Parent topic: The Client-Listener-Server Application Set
4.15.2.3 User Transaction Running in ARTATRN/ARTATR1 Call Sequence
Table 4-10 User Transaction Running in ARTATRN/ARTATR1 Call Sequence
Call | Description |
---|---|
(7)EXEC CICS RETRIEVE |
This retrieves the data passed by the EXEC CICS START command in the Listener program. This data includes the socket descriptor and the Listener client ID as well as optional additional data from the client.
|
(8)TAKESOCKET
|
This acquires the newly created socket from the Listener. The TAKESOCKET parameters must specify the socket descriptor to be acquired and the client ID of the Listener. This information was obtained by the EXEC CICS RETRIEVE command.
|
(9)READ/WRITE
|
The conversation with the client continues until complete. |
(10)CLOSE
|
Terminates the connection and releases the socket resources when finished. |
Parent topic: The Client-Listener-Server Application Set
4.15.3 ART for CICS TCP/IP Listener (ARTCSKL)
This chapter contains the following topics:
Parent topic: Implementing Using ART for CICS TCP/IP Socket Interface
4.15.3.1 Description
ARTCSKL
is the listener of ART for CICS TCP/IP socket and can perform the same functions as CICS TCP/IP listener CSKL. When client request comes, it passes the request to work task for processing, and then waits for another client request. ARTCSKL
can run in standard or enhanced mode; you can set the mode through FORMAT
parameter of ART for CICS TCP/IP socket listener configuration file (listener.desc
).
Note:
ARTCSKL
is the only supported socket listener; user-written listener is not supported.
Figure 4-7 Client-Listener-Server Application Set

As shown in this figure, client A has already established a
connection with the server, which has created a user transaction
run in ARTATRN/ARTATR1
. This allows the server to
process client B's request without waiting for client A's
transaction to complete. More than one user transaction can be
started in this way.
ARTCSKL
is written to make some of this activity go on in parallel, and it has a listening socket that has a port to receive incoming connection requests. When a connection request is received, ARTCSKL
creates a new socket representing the endpoint of this connection and passes it to the applications by way of TCP/IP socket givesocket/takesocket
calls.
The listener performs the following functions.
- It issues appropriate TCP/IP calls to listen on the port
specified in the configuration file and waits for incoming
connection requests issued by clients. The port number must be
configured in ART for CICS TCP/IP socket listener configuration
file (
listener.desc
). - When an incoming connection request arrives, the listener
accepts it and obtains a new socket to pass to the
ARTATRN/ARTATR1
server. - The listener in standard mode starts the user transaction based on information in the first message on the new connection. The format of this information is given in following ARTCSKL Input Format. For the listener in enhanced mode starts the user transaction based on information in ART for CICS TCP/IP socket listener configuration file (
listener.desc
). - It waits for the user transaction to take the new socket and then issues the close call. When this occurs, the receiving application assumes ownership of the socket and the listener has no more interest in it.
Parent topic: ART for CICS TCP/IP Listener (ARTCSKL)
4.15.3.2 ARTCSKL Input Format
ARTCSKL
in standard mode requires the following input format from the client in its first transmission. The client should then wait for a response before sending any subsequent transmissions. Input can be in uppercase or lowercase. The commas are required.
ARTCSKL
in enhanced mode does not need this input format; ART for CICS gets transaction information from its TCP/IP Socket Listener configuration file (listener.desc
).
Figure 4-8 ARTCSKL Input Format

tran
The transaction ID (in uppercase) that the listener is going to start. This field can be one to four characters.
client-in-data
Optional. Application data, the maximum length of this field is a 40-byte character (35 bytes, plus one byte filler and 4 bytes for startup type).
kc
(only KC in uppercase is supported)
Optional. The startup type that for ART for CICS task control.
Only KC
in uppercase is supported, indicating that the
user transaction is started using EXEC CICS START
with
no delay interval. If this field is left blank, startup is
immediate using the task control (KC
).
hhmmss
(not supported)
This is reserved for future use.
Parent topic: ART for CICS TCP/IP Listener (ARTCSKL)
4.15.3.3 ARTCSKL Output Format
There are two different formats for the listener output; one for user transaction started through a standard listener (see Listing 4‑48 below) and one for user transaction started through the enhanced listener (see Listing 4‑49 below).
EXEC CICS RETRIEVE
function to get the data passed to it by the by the listener, should expand the storage it has allocated to contain the IPv6 socket address structure. The LENGTH
specified on the EXEC CICS RETRIEVE
function should reflect the amount of storage allocated to contain the listener output format. The LENGERR
flag is raised if the LENGTH
is smaller than the amount of data sent. Coding a HANDLE
condition allows you to contain this.
Note:
Output through ART for CICS Transient Data Queue (byARTCSKL
) is not supported.
Listing 4‑48 C Structure of the Listener Output Format - Standard Listener
struct sock_standard_tim { /* declaration of structure */
unsigned long give_take_socket; /* Socket being given */
char listen_name[8]; /* Listener name */
char listen_taskid[8]; /* Listener task id */
char client_in_data[35]; /* Client data */
char ote[1]; /* Threadsafe ind. @W1C */
union { /* Clients socket address */
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
} sockaddr_in_parm;
char reserved2[68]; /* reserved */
};
struct sock_enhanced_tim { /* declaration of structure */
unsigned long give_take_socket; /* Socket being given */
char listen_name[8]; /* Listener name */
char listen_taskid[8]; /* Listener task id */
char client_in_data[35]; /* Client-in-data */
char ote[1]; /* Threadsafe ind. @W1C */
union { /* Clients socket address */
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
} sockaddr_in_parm;
char reserved2[68]; /* reserved */
short client_in_data_length; /* Length of data recved */
char client_in_data_2; /* data from Client */
};
Parent topic: ART for CICS TCP/IP Listener (ARTCSKL)
4.15.4 Required Configurations
To use ART for CICS TCP/IP Socket Interface functions, you should
-
Declare resources on ART for CICS TCP/IP socket listener configuration file (
listener.desc
). For more information, seeTCP/IP Socket Listener Configuration File (listener.desc
) in Oracle Tuxedo Application Runtime for CICS Reference Guide. - Configure CICS Runtime server
ARTCSKL
andARTATRN/ARTATR1
. CICS Runtime serverARTCSKL
andARTATRN/ARTATR1
should be configured on the same machine. For more information aboutARTCSKL
andARTATRN/ARTATR1
servers, see Oracle Tuxedo Application Runtime for CICS Reference GuideOracle Tuxedo Application Runtime for CICS Reference Guide
Parent topic: Implementing Using ART for CICS TCP/IP Socket Interface
4.16 Implementing Transferring CICS Regions
In z/OS, ISSUE PASS command is used to transfer CICS regions
without terminal reconnection; users can also implement data
transference using LOGONMSG
. When ISSUE
PASS
is invoked, the GMTRAN
of
destination region will be invoked by force.
ART CICS also supports the above scenario. Following configurations are required.
- Configuring ARTSRM Server
- Configuring Environment Variables
- CICS Runtime Configuration Files Declaration
- Logon ART CICS
Parent topic: Implementing CICS Applications
4.16.1 Configuring ARTSRM Server
It is required to configure ARTSRM. For more information, please refer to ARTSRM Configuration.
Parent topic: Implementing Transferring CICS Regions
4.16.2 Configuring Environment Variables
It is required to set environment variable ISC_ENABLE to YES. For more information, please refer to ISC_ENABLE.
Parent topic: Implementing Transferring CICS Regions
4.16.3 CICS Runtime Configuration Files Declaration
The following configurations are required:
- system.desc
- transactions.desc and programs.desc
- terminals.desc (Optional)
- UBB Declaration
- Environment Variable Declaration
Parent topic: Implementing Transferring CICS Regions
4.16.3.1 system.desc
system.desc
defines system initialization parameters of CICS regions.
[kixr]
APPLID=DBDCkixR
INITPARM=(ASINTP='Hello world')
[kixl]
APPLID=DBDCkixL
INITPARM=(ASINTP='Hello world')
GMTRAN=ISSS
LGNMSG=YES
In this example, two CICS regions are defined. SYSID
are specified as kixr
and kixl
respectively. On one hand, kixl
specifies GMTRAN=ISSS
; when users log in DBDCkixL
, transaction are invoked automatically. On the other hand, kixr
doesn't specify GMTRAN
; default CSGM
is used. LGNMSG
specified in kixl
enables data transference function using ISSUE
PASS
in EXTRACT LOGONMSG
. For more information about system.desc
, please refer to System Configuration File.
Parent topic: CICS Runtime Configuration Files Declaration
4.16.3.2 transactions.desc and programs.desc
If GMTRAN
(not other system transactions, such as
CSGM
, CESN
, or CESF
) is
defined, transactions/programs should be configured in
transactions.desc/programs.desc
, and then loaded by
ARTSTRN/ARTSTR1
. For more information about
transactions.desc/programs.desc
, please refer to
Transaction Configuration File and Programs Configuration
File.
transactions.desc:
ISSS;SIMPAPPB;pg for simpapp;ISSPASSS
programs.desc:
ISSPASSS;SIMPAPPB;pg for simpapp;COBOL; ;ENABLED
Parent topic: CICS Runtime Configuration Files Declaration
4.16.3.3 terminals.desc (Optional)
This configuration file defines terminal
available to ART CICS; it is mandatory for using static LUNAME
to logon ART CICS. For more information about terminals.desc
, please refer to Terminal Configuration File.
Listing 4‑52 Example for terminals.desc Configurations
[terminal]
name=0001
netname=CICS0001
group=SIMPAPP
[terminal]
name=0002
netname=CICS0002
group=SIMPAPP
Parent topic: CICS Runtime Configuration Files Declaration
4.16.3.4 UBB Declaration
To implement transferring CICS regions, the following requirements should be met.
TMQUEUE
should be configured for each CICS region.ARTLOGN
should be configured.- At least one
ARTCNX
should be configured for each CICS region. - DDR published by
ARTCNX
should be configured (an example is provided as below).
Listing 4‑53 Example for DDR Configurations
GRP00
GRPNO=10
ENVFILE="/home2/work9/demo/config/tux/envfile"
GRP01
GRPNO=11
ENVFILE="/home2/work9/demo/config/tux/envfile"
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
GQUEKIXR
GRPNO=1010
TMSNAME=TMS_QM TMSCOUNT=2
OPENINFO="TUXEDO/QM: /home2/work9/demo/sysfile/kixrqspace:DBDCkixR"
GQUEKIXL
GRPNO=1020
TMSNAME=TMS_QM TMSCOUNT=2
OPENINFO="TUXEDO/QM: /home2/work9/demo/sysfile/kixlqspace:DBDCkixL"
...
TMQUEUE
SRVGRP=GQUEKIXR
SRVID=1110
RESTART=Y GRACE=0 CONV=N MAXGEN=10
CLOPT="-s DBDCkixR:TMQUEUE -- "
TMQUEUE
SRVGRP=GQUEKIXL
SRVID=1210
RESTART=Y GRACE=0 CONV=N MAXGEN=10
CLOPT="-s DBDCkixL:TMQUEUE -- "
ARTCNX
SRVGRP=GRP01
SRVID=15
CONV=Y
MIN=1 MAX=1 RQADDR=QCNX015 REPLYQ=Y
CLOPT="-o /home2/work9/demo /LOGS/sysout/stdout_cnx_15 -e /home2/work9/demo /LOGS/sysout/stderr_cnx_15 -r -- -s KIXR -l SIMPAPP"
ARTCNX
SRVGRP=GRP02
SRVID=16
CONV=Y
MIN=1 MAX=1 RQADDR=QCNX016 REPLYQ=Y
CLOPT="-o /home2/work9/demo /sysout/stdout_cnx_16 -e /home2/work9/demo /LOGS/sysout/stderr_cnx_16 -r -- -s KIXL -l SIMPAPP"
ARTLOGN
SRVGRP=GRP00
SRVID=18
CONV=Y
MIN=1 MAX=1 RQADDR=QLGN018 REPLYQ=Y
CLOPT="-o /home2/work9/demo /LOGS/sysout/stdout_logn -e /home2/work9/demo /LOGS/sysout/stderr_logn -r --"
...
*SERVICES
DEFAULT: SVCTIMEOUT=0 TRANTIME=80
connect ROUTING=CICSISC
disconnect ROUTING=CICSISC
inquire ROUTING=CICSISC
update ROUTING=CICSISC
CSGM ROUTING=CICSISC
CESN ROUTING=CICSISC
CESF ROUTING=CICSISC
authfail ROUTING=CICSISC
*ROUTING
CICSISC FIELD=CX_APPLID RANGES="'DBDCKIXR':GRP01,'DBDCKIXL':GRP02,*:GRP01" BUFTYPE="FML32"
Note:
DDR configuration in UBB is mandatory. DDR routes login request to ARTCNX
in different CICS regions by FML
field CX_APPLID
The APPLID
configured in ROUTING RANGES
should be in upper case.
ART reserved FML FIELD ID
from 8100 to 8191 for DDR.
Parent topic: CICS Runtime Configuration Files Declaration
4.16.3.5 Environment Variable Declaration
Set environment variable ISC_ENABLE=YES
to transfer
CICS regions.
Use Tuxedo tmadmin psr
and tmadmin psc
to check whether ARTLOGN
starts successfully.
ARTCNX
and TMQUEUE
are included in each
region.
Listing 4‑54 Example for Environment Variable Declaration
/home2/work9/demo> tmadmin> tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
BBL 34790 KIXR 0 55 2750 ( IDLE )
TMS_QM GQUEKIXL_T+ GQUEKIXL 30001 0 0 ( IDLE )
TMS_QM GQUEKIXR_T+ GQUEKIXR 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEKIXL_T+ GQUEKIXL 30002 0 0 ( IDLE )
TMS_QM GQUEKIXR_T+ GQUEKIXR 30002 0 0 ( IDLE )
TMQUEUE 01020.01210 GQUEKIXL 1210 1 50 ( IDLE )
TMQUEUE 01010.01110 GQUEKIXR 1110 2 100 ( IDLE )
ARTADM 00011.00010 GRP01 10 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTCNX QCNX016 GRP02 16 0 0 ( IDLE )
ARTLOGN QLGN018 GRP00 18 0 0 ( IDLE )
ARTSTRN QKIX110 GRP12 20 0 0 ( IDLE )
...
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
DBDCkixL TMQUEUE TMQUEUE GQUEK+ 1210 KIXR 1 AVAIL
DBDCkixR TMQUEUE TMQUEUE GQUEK+ 1110 KIXR 2 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
update cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
inquire cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
update cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
inquire cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
delsess lognsvc ARTLOGN GRP00 18 KIXR 0 AVAIL
gensess lognsvc ARTLOGN GRP00 18 KIXR 0 AVAIL
ART_LOGON lognsvc ARTLOGN GRP00 18 KIXR 0 AVAIL
ISSS strsvc ARTSTRN GRP12 25 KIXR 0 AVAIL
...
Parent topic: CICS Runtime Configuration Files Declaration
4.16.4 Logon ART CICS
After a successful boot up, users can connect to ART CICS, and
then logon screen prompts out for users to specify the CICS region
(APPLID
) to logon.
Figure 4-9 Logon Screen

Parent topic: Implementing Transferring CICS Regions
4.17 Implementing Intersystem Communication
ART CICS Runtime supports implementing two z/OS intercommunication features:
- Implementing Distributed Transaction Processing (DTP)
- Implementing Asynchronous Processing
- Implementing Synchronous Processing
Parent topic: Implementing CICS Applications
4.17.1 Implementing Distributed Transaction Processing (DTP)
ART CICS supports DTP connections in multiple ART CICS regions through APPC mapped and LUTYPE6.1 protocol. On this view, COBOL applications using DTP (APPC/LUTYPE6.1) verbs can be deployed to ART CICS directly after being translated by Oracle Tuxedo Application Rehosting Workbench.
ART CICS also supports integration with Oracle TMA to enable DTP connections between ART CICS region and Mainframe CICS region through APPC. Following is a typical end-to-end user case.
Figure 4-10 Typical End-to-End User Case

In this scenario, there are three ART CICS regions,
KIXA
, KIXB
, and KIXC
, among
which KIXA and KIXB communicates with each other via APPC protocol,
and KIXA and KIXC communicates with each other via LU61
protocol.
Besides, there is another CICS region called CICA on Mainframe, which communicates with either KIXA or KIXB via APPC protocol.
As shown in figure above, the conversations occur in these regions are:
- Conversations among ART CICS regions
- APPC conversation, issued from the terminal in KIXA, to KIXB
- KVA0 KIXB KVA5
- KVA2 KIXB KVA5
- LU61 conversation, issued from the terminal in KIXA, to KIXC
- RV60 KIXC RV65
- APPC conversation, issued from the terminal in KIXA, to KIXB
- Conversations between ART CICS region and Mainframe CICS region through TMA
- APPC outbound conversation issued from the terminal in KIXA to CICA
- KVA0 CICA KVA5
- KVA2 CICA KVA5
- APPC inbound conversation issued from the terminal in CICA to KIXB
- KVA0 CRM1 KVA5
- KVA2 CRM1 KVA5
Note:
CRM1 is a connection from CICA to TMA LU - APPC outbound conversation issued from the terminal in KIXA to CICA
Parent topic: Implementing Intersystem Communication
4.17.1.1 Configurations
Following are configurations required for DTP connections to work in this scenario.
- CICS Region Definitions in system.desc
- Connections Definitions in connections.desc
- Programs Definitions in programs.desc
- Transactions Definitions in transactions.desc
- UBBCONFIG Configuration
- DMCONFIG Configuration
Parent topic: Implementing Distributed Transaction Processing (DTP)
4.17.1.1.1 CICS Region Definitions in system.desc
Following CICS regions are defined in the
system.desc
configuration file:
- Three ART CICS regions on open system
-
KIXA
:APPC/LU61
front end -
KIXB
:APPC
back end -
KIXC
:LU61
back end
-
- One CICS region on Mainframe:
-
CICA
:APPC
front / back end
-
For more information about system.desc
, refer to System Configuration File..
Parent topic: Configurations
4.17.1.1.2 Connections Definitions in connections.desc
Following connections are defined in the
connection.desc
configuration file:
- Three connections are defined in KIXA:
- Three connections are defined in
KIXA
: -
KIXB
: connects toKIXB
, protocol isAPPC
-
KIXC
: connects toKIXC
, protocol isLU61
-
CICA
: connects toCICA
, protocol isAPPC
- Three connections are defined in
- Two connections are defined in
KIXB
:-
KIXA
: connects toKIXA
, protocol isAPPC
-
CICA
: connects toCICA
, protocol isAPPC
-
- One connection is defined in
KIXC
:-
KIXA
: connects toKIXA
, protocol isLU61
Note:
Connection definition for CICA is not presented on local because CICA is an external region.connections.desc
, refer to Connection Configuration File.. -
Parent topic: Configurations
4.17.1.1.3 Programs Definitions in programs.desc
Following programs are defined in the programs.desc
configuration file:
- Two programs in
KIXA
:-
COVSATMC
:APPC
client with view32 -
RVS61C
:LU61
client
-
- One program in
KIXB
:-
COVSATMS
:APPC
server with view32
-
- One program in
KIXC
:- One program in
KIXC
:-
RVS61S
:LU61
server
-
- One program in
For more information about programs.desc
, .Programs Configuration File.
Parent topic: Configurations
4.17.1.1.4 Transactions Definitions in transactions.desc
Following transactions are defined in the
transactions.desc
configuration file:
- Three transactions in
KIXA
:-
KVA0
:APPC
client onCOVSATMC
, sync level 0 -
KVA2
:APPC
client onCOVSATMC
, sync level 2 -
RV60
:LU61
client onRVS61C
-
- One transaction in
KIXB
:-
KVA5
:APPC
server onCOVSATMS
-
- One transaction in
KIXC
:RV65
:LU61
server onRVS61S
For more information about transactions.desc
, refer to Transaction Configuration File..
Parent topic: Configurations
4.17.1.1.5 UBBCONFIG Configuration
Following are configured in the UBBCONFIG
file:
- One
ARTSTRN
server forKIXA
, with three services defined intransactions.desc
:KVA0
,KVA2
, andRV60
- One
ARTCTRN
server forKIXC
, with one service defined intransactions.desc
:KIXC_RV65
-
GWSNAX
gateway for TMA integration (forCICA
)
ARTSTRN
and ARTCTRN
, refer to CICS Runtime Servers.
Note:
ForARTCTRN
configurations in UBBCONFIG
, it is required to specify CONV=Y
.
Parent topic: Configurations
4.17.1.1.6 DMCONFIG Configuration
Following are configured in the DMCONFIG
file:
- Remote domain definition for TMA integration (for
CICA
) - Import the
CICA_KVA5
service from external - Export the
KIXB_KVA5
service to external
Parent topic: Configurations
4.17.2 Implementing Asynchronous Processing
On z/OS, asynchronous processing refers to a START
command that starts a transaction on a remote system. ART CICS
Runtime supports implementing this feature using the
START
command with a SYSID
option.
The following sections describe the configuration tasks you need to perform:
Parent topic: Implementing Intersystem Communication
4.17.2.1 Defining Regions in system.desc
Define your CICS regions in the system.desc
configuration file. Following is an example that defines two
regions, KIXR
and KIXX
, with respective
application definitions, DBDCkixR
and
DBDCKIXX
.
Listing 4‑55 Example of Defining Regions in system.desc
[KIXR]
APPLID=DBDCkixR
INITPARM=(ASINTP='Hello world')
[KIXX]
APPLID=DBDCKIXX
INITPARM=(ASINTP='Hello worldL')
Parent topic: Implementing Asynchronous Processing
4.17.2.2 Configuring ARTSRM Server
It is required to configure ARTSRM server. For more information, please refer to ARTSRM Configuration.
Parent topic: Implementing Asynchronous Processing
4.17.2.3 Modifying the UBBCONFIG File
It is required to configure ARTATRN
servers in the
UBBCONFIG
file for each CICS region.
Suppose you have defined two regions, KIXR
and KIXX
, as shown in the Listing 4-55 of the topic Defining Regions in system.desc. Following is a configuration example.
…
*SERVERS
…
ARTATRN
SRVGRP=GRP02
SRVID=30
CONV=N
MIN=1 MAX=1 RQADDR=QKIXATR REPLYQ=Y
CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_atrn -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS /sysout/stderr_atrn -r -- -s KIXR -l SIMPAPP"
ARTSRM SRVGRP= GRPX SRVID=36 MIN=1 MAX=1 RQADDR= QKIXATR REPLYQ=Y CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_srm -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP "
ARTATRN
SRVGRP=GRPX
SRVID=35
CONV=N
MIN=1 MAX=1 RQADDR=QKIXATRX REPLYQ=Y
CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_atrn -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS /sysout/stderr_atrn -r -- -s KIXX -l SIMPAPP"
ARTSRM SRVGRP= GRPX SRVID=36 MIN=1 MAX=1 RQADDR= QKIXATRX REPLYQ=Y CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_srm -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stderr_srm -r -- -s KIXX -l SIMPAPP "
…
*SERVICES
Parent topic: Implementing Asynchronous Processing
4.17.3 Implementing Synchronous Processing
ART CICS Runtime supports invoking a synchronous transaction, which resides on a remote CICS system. To implement this feature, the following configurations are required:
Parent topic: Implementing Intersystem Communication
4.17.3.1 Configuring Environment Variables
Set the ISC_ENABLE
environment variable to
YES
to enable the synchronous processing feature.
Parent topic: Implementing Synchronous Processing
4.17.3.2 Defining Regions in system.desc
Define your CICS regions in system.desc
configuration file. Following is an example that defines two
regions, KIXR
and KIXX
, with respective
application definitions, DBDCKIXR
and
DBDCKIXX
.
Listing 4‑57 Example of Defining Regions in system.desc
[KIXR]
APPLID=DBDCKIXR
[KIXX]
APPLID=DBDCKIXX
Parent topic: Implementing Synchronous Processing
4.17.3.3 Modifying the UBBCONFIG File
Make the following configurations in the UBBCONFIG file:
ARTSTRN
servers for each CICS region- Configure the DDR routing definition appropriately
Suppose you have defined two regions, KIXR
and KIXX
, as shown in Listing 4‑57 of the topic Defining Regions in system.desc
Following is a configuration example:
Listing 4‑58 Example of Modifying UBBCONFIG
*GROUPS
GRPKIXR
GRPNO=11
TMSNAME="TMS_ORA"
TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/yfli/yfli+SqlNet=artkix+SesTm=600+LogDir=/LOGS/xa+DbgFl=0x20"
GRPKIXX
GRPNO=12
TMSNAME="TMS_ORA"
TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/yfli/yfli+SqlNet=artkix+SesTm=600+LogDir=/LOGS/xa+DbgFl=0x20"
*SERVERS
ARTSTRN
SRVGRP=GRPKIXR
SRVID=1101
CONV=Y
MIN=1 MAX=1 RQADDR=QKIXSTRR REPLYQ=Y
CLOPT="-- -s KIXR -l SIMPAPP"
ARTSTRN
SRVGRP=GRPKIXX
SRVID=1201
CONV=Y
MIN=1 MAX=1 RQADDR=QKIXSTRX REPLYQ=Y
CLOPT="-- -s KIXX -l SIMPAPP"
*SERVICES
DEFAULT: SVCTIMEOUT=0 TRANTIME=80
SB00 ROUTING=APPLID
SB01 ROUTING=APPLID
SB02 ROUTING=APPLID
SB03 ROUTING=APPLID
*ROUTING
APPLID FIELD=CX_APPLID RANGES="'DBDCKIXX':GRPKIXX,*:GRPKIXR" BUFTYPE="FML32"
In this example, requests from KIXX
region are
routed to ARTSTRN
in GRPKIXX
, and all
other requests are routed to ARTSTRN
in
GRPKIXR
.
Parent topic: Implementing Synchronous Processing
4.18 Implementing Submitting JCL/KSH Online
The following topics describe how to sumbit a JCL/KSH job online:
Parent topic: Implementing CICS Applications
4.18.1 Submitting JCL/KSH Job Online
On z/OS, CICS programs can submit JCL/KSH job by the
WRITEQ TD
command and pass the JCL/KSH job statements
to JES internal reader by TDQ. ART CICS Runtime supports this
function by using the special TDQ definition and the internal
service advertised by TuxJES system.
Before using this feature, make sure ART Batch Runtime and TuxJES environment is set up. For more information, refer to Using Tuxedo Job Enqueueing Service (TuxJES).
Parent topic: Implementing Submitting JCL/KSH Online
4.18.1.1 Configuring the UBBCONFIG File
The submitted JCL/KSH job statements are transferred to TuxJES
by the ARTTDQ server. To activate this server, configure
ARTTDQ
in the *SERVERS
section in the
UBBCONFIG
file. Following is an example.
Listing 4‑59 Example of Configuring ARTTDQ in UBBCONFIG
*SERVERS
…
ARTTDQ
SRVGRP=GRP02
SRVID=50
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -L LIST1"
Parent topic: Submitting JCL/KSH Job Online
4.18.1.2 Configuring tdqextra.desc
To implement the submitting JCL/KSH function, you need to
specify the following fields in the tdqextra.desc
configuration file:
BLOCKFORMAT:
An unblocked or blocked record format for the extrapartition queues that are used as the interface to the TuxJES internal reader.INTRDR
: Set the TDQ definition as the internal reader.
For example:
IRDR;SIMPAPP;ON LINE SUBMIT JOB;EXTRAQJ; ; ; ;V; ;32767;OUTPUT;DSN; ; ;Y;U;
Where:
Y
Indicates this is an internal reader TDQ.
U
UNBLOCKED
.
Note:
- For JCL job file: To submit a JCL job to TuxJES, one JCL end flag "/*EOF" needs to be written to TDQ INTRDR. If
BLOCKFORMAT=B
intdqextra.desc
is set for TDQ, two end flags "/*EOF
" need to be written to TDQ. - For KSH job file: To submit a KSH job to TuxJES, one KSH end flag "
#EOF
" needs to be written to TDQ.
For more information, refer to TD Queue Extra Partition Configuration File in Oracle Tuxedo Application Runtime for CICS Reference Guide.
Parent topic: Submitting JCL/KSH Job Online
4.18.2 Submitting JCL/KSH Job Online by SPOOL
On z/OS, CICS programs can submit JCL/KSH job by
SPOOLWRITE
command and pass the JCL/KSH job statements
to JES internal reader by SPOOL
. ART for CICS supports
this function by using the internal service advertised by TuxJES
system.
Before using this feature, make sure ART Batch Runtime and TuxJES environment is set up. For more information, refer to Using Tuxedo Job Enqueueing Service (TuxJES).
Note:
You should write end flag toSPOOL
file to submit JCL/KSH job; otherwise, the job file written to SPOOL
will be submitted automatically to TuxJES as a JCL job file when EXEC CICS SPOOLCLOSE
is used.
- For JCL job file: To submit a JCL job to TuxJES, one JCL end flag "
/*EOF
" needs to be written toSPOOL
file. - For KSH job file: To submit a KSH job to TuxJES, one KSH end flag "
#EOF
" needs to be written toSPOOL
file.
Parent topic: Implementing Submitting JCL/KSH Online
4.18.2.1 Configuring SPOOL Related Environment Variables
Configure the following environment variables:
KIX_SPOOL_JOB_AUTO_SUBMIT=YES
KIX_SPOOL_OUTPUT_DIR=${APPHOME}/spool
For more information, see KIX_SPOOL_JOB_AUTO_SUBMIT and KIX_SPOOL_OUTPUT_DIR in Oracle Tuxedo Application Runtime for CICS Reference Guide.
Parent topic: Submitting JCL/KSH Job Online by SPOOL
4.19 Implementing ART for CICS Control Utility
ART for CICS provides artcicsutil
utility to track and dominate the CICS related resources from ART for Batch. It's always triggered by ART for Batch jobs. With the single command, ART for Batch jobs can open/close files, enable/disable CICS transactions, initiate CICS transactions, and etc.
artcicsutil
provides two modes of commend set to control ART for CICS. They are end-to-end mode (IPCP commend set and CAFC commend set) and interactive mode (interactive commend set). For all supported subcommands for each commend set, see artcicsutil in Oracle Tuxedo Application Runtime for CICS Reference Guide.
Note:
artcicsutil
must work together with the ART for CICS serverARTSRM
.artcicsutil
is the trigger to centralize the CICS resources related operations;ARTSRM
is the portal of each CICS region in ART for CICS, andARTSRM
takes charge of all operation executions.- Before using this feature, make sure ART Batch Runtime and TuxJES environment is set up. For more information, see Using Tuxedo Job Enqueueing Service (TuxJES)
There are some typical use cases for implementing ART for CICS Control Utility.
- Use Case 1: Implementing ART for CICS Control Utility in End-to-End Mode (IPCP Commend Set)
- Use Case 2: Implementing ART for CICS Control Utility in Interactive Mode (Interactive Command Set)
Parent topic: Implementing CICS Applications
4.19.1 Use Case 1: Implementing ART for CICS Control Utility in End-to-End Mode (IPCP Commend Set)
Follow this work flow to implement artcicsutil utility in End-to-End mode (use IPCP commend set here for example).
- Using ART for Workbench to convert JCL to KSH
- Configuring UBBCONFIG in CICS Runtime Domain
- Configuring Resource Files
- Configuring DMCONFIG in ART for CICS Domain and ART for Batch Domain
Parent topic: Implementing ART for CICS Control Utility
4.19.1.1 Using ART for Workbench to convert JCL to KSH
Suppose you have a JCL file containing IPCP commend set (see the following listing for a sample).
//IPCPEXP4 JOB 0001,'IPCP',CLASS=A
//IPCP01 EXEC PGM=IPCPBTCH,PARM='CICS CC ONLY=CICS3'
//STEPLIB DD DSN=IPCPvn.LOADLIB,DISP=SHR
//IPCPCDS DD DSN=IPCPvn.COMMAND.DATASET,DISP=SHR
//AUDIT DD SYSOUT=X
//SYSIN DD *
INIT KC HEL1
In this JCL, IPCP program IPCPBTCH
is issued inside (EXEC
PGM=IPCPBTCH
), the target CICS region is set as CICS3
(EXEC PARM='CICS CC ONLY=CICS3'
), and CICS transaction
HEL1
is started in the target CICS region (INIT KC HEL1
).
In this case, the IPCP subcommands can be issued by both EXEC PARM
and JCL
SYSIN DD
.
You should use ART for Workbench to convert this JCL file to the following KSH file.
Listing 4‑61 KSH Converted by ART for Workbench
#!/usr/bin/ksh
m_JobBegin -j IPCPEXP4 -s START -v 2.0 -c A
while true ;
do
m_PhaseBegin
case ${CURRENT_LABEL} in
(START)
# ********************************************************//
JUMP_LABEL= IPCPEXP4
;;
(IPCPEXP4)
m_FileAssign -d SHR IPCPCDS ${DATA}/XXXX.IPCP.CICS.IPCPCNTL
m_OutputAssign -c "*" AUDIT
m_FileAssign -i SYSIN
artcicsutil -t IPCPBTCH "CICS CC ONLY=CICS3"
JUMP_LABEL=END_JOB
;;
(END_JOB)
break
;;
(*)
m_RcSet ${MT_RC_ABORT:-S999} "Unknown label : ${CURRENT_LABEL}"
break
;;
esac
m_PhaseEnd
done
m_JobEnd
#@(#)---------------------------------------------------------------------
In this KSH (note artcicsutil
-tIPCPBTCH "CICS CC ONLY=CICS3"
subcommand), the program IPCPBTCH
is translated to artcicsutil
, EXEC PARM
is passed to artcicsutil
as its positional parameter, and all other subcommands), (included in SYSIN DD
) are stored by ART for Batch as a local file that artcicsutil can directly access. -t
option is used to specify the type of command set; its value is set to IPCPBTCH
(IPCP command set).
4.19.1.2 Configuring UBBCONFIG in CICS Runtime Domain
In UBBCONFIG
, set the following servers.
-
ARTSRM
(mandatory)ARTSRM
is the proxy ofartcicsutil
utility and thus must be configured in theUBBCONFIG
. The corresponding System Configuration File (system.desc
) should be configured as well; see Configuring Resource Files for more information.ARTSRM
must be configured in every ART for CICS region. -
ARTATRN
(optional)
If command INIT KC
or ENAB/DISA KC
in IPCP commend set or STRT
in CAFC commend set is used in your JCL file, you should set ARTATRN
in UBBCONFIG
. You should also define the target transaction in the transaction configuration file (transactions.desc
) and programs configuration file (programs.desc
); see Configuring Resource Files for more information.
If you use ARTATRN
, ARTATRN
must be configured in every ART for CICS region.
See the following listing as an example.where the ARTSRM
server is mandatory, because all requests that artcicsutil
issues are received by ARTSRM
at first, and then ARTSRM
acts as the proxy to ask the target CICS server to handle these requests. ARTATRN
server is also specified because INIT KC
subcommand is used in JCL (see Listing 4‑60 of the topic Using ART for Workbench to convert JCL to KSH) the target CICS transaction of INIT KC
subcommand is the one that is just deployed at ARTATRN
server.
*SERVERS
...
ARTATRN
SRVGRP=GRP02
SRVID=30
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/cics/LOGS/sysout/stdout_atrn -e /home2/work9/demo/cics/LOGS/sysout/stderr_atrn -r -- -s KIXR -l SIMPAPP"
ARTSRM
SRVGRP=GRP02
SRVID=25
CLOPT="-o /home2/work9/demo/cics/LOGS/sysout/stdout_srm -e /home2/work9/demo/cics/LOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP"
...
4.19.1.3 Configuring Resource Files
Configure the following resource files:
- System Configuration File (
system.desc
)This is mandatory. See The listing below for an example. CICS Runtime region
CICS3
is configured, for thisCICS3
is specified in your JCL file (seeEXEC PGM=IPCPBTCH,PARM='CICS CC ONLY=CICS3'
subcommand in Listing 4‑60 of the topic Using ART for Workbench to convert JCL to KSH. - Transaction Configuration File (
transactions.desc
) and Programs Configuration File (programs.desc
)They are optional. If command
INIT KC
in IPCP commend set orSTRT
in CAFC commend set is used in your JCL file,ARTATRN
is required; you should define the target transaction in transaction configuration file (transactions.desc
) and programs configuration file (programs.desc
). - VSAM Configuration File (
desc.vsam
)This is optional. If command
OPEN/CLOS DB
in IPCP commend set is used in your JCL file, you should configure this VSAM configuration file (desc.vsam
).
Listing 4‑63 Example of Configuring System Configuration File
[KIXA]
APPLID=CICS1
[KIXB]
APPLID=CICS2
[KIXR]
APPLID=CICS3
4.19.1.4 Configuring DMCONFIG in ART for CICS Domain and ART for Batch Domain
For end-to-end mode, you should configure DMCONFIG
. The key service entry, $(APPLID)_CICS_CTRL
, should be exported/imported crossing ART for CICS domain (Listing 4‑64, note the CICS3_CICS_CTRL
in bold) and ART for Batch domain (Listing 4‑65, note the CICS3_CICS_CTRL
in bold). This service is advertised by each configured ARTSRM
(ARTSRM
is configured in every ART for CICS region); the prefix CICS3
is the APPLID
of target CICS region.
Note:
${APPLID}
here should be in uppercase.
Listing 4‑64 Example of Configuring DMCONFIG in ART for CICS Domain
*DM_RESOURCES
VERSION=U22
*DM_LOCAL
CICS1 GWGRP="GWGRP1"
TYPE=TDOMAIN
ACCESSPOINTID="CICSAP1"
DMTLOGDEV="/home/work9/demo/cics/config/tux/DMTLOG1"
DMTLOGNAME="DMTLOG1"
CONNECTION_POLICY="ON_STARTUP"
*DM_REMOTE
#
BATCH1
TYPE=TDOMAIN
ACCESSPOINTID="BATCHAP1"
*DM_TDOMAIN
CICS1 NWADDR="//optiplex:8301"
BATCH1 NWADDR="//optiplex:8401"
*DM_EXPORT
CICS3_CICS_CTRL RACCESSPOINT=BATCH1
*DM_IMPORT
Listing 4‑65 Example of Configuring DMCONFIG in ART for Batch Domain
*DM_RESOURCES
VERSION=U22
*DM_LOCAL
BATCH1 GWGRP="GWGRP1"
TYPE=TDOMAIN
ACCESSPOINTID="BATCHAP1"
DMTLOGDEV="/home/work9/demo/jes/config/tux/DMTLOG1"
DMTLOGNAME="DMTLOG1"
CONNECTION_POLICY="ON_STARTUP"
*DM_REMOTE
#
CICS1 TYPE=TDOMAIN
ACCESSPOINTID="CICSAP1"
*DM_TDOMAIN
CICS1 NWADDR="//optiplex:8301"
BATCH1 NWADDR="//optiplex:8401"
*DM_EXPORT
*DM_IMPORT
CICS3_CICS_CTRL
*DM_ROUTING
4.19.2 Use Case 2: Implementing ART for CICS Control Utility in Interactive Mode (Interactive Command Set)
This use case describes the way to invoke
artcicsutil
utility in interactive mode. In this
example, transaction EQDQ
is started.
> artcicsutil -t native
> start EQDQ
start trans:
transaction ' EQDQ'
trmid ''
from ''
start trans done.
Parent topic: Implementing ART for CICS Control Utility
4.20 Implementing Printing CICS Runtime Applications Data
ART CICS Runtime supports printing applications data to a CICS 3270 printer using two methods:
- General Configurations
- Implementing Printing with a START Command
- Implementing Printing with Transient Data
Parent topic: Implementing CICS Applications
4.20.1 General Configurations
Before using either of the methods to implement printing, you need to perform the following configuration tasks:
- Configure the printer terminal definition in
typeterms.desc
. Following is an example:Listing 4‑67 Example of Configuring Printer Terminal Definition in typeterms.desc
[typeterm] name=IBM-3287-1 color=YES defscreencolumn=80 defscreenrow=24 description="IBM 327x family printer" hilight=YES logonmsg=NO outline=NO swastatus=ENABLED uctran=NO userarealen=100
Note:
ART CICS does not support the alternate size for printer, so the following attributes must not be defined intypeterms.desc
for IBM-3287-1:scrnsize=alternate
,altscreenrow
, andaltscreencolumn
- Configure the printer transactions to the class that will never be executed concurrently:
For example:
TRCLASS1;UNIGRP; A tranclass bidon for UNIGRP; 1
- Configure the printer program definition to the ARTSTR1 program group in
transactions.desc
.For example:
PRNT;UNIGRP;pg for ARTSTR1; PRNTPROG; ; ; ; ; ; ;ENABLED; ; ; ;TRCLASS1
- Configure the printer program to the ARTSTR1 program group in
programs.desc
.For example:
PRNTPROG;UNIGRP;pg for UNIGRP;COBOL; ;ENABLED
- Define a printer terminal in
terminals.desc
to indicate the printerLUNAME
andTERMID
For example:
[terminal]
name=PRT1
netname=CICSPRT1
group=UNIGRP
- Configure the printer program group to the ARTSTR1 program group using
CLOPT -l
option inUBBCONFIG
For example:
CLOPT="-o stdout_str1 -e stderr_str1 -r -- -s KIXR - UNIGRP"
- Do one of the following to specify a printer device:
- If you use a wc3270 client as the printer terminal, configure the terminal type to
IBM-3287-1
For example:
-tn IBM-3287-1
- If you use a PCOM client as the printer terminal, configure a
LUNAME
in the Telnet3270 interface and set the Session Type to Printer in the Session Parameters interface, as shown in following figures:
- If you use a wc3270 client as the printer terminal, configure the terminal type to
Figure 4-11 Configure a LUNAME

Figure 4-12 Setting the PCOM Session Type

Parent topic: Implementing Printing CICS Runtime Applications Data
4.20.2 Implementing Printing with a START Command
The following figure depicts Printing with a START Command
Figure 4-13 Printing with a START Command

The figure above shows a typical user case. The procedure to implement printing with a START
command in such scenario are as follows:
- Configure the Pcomm terminal to connect to an external printer device.
- Establish the connection from the Printer terminal to ART TCP
with the
LUNAME
you specified previously. - Establish the connection from the Display terminal to ART CICS, and start a transaction A from the Display terminal.
- Transaction A invokes an asynchronous transaction B with the
START
command, and specifies theTERMID
as one of theLUNAME
defined previously. - Transaction B invokes a BMS or terminal control command, then sends the command application data to the printer terminal, and finally the Printer terminal sends the print job to the connected external printer device for printing.
Parent topic: Implementing Printing CICS Runtime Applications Data
4.20.3 Implementing Printing with Transient Data
To implement printing with transient data, do the following:
- Configure
ATIFACILITY
andFACILITYID
intdqintra.desc
, as follows:Listing 4‑68 Example of Configuring ATIFACILITY and FACILITYID in tdqintra.desc# TDQUEUE;GROUP;DESCRIPTION;RECOVSTATUS;TRANSID;TRIGGERLEVEL;USERID;WAIT;WAITACTION;QSPACENAME;TRT;ATIFACILITY;FACILITYID MTI1;SIMPAPP;TDQ FOR PRINTER;;BBBB;1;;;;;;T;PRT2
- Define PRT2 in
terminals.desc
For example:[terminal] name=PRT2 netname=CICSPRT2 group=UNIGRP
- After ART CICS is started, establish the connection between
PCOMM (printer with the specified
LUNAME
=CICSPRT2
) and ART CICS. - For ATI users, configure a /Q as follows:
qcreate MTI1 fifo none 2 30 1m 0m "TDI_TRIGGER -q queue_name -d space_name"
When the ATI trigger level is reached,
TDI_TRIGGER
client will be invoked, and the-q
and-d
options will notify ART CICS to start a transaction associatedqueue_name
andspace_name
on the terminalPRT2
.
Parent topic: Implementing Printing CICS Runtime Applications Data
4.21 Implementing Invoking Web Services from CICS Applications
ART CICS provides support for invoking web services from CICS
applications using the INVOKE WEBSERVICE
command. To
implement this feature, you need to perform the configuration tasks
described in the following sections:
- Converting WSDL File into MIF and Generating COPYBOOK
- Generating RECORD Definition from COPYBOOK
- Configuring SALT and Metadata Repositories
- Configuring webservice.desc
- Modifying UBBCONFIG
Parent topic: Implementing CICS Applications
4.21.1 Converting WSDL File into MIF and Generating COPYBOOK
Convert your WSDL file into the Oracle Tuxedo metadata repository input file (MIF) using the Oracle SALT command utility, wsdlcvt
. Specify its -C
option to generate COPYBOOK. For more information, see Configuring an Oracle SALT Application..
4.21.2 Generating RECORD Definition from COPYBOOK
Use cpy2record
tool to generate RECORD definition from the COPYBOOK that the previous step generates, and export environment variable for RECORD. For more information, see Using a RECORD Typed Buffer.
4.21.3 Configuring SALT and Metadata Repositories
Build SALT configuration file (using Oracle Tuxedo SALT utility wsloadcf
), and loads service information into an Oracle Tuxedo service metadata repository (using tmloadrepos
). For more information, see Configuring an Oracle SALT Application.
4.21.4 Configuring webservice.desc
Add a service section in webservice.desc
configuration file, specifying REQUEST
and RESPONSE
in webservice.desc
. The following listing below shows an example:
Listing 4‑69 Example of webservice.desc Configuration
[DFH0XCMNOperation]
REQUEST=DFH0XCMNOperation
RESPONSE=DFH0XCMNOperationResponse
TRANSACTION=N
4.21.5 Modifying UBBCONFIG
Configure the TMMETADATA
and GWWS
servers in the UBBCONFIG
file. The following listing shows an example:
Listing 4‑70 Example of Adding TMMETADATA and GWWS in UBBCONFIG
*SERVERS
...
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f pmu.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
4.22 Implementing CICS as HTTP Client
Oracle Tuxedo Application Runtime for CICS supports CICS works as HTTP client. You can use CICS WEB verbs to connect to internet. To implement this feature, do the following:
- Defining REST Outbound Service in SALT
- Configuring URIMAP Configuration File urimaps.desc
- Modifying UBBCONFIG
Parent topic: Implementing CICS Applications
4.22.1 Defining REST Outbound Service in SALT
In Tuxedo SALT deployment file, configure REST outbound service for each HTTP endpoint you want to access. You should set "outputbuffer
" (of "Service
" element) to "CARRAY
", and specify "enableCustomHTTPHeaders
" and "enableHTTPRequestLine
" properties to enable the support for WEB WRITE/READ HTTPHEADER
, WEB EXTRACT HTTPMETHOD/QUERYSTRING/
... and so on. The following listing is an example.
Also, you should define and load other required Tuxedo SALT configurations, such as WSDF and Metadata configuration. See SALT Deployment File Reference for more information.
Listing 4‑71 Example for Defining REST Outbound Service in SALT
<GWInstance id="GWWS1">
<Outbound>
<HTTP>
<Service name="TOUPPOST"
content-type="XML"
method="POST"
address="http://demobox:8080/ARTCICS/DEMOS/TOUPSVR"
outputbuffer="CARRAY"/>
</HTTP>
</Outbound>
<Properties>
<Property name="enableMultiEncoding" value="true"/>
<Property name="enableCustomHTTPHeaders" value="true"/>
<Property name="enableHTTPRequestLine" value="true"/>
</Properties>
Parent topic: Implementing CICS as HTTP Client
4.22.2 Configuring URIMAP Configuration File urimaps.desc
Add an entry in URIMAP configuration file
urimaps.desc
. For example:
TOUPPOST;SIMPAPP; demo test; ENABLED ; /ARTCICS/DEMOS/TOUPSVR; HTTP ; CLIENT; demobox; 8080; ; TOUPPOST
Parent topic: Implementing CICS as HTTP Client
4.22.3 Modifying UBBCONFIG
Configure ART transaction servers to run user program, and
configure Tuxedo SALT TMMETADATA
and GWWS
in UBBCONFIG
. For example:
Listing 4‑72 Example for Modifying UBBCONFIG
ARTSTRN
SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1
CLOPT="-o /home/demo/restclnt/LOGS/sysout/stdout_strn -e /home/demo/restclnt/LOGS/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
……
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f artcics.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
Parent topic: Implementing CICS as HTTP Client
4.23 Implementing CICS as HTTP Server
Oracle Tuxedo Application Runtime for CICS supports CICS as HTTP server. HTTP client can call Oracle Tuxedo Application Runtime for CICS programs via HTTP. To implement this feature, do the following:
Parent topic: Implementing CICS Applications
4.23.1 Defining REST Inbound Service in SALT
In Tuxedo SALT deployment file, configure REST inbound service you want to expose to HTTP client. You should set the "inputbuffer
" (of "Method
" element) to "CARRAY
", specify "enableCustomHTTPHeaders
" and "enableHTTPRequestLine
" properties to enable support for WEB WRITE/READ HTTPHEADER
, WEB EXTRACT
HTTPMETHOD
/QUERYSTRING/...
and so on. The following listing is an example.
Also, you should define and load other required Tuxedo SALT configurations, such as WSDF and Metadata configuration. See the SALT Deployment File Reference for more information.
Listing 4‑73 Example for Defining REST Inbound Service in SALT
<GWInstance id="GWWS1">
<Inbound>
<HTTP>
<Network http="demobox:8080"/>
<Service name="ARTCICS/DEMOS/TOUPSVR">
<Method name="POST" service="KIXR_TOUPSVR" inputbuffer="CARRAY"/>
</Service>
</HTTP>
</Inbound>
<Properties>
<Property name="enableMultiEncoding" value="true"/>
<Property name="enableCustomHTTPHeaders" value="true"/>
<Property name="enableHTTPRequestLine" value="true"/>
</Properties>
</GWInstance>
Parent topic: Implementing CICS as HTTP Server
4.23.2 Modifying UBBCONFIG
Configure ARTDPL
to run user web aware programs,
and configure Tuxedo SALT TMMETADATA
and
GWWS
in UBBCONFIG
. For example:
Listing 4‑74 Example for Modifying UBBCONFIG
ARTDPL
SRVGRP=GRP02
SRVID=60
MIN=1 MAX=1
CLOPT="-o /home/demo/restsvr/LOGS/sysout/stdout_dpl -e /home/demo/restsvr/LOGS/sysout/stderr_dpl -r -- -s KIXR -l SIMPAPP"
……
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f artcics.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
Parent topic: Implementing CICS as HTTP Server
4.24 Implementing ART for CICS Application Server Customized Callback Support
Oracle Tuxedo Application Runtime for CICS allows you to extend one or more of your ART for CICS application servers by loading your customized functions at server initiation and unloading those functions at server shutdown. To implement this feature, do the following:
- Create Shared Library libkixcallback.so
- Include Customized C Library for Dynamically Loading
There are some typical use cases for implementing this feature.
- Use Case 1: Create Shared Memory at Server Initiation
- Use Case 2: Open Database Table at Server Initiation
Note:
Only the following ART for CICS application servers support this feature:ARTSTR1/N
, ARTATR1/N
, ARTCTR1/N
, ARTWTR1/N
, ARTDPL
and ARTDPL_XN
- Create Shared Library libkixcallback.so
- Include Customized C Library for Dynamically Loading
- Use Case 1: Create Shared Memory at Server Initiation
- Use Case 2: Open Database Table at Server Initiation
Parent topic: Implementing CICS Applications
4.24.1 Create Shared Library libkixcallback.so
libkixcallback.so
, and declare the following two callback functions in this shared library.
Note:
Although you can extend many application servers, you should put all callback functions in the same shared library.- int ARTKIX__svrinit_callback(ARTKIX_SRVINIT_PARA*) (at Server Initiation)
- void ARTKIX__svrdone_callback() (at Server Shutdown)
We recommend you put this shared library under the directory where the CICS Runtime product is installed. (Environment variable $KIXDIR
is used to declare this directory. Usually it is $KIXDIR/lib
directory.) When you do it, do not remove this shared library from this directory when your Oracle Tuxedo Application Runtime for CICS is updating or migrating.
Oracle Tuxedo Application Runtime for CICS provides you a user header file called artkixcallback.h
(published in directory $KIXDIR/include
) to help you develop your shared library. It defines the following enumeration inside the header file.
Listing 4‑75 User Header File artkixcallback.h
typedef enum artkix_svrtype
{
e_ARTKIX_STR1, // for Synchronous Transaction server type
e_ARTKIX_STRN,
e_ARTKIX_ATR1, // this is for Asynchronous Transaction servers type
e_ARTKIX_ATRN,
e_ARTKIX_CTR1, // for Converse Management server type
e_ARTKIX_CTRN,
e_ARTKIX_WTR1, // for Non-3270s Terminal server type
e_ARTKIX_WTRN,
e_ARTKIX_DPL // for Distributed Program Link server type
} ARTKIX_SVRTYPE;
4.24.1.1 int ARTKIX__svrinit_callback(ARTKIX_SRVINIT_PARA*) (at Server Initiation)
ART for CICS application servers call this function when initiated.
Input: The input argument is a pointer to the following structure.
typedef struct artkix_svrinfo_t
{
long tux_svr_grpno;
/* this is the server's group id. */
long tux_svr_id;
/* this is the server's id. */
char kix_applid[8];
/* this is the server's applid. */
char kix_sysid[4];
/* this is the server's sysid. */
ARTKIX_SVRTYPE kix_svrtype;
/* this is the server's type. */
int tux_svr_argc;
const char ** tux_svr_argv;
/* these are command line options to be passed to server when it is activated. */
} ARTKIX_SRVINIT_PARA;
Output: None
Return code: Returns zero if initiation succeeds. Returns nonzero if it fails (and these servers cannot start up).
Parent topic: Create Shared Library libkixcallback.so
4.24.1.2 void ARTKIX__svrdone_callback() (at Server Shutdown)
ART for CICS application servers call this function when shutting down.
Input: None
Output: None
Return code: None
Parent topic: Create Shared Library libkixcallback.so
4.24.2 Include Customized C Library for Dynamically Loading
Include your customized C library in
$LD_LIBRARY_PATH
for Linux/Solaris (or
$LIBPATH
for AIX). This library will be loaded
dynamically in the runtime.
If ART for CICS application servers cannot find any customized shared library in the above paths, this feature is disabled but these servers can still successfully start up.
4.24.3 Use Case 1: Create Shared Memory at Server Initiation
If you want to create a shared memory used when ARTDPL
server starts up, you need to create a shared library named libkixcallback.so
, which exports two callback functions, and place the extended shared library under $KIXDIR/lib/
directory. For more information, see Create Shared Library libkixcallback.so.
When the ARTDPL
server starts up, it searches this
extended shared library under $KIXDIR/lib
at first. If
it cannot find it, it continues to search
$LD_LIBRARY_PATH
for Linux/Solaris (or
$LIBPATH
for AIX). After finding this shared library,
the ARTDPL
server loads it.
At this server initiation, you can create your shared memory. If
the function fails, it returns nonzero and then the
ARTDPL
server cannot start up; if the function
succeeds, it returns zero and then the ARTDPL
server
starts up as usual.
4.24.4 Use Case 2: Open Database Table at Server Initiation
If you want to open some database tables on your Linux platform when an ARTDPL
server starts up, you need to create a named libkixcallback.so
shared library, which exports two callback functions, and make sure the pathname of this C shared library is included in $LD_LIBRARY_PATH
environment variable. For more information, see Create Shared Library libkixcallback.so.
When the ARTDPL
server starts up, it searches this
customized shared library under $KIXDIR/lib
. If it
cannot find it, it continues to search under
$LD_LIBRARY_PATH
. After finding this shared library,
the ARTDPL
server loads it.
When the shared library is initiated, you can open your database
tables. If the function fails, it returns nonzero and then the
ARTDPL
server cannot start up; if the function
succeeds, it returns zero and then the ARTDPL
server
starts up as usual.
4.25 Implementing Resource-Based Authorization
ART for CICS offers a security framework which allows a customer to choose integration with an external security manager. Using this framework, ART for CICS can perform authorization checking when you access a resource in a transaction. For example, if you issue CICS WRITEQ TS command, ART for CICS first consults external security manager to confirm whether you have the right to write the TS queue.
To enable resource-based authorization, do the following:
- Set environment variable
KIX_RESSEC
toA
orY
KIX_RESSEC=A
: performs resource-based authorization when you access a resource in a transaction. This applies to all transactions.KIX_RESSEC=Y
: performs resource-based authorization when you access a resource in a transaction. This only applies to the transactions whoseRESSEC=Y
is specified intransactions.desc
.
For more information, see KIX_RESSEC in Oracle Tuxedo Application Runtime for CICS Reference Guide.
- If
KIX_RESSEC=Y
is set, intransactions.desc
, configureRESSEC=Y
for the transactions that you want to check resource-based authorization.For more information, see Transaction Configuration FileTransaction Configuration File in Oracle Tuxedo Application Runtime for CICS Reference Guide.
- Replace the default authorization function with your customized function.
ART for CICS has a default authorization function called
CheckResourceAuth.gnt
(under ART for CICS installation directory). To integrate with external ESM, you need to replace the defaultCheckResourceAuth.gnt
with your customized function.The function interface is listed in Integration with the External Security Manager.
- Enable Tuxedo Security in
UBBCONFIG.
Enable Tuxedo security. For example, configure
XAUTHSVR
inUBBCONFIG
to enable LDAP based authentication and authorization.For more information, see XAUTHSVR(5) in Oracle Tuxedo File Formats, Data Descriptions, MIBs, and System Processes Reference
Listing 4‑77 Enable Tuxedo Security in UBBCONFIG
*RESOURCES
SECURITY ACL
AUTHSVC "..AUTHSVC"
OPTIONS EXT_AA, EXT_MON
*GROUPS
AUTHGRP
GRPNO=25
*SERVERS
XAUTHSVR SRVGRP=AUTHGRP
SRVID=5
MIN=1 MAX=1
CLOPT="-A -- -n /opt/oracle/CICS_RT/atnldap -z /opt/oracle/CICS_RT/atzldap"
Parent topic: Implementing CICS Applications
4.26 Implementing COBOL Program Debugging in CICS Runtime
There are some typical use cases for implementing COBOL program debugging in CICS runtime.
You can also issue XCTL or LINK (local) inside one transaction.
For more information, see COBOL Program Debugging and Error Processing in CICS Runtime and Debug Configuration File in Oracle Tuxedo Application Runtime for CICS Reference Guide.
The following topics describe each use case in detail:
- Use Case 1: Two users want to debug two COBOL programs respectively.
- Use Case 2: One user wants to debug two COBOL programs in one transaction.
- Use Case 3: One user wants to debug two programs with START TRANSID.
- Use Case 4: One user wants to debug two programs with LINK (remote).
Parent topic: Implementing CICS Applications
4.26.1 Use Case 1: Two users want to debug two COBOL programs respectively.
If ART for CICS user A wants to debug COBOL Program1
and ART for CICS user B wants to debug COBOL Program2
, the two users should do the following:
- Add COBOL debug information into
kix_cobol_dbg.cfg
configuration file.myAnimSrvID1;;;;; Program1
myAnimSrvID2;;;;; Program2
- Input
anim
command lines.- User A inputs the following command line from his/her terminal.
anim %XmyAnimSrvID1
- User B inputs the following command line from his/her terminal.
anim %XmyAnimSrvID2
- User A inputs the following command line from his/her terminal.
- User A and B either start up their own ART for CICS application servers with the same Linux account which starts up the
anim
utility, or dynamically change the debug configuration resource file without restarting the ART for CICS servers.Note:
The Linux user account that starts up the ART for CICS server must be the same as the Linux user account that runs theanim
command line. Only theANIMSRVID
which theanim
utility specifies will be debugged.
Parent topic: Implementing COBOL Program Debugging in CICS Runtime
4.26.2 Use Case 2: One user wants to debug two COBOL programs in one transaction.
If one ART for CICS user wants to debug two different COBOL
programs in one transaction (for example, if ART for CICS user
wants to debug COBOL Program1
and COBOL
Program2
, and both programs are in the same
transaction), do the following:
- Add COBOL debug information into
kix_cobol_dbg.cfg
configuration file.myAnimSrvID1;;;;transaction1;
- Input the following command line in one terminal, and then both programs can be debugged.
anim %XmyAnimSrvID1
Parent topic: Implementing COBOL Program Debugging in CICS Runtime
4.26.3 Use Case 3: One user wants to debug two programs with START TRANSID.
If one ART for CICS user wants to debug two different COBOL programs with START TRANSID
command, do the following:
- Add COBOL debug information into
kix_cobol_dbg.cfg
configuration file.myAnimSrvID1;;;;; program1
myAnimSrvID2;;;;; program2
- Input the following command lines in separate terminals respectively:
anim %XmyAnimSrvID1
anim %XmyAnimSrvID2
When these two programs are launched by the ART for CICS application server, the user can debug both programs in separate terminals respectively.
Parent topic: Implementing COBOL Program Debugging in CICS Runtime
4.26.4 Use Case 4: One user wants to debug two programs with LINK (remote).
If one ART for CICS user wants to debug two different COBOL
programs with LINK
command, do the following:
- Add the following COBOL debug information into
kix_cobol_dbg.cfg
configuration file.anim %XmyAnimSrvID1
anim %XmyAnimSrvID2
- Input the following command lines in separate terminals respectively:
When two programs are launched by the ART for CICS application server, the user can debug both programs in separate terminals respectively.
Parent topic: Implementing COBOL Program Debugging in CICS Runtime
4.27 CICS Runtime Logs
The chapter contains the following topics:
Parent topic: Implementing CICS Applications
4.27.1 Tuxedo System Log
Like other Tuxedo applications, CICS Runtime is managed by Tuxedo that records certain events and problems in a dedicated system log.
This log is the standard Tuxedo User Log (ULOG) whose name is
contained in the system variable ULOGPFX
of the Tuxedo
ubbconfig
file.
Example:
ULOGPFX="/home2/work9/demo/Logs/TUX/log/ULOG"
Parent topic: CICS Runtime Logs
4.28 The CICS Runtime Server Logs
When declaring a service in the Tuxedo ubbconfig
file, each server has CLOPT options defined including two
files:
- -o option for stdout (normal messages)
The name of this file is
stdout_<server name>
without theART
prefix.For example: the
ARTSTRN
server has a standard output namedstdout_strn.
- -e option for stderr (error messages)
The name of this file is
stderr_<server name>
without theART
prefix.For example: the
ARTSTRN
server has an error output namedstderr_strn.
Table 4-11 Message Files by Server
Server name | -o standard output file | -e standard error file |
---|---|---|
ARTTCPL
|
stdout_tcp
|
stderr_tcp
|
ARTCNX
|
stdout_cnx
|
stderr_cnx
|
ARTSTRN
|
stdout_strn
|
stderr_strn
|
ARTSTR1
|
stdout_str1
|
stderr_str1
|
ARTATRN
|
stdout_atrn
|
stderr_atrn
|
ARTATR1
|
stdout_atr1
|
stderr_atr1
|
ARTTSQ
|
stdout_tsq
|
stderr_tsq
|
ARTDPL
|
stdout_dpl
|
stderr_dpl
|
Note:
In the stderr file of a server all the configuration files mounted are described. The stderr file contains not only the error messages concerning problems encountered when the servers are booted but also information about the different resources loaded. Specifically you will find:- The groups of resources installed depending on the
-l
list parameter of each CICS Runtime server. - The resources successfully installed and available for use (remember that an installed resource may be disabled for use) depending on the valorization of each
.desc
configuration file.
Listing 4‑78 Example of the stdout_strn Just After Start Up for a ARTSTRN Server
Groups loaded: <0001>
|----------|
| GROUP |
|----------|
|SIMPAPP |
|----------|
ARTSTRN: Read config done
|---------------------------------------------------|
| TRANCLASS loaded : < 2> |
|---------------------------------------------------|
| TRANCLASS | GROUP |MAXACTIVE|
|------------------------------|----------|---------|
|TRCLASS1 |SIMPAPP | 001|
|TRCLASS2 |SIMPAPP | 002|
|---------------------------------------------------|
|--------------------------------------------------|
| PROGRAMS loaded : < 4> |
|------------------------------------------------------------------|
| PROGRAM | GROUP |LANGUAGE|EXEC| STATUS |
| | | |KEY | |
|------------------------------|----------|--------|----|----------|
|RSSAT000 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT001 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT002 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT003 |SIMPAPP |COBOL |USER|ENABLED |
|------------------------------------------------------------------|
|---------------------------------|
| TRANSACTIONS loaded : < 4> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP |RSSAT000 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA01|SIMPAPP |RSSAT001 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA02|SIMPAPP |RSSAT002 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA03|SIMPAPP |RSSAT003 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|-----------------------------------------------------------------------------------------------------|
Warning: zero TSQMODEL loaded!!
FILES<FILE> lineNo(1) skipping Record: Group not to load
FILES<FIC3> lineNo(4) skipping Record: Group not to load
We can note in this example that
- One group (SIMPAPP) is selected with the
-l
option - Four configurations files are used: transactions, tranclasses, programs and tsqmodels.
- Information on the successful loading of these resources
(
Warning: zero TSQMODEL loaded
). - The detail of the resources loaded and their explicit characteristics (name, group, description …) even default/implicit values were used in the .desc file leaving the fields filed with space(s).
Parent topic: Implementing CICS Applications
4.29 Disabling and Enabling Programs
Sometimes, problems are encountered in a program that significantly impacts your system and the program must be eliminated urgently by prohibiting end-users from running it. In the immediate, this helps temporarily to stabilize the system giving time to analyze and solve the dysfunction.
As on z/OS, CICS Runtime allows to disable a program. A program is disabled by modifying the CICS Runtime configuration file programs.desc. This file contains a dedicated field, the STATUS field, to indicate if a program is DISABLED or ENABLED (status by default).
See also dynamic administration of CICS resources information in the Oracle Tuxedo Application Runtime for CICS Reference Guide
- Disabling Programs
- Enabling Programs
- Checking the Change in Program Status
- Removing and Adding Applications for CICS Runtime
Parent topic: Implementing CICS Applications
4.29.1 Disabling Programs
To switch your transaction from enabled to disabled, you have to
modify the seventh field of this csv file, to change the previous
value from an implicit (" " space(s)) or an explicit
ENABLED
status to the explicit DISABLED
status.
After shutting down and booting the CICS Runtime Tuxedo servers, your modifications of one or more programs will be taken in account.
If you disable a program, when somebody wants to use it, the error messages displayed depend on the way that the application handles CICS errors.
Listing 4‑79 Example Simple Application SA02 COBOL Program Set to DISABLED in programs.desc
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE; ; ;STATUS
RSSAT000;SIMPAPP; Home Menu Program of the Simple Application ;COBOL
RSSAT001;SIMPAPP; Customer Detailed Information Program of the Simple Application ;COBOL; ; ;ENABLED;
RSSAT002;SIMPAPP; Customer Maintenance Program of the Simple Application;COBOL; ; ;DISABLED;
RSSAT003;SIMPAPP; Customer List of the Simple Application ;COBOL
Parent topic: Disabling and Enabling Programs
4.29.2 Enabling Programs
To enable a program, you have only to do the opposite, changing
the STATUS field from DISABLED
to ENABLED
or " " (at least one space).
After shutting down and booting the CICS Runtime Tuxedo servers, your modifications of one or more programs take effect.
Parent topic: Disabling and Enabling Programs
4.29.3 Checking the Change in Program Status
If you consult the logs of the different transactions servers or
the CICS Runtime you will note the modification of the modified
status in the stderr_*
logs.
Just after the start up of this server, the logs shows (in italics) that this program is disabled.
Listing 4‑80 Log Report Showing Program Status
Groups loaded: <0001>
|----------|
| GROUP |
|----------|
|SIMPAPP |
|----------|
ARTSTRN: Read config done
|---------------------------------------------------|
| TRANCLASS loaded : < 2> |
|---------------------------------------------------|
| TRANCLASS | GROUP |MAXACTIVE|
|------------------------------|----------|---------|
|TRCLASS1 |SIMPAPP | 001|
|TRCLASS2 |SIMPAPP | 002|
|---------------------------------------------------|
|--------------------------------------------------|
| PROGRAMS loaded : < 4> |
|------------------------------------------------------------------|
| PROGRAM | GROUP |LANGUAGE|EXEC| STATUS |
| | | |KEY | |
|------------------------------|----------|--------|----|----------|
|RSSAT000 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT001 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT002 |SIMPAPP |COBOL |USER|DISABLED |
|RSSAT003 |SIMPAPP |COBOL |USER|ENABLED |
|------------------------------------------------------------------|
|---------------------------------|
| TRANSACTIONS loaded : < 4> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP |RSSAT000 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA01|SIMPAPP |RSSAT001 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA02|SIMPAPP |RSSAT002 | |N|N|001|N|N| ENABLED |USER |Y| |00000|999|
|SA03|SIMPAPP |RSSAT003 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|-----------------------------------------------------------------------------------------------------|
Warning: zero TSQMODEL loaded!!
Parent topic: Disabling and Enabling Programs
4.29.4 Removing and Adding Applications for CICS Runtime
Sometimes, you want to delete an application from a given machine either to definitely delete all its components or to move them to another machine. If all the resources used by your application were defined in one or more resource groups dedicated to your application, you have only to suppress these groups from CICS Runtime and eventually install them elsewhere.
Each CICS Runtime Tuxedo Server reads a list of groups to be
selected and installed at start up, contained in its CLOPT options
after the -l
parameter. To remove or add group(s) from
an application, you have only to remove or add theses groups from
this list for each CICS Runtime Tuxedo server.
Your modifications on one or more programs take effect after shutting down and booting up the CICS Runtime Tuxedo servers.
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn
-e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
s KIXR -l SIMPAPP"
If you want to add one or more groups, you have to concatenate these new groups to those previously defined, separating them with a ":" character.
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn
-e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
s KIXR -l SIMPAPP:GROUP1:GROUP2"
Listing 4‑83 Example of Removing group1 in ARTSTRN Server
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn
-e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
s KIXR -l SIMPAPP:GROUP2"
Note:
- When the groups are removed, all the resources of these groups are only logically suppressed. If you want also to suppress them physically, you have to delete all the lines of the CICS Runtime resource configuration files containing the group names.
- When the groups are added, all the resources of theses groups must be present in the different CICS Runtime resource configuration files under the group names. To avoid future problems, do not omit to declare resources in a group because they are already declared in groups from other applications.
- When groups are added or removed, be careful to indicate the same list of groups in each CICS Runtime server.
Parent topic: Disabling and Enabling Programs
4.30 CICS Runtime C Program Support
ART CICS allows users to implement and run CICS applications in C language.
- Running C Program in CICS Runtime
- C Programming Restrictions and Requirements
- Accessing EIB from C
- Accessing COMMAREA from C
- CICS Command Translator
- C Program Compilation
Parent topic: Implementing CICS Applications
4.30.1 Running C Program in CICS Runtime
Each C program is loaded as a COBOL program and executed in COBOL runtime, so CICS C program support is COBOL production depended.
Parent topic: CICS Runtime C Program Support
4.30.2 C Programming Restrictions and Requirements
Restrictions and requirements for CICS/C support on ART CICS are listed as below:
- The EXEC CICS commands related to nonstructured exception handling are not supported, including:
HANDLE ABEND
HANDLE AID
HANDLE CONDITION
IGNORE CONDITION
PUSH HANDLE
POP HANDLE
- In a C application, every
EXEC CICS
command is treated as if it hadNOHANDLE
orRESP
option specified. - In a C application, every
EXEC CICS
command is treated as if it hadNOHANDLE
orRESP
option specified. - On Linux, file names and words are case-sensitive. If a header file name is in lowercase in C source file while such name in file system is in uppercase, errors will occur in compiling.
- Does not support packed decimal data.
- Does not support the use of CICS command in macros.
- Support CICS keywords in mixed case.
- Where CICS expects a fixed-length character string (such as a program name, map name, or queue name), you must pad the literal with blanks up to the required length if it is shorter than expected.
- Take care not to define a variable with a field name. That behavior will cause C compiler abend.
/**/
is used for single line comments. Do not put a comment in the middle of anEXEC CICS
command.- ART CICS does not support
argc
,argv
, andenvp
- ART CICS provides two methods to access
COMMAREA
:-
ADDRESS COMMAREA
- Provide an extern global pointer
__commptr
declared by ART CICS pre-processor automatically.__commptr
is system reserved; users cannot define it as other usages.
-
- ART CICS provides two methods to access EIB:
ADDRESS EIB
- Provide an extern global pointer
__eibptr
declared by ART CICS pre-processor automatically.__eibptr
is system reserved; users cannot define it as other usage.
- The EIB declarations are enclosed in
#ifndef
and#endif
lines, but are not included in all translated files. ART CICS publishes header filedfheiblk.h
to contain the definition of all the fields in theEIB
. Each translated file just needs to include this header file and all actions are completed by pre-processor automatically. - BMS screen attributes definitions: C versions of the
DFHBMSCA
andDFHAID
files are supplied by CICS, and may be included by the application programmer when using BMS. - The string handling functions in the C standard library use a
null character as an end-of-string marker. Because CICS does not
recognize a null as an end-of-string marker, customers must take
care of it when using C functions, for example
strcmp
, to operate on CICS data areas. - The string handling functions in the C standard library use a
null character as an end-of-string marker. Because CICS does not
recognize a null as an end-of-string marker, customers must take
care of it when using C functions, for example
strcmp
, to operate on CICS data areas. - ART CICS provides
iscics()
declared incics.h
as well, but users only need to modifymakefile
to include the header file path. - Keep
EXEC CICS
as a whole in one line. - Multiple CICS commands in one line is not support.
#pragma
will be automatically translated to comments.- C function
exit()
will be translated to return. - Keep C function
main()
, its parameter list, and parenthesis in one line. For example,void main(int argc, char **argv)
COMMAREA
should be a pointer. ART CICS only supports specifying a struct by pointer, not value.
Parent topic: CICS Runtime C Program Support
4.30.3 Accessing EIB from C
The address of the EXEC interface block (EIB) is not passed as an argument to a C main function; however, users can use the following two methods to obtain the address of the EIB:
- Using
ADDRESS EIB
- Using global pointer
__eibptr
which points to EIB
Parent topic: CICS Runtime C Program Support
4.30.4 Accessing COMMAREA from C
COMMAREA
is not passed as an argument to a C main function; however, users can use the following two methods to obtain the address of the COMMAREA
:
- Using
ADDRESS COMMAREA
- Using global pointer
__commptr
which points toCOMMAREA
Parent topic: CICS Runtime C Program Support
4.30.5 CICS Command Translator
ART CICS provides prepro-cics-C.pl
for CICS/COBOL APIs translation. For more information about prepro-cics-C.pl
, please refer to prepro-cics-C.pl.
Parent topic: CICS Runtime C Program Support
4.30.6 C Program Compilation
In order to make sure the C programs could be successfully loaded by COBOL runtime, please build C programs using COBOL compiler rather than gcc/g++.
Use cob
to compile C source code as a callable
shared object. Please note that dynamic library must have the same
name as the C source file name in uppercase.
CPYINC=../includes
cob -z,CC zample_treated.c -o ZAMPLE.so -CC -I${CPYINC}
Parent topic: CICS Runtime C Program Support