2 From IMS on z/OS to Oracle Tuxedo Application Runtime for IMS Users on UNIX
To emulate the functionality of IMS on z/OS, Tuxedo ART for IMS
provides a group of servers running under Oracle Tuxedo control
(including mandatory servers and optional servers). Mandatory
servers include ARTICTL
, ARTIMPP
and
ARTIBMP
. Optional servers include ARTIADM
and ARTITERM
. In addition, Tuxedo ART for IMS provides
a group of DLLs and utilities to assist the servers. The following
is an IMS on z/OS to Tuxedo ART for IMS mapping list:
- IMS language utility
DFSUPAA0
:MFSGEN
utility - BMP utility
DFSRRC00
: Oracle Tuxedo clientDFSRRC00
- Control region: Oracle Tuxedo
ARTICTL
server - MPP region: Oracle Tuxedo server
ARTIMPP
, the container which runs MPP - BMP region: Oracle Tuxedo server
ARTIBMP
, the container which runs BMP - DLI address space: No dedicated address space for DLI in ART,
provides a library which implements the DL/I APIs and runs in
ARTIMPP/ARTIBMP
address spaces - Transaction: service
The overall Tuxedo ART for IMS architecture is shown in the following figure:
Figure 2-1 Tuxedo ART for IMS Architecture

Tuxedo ART for IMS consists of:
- ART MFS Language Utility -
MFSGEN
- ART MFS Control Blocks Libraries
- ART Message Format Service (
ARTICTL
) - ART Message Processing Region (
ARTIMPP
) - ART Batch Message Processing Region (
ARTIBMP
) - ART JCL Submission Clients –
DFSRRC00
- A Mainframe IMS/DB support solution that includes an open system DB plug-in and a z/OS ODBA Proxy
Tuxedo ART for IMS receives a work request. The request is
entered at a remote terminal. It is usually made up of a
transaction code which identifies to IMS the kind of work to be
done and the data that is used. They all should follow the MFS
control block definitions parsed from original files on the
Mainframe via the ART MFS Language Utility for
ARTICTL
.
ARTICTL
handles the remote terminal connection and
transfers the 3270 data stream from EBCDIC to ASCII. It then parses
the information from the data stream according to DIF, saving the
message segments into the memory according to MID for
ARTIMPP
.
ARTIMPP
initiates and controls a specific program (in COBOL) which uses the request data to perform the remote operator request. It also prepares some data for the remote operator in response to the work request (for example, acknowledgment of work done, answer to a query, etc.).
Finally, the data prepared by the program is transmitted back to the terminal that originally requested the work, this process just reversing the work flow above.
Unlike ARTIMPP
, ARTIBMP
is not
activated by the remote terminal, but by an Oracle Tuxedo client
specific to ARTIBMP
(for example,
DFSRRC00
).
2.1 Oracle Tuxedo Application Runtime for IMS Users Servers
See Also:
Oracle Tuxedo Application Runtime for IMS Reference Guide for a detailed description about configuring the serversThe Tuxedo ART for IMS servers are:
2.1.1 ARTICTL
ARTICTL
can make an application program device-independent by formatting input data from the device or remote program for presentation to IMS, and formatting the application program data for presentation to the output device or remote program.
Figure 2-2 Device Independent Application Program

