概要
本章では、OpenFrame OSCシステムが提供するサービスとインターフェースを紹介します。
1. OSCプログラミングの紹介
OpenFrame OSC(以下、OSC)システムで運用される新規アプリケーションのプログラムを開発するか、既存CICSで運用していたアプリケーション・プログラムをマイグレーションして、トランザクション・サービスを構成することができます。OSCシステムの多くのリソースは、CICSが提供する機能とサービスをそのまま提供します。
OSCプログラミング・サービス
OSCは以下のサービスを基本提供し、OSCアプリケーション・プログラムの開発をサポートします。各項目の詳細については、OSCプログラミング・サービスを参照してください。
OSC管理サービス
OSCシステムのリソースは以下のサービスを提供し、OSCアプリケーション・プログラムの構成をサポートします。各項目の詳細については、OSC管理サービスを参照してください。
区分 | 説明 |
---|---|
プログラム制御 |
プログラム実行処理機能を提供します。 |
インターバル制御 |
時間と関連する機能を提供します。 |
タスク制御 |
タスク間の連結処理機能を提供します。 |
動的領域の制御 |
メモリの動的割当および返却処理機能を提供します。 |
一時保存キュー(TSQ) |
一時的にデータを保存するためのキュー機能を提供します。 |
データ転送キュー(TDQ) |
データを転送するためのキュー機能を提供します。 |
チャンネルとコンテナ |
アプリケーション・プログラム間でデータを送受信する機能を提供します。 |
ジャーナル制御 |
システムのイベントや変更事項を記録する機能を提供します。 |
データ管理サービス
OSCアプリケーション・プログラムは以下のリソースを提供してデータ管理をサポートします。各項目の詳細については、データ管理サービスを参照してください。
区分 | 説明 |
---|---|
ファイル |
TSAM(Tmax VSAM)データセットへのアクセス管理機能を提供します。 |
名前付きカウンター・サービス |
カウンター管理機能を提供します。 |
データ通信サービス
以下は、OSCアプリケーション・プログラムとクライアントまたは他の製品とのコネクション機能を提供するリソースです。各項目の詳細については、データ通信サービスを参照してください。
区分 | 説明 |
---|---|
端末 |
端末連結管理機能を提供します。 |
マッピング・サポート |
マップ処理機能を提供します。 |
スプール |
TJES(Tmax Job Entry Subsystem)システムのインターフェース機能を提供します。 |
セキュリティ・サービス
OpenFrame製品群のうちセキュリティ機能を担当するTACF(Tmax Access Control Facility)を利用し、ユーザー・システムおよびリソースへのアクセスを管理するサービスを提供します。詳細については、セキュリティ・サービスを参照してください。
データベース・サービス
OSCアプリケーション・プログラムが、OpenFrameシステムが提供する階層型データベース、かつDL/IデータベースであるHiDBにアクセスする機能を提供します。
OSCシステムは、アプリケーション・プログラムによりサービスを提供できるように、以下のようなインターフェースをサポートします。
-
EXEC CICSインターフェース
-
EXEC DLIインターフェース
-
CBLTDLIインターフェース
OSCユーザー・アプリケーション・プログラムは大部分のサービスをEXECインターフェースを介して提供します。IMS/DBに対応する階層型データベースであるOpenFrame HiDBの場合、特にEXEC DLIインターフェースまたはCBLTDLI呼び出しインターフェースを利用できます。
OSCアプリケーション・プログラムが関係型データベースにアクセスする場合は、EXEC SQLインターフェースを利用します。OSCアプリケーション・サーバーから関係型データベースへのアクセスについては、当該データベースのEXEC SQLインターフェースとTPモニターのTmaxのデータベース管理機能によって実行されるため、本書では扱っていません。ただし、アプリケーション・サーバーのバイナリを作成するとき、oscbuildツールで使用したいデータベースを指定した場合にのみそのデータベースを使用することができます。
|
2. OSCアプリケーション・プログラムの動作
OSCアプリケーション・プログラム・ソースはソースの前処理やコンパイル・プロセスによってバイナリとして作成されます。新規プログラムは、PROGRAMおよびTRANSACTIONリソース定義を登録する必要があります。バイナリはデプロイ・プロセスにより実際のシステムでホット・デプロイされます。このプロセスまで実行すると、アプリケーション・プログラムはOSCアプリケーション・サーバーが提供する環境をベースに動作する準備が完了します。
アプリケーション・プログラムの動作プロセスは以下のとおりです。
-
クライアントがトランザクションを要求します。
-
アプリケーション・サーバーがトランザクション要求を受け、ロードするプログラムを決定します。
-
ディスクに当該プログラムのロードを要求します。
-
当該プログラムをディスクからロードします。
-
サービス提供側のリソース・マネージャーとプログラムがリンクされます。

