アプリケーション・インターフェース

本章では、OpenFrame OSI環境で作成されたCOBOLプログラムが使用するインターフェースの種類と使用方法について説明します。

1. 概要

OSI環境では、アプリケーションがデータベースまたはMQにアクセスするには、決められたインターフェース(DL/I呼び出し関数)に従う必要があります。

各関数は、データベースだけでなく、OSI領域(オンライン・プログラム)でも使用されます。使用方法はデータベースの場合と同じです。ただし、SSA(Segment Search Argument)などの特定のオプションは、オンラインでは使用されません。オンラインでは、データベースをMQ(Message Queue)と見なし、関数の機能を代入してください。

インターフェースに従わない場合は、ユーザーが認識できるステータス・コードを戻り値として返します。ステータス・コードについては、DL/Iステータス・コードを参照してください。

DL/I呼び出し関数については、OpenFrame HiDB『HiDBガイド』を参照してください。

2. DL/Iインターフェース

アプリケーションが DL/I呼び出し関数を使用するには、DL/Iインターフェースを使用する必要があります。アプリケーションの言語によって、CBLTDLI、PLITDLI、ASMTDLIなど、さまざまなDL/Iインターフェースを使用することができます。

以下は DL/Iインターフェースの使用方法です。argument 1にはDL/I呼び出し関数名を、argument 2にはPCBを指定します。

CALL 'CBLTDLI' USING argument 1, argument 2, ..., argument n

3. AIBTDLIインターフェース

AIB(Application Interface Block)は、PCBのアドレスが不明な場合の代替として使用するか、またはDL/I呼び出し関数がPCBを必要としない場合に使用できます。 DL/I呼び出し関数でPCBが必要な場合は、AIBのリソース名とpsbgen実行時に登録したPCB名が同一でなければなりません。

以下は、アプリケーションがAIBTDLIインターフェースを介してDL/I呼び出し関数を使用する方法です。argument 1にはDL/I呼び出し関数を、argument 2にはPCBの代わりにAIBを指定します。

CALL 'AIBTDLI' argument 1, argument 2, ..., argument n

4. データベース呼び出し関数

以下は、アプリケーションがデータベースにアクセスするために使用する関数の使用方法です。

  • 使用方法

    Function Code(argument 1) PCB(argument 2) データ領域(argument 3) SSA(argument 4)
  • 引数

    • argument 1

      DL/I関数を指します。関数コードはデータベース・セグメントの処理種類を決定するコードであり、このフィールドは4バイト長の領域としてアプリケーション内で宣言されます。

      以下は、argument 1に指定できる関数です。

      関数 説明

      GU(GET UNIQUE) /

      GHU(GET HOLD UNIQUE)

      データベースの特定セグメントを検索する関数コードです。SSA(引数の4番目からn番目まで指定)を指定してセグメントを取得できます。

      オンライン・プログラムでは、MQ内のメッセージを読み取るように指示します。

      GN(GET NEXT) /

      GHN(GET HOLD NEXT)

      現在配置されているセグメント(呼び出し直前に検索されたセグメント)に続くセグメントを検索する関数コードです。データベース・セグメントを階層順に検索する場合に使用します。

      オンライン・プログラムでは、MQはデータベースとして機能するため、関数の機能もデータベースではなく、MQを対象としています。

      GNP(GET NEXT WITHIN PARENT) /

      GHNP(GET HOLD NEXT WITHIN PARENT)

      データ構造の特定のセグメント・タイプを親とし、そのセグメントの下位レベルにあるセグメントを含むことができます。これをファミリー・セグメントといいます。GNPとGHNP関数コードは、このファミリー・セグメントの階層順に検索されます。

      オンライン・プログラム(IO-PCB)を使用する場合、この関数は使用されません。

      ISRT(INSERT)

      argument 3に入力されたデータを、指定されたデータベースまたはMQに挿入します。

      DLET(DELETE)

      セグメントを削除する場合に使用する関数コードです。

      セグメントを削除する場合は、ホールド系の検索呼び出しを使用してセグメントを配置した後、DLET呼び出しを使用します。削除するセグメントは、削除規則に従ってデータベースから削除されます。

      REPL(REPLACE)

      セグメントを置き換える場合に使用する関数コードです。DLET呼び出しと同様に、ホールド系の検索呼び出しを使用してセグメントを配置した後、REPL呼び出しを使用します。REPL呼び出しを使用してセグメントのキーを変更しないでください。

      オンライン・プログラム(IO-PCB)を使用する場合、この関数は使用されません。

    • argument 2

      アプリケーションがデータ・アクセスとインターフェイスを使用するには、PCBマスクをDB-PCB、IO-PCB、ALT-PCBのいずれかで定義します。PCBは、アプリケーションがCOBOLで作成された場合は、LINKAGEセクションに定義します。アプリケーションに定義されたPCBが呼び出し機能を実行する場合は、OSI内のCONTROLセクションとリンクされます。

      PCB Mask 説明

      DB-PCB

      データベース呼び出し機能が定義されたPCBをDB-PCBといいます。

      IO-PCB

      オンライン機能を使用する場合に使用します。

      ALT-PCB

      他のトランザクションまたは端末に送信する場合に使用します。

    • argument 3

      アプリケーション内のデータ領域を指定します。アプリケーションとデータ・アクセスのデータ処理は、データ領域に指定して使用します。ユーザーはセグメントの長さとSSAのコマンド・コードを使用して、必要な長さをアプリケーション内のXX領域に宣言する必要があります。

    • argument 4

      SSAの処理対象となるセグメントとSensitiveセグメントの条件を定義します。SSAの先頭の名前を、データ構造で定義した階層レベルに従って指定します。nの値は最大値は18です。IO-PCBマスクを使用する場合は、MOD名を設定することで、端末に表示される画面を変更することができます。

      SSAは、データベース呼び出し機能の特殊な引数であり、セグメントに転送される条件の存在に応じて、unqualified SSA(非修飾SSA)とqualified SSA(修飾SSA)に分けられます。

      SSA 説明

      unqualified SSA

      セグメント名を使用してSSAを処理し、セグメント内のフィールド情報に条件を付与しません。

      qualified SSA

      セグメントのフィールド情報に条件を付与します。