MS/MFS consists of three components:
- Terminal Control Listener (CTLL)
- Terminal Control Handler (CTLH)
- Format Service Libraries (LIBMFS)
Before describing the functions of each part in detail, another
offline utility ART MFS language utility, MFSGEN
must
be mentioned. MFSGEN
is used to transfer four types of
MFS control blocks on Mainframes to binary files on open platforms
so that the files can be read by Format Service Libraries.
MFSGEN
is also an important Tuxedo ART for IMS
feature.
There are four types of MFS control blocks that you must specify to format input and output for the application program and the terminal or remote program:
- Message Output Descriptors (MODs): define the message layout MFS receives from the application program.
- Device Output Formats (DOFs): describe how MFS formats messages for each of the devices the program communicates with.
- Device Input Formats (DIFs): describe the formats of messages MFS receives from each of the devices the program communicates with.
- Message Input Descriptors (MIDs): describe how MFS further formats messages so that the application program can process them.
Note:
Throughout this document, the term “message descriptors” refers to both MIDs and MODs. The term “device formats” refers to both DIFs and DOFs. Each of MOD, DOF, DIF and MID deals with a specific message. There must be a MOD and DOF for each unique message a program sends, and a DIF and MID for each unique message a program receives.
- Terminal Control Listener
- Terminal Control Handler
- Control Blocks Libraries Management
- IMS System Commands Support
- IMS Security Support
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.1.1 Terminal Control Listener
The Terminal Control Listener (CTLL) process is a standard
Oracle Tuxedo server that runs in the ARTICTL
subsystem. It starts when ARTICTL
is initiated.
The CTLL performs the role of a terminal listener server. It listens at a public address that connects the application with a 3270. For each incoming connection request, it transmits this connection to one of its handler processes. Detailed functions are as follows:
- The CTLL process establishes a network port that connects to the 3270 terminal emulators. The port is “well-known”, that is, its address is available to any end user of a terminal emulator.
- The CTLL process spawns CTLH processes which listen on the well-known port for incoming connection requests. The CTLL process manages the number of CTLH processes dynamically, based on system load.
- The CTLL communicates with the CTLH processes utilizing various inter-process communication (IPC) mechanisms, such as shared memory and dedicated TCP/IP connections. Each CTLH can handle numerous terminal emulator clients and the CTLL tracks the number of connections each handler is servicing.
Parent topic: ARTICTL
2.1.1.2 Terminal Control Handler
Terminal Control handler (CTLH) process manages multiple
connections including terminal I/O, user authentication, calling
the requested transactions on behalf of the user and etc. Each time
a user requests a transaction, CTLH transmits (via
tpacall()
) this transaction request to the Messaging
Processing Region (ARTIMPP
). Detailed functions are as
below:
- Terminal I/O
- Session Management
- 3270 Data Stream Transform
- IMS Message Formatting
- Terminal Type Support
Parent topic: ARTICTL
2.1.1.2.1 Terminal I/O
When a connection request arrives from a terminal emulator, it
is accepted and serviced by one of the CTLH processes. These
processes manage inputs and outputs for the ARTICTL
subsystem. When a terminal connects to the ARTICTL
subsystem, the ARTCTLH
acts as an Oracle Tuxedo client
on behalf of the terminal. When you enter a transaction ID from a
terminal, the ARTCTLH
converts the transaction ID into
an Oracle Tuxedo service identifier and invokes
tpacall()
, Oracle Tuxedo then routes the transaction
along with the terminal 3270 data stream to the MPP server to
perform the transaction.
Parent topic: Terminal Control Handler
2.1.1.2.2 Session Management
The CTLH performs the session management. When you connect to
ARTICTL
subsystem via terminal, CTLH establishes a new
user session for the connection and handles all subsequent screen
I/O for the terminal. As a performance enhancement, each CTLH
process can manage multiple sessions simultaneously. When you
disconnect the emulator from the port, the CTLH terminates the
session.
Parent topic: Terminal Control Handler
2.1.1.2.3 3270 Data Stream Transform
The CTLH performs the transform between ASCII and EBCDIC. After or before CTLH receives or sends the 3270 data stream from or to the terminal, it performs the data conversion between ASCII and EBCDIC.
Parent topic: Terminal Control Handler
2.1.1.2.4 IMS Message Formatting
The CTLH
performs the message formatting by
invoking Message Format Service Libraries (LIBMFS). When the
CTLH
receives data from a terminal, it splits the data
stream and extracts the useful information according to the DIF
control block, then composes the message to be used by application
program according to the MID control block. When the
CTLH
receives the message returned from an application
program, it splits the message and extracts the useful segments
according to the MOD control block. It then composes the data
stream to send to terminal according to the DOF control block.
There are three types of message formatting defined in each
MID/MOD MSG statement (OPT=1/2/3). Each type of message formatting
defines a different MSG definition handled by ARTICTL
and ARTIMPP
(while omitting some fields or segments of
MSG for performance). For the benefits and details of each MSG
types please refer to IMS/TM Programming.
Application programs do not need to be concerned about the MSG
type used between ARTICTL
and
ARTIMPP
; ARTIMPP
justifies the
MSGs in its I/O area before transmitting to application program.
ARTICTL
and ARTIMPP
do not support OPT,
they handle the MSG using common type (do not omit any fields or
segments of MSG) which could be recognized by application
programs.
Parent topic: Terminal Control Handler
2.1.1.2.5 Terminal Type Support
ARTICTL subsystem supports six terminal types as follows:
3270 Size(24, 80)
3270,2 Size(24, 80)
3270 - A2 Size(24, 80)
When the ARTICTL
subsystem boots up, the CTLH
performs TN3270E protocol negotiation, and the type and identity of
a terminal are determined through the negotiation (such as
“IBM-3278-2-E”), then the CTLH handles the 3270 data
stream corresponding to the type of the terminal.
Parent topic: Terminal Control Handler
2.1.1.3 Control Blocks Libraries Management
The Message Format Service library (LIBMFS) is delivered as libraries linked by CTLH and run in each CTLH process, it also handles the control blocks management. It searches the correct Control Blocks and loads them into the cache when they are requested, and maintains them in the cache. When the request terminates, Control Blocks are cleared from the cache.
Parent topic: ARTICTL
2.1.1.4 IMS System Commands Support
IMS System Commands, such as/FORMAT
,
/SIGN
and /EXIT
, are also handled in TCP
handler.
Parent topic: ARTICTL
2.1.1.5 IMS Security Support
Tuxedo ART for IMS supports four types of Oracle Tuxedo security
mechanisms: none security, APP_PW
, user-level
authentication (USER_AUTH
) and Access Control List
(ACL or Mandatory ACL).
Note:
- When using tmloadcf, do not fill any application password characters. Leave it NULL by pressing Enter.
- Adding user list and access control list via
tpgrpadd
,tpusradd
andtpacladd
.The first screen when the terminal connects to Tuxedo ART for IMS runtime is IMS Sign-on screen.. The username (username should not be null) must be filled if no security configured.
If authentication:
- Succeeds, a success screen is returned to the terminal.
- Fails, return to the Sign-on screen until authentication succeeds
If authorization fails, it will display some error message in terminal, But you still could clear the terminal and do any other transaction.
- Using system command “
/Sign off
” to sign off the current user.When the user signs off from Tuxedo ART for IMS runtime, the sign on screen appears, which the users can use to re-sign directly; the users could also clear the screen and then use system command "
/Sign
", "/Sign on
", "/Sign
on username password" to re-sign the Tuxedo ART for IMS runtime.
The maximal length of Username and Password is 8 (Chars) just as Mainframe.
For more information, see Using Security in ATMI Applications, in the Oracle Tuxedo Users Guide.
ARTICTL
provides access to 3270 terminals through TCP/IP and message formatting services. ARTICTL
formats screen based on the user input, receives input from 3270 terminal, converts the messages received from 3270 terminal to Oracle Tuxedo requests, sends the requests to ARTIMPP
for processing, receives responses from ARTIMPP
formats the response, and sends back to the originating terminal.
Tuxedo ART for IMS also support encryption and certificate authentication over network links between ARTICTL
Handler and 3270 terminal. Currently the supported SSL version is TLS 1.2.
Parent topic: ARTICTL
2.1.2 ARTIMPP
ARTIMPP
in normal mode (without -p
option in CLOPT
) is an Oracle Tuxedo server designed to act as a service container. It advertises a set of services based on configuration file while initializing; calls corresponding COBOL/C application program while receiving a request to a service it advertised; and sends back the response to the requester, normally ARTICTL
server. Service is the counterpart on UNIX to transaction code on Mainframe.
ARTIMPP
in persistent mode (with -p
option in CLOPT
), monitors the /Q for every persistent TP transaction (transaction that is defined in imsresource.desc
). Once there is a message in one /Q for one persistent transaction, it gets the message from the /Q and calls corresponding COBOL/C application program and then sends back a response to the requester.
- Dynamic Service Advertising
- Dynamic COBOL Program Invocation
- Transaction Class Differentiating
- Implicit Transaction Commitment
- Program Switching
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.2.1 Dynamic Service Advertising
ARTIMPP
, in normal mode, dynamically advertises a set of services based on a set of configuration files while starting. All the services (transaction codes) to be contained in ARTIMPP
servers are defined in imstrans.desc, each transaction code defined in it corresponds to a service with same name to be advertised. imsapps.desc defines all the COBOL/C application programs to be called by ARTIMPP
. Each $appname.psb
defines the alternate PCBs required by that application. For information, see Oracle Tuxedo Application Runtime for IMS Users Configuration. If the configuration files are changed, ARTIMPP
can only accept the changes while restarting. In addition, ARTIMPP
only supports applications with type of TP.
Parent topic: ARTIMPP
2.1.2.2 Dynamic COBOL Program Invocation
Each service (transaction code) advertised by
ARTIMPP
has a defined COBOL application name to handle
the service. While ARTIMPP
receives a request to a
service, ARTIMPP
finds the COBOL application name
corresponding to the requested service, and calls the corresponding
COBOL program. Each COBOL application is compiled to a
.gnt
file and put in a directory in COBOL search
order. For Micro Focus COBOL environment, the program search order
is defined by environment variable $COBPATH
. For
COBOL-IT COBOL environment, the program search order is defined by
$COB_LIBRARY_PATH
.
Parent topic: ARTIMPP
2.1.2.3 Transaction Class Differentiating
Each Instance of ARTIMPP
server can specify which
classes of transaction codes are to be advertised by it. This
mechanism can be used to adjust the deployment.
Parent topic: ARTIMPP
2.1.2.4 Implicit Transaction Commitment
If the COBOL application program called for a service does not
explicitly commit or roll back the transaction,
ARTIMPP
server commits the transaction implicitly.
Parent topic: ARTIMPP
2.1.2.5 Program Switching
ARTIMPP
supports that a request is forwarded by one transaction code to another transaction code, i.e., program switch. Program switch can be accomplished from a non-conversation transaction code to another non-conversation transaction code, from a conversation transaction code to another conversation or non-conversation transaction code. For the program switch between one conversation code and another conversation code, deferred/immediate switch are supported. Deferred program switch means the originating transaction code returns to the terminal with another transaction code (switch target) contained in SPA, when the terminal sends message again, the message will be routed to the switch target. Immediate program switch means the originating forwards a message to another transaction code, which responds to terminal. For program switch between non-conversation transaction codes, only immediate switch is supported. For the program switch from a response mode transaction code to a non-response transaction code, ARTIMPP
does not have limitation on it, but users should be careful of designing the program switch like this since response-mode transaction requires a response but non-response mode transaction may not respond to the terminal.
ALT PCB
, if the target transaction is persistent transaction(transaction that is defined in imsresource.desc), the message for the target transaction will be put into /Q. ARTIMPP
in persistent mode will handle this transaction. If the target transaction is non persistent transaction, ARTIMPP
will call the transaction service and ARTIMPP
in normal mode will handle this transaction.
Note:
All the transaction codes in the switch chain must be accessible by the end user who executes the first transaction code in the chain if ACL is enabled as privilege control mechanism, otherwise the result is unpredictable, one of the possible results is the terminal may not respond.Parent topic: ARTIMPP
2.1.3 ARTIMPP_ORA
ARTIMPP_ORA
has all the functionalities of ARTIMPP
. It can support an Oracle database used as an external resource manager (RM). It requires some libraries provided by Oracle database. To use ARTIMPP_ORA
with an Oracle database, the RM section must be configured correctly in the UBBCONFIG
file.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.4 ARTIBMP
ARTIBMP
is an Oracle Tuxedo server that advertises a fixed service ARTIBMP_SVC
so that BMP clients can request this service to call specified BMP program written in COBOL.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.4.1 Dynamic COBOL Program Invocation
ARTIBMP_SVC
retrieves the specified BMP program name and associated PSB name from the message passed from the ARTIBMP
client, verifies that the requested program is a valid batch program (configured in imsapps.desc and with type of BATCH) and the specified PSB is valid too, calls the program, and returns the result or completion notification to the client synchronously.
Parent topic: ARTIBMP
2.1.5 ARTIBMPT
ARTIBMPT
is a transaction-oriented BMP server. When DFSRRC00
is called with IN
assigned, the transaction code is passed to ARTIBMPT
with other parameters. ARTIBMPT
processes the transaction by calling a specified BMP program written in COBOL/C. Only BATCH applications are supported. ARTIBMPT
can only process transaction oriented BMP
applications. A transaction oriented BMP application is a application that is defined in $MBR
of parameters list and also defined in imsapps.desc
with TYPE=BATCH
.
Note:
Currently,ARTIBMPT
does not support client terminal messages. The transaction oriented BMP application/transaction must be a persistent transaction; this requires that the transaction must be defined in imsresources.desc
.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.6 ARTIBMP_ORA
ARTIBMP_ORA
has all the functionalities of ARTIBMP
. It can support an Oracle database used as an external resource manager (RM). It requires some libraries provided by Oracle database. To use ARTIBMP_ORA
with an Oracle database, the RM section must be configured correctly in the UBBCONFIG
file.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.7 ARTIADM
In MP mode, ARTIADM
can be booted up based on your
choice, it downloads the configuration files from the master to the
slave node. It is an Oracle Tuxedo server, and each node just needs
to be deployed at most one ARTIADM
. If your want to
boot ARTIADM
, it should be booted prior to
ARTICTL
and the ART_IMS_CONFIG
environment variable should be set on each node.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.8 ARTITERM
In cross-domain mode, if ARTICTL
and
ARTIMPP
are not in the same domain,
ARTITERM
is used to pass the response from
ARTIMPP
back to ARTICTL
. That is,
ARTITERM
acts as an intermediate from
ARTIMPP
to ARTICTL
.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers
2.1.9 ARTIGW
ARTIGW
is an Oracle Tuxedo server that acts as a bridge between non-terminal clients and the ARTIMPP
server. Its main duties are as follows:
- Advertises separated services to handle the requests from non-terminal Oracle Tuxedo clients and requests from MQ applications.
- Message Mapping.
For MQ application request messages, it converts an MQ message to a format that can be used by
ARTIMPP
. For reply messages, it converts anARTIMPP
reply message to an MQ message.For non-terminal Oracle Tuxedo client request messages,
ARTIGW
plays a role in transferring client FML32 buffers to a message format that the program needs and sends the message to MPP. It then decodes the MPP message and then sends a standard FML32 buffer to the client. - Session Management.
Session management is used to associate the asynchronous
ARTIMPP
reply with the originalARTIGW
client requests.
Parent topic: Oracle Tuxedo Application Runtime for IMS Users Servers