3. EXEC CICSインターフェース
EXEC CICSインターフェースはアプリケーション・プログラミング・コマンドとシステム・プログラミング・コマンドに分けられます。
-
アプリケーション・プログラミング・コマンド
ユーザーがアプリケーションを開発する際に使用するコマンドで、リソースにアクセスする目的で使われます。
-
システム・プログラミング・コマンド
システム開発者のためのコマンドで、INQUIREまたはSETのいずれかで始まり、リソース情報を取得する目的で使われます。
EXEC CICSインターフェースの構文についてまず説明した後、すべてのコマンドに共通して適用されるRESPオプションとNOHANDLEオプションを紹介します。また、OSCアプリケーション・サーバーはユーザーがより簡単にEXEC CICSインターフェースを使用できるように、追加のシステム・コントロール・ブロックであるEIB(EXEC Interface Block)と、システムが提供するデータ値であるCVDA(CICS-Value Data Area)を提供します。これらについても本節で説明します。
3.1. EXEC CICSインターフェースの構文
EXEC CICSインターフェースは、COBOLプログラミング言語で構成されたプログラム・ソースで以下のような構文に基づいて使用します。
EXEC CICS command [option …] END-EXEC.
項目 | 説明 |
---|---|
command |
実行したいコマンドを入力する項目です。(必須項目) |
option |
commandに入力されるコマンドによって使用できる項目が決まります。コマンドによって必須オプションと選択オプションに分けられます。さらに、パラメータが必要なオプションとパラメータが不要なオプションに分けられます。 |
以下は、FILE01というファイルでKEY-01に格納されたRIDFLDに適したレコードをUPDATE方式でAREA-01に読み込む例です。この例では、上記のcommandにREADコマンドを入力し、optionにFILE、INTO、RIDFLD、UPDATEを入力します。
EXEC CICS READ FILE('FILE01') INTO(AREA-01) RIDFLD(KEY-01) UPDATE END-EXEC.
OSCアプリケーション・サーバーがサポートするEXEC CICSコマンドの構文とオプションの一覧については、アプリケーション・プログラミング・インターフェースを参照してください。 |
3.2. RESPオプション
OSCアプリケーション・サーバーは、EXEC CICSコマンドを実行するたびに、実行したコマンドの応答コードをユーザーに通知しますが、このコードをRESP値といいます。RESP値は事前にシステムが約束した値に従って指定されます。NORMALを除いたすべての値は例外条件に該当します。まずRESP値で例外条件を区分し、RESP2値はより詳しい情報を提供する目的で使用します。
RESP、RESP2値は、コマンド・オプションを使用してユーザーが指定した変数に設定されるようにするか、EIBに設定されたEIBRESP、EIBRESP2フィールドを使用してアクセスすることができます。こうして取得したRESP、RESP2値をシステム・マクロ関数DFHRESPの結果値と比べることで、正常実行されたか、または特定の例外条件が発生したかを確認できます。DFHRESP関数は事前に約束したシンボルを引数として受信し、適切なバイナリ値を返します。
以下は、NOTFNDという例外条件が発生した場合、その条件を処理する例です。DFHRESPマクロ関数は例外条件値を指定する機能を持ちます。
EXEC CICS ... RESP(MY-RESP) END-EXEC. IF MY-RESP=DFHRESP(NOTFND) THEN ... END-IF
コマンドにRESPオプションを指定すると、例外条件が発生した場合に、システムが指定されたデフォルトの動作を自動実行しません。
OSCアプリケーション・サーバーは基本的にCICSと同じデフォルト動作を実行します。デフォルト動作に関する詳細については、『IBM CICS Application Programming Reference』または『IBM CICS System Application Programming Reference』を参照してください。 |
3.3. NOHANDLEオプション
EXEC CICSインターフェースを介して要求されたコマンドを実行中に例外条件が発生した場合、システムはデフォルト動作を実行します。ほとんどの場合のデフォルト動作は異常終了になりますが、条件によっては別の動作を実行することもあります。
EXEC CICSインターフェースの特定コマンドを使用して、ユーザーがデフォルト動作を直接修正することもできます。詳細については、例外条件処理コマンドと異常終了処理コマンドを参照してください。
コマンドにRESPオプションまたはNOHANDLEオプションを使用した場合、システムは例外条件が発生しても、ユーザーが処理すると仮定し、約束されたデフォルト動作を実行しません。
3.4. EIB
EIB(EXEC Interface Block)はシステム・コントロール・ブロックであり、ユーザー・プログラムとシステムをリンクします。EIBには、トランザクション識別子、トランザクション開始時刻、端末識別子、コマンドの実行結果値などがフィールドごとに保存されます。ユーザーはEIBのすべてのフィールドにアクセスすることができます。したがって、ユーザーはEIBに保存されている値から現在処理中のトランザクションの詳細情報を簡単に取得できます。
以下は、現在OSCアプリケーション・サーバーがサポートしているEIBフィールドです。
フィールド | 説明 |
---|---|
EIBAID |
端末から受信した最後のAID(Attention Identifier)値です。 |
EIBCALEN |
当該プログラムから渡されたCOMMAREAの長さを意味します。 |
EIBCOMPL |
RECEIVEコマンドからデータをすべて受信したかどうかを表示します。 |
EIBCPOSN |
端末から受信したカーソルの位置(position)です。 |
EIBDATE |
タスクの開始日付であり、ASKTIMEコマンドによってアップデートされます。 |
EIBFN |
EXEC CICSインターフェースを使用して最後に実行されたコマンドを意味します。 |
EIBRCODE |
最後に実行されたEXEC CICSコマンドのリターン・コードです。 |
EIBRECV |
アプリケーション・プログラムがRECEIVEコマンドを使ってデータを受信できるか否かを指定します。 |
EIBREQID |
インターバル・コントロール・コマンドによって指定された要求識別子です。 |
EIBRESP |
最後に実行されたEXEC CICSコマンドのRESP値です。 |
EIBRESP2 |
最後に実行されたEXEC CICSコマンドのRESP2値です。 |
EIBRSRCE |
最後にアクセスしたリソースの識別子です。 |
EIBTASKN |
システムによって当該タスクに割り当てられたタスク番号です。 |
EIBTIME |
タスクの開始時刻であり、ASKTIMEコマンドによってアップデートされます。 |
EIBTRMID |
タスクに接続された主端末(principal facility)の識別子です。 |
EIBTRNID |
タスクのトランザクション識別子です。 |
4. EXEC DLIコマンドとCBLTDLI呼び出しインターフェース
OSCアプリケーション・プログラムがHiDBにアクセスするには、DL/Iインターフェースを利用する必要があります。DL/IインターフェースはEXEC DLIというコマンド・レベルのインターフェースとCBLTDLIというCOBOL呼び出しレベルのインターフェースに分けられます。
DL/Iインターフェースの詳細については、DL/Iデータベース・サービスを参照してください。 |