2 z/OS上のIMSからUNIX上のOracle Tuxedo Application Runtime for IMS Usersへ
z/OS上のIMSの機能をエミュレートするために、Tuxedo ART for IMSは、Oracle Tuxedoの制御の下で実行されるサーバーのグループを提供します(必須サーバーとオプションのサーバーを含む)。必須サーバーには、ARTICTL、ARTIMPPおよびARTIBMPがあります。オプション・サーバーには、ARTIADMおよびARTITERMがあります。さらに、Tuxedo ART for IMSは、サーバーを支援するDLLとユーティリティのグループを提供します。z/OS上のIMSからTuxedo ART for IMSへのマッピング・リストは、次のとおりです。
- IMS言語ユーティリティ
DFSUPAA0:MFSGENユーティリティ - BMPユーティリティ
DFSRRC00: Oracle TuxedoクライアントDFSRRC00 - 制御リージョン: Oracle Tuxedo
ARTICTLサーバー - MPPリージョン: Oracle Tuxedoサーバー
ARTIMPP、MPPを実行するコンテナ - BMPリージョン: Oracle Tuxedoサーバー
ARTIBMP、BMPを実行するコンテナ - DLIアドレス空間: ARTのDLIに専用のアドレス空間はありません。DL/I APIを実装し、
ARTIMPP/ARTIBMPアドレス空間で実行するライブラリを指定します。 - トランザクション: サービス
Tuxedo ART for IMSのアーキテクチャ全体を次の図に示します。
図2-1 Tuxedo ART for IMSのアーキテクチャ

Tuxedo ART for IMSは次のもので構成されます。
- ART MFS言語ユーティリティ -
MFSGEN - ART MFS制御ブロック・ライブラリ
- ARTメッセージ・フォーマット・サービス(
ARTICTL) - ARTメッセージ処理リージョン(
ARTIMPP) - ARTバッチ・メッセージ処理リージョン(
ARTIBMP) - ART JCL送信クライアント –
DFSRRC00 - オープン・システムDBプラグインおよびz/OS ODBAプロキシを含むメインフレームIMS/DBサポート・ソリューション
Tuxedo ART for IMSは、作業リクエストを受信します。このリクエストは、リモート端末で入力されています。これは、通常、IMSに対して、実行する作業の種類と使用するデータを特定するトランザクション・コードで構成されています。それらはすべて、ARTICTLのART MFS言語ユーティリティを介してメインフレーム上の元のファイルから解析されたMFS制御ブロック定義に従います。
ARTICTLによって、リモート端末接続が処理され、3270データ・ストリームがEBCDICからASCIIに変換されます。その後、DIFに従ってデータ・ストリームからの情報が解析され、ARTIMPPのMIDに従ってメモリーにメッセージ・セグメントが保存されます。
ARTIMPPによって特定のプログラム(COBOLのもの)が起動されて制御されます。それによって、リクエスト・データが使用されてリモート・オペレータ・リクエストが実行されます。また、作業リクエストに応じてリモート・オペレータに対するデータも準備されます(たとえば、作業の完了の確認、問合せへの応答など)。
最後に、プログラムによって準備されたデータが、最初に作業を要求した端末に送り返されます。このプロセスは前述のワーク・フローのちょうど反対です。
ARTIMPPとは異なり、ARTIBMPは、リモート端末によってではなく、ARTIBMPに固有のOracle Tuxedoクライアント(たとえば、DFSRRC00)によってアクティブ化されます。
2.1 Oracle Tuxedo Application Runtime for IMS Usersサーバー
関連項目:
サーバーの構成の詳細は、『Oracle Tuxedo Application Runtime for IMSリファレンス・ガイド』を参照してくださいTuxedo ART for IMSサーバーは次のとおりです。
2.1.1 ARTICTL
ARTICTLが、デバイスまたはリモート・プログラムからの入力データをIMSへのプレゼンテーション用に書式設定し、アプリケーション・プログラム・データを出力デバイスまたはリモート・プログラムへのプレゼンテーション用に書式設定することで、アプリケーション・プログラムをどのようにデバイス非依存にできるのかを示しています。
図2-2 デバイス非依存アプリケーション・プログラム

