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 client DFSRRC00
  • 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 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

This section describes the 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 servers

The Tuxedo ART for IMS servers are:

2.1.1 ARTICTL

The following figure shows how 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


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.
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.
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:

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.

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.

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.

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.

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.

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.

2.1.1.4 IMS System Commands Support

IMS System Commands, such as/FORMAT, /SIGN and /EXIT, are also handled in TCP handler.

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).

Since there is no application password in Mainframe IMS, we remove the application password in Tuxedo ART for IMS security.

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 and tpacladd.

    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.

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.

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.

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.

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.

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.

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.

For immediate program switch via 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.

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.

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.

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.

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.

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.

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.

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.

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 an ARTIMPP 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 original ARTIGW client requests.