概要

本章では、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ツールで使用したいデータベースを指定した場合にのみそのデータベースを使用することができます。

  1. EXEC SQLインターフェースの詳細については、使用する関係型データベースのEXEC SQLガイドを参照してください。

  2. 関係型データベース関連の設定については当該データベース関連ガイドを参照してください。

2. OSCアプリケーション・プログラムの動作

OSCアプリケーション・プログラム・ソースはソースの前処理やコンパイル・プロセスによってバイナリとして作成されます。新規プログラムは、PROGRAMおよびTRANSACTIONリソース定義を登録する必要があります。バイナリはデプロイ・プロセスにより実際のシステムでホット・デプロイされます。このプロセスまで実行すると、アプリケーション・プログラムはOSCアプリケーション・サーバーが提供する環境をベースに動作する準備が完了します。

アプリケーション・プログラムの動作プロセスは以下のとおりです。

  1. クライアントがトランザクションを要求します。

  2. アプリケーション・サーバーがトランザクション要求を受け、ロードするプログラムを決定します。

  3. ディスクに当該プログラムのロードを要求します。

  4. 当該プログラムをディスクからロードします。

  5. サービス提供側のリソース・マネージャーとプログラムがリンクされます。

figure 1 1
アプリケーション・プログラムの動作

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

タスクのトランザクション識別子です。

3.5. CVDA

CVDA(CICS-Value Data Areas)は、システムに予め定義されている値にユーザーが記憶および使用しやすい象徴的な名前を付与したものです。ユーザーはOSCアプリケーション・プログラムを作成する際にシステムで使用するバイナリ値を直接入力する必要がなく、DFHVALUEマクロ関数に名前を引数として送信し、その結果値を利用できます。

CVDA値はCICS値と同じであるので、『IBM CICS Application Programming Reference』を参照してください。

4. EXEC DLIコマンドとCBLTDLI呼び出しインターフェース

OSCアプリケーション・プログラムがHiDBにアクセスするには、DL/Iインターフェースを利用する必要があります。DL/IインターフェースはEXEC DLIというコマンド・レベルのインターフェースとCBLTDLIというCOBOL呼び出しレベルのインターフェースに分けられます。

DL/Iインターフェースの詳細については、DL/Iデータベース・サービスを参照してください。