MS/MFSは、次の3つのコンポーネントで構成されています。
- 端末制御リスナー(CTLL)
- 端末制御ハンドラ (CTLH)
- フォーマット・サービス・ライブラリ (LIBMFS)
各部分の機能を詳細に説明する前に、もう1つのオフライン・ユーティリティであるART MFS言語ユーティリティMFSGENについて説明する必要があります。MFSGENは、メインフレーム上の4つのタイプのMFS制御ブロックを、オープン・プラットフォーム上のバイナリ・ファイルに転送し、そのファイルをフォーマット・サービス・ライブラリによって読み取れるようにするために使用されます。MFSGENもTuxedo ART for IMSの重要な機能です。
アプリケーション・プログラムおよび端末またはリモート・プログラム用に入力および出力を書式設定するために指定する必要があるMFS制御ブロックには、4つのタイプがあります。
- メッセージ出力ディスクリプタ(MOD): MFSがアプリケーション・プログラムから受信するメッセージ・レイアウトを定義します。
- デバイス出力書式(DOF): プログラムが通信する各デバイス宛てのメッセージをMFSがどのように書式設定するのかを記述します。
- デバイス入力書式(DIF): プログラムが通信する各デバイスからMFSが受信するメッセージの書式を記述します。
- メッセージ入力ディスクリプタ(MID): MFSが、メッセージをアプリケーション・プログラムで処理できるようにさらにどのように書式設定するのかを記述します。
ノート:
このドキュメント全体で、用語「メッセージ・ディスクリプタ」はMIDとMODの両方を指します。「デバイス書式」とはDIFとDOFの両方を指します。MOD、DOF、DIFおよびMIDはそれぞれ、特定のメッセージを処理します。プログラムが送信する一意のメッセージごとにMODおよびDOFが、プログラマが受信する一意のメッセージごとにDIFおよびMIDが必要です。
2.1.1.1 端末制御リスナー
端末制御リスナー(CTLL)プロセスは、ARTICTLサブシステムで実行される標準Oracle Tuxedoサーバーです。これは、ARTICTLが開始されたときに起動します。
CTLLは、端末リスナー・サーバーのロールを実行します。これは、3270でアプリケーションと接続するパブリック・アドレスでリスニングします。それによって、受信接続リクエストごとに、ハンドラ・プロセスの1つにこの接続が送信されます。詳細な機能は次のとおりです。
- CTLLプロセスは、3270端末エミュレータに接続するネットワーク・ポートを確立します。このポートは、"ウェル・ノウン"であり、そのアドレスは、端末エミュレータのすべてのエンド・ユーザーが使用可能です。
- CTLLプロセスは、受信接続リクエストに対してウェル・ノウン・ポートでリスニングするCTLHプロセスを作成します。CTLLプロセスは、システム負荷に基づいて動的にCTLHプロセスの数を管理します。
- CTLLは、共有メモリー、専用TCP/IP接続などの様々なプロセス間通信(IPC)メカニズムを利用してCTLHプロセスと通信します。各CTLHは、多数の端末エミュレータ・クライアントを処理でき、CTLLは各ハンドラが処理している接続の数を追跡します。
親トピック: ARTICTL
2.1.1.2 端末制御ハンドラ
端末制御ハンドラ(CTLH)プロセスは、端末I/O、ユーザー認証、およびユーザーにかわって行うリクエストされたトランザクションの呼出しなど複数の接続を管理します。ユーザーがトランザクションをリクエストするたびに、このトランザクション・リクエストをCTLHが(tpacall()を介して)メッセージ処理リージョン(ARTIMPP)に送信します。詳細な機能は次のとおりです。
2.1.1.2.1 端末I/O
接続リクエストが端末エミュレータから着信すると、それはCTLHプロセスの1つによって受け入れられ、処理されます。これらのプロセスによって、ARTICTLサブシステムの入力および出力が管理されます。端末がARTICTLサブシステムに接続すると、ARTCTLHが、端末のかわりにOracle Tuxedoクライアントとして機能します。端末からトランザクションIDを入力すると、ARTCTLHによってそのトランザクションIDがOracle Tuxedoサービス識別子に変換され、tpacall()が呼び出されます。その後、Oracle Tuxedoによって、そのトランザクションが端末3270データ・ストリームとともにMPPサーバーにルーティングされてトランザクションが実行されます。
親トピック: 端末制御ハンドラ
2.1.1.2.2 セッション管理
CTLHは、セッション管理を実行します。端末を使用してARTICTLサブシステムに接続すると、CTLHによって新しいユーザー・セッションがその接続に対して確立され、その端末に対するすべての後続の画面I/Oが処理されます。パフォーマンス拡張として、各CTLHプロセスは、複数のセッションを同時に管理できます。ポートからエミュレータを切断すると、CTLHはセッションを終了します。
親トピック: 端末制御ハンドラ
2.1.1.2.3 3270データ・ストリームの変換
CTLHは、ASCIIとEBCDICの間の変換を実行します。CTLHは、3270データ・ストリームを端末との間で送受信する前または後に、ASCIIとEBCDICの間のデータ変換を実行します。
親トピック: 端末制御ハンドラ
2.1.1.2.4 IMSメッセージの書式設定
CTLHは、メッセージ・フォーマット・サービス・ライブラリ(LIBMFS)を呼び出すことでメッセージ書式設定を実行します。CTLHは、端末からデータを受信すると、そのデータ・ストリームを分割し、DIF制御ブロックに従って有用な情報を抽出し、MID制御ブロックに従ってアプリケーション・プログラムによって使用されるメッセージを作成します。CTLHは、アプリケーション・プログラムから返されたメッセージを受信すると、そのメッセージを分割し、MOD制御ブロックに従って有用なセグメントを抽出します。その後、それが、DOF制御ブロックに従ってデータ・ストリームを作成し、端末に送信します。
各MID/MOD MSG文で定義されているメッセージ書式設定には3つのタイプがあります(OPT=1/2/3)。メッセージ書式設定の各タイプは、ARTICTLおよびARTIMPPによって処理される様々なMSG定義を定義します(パフォーマンスのためにMSGのいくつかのフィールドまたはセグメントは削除されます)。各MSGタイプの利点と詳細は、IMS/TMのプログラミングに関する項を参照してください。
アプリケーション・プログラムでは、ARTICTLとARTIMPPの間で使用されるMSGタイプに関して考慮する必要はありません。ARTIMPPによって、MSGはアプリケーション・プログラムに送信される前にそのI/O領域で調整されます。ARTICTLおよびARTIMPPは、OPTをサポートしていません。それらはアプリケーション・プログラムが認識可能な一般的なタイプ(MSGのフィールドもセグメントも削除しない)を使用してMSGを処理します。
親トピック: 端末制御ハンドラ
2.1.1.2.5 端末タイプのサポート
ARTICTLサブシステムは、次の6つの端末タイプをサポートしています。
3270 Size(24, 80)
3270,2 Size(24, 80)
3270 - A2 Size(24, 80)
ARTICTLサブシステムがブートするときに、CTLHがTN3270Eプロトコル・ネゴシエーションを実行し、端末のタイプとIDがネゴシエーションを介して判別され("IBM-3278-2-E"など)、CTLHがその端末のタイプに対応する3270データ・ストリームを処理します。
親トピック: 端末制御ハンドラ
2.1.1.3 制御ブロック・ライブラリ管理
メッセージ・フォーマット・サービス・ライブラリ(LIBMFS)は、CTLHによってリンクされているライブラリとして配布され、各CTLHプロセスで実行され、制御ブロック管理も処理します。これによって、制御ブロックがリクエストされると、適切な制御ブロックが検索されてキャッシュに読み込まれ、保持されます。リクエストが終了すると、制御ブロックはキャッシュからクリアされます。
親トピック: ARTICTL
2.1.1.5 IMSセキュリティのサポート
Tuxedo ART for IMSは、4つのタイプのOracle Tuxedoセキュリティ・メカニズムをサポートしています(セキュリティなし、APP_PW、ユーザーレベル認証(USER_AUTH)およびアクセス制御リスト(ACLまたは必須ACL))。
ノート:
- tmloadcfを使用している場合、アプリケーション・パスワード文字を入力しないでください。[Enter]キーを押すことでそれをNULLのままにします。
tpgrpadd、tpusraddおよびtpacladdを介して、ユーザー・リストおよびアクセス制御リストを追加します。端末がTuxedo ART for IMSランタイムに接続したときの最初の画面は、IMSサインオン画面です。セキュリティが構成されていない場合、ユーザー名(ユーザー名はNULLにできません)を入力する必要があります。
認証の場合:
- 成功。成功画面が端末に返されます。
- 失敗。認証が成功するまで、サインオン画面に戻ります。
認証に失敗した場合、端末にエラー・メッセージが表示されますが、端末をクリアして他のトランザクションを実行できます。
- システム・コマンド"
/Sign off"を使用して、現在のユーザーをサインオフします。ユーザーがTuxedo ART for IMSランタイムからサインオフすると、サインオン画面が表示され、ユーザーはそれを使用して直接再度サインオンできます。ユーザーはその画面をクリアして、システム・コマンド"
/Sign"、"/Sign on"、"/Signon username password"を使用してART IMSランタイムに再度サインオンすることもできます。
ユーザー名とパスワードの最大長はメインフレームと同じ8(文字)です。
詳細は、『Oracle Tuxedoユーザーズ・ガイド』のATMIアプリケーションにおけるセキュリティの使用に関する項を参照してください。
ARTICTLは、TCP/IPおよびメッセージ書式サービスを介して3270端末へのアクセスを提供します。ARTICTLは、ユーザー入力に基づいて画面を書式設定し、3270端末から入力を受信し、3270端末から受信したメッセージをOracle Tuxedoリクエストに変換し、リクエストを処理のためにARTIMPPに送信し、ARTIMPPから応答を受信し、応答を書式設定し、元の端末に送り返します。
Tuxedo ART for IMSでは、ARTICTLハンドラと3270端末との間のネットワーク・リンクでの暗号化と証明書認証もサポートされています。現在サポートされているSSLバージョンはTLS 1.2です。
親トピック: ARTICTL
2.1.2 ARTIMPP
標準モード(CLOPTで-pの指定なし)のARTIMPPは、サービス・コンテナとして機能するように設計されたOracle Tuxedoサーバーです。これは、初期化中に構成ファイルに基づいて、サービスのセットを公開し、それが公開したサービスへのリクエストを受信する一方で、対応するCOBOL/Cアプリケーション・プログラムを呼び出し、応答をリクエスタ(通常はARTICTLサーバー)に送り返します。サービスは、UNIX上で、メインフレームのトランザクション・コードに相当するものです。
永続モード(CLOPTで-pオプションを指定)のARTIMPPは、すべてのTPトランザクション(imsresource.descで定義されたトランザクション)の/Qをモニターします。1つの永続トランザクションの1つの/Qにメッセージが発生したら、そのメッセージを/Qから取得して、対応するCOBOL/Cアプリケーション・プログラムを呼び出してから、リクエスタにレスポンスを返します。
2.1.2.1 動的サービス公開
標準モードのARTIMPPは、起動中に一連の構成ファイルに基づいてサービスのセットを動的に公開します。ARTIMPPサーバーに含められるすべてのサービス(トランザクション・コード)はimstrans.descで定義されており、その中で定義されている各トランザクション・コードは、公開される同じ名前を持つサービスに対応しています。imsapps.descには、ARTIMPPによって呼び出されるCOBOL/Cアプリケーション・プログラムがすべて定義されています。各$appname.psbは、そのアプリケーションによって必要とされる代替PCBを定義します。詳細は、「Oracle Tuxedo Application Runtime for IMS Usersの構成」を参照してください。構成ファイルが変更されている場合、ARTIMPPは、再起動中に変更のみを受け入れることができます。さらに、ARTIMPPは、TPタイプのアプリケーションのみをサポートしています。
親トピック: ARTIMPP
2.1.2.2 動的COBOLプログラム起動
ARTIMPPによって公開される各サービス(トランザクション・コード)には、サービスを処理する定義済COBOLアプリケーション名があります。ARTIMPPは、サービスに対するリクエストを受信する一方で、ARTIMPPリクエストされたサービスに対応するCOBOLアプリケーション名を検索し、対応するCOBOLプログラムを呼び出します。各COBOLアプリケーションは、.gntファイルにコンパイルされ、ディレクトリにCOBOL検索順序で格納されます。Micro Focus COBOL環境では、プログラムの検索順序は、環境変数$COBPATHによって定義されます。COBOL-IT COBOL環境では、プログラム検索順序は、$COB_LIBRARY_PATHによって定義されます。
親トピック: ARTIMPP
2.1.2.3 トランザクション・クラスの区別
ARTIMPPサーバーの各インスタンスは、トランザクション・コードのどのクラスがそれによって公開されるのかを指定できます。このメカニズムは、デプロイメントの調整に使用できます。
親トピック: ARTIMPP
2.1.2.4 暗黙的なトランザクションのコミットメント
サービスのために呼び出されたCOBOLアプリケーション・プログラムが、トランザクションを明示的にコミットまたはロール・バックしない場合、ARTIMPPサーバーがトランザクションを暗黙的にコミットします。
親トピック: ARTIMPP
2.1.2.5 プログラムの切替え
ARTIMPPでは、1つのリクエストが、1つのトランザクション・コードによって、別のトランザクション・コードに転送されること、つまり、プログラムの切替えがサポートされています。プログラムの切替えは、非会話型トランザクション・コードから別の非会話型トランザクション・コードへ、会話型トランザクション・コードから別の会話型トランザクション・コードまたは非会話型トランザクション・コードへの場合に実行できます。1つの会話コードと別の会話コードとの間のプログラム切替えは、遅延および即時切替えがサポートされています。遅延プログラム切替えは、元のトランザクション・コードが、SPAに含まれている別のトランザクション・コードを持つ端末(切替えターゲット)に返されることを意味し、端末がメッセージを再度送信すると、そのメッセージはその切替えターゲットにルーティングされます。即時プログラム切替えは、元のものがメッセージを別のトランザクション・コードに転送し、それが端末に応答することを意味します。非会話型トランザクション・コード間のプログラム切替えは、即時切替えのみがサポートされています。応答モード・トランザクション・コードから非応答モード・トランザクション・コードへのプログラム切替えの場合、ARTIMPPでは、それに制限を設けていませんが、ユーザーは、このようなプログラム切替えの設計には注意する必要があります。それは、応答モード・トランザクションには、応答が必要ですが、非応答モード・トランザクションでは、端末に応答しない場合があるためです。
ALT PCBによる即時のプログラム切替えでは、ターゲット・トランザクションが永続トランザクション(imsresource.descで定義されたトランザクション)の場合、そのターゲット・トランザクションに関するメッセージは/Qに格納されます。永続モードのARTIMPPがこのトランザクションを処理します。ターゲット・トランザクションが非永続トランザクションの場合、ARTIMPPがトランザクション・サービスを呼び出し、標準モードのARTIMPPがこのトランザクションを処理します。
ノート:
ACLが権限制御メカニズムとして有効化されている場合は、切替えチェーンのすべてのトランザクション・コードは、チェーン内で最初のトランザクション・コードを実行するエンド・ユーザーからアクセスできる必要があります。それ以外の場合、結果は予測不能であり、起こり得る結果の1つは端末が応答しない可能性があることです。親トピック: ARTIMPP
2.1.3 ARTIMPP_ORA
ARTIMPP_ORAは、ARTIMPPのすべての機能を備えています。外部リソース・マネージャ(RM)として使用されるOracle Databaseもサポートできます。これは、Oracle Databaseによって提供されるいくつかのライブラリを必要とします。Oracle DatabaseでARTIMPP_ORAを使用するには、RMセクションをUBBCONFIGファイルで適切に構成する必要があります。
2.1.4 ARTIBMP
ARTIBMPは、固定サービスARTIBMP_SVCを公開するOracle Tuxedoサーバーであり、BMPクライアントは、このサービスをリクエストして、COBOLで記述された指定されたBMPプログラムを呼び出すことができます。
2.1.4.1 動的COBOLプログラム起動
ARTIBMP_SVCは、ARTIBMPクライアントから渡されたメッセージから指定されたBMPプログラム名および関連付けられたPSB名を取得し、リクエストされたプログラムが有効なバッチ・プログラム(BATCHタイプを持ち、imsapps.descで構成されている)であり、指定されたPSBも有効であることを確認して、プログラムを呼び出し、結果または完了通知を同期的にクライアントに返します。
親トピック: ARTIBMP
2.1.5 ARTIBMPT
ARTIBMPTはトランザクション指向BMPサーバーです。INが割り当てられた状態でDFSRRC00が呼び出された場合、トランザクション・コードは他のパラメータとともにARTIBMPTに渡されます。ARTIBMPTは、COBOL/Cで記述された指定のBMPを呼び出すことでトランザクションを処理します。BATCHアプリケーションのみがサポートされています。ARTIBMPTは、トランザクション指向BMPアプリケーションのみを処理できます。トランザクション指向BMPアプリケーションは、パラメータ・リストの$MBRで定義され、imsapps.descでもTYPE=BATCHによって定義されているアプリケーションです。
ノート:
現時点で、ARTIBMPTはクライアント端末のメッセージはサポートしていません。トランザクション指向BMPアプリケーション/トランザクションは永続トランザクションにする必要があり、そのためにはimsresources.descで定義する必要があります。
2.1.6 ARTIBMP_ORA
ARTIBMP_ORAは、ARTIBMPのすべての機能を備えています。外部リソース・マネージャ(RM)として使用されるOracle Databaseもサポートできます。これは、Oracle Databaseによって提供されるいくつかのライブラリを必要とします。Oracle DatabaseでARTIBMP_ORAを使用するには、RMセクションをUBBCONFIGファイルで適切に構成する必要があります。
2.1.7 ARTIADM
MPモードでは、ARTIADMは、選択内容に基づいてブートでき、マスターからスレーブ・ノードに構成ファイルをダウンロードします。それは、Oracle Tuxedoサーバーであり、各ノードは、最大1つのARTIADMをデプロイする必要があります。ARTIADMをブートする場合、ARTICTLより前にブートする必要があり、ART_IMS_CONFIG環境変数を各ノードに設定する必要があります。
2.1.8 ARTITERM
クロスドメイン・モードでは、ARTICTLおよびARTIMPPが同じドメインにない場合、ARTITERMが使用されて、ARTIMPPからARTICTLに応答が返されます。つまり、ARTITERMは、ARTIMPPからARTICTLへの仲介者として機能します。
2.1.9 ARTIGW
ARTIGWは、非端末クライアントとARTIMPPサーバー間のブリッジとして機能するOracle Tuxedoサーバーです。主な機能は次のとおりです。
- 非端末Oracle TuxedoクライアントからのリクエストとMQアプリケーションからのリクエストを処理するために別々のサービスを通知します。
- メッセージのマッピング。
MQアプリケーションのリクエスト・メッセージの場合、MQメッセージを、
ARTIMPPで使用可能な形式に変換します。応答メッセージの場合は、ARTIMPPの応答メッセージをMQメッセージに変換します。非端末Oracle Tuxedoクライアント・リクエスト・メッセージの場合、
ARTIGWは、クライアントのFML32バッファをプログラムが必要とするメッセージ形式に転送する役割を果たし、そのメッセージをMPPに送信します。次にMPPメッセージをデコードして、標準のFML32バッファをクライアントに送信します。 - セッション管理。
セッション管理を使用して、非同期の
ARTIMPP応答と元のARTIGWクライアント・リクエストを関連付けます。