データベース呼び出し関数の詳細については、『IBM IMS Application Programming:Database Manual』を参照してください。

5. データ通信呼び出し関数

以下は、データ通信呼び出し関数の機能です。

  • メッセージ・セグメントの送受信

  • メッセージの宛先の変更

  • SPA(Scratch Pad Area)の送信

データ通信呼び出し関数は、データベース呼び出し関数と機能は同じです。ただし、オンラインでMQに蓄積されているメッセージとSPA領域のメッセージは、階層構造(OpenFrame HiDBが持つ特徴的な構造)を持たないため、階層的な検索条件である、データベース呼び出しのSSAは不要です。

SPA(Scratch Pad Area)についての詳細は、『IBM IMS Conversational Transactions』を参照してください。

  • 使用方法

    Function Code(argument 1) PCB(argument 2) データ領域(argument 3) MOD名(argument 4)
  • 引数

    • argument 1

      関数コードを指定する引数です。関数コードは、メッセージ・セグメントとSPA処理のタイプを指定するコードです。このフィールドは、データベース呼び出し機能と同様に、4バイト領域でアプリケーション内で宣言します。

      以下は、argument 1に指定できる関数です。

      関数 説明

      GU(GET UNIQUE)

      メッセージの最初のセグメント(ヘッダー・セグメント)を受信します。アプリケーションはメッセージを受信する際、GUを最初に呼び出す必要があります。

      会話モードで処理される場合は、SPAが受信されます。

      GN(GET NEXT)

      ヘッダー・セグメントに続くメッセージ・セグメントを受信します。

      ISRT(INSERT)

      メッセージ・セグメントまたはSPAを送信します。

      PURG(PURGE)

      ISRTによって送信されたメッセージ・セグメントを1つのメッセージとして端末に出力します。

      CHNG(CHANGE)

      ALT-PCBを使用して、他の端末またはトランザクションにメッセージを送信します。

    • argument 2

      データ通信呼び出し関数のためのPCBは、データベースPCBと同じ方法で定義します。これを論理端末PCBといいます。

      以下は、argument 2に指定できる論理端末PCBのタイプです。

      PCB 説明

      IO-PCB

      トランザクションを要求した論理端末のメッセージを入出力するために使用します。

      Alternative PCB

      デフォルト端末以外の他の端末にメッセージを送信するために使用します。

      Alternative Program PCB

      メッセージを他のプログラムに送信するために使用します。

      1. Alternative Program PCBはALT-PCBと呼ばれます。アプリケーション内における論理端末PCBは、IO-PCB、ALT-PCBの順で定義します。

      2. IO-PCBはOSIシステムで自動的に管理され、ALT-PCBはプログラム定義ユーティリティとして定義します。

    • argument 3

      メッセージ・セグメント、コマンド、SPAの送受信のために使用されるデータ領域です。

    • argument 4

      MFSを実行する端末には、送信するメッセージの形式を、事前にメッセージ・フォーマット定義ユーティリティで定義しておいたMOD名(8バイト)が設定されている領域のアドレスを設定します。MOD名はISRTを行う場合にのみ指定します。

データ通信呼び出しの詳細については、『IBM IMS Application Programming: Transaction Manager Manual』を参照してください。