JP2001514778A - メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法 - Google Patents

メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法

Info

Publication number
JP2001514778A
JP2001514778A JP53976698A JP53976698A JP2001514778A JP 2001514778 A JP2001514778 A JP 2001514778A JP 53976698 A JP53976698 A JP 53976698A JP 53976698 A JP53976698 A JP 53976698A JP 2001514778 A JP2001514778 A JP 2001514778A
Authority
JP
Japan
Prior art keywords
logic
queue
command
mqf
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP53976698A
Other languages
English (en)
Inventor
マーク・エム・ホイットニー
Original Assignee
マーク・エム・ホイットニー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マーク・エム・ホイットニー filed Critical マーク・エム・ホイットニー
Publication of JP2001514778A publication Critical patent/JP2001514778A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 ストレージ・コントローラは、プロセッサとメモリとを有しており、コントローラは、対応するアドレスを有するI/Oコマンドを受け取る。コントローラ・メモリでは、ネットワーク上で情報を受信及び送信する通信スタックが提供される。更に、メッセージ・キュー・ファシリティ(MQF)が提供され、通信スタックと協動して、メッセージ・キュー・バーブに応答する。MQFは、通信スタックに、キューをMQFにおいて提供させ、また、MQFにおけるキューに情報を通信スタックに提供させる。更に、インターフェース・ロジックがコントローラ・メモリにおいて提供され、I/Oコマンドに応答して、I/Oコマンドが所定のコマンドの第1の組の中に入るかどうかを判断する。そうであれば、インターフェース・ロジックは、I/Oコマンドを対応するメッセージ・キュー・バーブ及びキューにマップして、MQFを呼び出す。このようにして、MQFは、通信スタックと協動して、バーブに対応する情報を送受信し、他方で、処理をストレージ・コントローラのコンピュータ・クライアント(例えば、メインフレーム)からオフロードする。

Description

【発明の詳細な説明】 メッセージ・キューイング・ファシリティを含む ネットワーク・トランザクションを メインフレームからインテリジェントな入出力装置にオフロードする システム及び方法 発明の背景 1.発明の分野 本発明は、メインフレーム処理における改良に関し、更に詳しくは、メッセー ジ・キューイング・ファシリティ(MQF)を含むネットワーク・トランザクシ ョンをインテリジェントな入出力(I/O)装置にオフロードすることによって 得られる動作効率に関する。 2.関連技術の説明 ここ数年にわたって、メッセージ指向(message oriented)のミドルウェア製 品が、ヘテロジーニアス(異種)なコンピューティング環境の統合において本質 的な役割を演じている。端的にいえば、メッセージ指向のミドルウェアによれば 、異なるオペレーティング・システム、処理アーキテクチャ、データ・ストレー ジのフォーマット、ファイル・サブシステム、通信スタックなど、異なる処理特 性を有するコンピューティング・システムの間での情報の交換が容易になる。こ こでの内容に特に関連するのは、「メッセージ・キューイング・ファシリティ( message queuing facilities)」(メッセージ待ち行列化機構、MQF)として 知られている一群の製品である。このようなシステムは、多く、市販されている 。例としては、IBMのMQSeries、Digital Equipment Corp.のDEC Messaqe Queue 、XIPCのMomentum、Microsoft Corp.のFalconなどがある。 メッセージ・キューイング・ファシリティは、キュー(待ち行列)を用いて相 互の差異を隔離(insulate)又は抽象化(abstract)することによって、あるコ ンピューティング・システムにおけるアプリケーションが、別のコンピューティ ング・システムにおけるアプリケーションと通信するのを助ける。これらのシス テム では、アプリケーションが、メッセージをキューの上に配置、すなわち、プット (put)し、キューが、通信ネットワークを介して、その内容を別のアプリケーシ ョンのキューに伝送する。この別のアプリケーションは、そのキューから情報を 取り外す、すなわち、ゲット(Get)し、それを処理する。 更に詳しくは、送り側のアプリケーションは、キュー・マネジャ(MQFの要 素)に「接続」(connect)し、キュー・マネジャのキュー定義を用いて、ロー カルなキューを「開く」(open)。(「接続する」と「開く」とは、共に、MQse riesアプリケーション・プログラミング・インターフェース(API)における 実行可能な「バーブ(動詞)」である。)アプリケーションは、次に、メッセー ジをキューの上に「プット」することができる。 メッセージを送る前に、MQFは、典型的には、メッセージを持続型ストレー ジ(persistent storage)に委託(コミット)する。典型的には、直接アクセス 記憶装置(DASD)に委託する。メッセージが持続型ストレージにいったん委 託されると、MQFは、通信スタックを介して、メッセージを、受け手側の補助 的及び遠隔MQFに送る。遠隔MQFは、メッセージを、持続型ストレージに委 託し、肯定応答(ACK)を送り手側のMQFに送る。送り手側のキュー・マネ ジャに肯定応答が戻されることによって、送り手の持続型ストレージからそのメ ッセージを削除することが許される。メッセージは、受け手側のアプリケーショ ンがその処理を終了したと指示するまで、遠隔MQFの持続型ストレージ上に留 まる。遠隔MQFが受け手側のアプリケーションをトリガしなければならないか どうか、又は、受け手側がそれ自身でキューをポーリングするかどうかは、キュ ーの定義が指示する。持続型ストレージを用いることにより、回復可能性が容易 になる。(これは、「持続型キュー」として、知られている。) 結果的に、受け手側のアプリケーションは、そのローカルなキュー(すなわち 、送り手側のアプリケーションに関する遠隔キュー)において、メッセージにつ いて告知され、送り手側のアプリケーションのように、そのローカルなキュー・ マネジャに「接続」し、メッセージが現にその上に存在するキューを「開く」。 そして、受け手側のアプリケーションは、「ゲット」又は「ブラウズ」というバ ーブを実行して、メッセージをキューから読み出す、又は、それを単に見ること ができる。 いずれのアプリケーションであってもそのキューの処理を終了すると、「閉じ る」というバーブを生じ、キュー・マネジャから「切断」することは自由である 。 MQFによって用いられる持続型キュー・ストレージは、論理的には、インデ クス付のシーケンシャルなデータ・セット・ファイルである。メッセージは、典 型的には、FIFOベースでキューに配置されるが、キュー・モデルは、ブラウ ジングのためのインデクス付アクセスや、キューの中のメッセージへの直接的な アクセスも許容する。MQFは、持続型メッセージ・キューを含むデータ・セッ トに対するファイル・マクロを実行する。例えば、MVS/OS390の環境では、アプ リケーションが、マクロを実行して指名されたデータ・セットを開く。このオペ レーティング・システムは、論理レコードに対するアプリケーションの要求を特 定のディスク・モジュール上の特定の物理的位置にマップするのに用いられる制 御ブロックの組を初期化する。この物理的位置は、MCHRアドレスを用いて識 別される(MCHRフォーマットは既知である)。 メッセージを持続型ストレージに記憶する際には、メインフレームに常駐する MQFが、その持続型ストレージ装置と通信する。特に、MQFは、オペレーテ ィング・システム・ソフトウェアに、例えばリード・データなどの所望のデータ 及び所望の作用を識別する情報を含む一連のチャネル・コマンド・ワード(CC W)を作成し初期化する。この一連のCCWは、「チャネル・プログラム」であ る。CCWは、ディスク上のレコードのMCHR位置と、リード・ライトされる データの長さと、レコードがリード又はライトされるメインフレームのメモリ・ アドレスとを含む。(CCWフォーマットと対応するチャネル・インターフェー スとは既知である。) 典型的なメインフレーム・システムは、持続型ストレージ・デバイスとしてD ASDを用いる。DASDは、データを記憶するのに用いられる不揮発性ストレ ージ・デバイスのDASDに特定の配列と、DASDストレージ制御ユニット( DSTC)とを有する。DSTCは、データをCCWに特定の位置から検索した り、データをこれらの位置にライトしたりする様々なアルゴリズムを実行する。 物理的には、DSTCは、プロセッサとRAMとを含む。RAMは、制御プログ ラムを保持するのに用いられ、また、キャッシュとして用いられる。DSTC機 能に対する事実上の標準(デファクト・スタンダード)は、3390インターフ ェースである。 DSTCは、疎結合された(loosely-coupled)コンピューティング・クラス タにおけるDASDの共有を容易にするのに用いられるのが典型的である「ロッ ク・ファシリティ」を実現する。ロック・ファシリティは、クラスタ内の複数の コンピュータが同時にそれにアクセスしようとするときに、共有されているDA SDのシリアル化と調整の管理を助ける。ロックの細分性(granularity)は、 実現ごとに変動するが、典型的には、レコード、データ・セット又はDASDボ リューム・レベルにある。物理的には、DSTCは、複数のコンピュータがそれ に付属されることを許容する複数の電気的インターフェースを有する。 MQFは、多くのアプリケーションにとって有用であるが、現在のMQF及び 関係のあるソフトウェアは、かなりのメインフレーム資源を用いる。関係するシ ステムが非常に効果である(例えば、トランザクションのレスポンス・タイム要 求を維持するのに)とすると、MQF及び関係のあるソフトウェアとに費やされ るコンピューティング資源は、合計では、かなりの量となりうる。 更に、現在のMQFが有している、共有されたキューのサポートを可能にする 機能は、あるとしても、限定されている。 また、メインフレームは、オープン・システムに統合することが困難である。 概要 本発明の目的は、上述の及びそれ以外の課題を解決することである。 本発明の別の目的は、コスト面で効率的な態様で、MQF機能を提供すること である。 本発明の更に別の目的は、例えば、キューの共有可能性を提供することにより 、MQF機能を拡張することである。 本発明の更に別の目的は、MQFをコンピュータからオフロードすることであ る。 本発明の更に別の目的は、通信スタックを、又は、少なくともそのいくつかの 要求を、コンピュータからオフロードすることである。 本発明の更に別の目的は、オープン・システムのあるタイプのI/Oデバイス への統合を容易にすることである。 本発明の実施例では、MQF及び関係のある処理が、メインフレームのプロセ ッサから改良型I/Oデバイスに移動される。改良型I/Oデバイスは、従来の I/ O機能を実行するだけではなく、MQFソフトウェア、通信スタック及びそれ以 外の新規なロジックを含む。改良型I/Oデバイス上のMQFと通信スタックと は、従来型のものである。 新規なロジックが、MQFソフトウェアへのインターフェースとして、効果的 に機能する。特に、改良型I/Oデバイスは、プロセッサとメモリとを有するス トレージ・コントローラを含む。このコントローラは、対応するアドレスを有す るI/Oコマンドを受け取る。新規なロジックは、I/Oコマンドに応答して、 I/Oコマンドが第1の組の所定のI/Oコマンドの中にあるかどうかを判断す る。そうである場合には、ロジックは、I/Oコマンドを、対応するメッセージ ・キュー・バーブ及びキューにマップして、MQFを呼び出す(invoke)。これ から、MQFは、通信スタックと協動して、そのバーブに対応する情報の送受信 をする。 このロジックは、また、ストレージ・コントローラと相互作用している複数の クライアント・コンピュータの間でキューが共有されるように、共有されたキュ ーを提供する能力を含んでいる。 実施例によっては、I/Oコマンドの限定されたサイズのペイロードを受け取 るI/O環境で動作するが、それよりも大きなサイズのペイロードを有するMQ Fをサポートする。ある実施例では、これは、レコード・ポーリングを用いて達 成される。 このようにして、メインフレーム・コンピュータなどのクライアントが、アド レスを有するI/Oコマンドを、その上に常駐する通信スタックと、通信スタッ クと協動するMQFと、MQFと協動するインターフェース・ロジックとを有す るI/Oコントローラに送ることによって、MQFプロトコルに従って、メッセ ージを送受信することができる。インターフェース・ロジックは、I/Oコマン ドをMQFバーブにマップし、そのバーブをI/Oコントローラに常駐するMQ Fに発行する。I/Oコントローラに常駐するMQFは、通信スタックに、MQ FプロトコルによりMQFバーブに対応するメッセージを送らせる。 図面の簡単な説明 図1は、本発明の好適実施例のアーキテクチャの図である。 図2は、好適実施例のアドレス監視(address-watching)ロジックを図解する 流れ図である。 図3は、非共有キューへのプット(put)を処理する好適なロジックを図解す る流れ図である。 図4は、共有キューへのプットを処理する好適なロジックを図解する流れ図で ある。 図5は、共有キューへのプットを処理する好適なロジックを図解する流れ図で ある。 図6は、複数のプットを作業の1単位として処理する好適なロジックを図解す る流れ図である。 図7は、複数のプットを作業の1単位として処理する好適なロジックを図解す る流れ図である。 図8は、非共有キューへのゲット(Get)を処理する好適なロジックを図解す る流れ図である。 図9は、共有キューへのゲットを処理する好適なロジックを図解する流れ図で ある。 図10A−Bは、複数のゲットを作業の1単位として処理する好適なロジック を図解する流れ図である。 図11A−Bは、複数のゲットを作業の1単位として処理する好適なロジック を図解する流れ図である。 図12A−Bは、複数のゲットを作業の1単位として処理する好適なロジック を図解する流れ図である。 図13は、キューの第1のメッセージへのブラウズを処理する好適なロジック を図解する流れ図である。 図14は、キューの次のメッセージへのブラウズを処理する好適なロジックを 図解する流れ図である。 図15は、キューからブラウズされるメッセージを識別するカーソルを伴うブ ラウズを処理する好適なロジックを図解する流れ図である。 図16は、キューからの特定のメッセージのゲットのための識別及び選択を処 理するのにカーソルを用いる好適なロジックを図解する流れ図である。 図17は、共有キューへのメッセージとそれからのデスクリプタのオプション を用いてゲットを処理する好適なロジックを図解する流れ図である。 図18は、共有キューへのメッセージとそれからのデスクリプタのオプション を用いてプットを処理する好適なロジックを図解する流れ図である。 図19は、好適実施例のキュー監視ロジックを図解する流れ図である。 図20は、好適実施例のキュー・ベースの制御インターフェースを図解する流 れ図である。 図21は、従来技術によるMQFメッセージの流れを図解する図である。 図22は、好適実施例によるMQFメッセージの流れを図解する図である。 詳細な説明 本発明は、ネットワーク・トランザクションをインテリジェントなI/Oデバ イスにオフロードするシステム及び方法を提供する。好適実施例は、特に、MQ F動作をメインフレーム・システムからオフロードすることに関する。高価なメ インフレームのコンピューティング・サイクルを節約することに加え、この新規 な構成によれば、クラスタにおける複数のメインフレームの間での共有されたキ ューなど、メインフレームのコンテキストにおけるMQFの新規な使用が可能と なる。更に、本発明のある実施例では、メインフレームとオープン・システムと を結びつけ、従来はメインフレームの中に密に含まれていた(tightly-housed) 広範囲な動作情報が、より融通性のあるオープン・システムの中に選択的に写さ れる(replicated)ことが可能になる。この密(タイト)な統合によって、動作シ ステムと決定サポート・システムとが、日単位、週単位、月単位などのバッチ・ ベースのフィードバック・ループではなく、リアルタイム・イベント・ベースの フィードバック・ループで動作することが可能になる。また、業務において命じ られる際には、アプリケーションをメインフレーム環境からオープン・システム に移動させることも可能となる。 好適実施例では、メインフレーム・ソフトウェアは、特定ファイルのI/Oコ マンドへのMQFコールを、改良型I/Oデバイスの特定のファイル位置に翻訳 する。 改良型I/Oデバイスは、特定位置への動作を検出し、対応する動作を実行する 。これらの対応する動作は、特定のI/O動作を、対応するMQF動作にマップ し、改良型I/Oデバイスに常駐する対応するMQFロジックを呼び出すことを 含む。MQFロジックは、次に、改良型I/Oデバイス上に常駐する通信スタッ クを呼び出す。類似する動作が逆の方向に実行される。すなわち、MQF動作が 遠隔マシンから到着するときである。このようにして、MQF動作と、対応する ネットワーク処理とが、コンピューティング・サイクルが高価であるメインフレ ームから、コンピューティング・サイクルが相対的には実質的に安価である改良 型I/Oデバイスに移動される。更に、この構成は、顕著なオーバヘッドを追加 することはないが、その理由は、MQF動作は、I/Oデバイスへのアクセスを 既に要求しメッセージが持続型ストレージに記憶されるようにしているからであ る。 図1は、本発明の好適実施例による改良型I/Oデバイス100のハイレベル でのアーキテクチャ図を示している。この実施例は、IBMのTPFメインフレ ーム・システムと特に関係を有する。 I/Oデバイス100は、好ましくは、DSTC102を含むDASDである 。DSTC102は、プロセッサとRAM(図示せず)とを含み、以下で述べる 様々なルーチンを実行する。RAMは、様々な実行可能なロジックを記憶するの に用いられ、データを保持するキャッシュとしても用いられる。様々な実行可能 なロジックには、DASDエンジン108、インターフェース・ロジック105 、MQF104及び通信スタック116が含まれる。インターフェース・ロジッ ク105の好適実施例には、関連するテーブル110a、112a、118aに 加えて、アドレス監視ロジック110、マッピング・ロジック112及びキュー 監視ロジック118が含まれる。 DSTC102は、CCWを運ぶチャネル・インターフェース104を用いて 、メインフレームと通信する。DSTCは、ネットワーク接続106を用いてネ ットワーク(図示せず)と通信する。ネットワーク接続は、パケット又はセル・ ベースでよい。 DASDエンジン108は、重要な部分においては、チャネル・プログラム収 集ロジック108a、チャネル・プログラム処理ロジック108b及びロック・ ファ シリティ108cを含む。チャネル・プログラム収集ロジック108aは、メイ ンフレームと通信し、一方向において、メインフレームから一連のCCWを集め 、逆の方向において、一連のCCWを送る役割を有している。CCWのこれらの シーケンスは、チャネル・プログラムに対応し、チャネル・プログラムは、メイ ンフレームにおけるSVCコールに対応する。SVCコールは、リード(FIN DC)、ロックを伴うブロックされたリード(FIWHC)、ブロックされたリ ード(FINWC)、ライト(FILEC)、ライト及びアンロック(FILU C)、アンロック(UNFRC)などを含む。(TPF環境は、レコード・ベー スでロックすなわちホールドし、ブロックされたリードへの参照は、例えば、メ インフレーム・アプリケーションが作用を行う状態を示し、従って、ブロックさ れたリードを用いて、メインフレーム・アプリケーションは、データが戻される まで、ブロックされたすなわち待機状態に入る。様々なSVCコール及び対応す るチャネル・プログラムは既知であり、上では、便宜的にまとめられている。) チャネル・プログラム処理ロジック108bは、収集されたチャネル・プログラ ムに対応する機能を実現する。これは、例えば、IBMの3090機能に従う様 々な形式のリード及びライトを実行するエンティティ(entity)である。ロック ・ファシリティ108cは、チャネル・プログラムに対応するロックを実現する エンティティである。チャネル・プログラム収集ロジック108aは、ロック・ ファシリティ108cと協動して、収集されたチャネル・プログラムが有効であ るかどうかを判断する。例えば、チャネル・プログラムがロックされたレコード に作用しようとする場合には、チャネル・プログラム収集ロジックは、メインフ レームに、その要求は無効であると告知する。それ以外のDASDエンジン・ロ ジックは、呼び出されない。同様に、チャネル・プログラム収集ロジックは、ロ ック状態が与えられたときに、任意の作用が有効であるかどうかを判断する。例 えば、あるレコード上へのロックを要求したメインフレームだけが、そのレコー ドをアンロックすることを許可される。結果的なアンロックは、別のとき、例え ば、データがレコードにライトされた後で生じるが、ロック・ファシリティ10 8cは、コマンドのプロプライエティ(propriety)すなわち有効性をテストす るために最初にアクセスされる。同様に、チャネル・プログラム処理ロジック1 08bは、ロック・ファシリティ108cと協動し、それによっ て、適切なロックが、処理されているチャネル・プログラムに従って保持(ホー ルド)及び保持解除(アンホールド)なされるようにする。 好適実施例では、チャネル・プログラム収集ロジック108aとチャネル・プ ログラム処理ロジック108bとの間の制御の転送は、矛盾なく定義されている 。例えば、それぞれは、DSTCランタイム環境において別々にスケジュール可 能なスレッドとして実現することができる。また、同じスレッドではあるが、2 つの間には矛盾なく特定されるコールが備わっており、制御の流れを他方のロジ ックに再方向付けするようにパッチを当てることができるものとしても実現でき る。制御メカニズムの転送は、特定のDSTCの実現に依存する。 チャネル・プログラム収集ロジック108aは、収集されたチャネル・プログ ラムのバッファされたコピーを維持する。このバッファされたコピーは、例えば 、キャッシュ120に常駐するが、いずれの場合にも、ハンドル又はポインタを 用いて一意的に位置を特定可能である。バッファされたコピーは、他のことに加 えて、対応するチャネル・プログラム・コマンド(例えば、FIWHC)、MC HRアドレス、任意のデータの長さ及びデータ・ペイロードを示す情報を供給す る。 好適実施例では、アドレス監視ロジック110が、DSTC102によって受 け取られたチャネル・プログラムのMCHRアドレスを能動的にモニタする。こ れは、いったんチャネル・プログラムが収集されたときに、好ましくは、チャネ ル・プログラム処理ロジック108bが呼び出される前に、アドレス監視ロジッ ク110が呼び出されるように、制御の流れを再方向付けすることによってなさ れる。この再方向付けは、ある環境において適切なスケジュリング・プライオリ ティを設定することを通じて、又は、別の環境においてコール・アドレスをパッ チすることによって達成されうる。 いずれに場合においても、アドレス監視ロジック110は、ハンドル又はメイ ンフレームから収集されたばかりのチャネル・プログラムの位置を指定するそれ 以外の情報を用いて呼び出される。いったん呼び出されると、アドレス監視ロジ ック110は、現在のチャネル・プログラムにおいて呼び出されたMCHRアド レスが関心の対象であるか、すなわち、既知の関心のアドレスの組の中にあるか どうかを判断する。好適実施例では、アドレスの組は、オフロードされたMQF キューに対し て特にとっておかれたMCHRアドレスの範囲として実現される。アドレス監視 ロジック110は、関心対象であるMCHRアドレスの状態を維持する内部アド レス監視ロジック状態テーブル110aを有している。アドレス監視ロジック状 態テーブル110aは、マッピング・コンフィギュレーションとMCHRアドレ スの状態とを保存し、処理をマッピング・ロジック112に適切に方向付ける。 テーブル110aのこれ以外の詳細な後に述べる。 アドレスが関心対象ではない場合には、アドレス監視ロジック110は、それ 以上の処理を行うことなく、制御を直ちにDASDエンジン108に戻す。DA SDエンジン108は、従って、自由に、収集されたチャネル・プログラムに対 応するどのような作用でも実行することができる。この場合には、これらの作用 は、物理的な持続型ストレージ要素109へのリード・ライトなどに対応する可 能性が高い。 アドレスが関心対象である場合には、アドレス監視ロジック110は、マッピ ング・ロジック112を呼び出す。マッピング・ロジック112は、以下で説明 するように、様々な作用を実行し、MQF114と相互作用する。結果的には処 理が完了し、マッピング・ロジック112は、制御をアドレス監視ロジック11 0に戻し、更に、アドレス監視ロジック110は、制御をDASDエンジン10 8に戻す。又は、マッピング・ロジック112は、制御を直接にDASDエンジ ン108に戻す。関心対象であるアドレスは、好適実施例であるロジックによっ て用いられるようにとっておかれ、従って、制御がDASDエンジン108に戻 されると、物理的なストレージ要素109に関しては、無害(innocuous)の活 動だけが結果的に生じる。しかし、従来型の処理アルゴリズムが呼び出される。 従って、アドレス監視ロジック110とマッピング・ロジック112とによって 収集され作用されたチャネル・プログラムがロック(ホールド)又はアンロック (アンホールド)動作を含む場合には、ロック・ファシリティ108cは、依然 として、対応する作用を実行する、すなわち、与えられたMCHRレコードをロ ック又はアンロックする。ロック・ファシリティ108cのこの呼び出しは、D ASDエンジン108の通常の制御の流れと処理との結果である。 マッピング・ロジック112は、アドレス・ウォッチャ110によってトリガ されると、ちょうど収集されたバッファされたチャネル・プログラムを解析し、 これ から、情報を、指名されたキューへのプット又はそれからのゲットなどの、対応 するMQF作用にマップする。好適実施例では、特定の指名されたキューと特定 のMQFバーブとが、チャネル・プログラム・コマンド(例えば、FILEC) とMCHRアドレスとの組合せに基づいてマップされる。更に詳しくは、好適実 施例では、指名されたキューは、複数のMCHRアドレスに対応する。これがな される理由は、使用可能なチャネル・プログラム・コマンドの数が、サポートさ れるMQFバーブの数よりも少ないからである。 好適実施例では、キューが開かれる又は作られると、マッピング・ロジック1 12は、MCHRアドレスをキューの名称(及び/又は、キューへのハンドル) にマップするテーブル・データ構造112aを維持する。MCHRアドレスは、 改良型I/Oデバイス100とメインフレームとの間の動作におけるキューを識 別するのに用いられるが、MQF114との相互作用の際には、テキスト的(te xtual)なキューの名称が用いられる。例えば、Example_qという与えられた指名 されたキューは、複数の対応するMCHRアドレスを有することがありうる。例 えば、1つのMCHRアドレスが4KB未満のプットに対して用いられ、別のも のが4KBより大きなプットに対して用いられ、また別のものが作業プットのユ ニットに用いられ、類似のゲットには別のものが用いられる、などである。 これらの状態テーブルには、キュー・アドレス・マップ・ベクトルに加えて、 オープン・キュー・ネーム、それらの既知の状態、それらの対応するMCHRア ドレス、それらのMQF114キュー・ハンドルなどが含まれる。テーブルに記 憶されている他の情報も、ここで説明する。関心対象であるそれぞれのMCHR は、アドレス監視ロジック110とキュー監視ロジック118との両方がMCH R/キューの組合せを以下に処理するかに関してマッピング・ロジック112に 指令するのに用いるアドレス・マップ・ベクトルを有している。キュー・アドレ ス・マップ・ベクトルは、MCHRアドレスのー部である。このベクトルは、M CHRアドレスを、ゲット・キュー若しくはプット・キュー、又は、作業キュー のゲット・ユニットなどに対応するものとして定義する。 関係するMQF動作と対応する指名されたキューとを識別した後で、マッピン グ・ロジック112は、対応するマッピング・ルーチンを呼び出す。これらのル ー チンは、MQF114との相互作用の際に、中間的な作用を実行する。ある場合 には、中間的な作用は、チャネル・プログラムにおける情報を、対応するMQF 作用に本質的にフォーマットし、別の場合には、中間的な作用は、MQF114 の機能を拡張する。 マッピング・ロジック112は、MQF114と協動する。好適実施例では、 MQFは、市販されている既知のIBMのMQSeriesである。マッピング ・ロジック112は、対応する既知のAPIを用いて、MQF114と通信する 。同様に、MQFは、既知の技術を用いて、好適実施例のロジックと通信する。 MQF114は、次に、通信スタック116と協動する。好適実施例では、マ クロソフトNT又はヒューレット・パッカード・ユニックス11オペレーティン グ・システム上で使用可能な通信スタックを用いる。好適実施例では、通信スタ ックは、アプリケーション層よりも下位にあるサービスを実行する役割を有して いる。実際に必要とされるサービスの量は、MQFの選択と、DSTC102の 補助的な必要性とに依存する。 MQF114は、キュー監視ロジック118と協動する。キュー監視ロジック 118は、アドレス監視ロジック110と同じように、MQF114とマッピン グ・ロジック112とによって処理されているすべてのキューに対応する内部テ ーブル118aを有する。アドレス監視ロジック状態テーブル110aがMCH Rアドレスを指名されたキューにマップするのに対し、キュー監視ロジック状態 テーブル118aは、指名されたキューをMCHRアドレスにマップする。好適 実施例では、キュー監視ロジック118は、メッセージが指名されたキューに到 着したときに、MQF114によってトリガされる。このトリガは、キュー監視 ロジック状熊テーブル118aに保存されているコンフィギュレーション及び状 態に基づく既知のMQF技術を用いる。キュー監視ロジック118は、マッピン グ・ロジック112をトリガし、メッセージを対応するMCHRに転送する(例 えば、メインフレームからのペンディングのFIWHCコマンドがその上でホー ルド待機状態にある場合)か、又は、告知質問(notification inquiry)メッセ ージをマスタ制御応答キュー(これは、後で述べるように、マイクロフレークと の通信に用いられる)の中にプットする。 以上で概略が述べられたように、マッピング・ロジック112は、他のことに 加えて、中間的な作用(intermediate actions)を実行する。これらの作用は、 流れ図3−20に説明されている。ある場合には、メインフレームは、一連の動 作を実行する、すなわち、一連のチャネル・プログラムを送り及び応答し手、与 えられたMQF作用を実現することを必要とする。この意味では、メインフレー ムは、I/Oデバイスとの複数の相互作用を必要とし、他方で、従来型の構成で は、I/Oデバイス100との間では最も少ない場合には1つの動作、すなわち 、メッセージを持続型ストレージに記憶することを必要とするだけであった。し かし、メインフレームからI/Oデバイスへの相互作用の数が増加しても、MQ Fと通信スタックとの処理をオフロードすることによる利益は、そのコストを上 まわる。アドレス監視ロジック100は、関心対象のMCHRアドレスを求めて DSTC108の活動を検出するときには、MCHRアドレスをそのアドレス監 視ロジック状態テーブル110aの中において見つける。アドレス監視ロジック 状態テーブル110aは、監視されたすべてのMCHRアドレスに対するエント リを含む。それぞれのエントリは、アドレス・マップ・ベクトル・フィールドを 含み、このアドレス・マップ・ベクトル・フィールドは、MCHRアドレスに対 する活動を処理するマッピング・ロジック112におけるルーチンへのインデク ス・ポインタを含む。表Aには、商用のMQFに関係する最も典型的なシナリオ がまとめられている。ただし、これらのシナリオは完全なものであると考えるべ きではなく、最も広く用いられているシナリオの作業モデルと考えるべきもので ある。 [表A] 図2は、DSTC108aチャネル・プログラム収集ロジックによって付勢さ れるアドレス監視ロジック110を示している。アドレス監視ロジック110は 、チャネル・プログラム収集ロジック108aがチャネル・インターフェース1 04からのチャネル・プログラムを解析し、どのI/Oコマンドが付随するMC HRアドレス上で実行されているかを判断すると、ステップ200において、付 勢される。 処理は、ステップ205に進み、そこで、MCHRアドレスは、アドレス監視 ロジック・テーブル110aに記憶されている値に対して範囲がチェックされる 。MCHRがこの範囲チェックに合格しない場合には、ロジックは、次に、ステ ップ2 10に進み、制御の流れは、DSTCエンジン108に戻される。アドレス範囲 テストの試験に合格すると、処理は、ステップ210に進む。 ステップ210は、実施に応じて、アドレス監視ロジック・テーブル110a の中でサーチ、ハッシング、インデクスを行い、適切なMCHRアドレス・エン トリを見つける。ステップ220では、MCHRアドレスに対するエントリがな い場合には、又は、エントリはあるがテーブルAからのブランチ・ベクトルをそ の中にもっていない場合には、処理はステップ225に進む。ステップ225で は、制御の流れは、DSTCエンジン108に戻される。 ステップ220で有効なエントリとブランチ・ベクトルが見つかった場合には 、ステップ240及び250において、MCHRのアドレス監視状態テーブル1 10aのエントリのブランチ・ベクトル・フィールドにおいて見いだされたアド レスは、それに対してブランチ(分岐)がなされる。このブランチ・アドレスは 、マッピング・ロジック112における一意的なロジック・ルーチンを表す。こ のロジックすなわちアドレス監視ロジック110へのマッピング・ロジック11 2へのブランチからの予期されるリターンは存在しない。 図3は、メッセージが4Kバイト未満の場合のシングル・プット・コマンドを 処理するロジックを示している。(TPFメインフレームによってサポートされ る最も大きなレコード・サイズは、4KBである。)このロジックは、次の表1 のバッファされたチャネル・プログラム・コマンドの中の1つが、テーブル11 0aにおいて識別されるように、シングル・プットと関連付けされたMCHRア ドレスとの関連でマッピング・ロジック112によって検出されたときに呼び出 される。 [表1] ロジックは、ステップ300において開始し、ステップ305に進む。ステッ プ305では、ロジックは、指名されたキューが開いているかどうかを判断する 。キューに対する名称は、バッファされたチャネル・プログラムにおいてMCH Rアドレスを有するアドレス・テーブル110aにおけるエントリから検索され る。これは、MQF114への既知のAPIコールを用いて判断されるが、好適 実施例では、状態インジケータがテーブル110aに維持される。テーブル・ロ ジック110aは、アソシエーション・ロジック(図示せず)を含み、それによ り、与えられた指 名されたキューに対するすべてのMCHRエントリにアクセスがなされ、相互に 矛盾なく修正される。従って、対応するMCHRアドレスAを用いてexample_q へのシングル・プットが実行されるときにキューが開いている場合には、exampl e_qに対する他方のMCHRエントリは、同じように、開くように修正され、従 って、大きなプット(すなわち、4KBよりも大きい)に対応するMCHRアド レスBも、同じように、開くように修正される。このアドレスもまたexample_q にマップされるからである。 指名されたキューが開いていない(オープンでない)場合には、ロジックは、 ステップ310に進み、ここで、指名されたキューは、MQF114への既知の APIコールを用いて開かれる。マッピング・ロジック112は、アドレス監視 ロジック110とキュー監視ロジック118とをそれぞれ用いて、アドレス監視 ロジック状態テーブル110aとキュー監視ロジック状態テーブル118aとの 両方を協動的に維持する。従って、この時点で、マッピング・ロジック112は 、テーブル110a及び118aを、すべての関連するエントリに関して修正さ せる。次に、ロジックは、ステップ325に進む。 指名されたキューが開いている(オープンな)場合には、ロジックは、ステッ プ325に進む。ステップ325では、ロジックは、チャネル・プログラム・コ マンドがFILECであるかどうか、すなわち、ロッキング・コマンドのないラ イトであるかどうかを判断する。 ステップ325において解析されたコマンドがFILECである場合には、ロ ジックは、ステップ330に進み、そこでは、バッファされたチャネル・コマン ドのデータ・ペイロードが、MQFの既知のAPIを用いて、対応する指名され たキューにプットされる。キューの名称は、テーブル110aから提供される。 次に、ロジックは、ステップ335に進み、そこで、制御の流れは、DASDエ ンジン108に戻される。 ステップ325におけるコマンドがFILECではない場合には、ロジックは 、ステップ340に進む。ステップ340では、ロジックは、制御の流れをDA SDエンジン108に戻し、エラー条件が発せられる。このシナリオでは、認識 されていないチャネル・プログラム・コマンドが受け取られる。 図4は、メッセージが4Kバイトよりも小さい共有されたキューへのシングル ・プット・コマンドを処理するロジックを示している。このロジックは、図2の バッファされたチャネル・プログラム・コマンドの1つがテーブル110aにお いて識別されるように、シングル・プットと関連付けされたMCHRアドレスと 関連してマッピング・ロジック112によって検出されるときに呼び出される。 このロジックは、以下で説明されるように、シングル・プットをサポートするの と同時に、共有されたMQFキューへのプットもサポートする。キューの共有可 能性は、図4に示されたマッピング・ロジック112によって拡張された機能の 結果であり、MQF114に内在的なものではない。 [表2] ロジックは、ステップ400において開始し、ステップ405に進む。ステッ プ405では、ロジックは、指名されたキューが開いているかどうかを判断する 。キューに対する名称は、バッファされたチャネル・プログラムにおいてMCH Rアドレスを有するアドレス・テーブル110aにおけるエントリから検索され る。これは、MQF114への既知のAPIコールを用いて判断されるが、好適 実施例では、状態インジケータがテーブル110aに維持される。 指名されたキューが開いていない場合には、ロジックは、ステップ410に進 み、ここで、指名されたキューは、MQF114への既知のAPIコールを用い て開かれる。マッピング・ロジック112は、アドレス監視ロジック110とキ ュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テーブ ル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維持 し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ415に進む 。ステップ415では、ロジックは、バッファされたチャネル・プログラム・コ マンドを解析し、それがFIWHCであるかどうか、すなわち、ブロックされた リード及びロックであるかどうかを判断する。(ブロックされたという側面は、 メインフレーム側の状態を指しており、I/O側のブロッキングの側面には関係 ない。)このコマンドは、I/Oデバイス100に接続された複数のメインフレ ームの間でキューが共有可能である場合に用いられる。好適実施例でFIWHC を用いる理由は、 以下で説明されるように、それが、ロック・ファシリティ108cの通常の処理 を通じてMCHRアドレス・レコード上のロックを自然にトリガするからである 。ロックにより、このロックが解除(アンホールド)されるまでは、他のメイン フレームが、対応するMCHRレコードにアクセスすることができなくなる。 ステップ415において解析されたコマンドがFIWHCである場合には、ロ ジックは、ステップ420に進み、そこでは、制御の流れが、DASDエンジン 108に、そして、結果的には、レコードをロックすることにより他のエンティ ティがそのキューに対応するMCHRアドレスにアクセスできなくするロック・ ファシリティ108cに戻される。 ステップ415におけるコマンドがFIWHCではない場合には、ロジックは 、ステップ425に進み、そこで、ロジックは、チャネル・プログラム・コマン ドがFILUCであるかどうか、すなわち、アンロック・コマンドを備えたライ トであるかどうかを判断する。 ステップ425において解析されたコマンドがFILUCである場合には、ロ ジックは、ステップ430に進み、そこで、バッファされたチャネル・コマンド のデータ・ペイロードが、MQFの既知のAPIを用いて、対応する指名された キューにプットされる。キューの名称は、テーブル110aから提供される。ロ ジックは,次に、ステップ435に進み、そこで、制御の流れは、DASDエン ジン108に,そして結果的には、レコードをアンロックすることにより他のエ ンティティがそのキューに対応するMCHRアドレスにアクセスすることを許容 するロック・ファシリティ108cに戻される。 ステップ425のコマンドがFILUCでない場合には、ロジックは、ステッ プ440に進み、そこで、ロジックは、チャネル・プログラム・コマンドがUN FRCであるかどうか、すなわち、アンロック・コマンドであるかどうかを判断 する。このコマンドは、キューを既にロックした後に、共有されたキューへのプ ットをアボートする必要がある場合に、メインフレームによって用いられる。 ステップ440において解析されたコマンドがUNFRCである場合には、ロ ジックは、ステップ445に進み、そこで、制御の流れは、DASDエンジン1 08に、そして結果的には、レコードをアンロックすることにより他のエンティ ティが そのキューに対応するMCHRアドレスにアクセスすることを許容するロック・ ファシリティ108cに戻される。 ステップ440で解析されたコマンドがUNFRCでない場合には、ロジック は、ステップ450に進み、そこで、制御の流れは、DASDエンジン108に 戻され、そこで、エラー条件が発せられる。このシナリオでは、認識されていな いチャネル・プログラム・コマンドが受け取られる。 図5は、メッセージが4Kバイトよりも大きいシングル・プット・コマンドを 処理するロジックを示している。このロジックは、表3のバッファされたチャネ ル・プログラム・コマンドが、テーブル110aにおいて識別されるように、シ ングル・プットと関連付けされたMCHRアドレスと関連してマッピング・ロジ ック112によって検出されるときに、呼び出される。このロジックは、以下で 説明されるように、共有されたMQFキューへのプットをサポートする。キュー の共有可能性は、マッピング・ロジック112によって拡張された機能の結果で ある。 メインフレームのソフトウェアは、4Kバイトよりも大きなメッセージを、4 Kのレコード・セグメントのチェーン(列)にセグメント化する。好適実施例で は、従来型のTPFレコード処理を用いて、長いメッセージのセグメント化及び 再組み立て(リアセンブリ)を実現している。TPFのチェーンにおける個別的 なレコードは、修正されたDSTC100のDASD上の既知のファイル・プー ル・アドレスにおいてファイルされる。このTPFレコードのチェーン化は既知 である。これには、チェーンにおける次の及び直前のMCHRアドレスをそれぞ れ含むフォワード及びバック・チェーン化フィールドを有する標準的なレコード ・ヘッダが用いられる。チェーンがDSTCの従来型のプール・ストレージの中 にいったんファイルされると、そのチェーンにおける最初のレコード(チェーン のプライム又はヘッドとして知られている)は、以下で説明されるように、キュ ーにプットされる。(セグメント化された長いメッセージの処理の実現には、長 いメッセージのステージングのために指定されたMQFキューを用いることを含 めて、複数のアプローチが存在する。) [表3] ロジックは、ステップ500において開始し、ステップ505に進む。ステッ プ505では、ロジックは、指名されたキューが開いているかどうかを判断する 。 指名されたキューが開いていない場合には、ロジックは、ステップ510に進 み、ここで、指名されたキューは、MQF114への既知のAPIコールを用い て開かれる。マッピング・ロジック112は、アドレス監視ロジック110とキ ュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テーブ ル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維持 し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ515に進む 。ステップ515では、ロジックは、バッファされたチャネル・プログラム・コ マンドを解析し、それがFIWHCであるかどうか、すなわち、ブロックされた リード及びロックであるかどうかを判断する。 ステップ515において解析されたコマンドがFIWHCである場合には、ロ ジックは、ステップ520に進み、そこでは、制御の流れが、DASDエンジン 108に、そして、結果的には、レコードをロックすることにより他のエンティ ティがそのキューに対応するMCHRアドレスにアクセスできなくするロック・ ファシリティ108cに戻される。 ステップ515において解析されたコマンドがFIWHCではない場合には、 ロジックは、ステップ525に進み、そこで、ロジックは、チャネル・プログラ ム・コマンドがFILUCであるかどうか、すなわち、アンロック・コマンドを 備えたライトであるかどうかを判断する。FILUCコマンドは、共有されたキ ューへのプットに対して発行される一連のコマンドの中の第2のコマンドとして 用いられる。 ステップ525において解析されたコマンドがFILUCである場合には、ロ ジックは、ステップ527に進み、そこで、バッファされたチャネル・コマンド のデータ・ペイロードが更に解析される。ステップ527では、ロジックは、デ ータ・ペイロードにおけるレコードの既知のフォワード及びバック・チェーン化 フィールド(chaining field)を解析する。ステップ527の一部として、現在 のレコードが、マッピング・ロジック112の内部の長いメッセージ・ステージ ング・キャ ッシュ112aの中にシーケンシャルにコピーされる。マッピング・ロジック1 12がTPF標準レコード・ヘッダにおける既知のフォワート・チェーン・フィ ールドがバイナリ・ゼロに設定されていると判断する場合には、現在のレコード は、チェーンの最後にある。現在のレコードにおける非ゼロのフォワード・チェ ーン・フィールドは、チェーンにおける次のレコードを指している既知のMCH Rプール・アドレスである。マッピング・ロジック112は、フォワード・チェ ーンMCHRアドレスを用いて、DSTCエンジン108をセットアップし、フ ォワード・チェーン化されたレコードの内部FINWCコマンドをステージング する。そして、DASDエンジン108をトリガしてフェッチする。DASDエ ンジン108によってフェッチされたフォワード・チェーン化されたレコードは 、マッピング・ロジック112によって、内部の長いメッセージ・ステージング ・キャッシュ112aの中への次のシーケンシャルなレコードとして、コピーさ れる。フォワード・チェーンがあるかどうかを判断し、次に、それを内部の長い メッセージ・ステージング・キャッシュ112aにフェッチするというこの走査 プロセスは、チェーンの終わりを示すバイナリ・ゼロのフォワード・チェーン・ フィールドが見つかるまで継続する。処理は、ステップ530に進む。 ステップ530では、ロジックは、内部の長いメッセージ・ステージング・キ ャッシュ112aに保存されたそれぞれのレコードを通じてシーケンシャルにス テッピングすることにより、レコート・チェーンを解析する。それぞれのレコー ドのフォワード及びバックワード両方のチェーン化フィールドにおけるMCHR アドレスを用いることにより、レコードのチェーンは、フォワード(順方向)及 びバックワード(逆方向)の両方に論理的に横断され得る。この作用により、内 部的な長いメッセージ・ステージング・キャッシュ112aとして存在している チェーンの物理的シーケンスが、その論理シーケンスと適切に一致することが保 証される。ステップ530では、ロジックは、レコードのチェーンに存在するメ ッセージのセグメントを、1つの大きなメッセージに再組み立てする。(DAS Dエンジン108と好適実施例のロジックとは、TPFとは異なり、4Kレコー ドに限定されない。)再び、内部のメッセージ・ステージング・キャッシュ11 2aに保存されているそれぞれのレコードを通じてシーケンシャルにステッピン グすることにより、それぞ れの標準的なTPFレコード・ヘッダは、取り除かれ、残りのメッセージ・セグ メントが、長いメッセージに連結される。 処理は、ステップ535に進み、そこでは、ロジックは、この再組み立てが成 功したかどうかを判断する。成功であれば、ロジックは、ステップ540に進む 。そうでなければ、それは正しくない(bad)チェーンであり、処理は、ステッ プ590を継続するが、そこでは、制御の流れは、DASDエンジン108に戻 され、エラー条件が発せられる。 ステップ540では、ロジックは、内部の長いメッセージ・ステージング・キ ャッシュ112aからの長いメッセージを、MQF114における開いたキュー にプットする。そして、ロジックは、次に、ステップ570に進み、そこでは、 制御の流れは、DASDエンジンに、そして結果的には、FlLUCのMCHR と関連付けされたレコードをアンロックすることにより他のエンティティがその キューに対応するMCHRアドレスにアクセスすることを許容するロック・ファ シリティ108cに戻される。 (この実施例では詳細を述べないが、マッピング・ロジック112において長 いメッセージを再組み立てする代わりに、チェーンの中のそれぞれのレコードを 、作業の1単位としてMQF114にシーケンシャルにプットし、オフボードの プロセッサにそれらを1つの長いメッセージとして再組み立てすることが可能で ある。) ステップ525のコマンドがFILUCでない場合には、ロジックは、ステッ プ560に進む。ステップ560では、ロジックは、バッファされたチャネル・ コマンドを解析する。 ステップ560において解析されたコマンドがUNFRCである場合には、ロ ジックは、ステップ565に進み、そこで、制御の流れは、DASDエンジン1 08に、そして結果的には、レコードをアンロックすることにより他のエンティ ティがそのキューに対応するMCHRアドレスにアクセスすることを許容するロ ック・ファシリティ108cに戻される。 ステップ560で解析されたコマンドがUNFRCでない場合には、ロジック は、ステップ590に進み、そこで、制御の流れは、DASDエンジン108に 戻され、 そこで、エラー条件が発せられる。このシナリオでは、認識されていないチャネ ル・プログラム・コマンドが受け取られる。 図6は、マルチプル・プット・コマンドを、作業のトランザクション・ユニッ トとして処理するロジックを示している。ただし、作業ユニットを構成する個々 のメッセージは、それぞれが、4Kバイトよりも小さい。このロジックは、表4 のバッファされたチャネル・プログラム・コマンドが、マルチプル・プットと関 連付けされたMCHRアドレスと関連してマッピング・ロジック112によって 検出されるときに、呼び出される。このロジックは、以下で説明されるように、 プットをサポートし、更に、共有されたMQFキューへのプットもサポートする 。キューの共有可能性は、マッピング・ロジック112によって拡張された機能 の結果である。 [表4] ロジックは、ステップ600において開始し、ステップ605に進む。ステッ プ605では、ロジックは、指名されたキューが開いているかどうかを判断する 。 指名されたキューが開いていない場合には、ロジックは、ステップ610に進 み、ここで、指名されたキューは、MQF114への既知のAPIコールを用い て開かれる。マッピング・ロジック112は、アドレス監視ロジック110とキ ュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テーブ ル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維持 し、キュー状態を修正する。ロジックは、次に、ステップ615に進む。 指名されたキューが開いている場合には、ロジックは、ステップ615に進む 。ステップ615では、ロジックは、バッファされたチャネル・プログラム・コ マンドを解析し、それがHOLDCであるかどうか、すなわち、MCHRアドレ スをホールドしロックするかどうかを判断する。このコマンドは、特定のメイン フレームからの作業のシンクポインテド(SyncPointed)ユニットが初期化され ていることを示すのに用いられる。キューへの動作は、作業の1ユニットとして 見られる一連のメッセージ・プットであるから、動作は、シンクポイントを用い てフレームされ、フレームとコミット又はロールバックのどちらかとを開始させ て、フレームを終了させなければならない。好適実施例では、HOLDCを用い てシンクポイントをマップしているが、この理由は、それによって、ロック・フ ァシリティ108c の通常の処理を通じてMCHRアドレス・レコード上のロックが自然にトリガさ れるからである。 ステップ615において解析されたコマンドがHOLDCである場合には、ロ ジックは、状態テーブル110a及び112を修正して、シンクポイントが要求 されたことを指示し、ロジックは、ステップ620に進み、ここで、制御の流れ は、DASDエンジン108に、そして、結果的には、レコードをロックするこ とにより他のエンティティがそのキューに対応するMCHRアドレスにアクセス できなくするロック・ファシリティ108cに戻される。 ステップ615において解析されたコマンドがHOLDCではない場合には、 ロジックは、ステップ625に進み、そこで、ロジックは、チャネル・プログラ ム・コマンドがFILECであるかどうか、すなわち、ライト・コマンドである かどうかを判断する。 ステップ625において解折されたコマンドがFILECである場合には、ロ ジックは、ステップ630に進み、そこで、バッファされたチャネル・コマンド のデータ・ペイロードが対応する指名されたキューにプットされる。これが作業 ユニットにおける最初のFILECである場合には、シンクポイント指示セット を有するテーブル110aによって示されるように、FILECは、シンクポイ ント・パラメータ・セットを用いてプットにマップされる。その作用の後で、テ ーブル110aのシンクポイント指示がクリアされる。FILECがトランザク ションの最初ではない場合には、シンクポイント指示がクリアされたテーブルに よって指示されるように、FILECは、シンクポイント・パラメータを設定す ることなくプットにマップされる。次にロジックは、ステップ635に進み、そ こで、制御の流れは、DASDエンジン108に戻される。このように、制御は 、結果的にはメインフレームに戻され、メインフレームはこの作業ユニットにお いてより多くのプットを送ることができ、又は、その作業ユニットの最後のプッ トを送ることができる。 ステップ625におけるコマンドがFILECではない場合には、ロジックは 、ステップ640に進み、バッファされたチャネル・プログラム・コマンドを解 析する。 ステップ640において解折されたコマンドがFILUCである場合には、ロ ジックは、ステップ645に進み、そこで、バッファされたチャネル・コマンド のデータ・ペイロードが、対応する指名されたキューにプットされ、MQFの既 知のAPIを用いて、作業ユニットが省略される。ロジックは、次に、ステップ 660に進み、そこで、制御の流れが、DASDエンジン108に、そして、結 果的には、レコードをアンロックすることにより他のエンティティがそのキュー に対応するMCHRアドレスにアクセスすることを許容するロック・ファシリテ ィ108cに戻される。FILUCは、作業ユニットを終了させるのに用いられ る。メインフレームは、作業ユニットの性質に依存して、FILUCに先行して 多くのFILECを送る。 ステップ640におけるコマンドがFILUCではない場合には、ロジックは 、ステップ650に進み、そこでは、ロジックは、チャネル・プログラム・コマ ンドがUNFRCであるかどうか、すなわち、アンロック・コマンドであるかど うかを判断する。 コマンドがUNFRCである場合には、ロジックは、ステップ655に進み、 そこでは、ロールバック・コマンドがMQFに発せられ、作業の全体のフレーム されたユニットをアボートする。メインフレームのアプリケーションが作業のシ ンクポイント・ユニットとしてメッセージのプットを実行することを開始した場 合には、しかし、何らかの理由により、終了すべきではないと判断した場合には 、メインフレームは、UNFRCを送って、MQFの既知のAPIを用いてロー ルバックをトリガする。ロジックは、次に、ステップ660に進み、そこでは、 制御の流れは、DASDエンジン108に、そして、結果的には、レコードをア ンロックすることにより他のエンティティがそのキューに対応するMCHRアド レスにアクセスできるようにするロック・ファシリティ108cに戻される。 ステップ650において解析されたコマンドがUNFRCではない場合には、 ロジックは、ステップ665に進み、そこでは、制御の流れは、DASDエンジ ン108に戻され、エラー条件が発せられる。このシナリオでは、認識されない チャネル・プログラム・コマンドが受けとらえる。 図7は、作業のトランザクション・ユニットとしてのマルチプル・プット・コ マンドに対するロジックを示している。ただし、作業ユニットの中の個々のメッ セージは、それぞれが、4Kバイトよりも大きい。このロジックは、表3のバッ ファされたチャネル・プログラム・コマンドが、作業の大きなプット・ユニット と関連付けされたMCHRアドレスと関連してマッピング・ロジック112によ って検出されるときに、呼び出される。このロジックは、以下で説明されるよう に、共有されたMQFキューへのプットをサポートする。キューの共有可能性は 、マッピング・ロジック112によって拡張された機能の結果である。 メインフレーム・ソフトウェアは、4Kバイトよりも大きいメッセージを4K のレコード・セグメントのチェーンにセグメント化する。TPFチェーンにおけ るここのレコードは、既に説明されたように、修正されたDSTC100のDA SD109上にある既知のファイル・プール・アドレスにおいてファイルされる 。 [表5] ロジックは、ステップ700において開始し、ステップ705に進む。ステッ プ705では、ロジックは、指名されたキューが開いているかどうかを判断する 。 指名されたキューが開いていない場合には、ロジックは、ステップ710に進 み、ここで、指名されたキューは、MQF114への既知のAPIコールを用い て開かれる。マッピング・ロジック112は、アドレス監視ロジック110とキ ュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テーブ ル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維持 し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ715に進む 。ステップ715では、ロジックは、バッファされたチャネル・プログラム・コ マンドを解析し、それがHOLDCであるかどうか、すなわち、MCHRアドレ スをホールドしロックするかどうかを判断する。このコマンドは、特定のメイン フレームからの作業のシンクポインテド(SyncPointed)ユニットが初期化され ていることを示すのに用いられる。キューへの動作は、作業の1ユニットとして 見られる一連のメッセージ・プットであるから、動作は、既知のMQF114の シンクポイントを用いてフレームされ、コミット又はロールバックのどちらかを 用いて終了させ なければならない。好適実施例では、HOLDCコマンドを用いてシンクポイン トをマップしているが、この理由は、それによって、ロック・ファシリティ10 8cの通常の処理を通じてMCHRアドレス・レコード上のロックが自然にトリ ガされるからである。通常のロッキングにより、この作業ユニットを、このキュ ーを共有している他のプロセッサがそれらのメッセージをこの作業ユニットの中 に挿入することから保護することができる。 ステップ715において解析されたコマンドがHOLDCである場合には、ロ ジックは、ステップ720に進み、そこで、既に述べたように、テーブル110 aが更新されてシンクポイント指示を設定し、また、制御の流れは、DASDエ ンジン108に戻され、そして、ロック・ファシリティ108aが、HOLDC コマンドを処理する通常の過程において、MCHRアドレスをロックする。 ステップ715において解析されたコマンドがHOLDCではない場合には、 ロジックは、ステップ725に進み、そこで、ロジックは、チャネル・プログラ ム・コマンドがFILEC又はFILUCタイプのコマンドであるかどうか、す なわち、ライト・コマンド又はライト及びアンホールド/アンロックであるかど うかを判断する。FILECコマンドは、作業ユニットに対して用いられている キューへのプットに用いられ、また、キューへのプットに対して発せられたー連 のコマンドにおける第2のコマンドとして用いられる。FILUCは、作業ユニ ットにおける最後のメッセージのキューへのプットに用いられ、作業ユニット全 体をコミットする。キューへのシングル・プットに対して、又は、作業のマルチ ・メッセージ・ユニットに対する一連のプット(FILEC)の後に発行される 一連のコマンドにおける第2のコマンドでありうる。 ステップ725において解析されたコマンドがFILEC又はFILUCのど ちらかである場合には、処理は、ステップ727に進む。コマンドがFILEC でもFILUCでもない場合には、ロジックは、ステップ760に進む。 ステップ727では、ロジックは、バッファされたチャネル・コマンドのデー タ・ペイロードを解析する。特に、ロジックは、データ・ペイロードにおけるレ コードの既知のフォワード及びバック・チェーン化フィールド(chaining field )を解析し、現在のレコードが、マッピング・ロジック112の内部の長いメッ セージ・ ステージング・キャッシュ112aの中にシーケンシャルにコピーされる。マッ ピング・ロジック112がTPF標準レコード・ヘッダにおける既知のフォワー ド・チェーン・フィールドがバイナリ・ゼロに設定されていると判断する場合に は、現在のレコードは、チェーンの最後にある。現在のレコードにおける非ゼロ のフォワード・チェーン・フィールドは、チェーンにおける次のレコードを指し ている既知のMCHRプール・アドレスである。マッピング・ロジック112は 、フォワード・チェーンMCHRアドレスを用いて、DASDエンジン108を セットアップし、フォワード・チェーン化されたレコードの内部FINWCコマ ンドをステージングする。そして、DASDエンジン108をトリガしてフェッ チする。DASDエンジン108によってフェッチされたフォワード・チェーン 化されたレコードは、マッピング・ロジック112によって、内部の長いメッセ ージ・ステージング・キャッシュ112aの中への次のシーケンシャルなレコー ドとして、コピーされる。フォワード・チェーンがあるかどうかを判断し、次に 、それを内部の長いメッセージ・ステージング・キャッシュ112aにフェッチ するというこの走査プロセスは、チェーンの終わりを示すバイナリ・ゼロのフォ ワード・チェーン・フィールドが見つかるまで継続する。処理は、ステップ73 0に進む。 ステップ730では、ロジックは、内部の長いメッセージ・ステージング・キ ャッシュ112aに保存されたそれぞれのレコードを通じてシーケンシャルにス テッピングすることにより、レコード・チェーンを解析する。それぞれのレコー ドのフォワード及びバックワード両方のチェーン化フィールドにおけるMCHR アドレスを用いることにより、レコードのチェーンは、フォワード(順方向)及 びバックワード(逆方向)の両方に論理的に横断され得る。この作用により、内 部的な長いメッセージ・ステージング・キャッシュ112aとして存在している チェーンの物理的シーケンスが、その論理シーケンスと適切に一致することが保 証される。ステップ730では、ロジックは、レコードのチェーンに存在するメ ッセージのセグメントを、1つの大きなメッセージに再組み立てする。再び、内 部のメッセージ・ステージング・キャッシュ112aに保存されているそれぞれ のレコードを通じてシーケンシャルにステッピングすることにより、それぞれの 標準的なTPFレコー ド・ヘッダは、それぞれのレコードから取り除かれ、残りのメッセージ・セグメ ントが、長いメッセージに連結される。 処理は、ステップ735に進み、そこでは、ロジックは、この再組み立てが成 功したかどうかを判断する。成功であれば、ロジックは、ステップ740に進む 。そうでなければ、それは正しくない(bad)チェーンであり、処理は、ステッ プ590を継続する。ステップ790では、チェーンが正しくない場合には、制 御の流れは、DASDエンジン108に戻され、エラー条件が発せられる。 ステップ740では、ロジックは、内部の長いメッセージ・ステージング・キ ャッシュ112aにおける完全に再組み立てされた長いメッセージを、MQF1 14における開いたキューにプットする。シンクポイント指示が設定されている 場合には、この長いメッセージは、作業ユニットの一部としてそれを含むシンク ポイントを用いてプットされる。ロジックは、次に、ステップ745に進み、そ こでは、ステップ725において解析されたI/Oファイル・コマンドがFIL UCであった場合には、処理は、ステップ750を継続する。コマンドがFIL UCではなかった場合には、処理はステップ755に進み、そこで、制御の流れ は、DASDエンジン108に戻され、メインフレームへの正常なリターンを告 知する。 ステップ750では、ロジックは、コミットを発し、作業のMQF114ユニ ットを完了する。処理は、ステップ770を継続し、そこでは、制御の流れは、 DASDエンジン100に戻され、そして結果的には、FILUCのMCHRと 関連付けされたレコードをアンロックすることにより他のエンティティがそのキ ューに対応するMCHRアドレスにアクセスすることを許容するロック・ファシ リティ108cに戻される。 ステップ525で解析されたコマンドがFILECでもFILUCでもない場 合には、ロジックは、ステップ760に進み、そこで、バッファされたチャネル ・プログラム・コマンドが解析される。ステップ760において解析されたコマ ンドがUNFRCである場合には、ロジックは、ステップ765に進む。ステッ プ765では、ロジックは、MQF114にロールバックを発行し、作業ユニッ トをアボートする。処理は、ステップ770を継続し、そこで、制御の流れは、 DASDエンジン108に、そして結果的には、レコードをアンロックすること により他のエ ンティティがそのキューに対応するMCHRアドレスにアクセスすることを許容 するロック・ファシリティ108cに戻される。 ステップ760で解析されたコマンドがUNFRCでない場合には、ロジック は、ステップ790に進み、そこで、制御の流れは、DASDエンジン108に 戻され、そこで、エラー条件が発せられる。このシナリオでは、認識されていな いチャネル・プログラム・コマンドが受け取られる。 図8は、個々のメッセージがそれぞれ4Kバイト未満であるシングル・ゲット ・コマンドに対するロジックを示している。このシナリオによれば、メッセージ に対する非共有キューのポーリングが可能になる。キュー上にメッセージがある 場合にはそれは戻され、ない場合には、ゼロ・レコード(null record)が戻さ れる。このロジックは、表6のバッファされたチャネル・プログラム・コマンド の1つが、シングル・ゲットと関連付けされたMCHRアドレスと共にマッピン グ・ロジック112によって検出されるときに呼び出される。 [表6] このロジックは、ステップ800において開始し、ステップ805に進む。ス テップ805では、ロジックは、指名されたキューが開いているかどうかを判断 する。 指名されたキューが開いていない場合には、ロジックは、ステップ810に進 み、そこで、指名されたキューは、MQF114への既知のAPIコールを用い て、開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。指名されたキューが開いている場合には、ロジッ クは、ステップ830に進む。 ステップ830では、ロジックは、バッファされたチャネル・プログラム・コ マンドを解析し、それが、FINWCであるかどうか、すなわち、ブロックされ たリードであるかどうかを判断する。 ステップ830において解析されたコマンドがFINWCでない場合には、ロ ジックは、ステップ835に進み、そこで、制御の流れは、DASDエンジン1 08 に戻され、エラー条件が告知される。このシナリオでは、認識されていないチャ ネル・プログラム・コマンドが受け取られている。 ステップ830におけるコマンドがFINWCである場合には、ロジックは、 ステップ840に進む。ステップ840では、ロジックは、MCHRアドレスに 対応する指名されたキューにゲット・コマンドを発行する。MQF114がゲッ トの処理から戻ると、ロジックは、ステップ880を継続する。 ステップ880においては、ロジックは、MQFからのリターン・コードを用 いることによって、MQFからの結果を受け取ったかどうかを判断する。メッセ ージが受け取られている場合には、ロジックは、ステップ885に進み、そこで 、制御の流れが、エンジン108に戻され、処理ロジック108bが、関連する MCHRにおけるレコードをメインフレームに戻す。メッセージが受け取られて いない場合には、ロジックは、ステップ890に進む。 更に詳しくは、ステップ885では、マッピング・ロジック112は、戻され たメッセージ・ペイロードをFINWCのMCHRアドレスに対応するDSTC のRAMキャッシュ・バッファ120のエントリに配置する。そして、制御の流 れが、DASDエンジンに、そして、結果的に、レコードを、RAMキャッシュ ・バッファ120からチャネル・インターフェース104を介してメインフレー ムに転送させる処理ロジック108bに、戻される。 MQFへのゲットが指名されたキューにおいて何も見つけなかった(例えば、 キューが空であった)場合には、ロジックは、ステップ890に進み、そこで、 マッピング・ロジック112は、メッセージなしを示すゼロ・レコード(null r ecord)を、FINWCのMCHRアドレスに対応するDSTCのRAMキャッ シュ・バッファ120のエントリに配置する。ロジックは、ステップ895に進 み、そこで、DASDエンジン108に、そして結果的には、ゼロ・レコードを 、RAMキャッシュ・バッファ120からチャネル・インターフェース104を 介してメインフレームに転送させる処理ロジック108bに、戻される。 ステップ895は、制御の流れをDASDエンジンに戻させ、ゼロ・エンジン は、メインフレームに戻される。 図9は、個々のメッセージがそれぞれ4Kバイト未満であるシングル・ゲット ・コマンドに対するロジックを示している。このロジックは、表7のバッファさ れたチャネル・プログラム・コマンドの1つが、シングル・ゲットと関連付けさ れたMCHRアドレスと共にマッピング・ロジック112によって検出されると きに呼び出される。このロジックは、以下で説明されるように、共有されたMQ Fキューへのゲットをサポートする。キューの共有可能性は、マッピング・ロジ ック112によって拡張された機能の結果である。 [表7] このロジックは、ステップ900において開始し、ステップ905に進む。ス テップ905では、ロジックは、指名されたキューが開いているかどうかを判断 する。 指名されたキューが開いていない場合には、ロジックは、ステップ910に進 み、そこで、指名されたキューは、MQF114への既知のAPIコールを用い て、開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的(co operatively)に維持し、キュー状態を修正する。ロジックは、ステップ930 に進む。 ステップ930では、ロジックは、バッファされたチャネル・プログラム・コ マンドを解析し、それが、FIWHCであるかどうか、すなわち、ブロックされ たリードであるかどうかを判断する。このコマンドは、指名されたキューがI/ Oデバイス100に接続された複数のメインフレームの間で共有可能である場合 に、用いられる。指名されたキューに対して意図されている動作はゲットであり 、メッセージがキュー上に現れたすぐにメッセージをキューからメインフレーム に転送することが意図されているから、アクセスのシーケンシャル性(sequenti ality)を保護するためにロック・ファシリティ108cが用いられる。このよ うにブロックされたリードが用いられることにより、メインフレームが、新たな メッセージのためにキューを連続的にブラウズしなければならないことが回避さ れる。好適実施例でFIWHCが用いられる理由は、それにより、ロック・ファ シリティ108cの 通常の処理を通じて、MCHRアドレス・レコード上のロックが自然にトリガさ れるからである。 ステップ930において解析されたコマンドがFIWHCでない場合には、ロ ジックは、ステップ935に進み、そこで、制御の流れは、DASDエンジン1 08に戻され、エラー条件が告知される。このシナリオでは、認識されていない チャネル・プログラム・コマンドが受け取られている。 ステップ930におけるコマンドがFIWHCである場合には、ロジックは、 ステップ940に進む。ステップ940では、ロジックは、MCHRアドレスに 対応する指名されたキューにゲット・コマンドを発行する。MQF114がゲッ トの処理から戻ると、ロジックは、ステップ980を継続する。 ステップ980においては、ロジックは、MQFからのリターン・コードを用 いることによって、MQFからの結果を受け取ったかどうかを判断する。メッセ ージが受け取られている場合には、ロジックは、ステップ985に進み、そこで 、制御の流れが、エンジン108に戻され、処理ロジック108bが、関連する MCHRにおけるレコードをメインフレームに戻す。メッセージが受け取られて いない場合には、ロジックは、ステップ990に進む。 更に詳しくは、ステップ985では、マッピング・ロジック112は、戻され たメッセージ・ペイロードをFIWHCのMCHRアドレスに対応するDSTC のRAMキャッシュ・バッファ120のエントリに配置する。そして、制御の流 れが、DASDエンジン108に、そして結果的に、レコードを、RAMキャッ シュ・バッファ120からチャネル・インターフェース104を介してメインフ レームに転送させる処理ロジック108bに、戻される。この時点では、UNF RCコマンドを実行してMCHR上のロックを解除するのは、メインフレームの 役割である。 MQFへのゲットが指名されたキューにおいて何も見つけなかった(例えば、 キューが空であった)場合には、ロジックは、ステップ990において、キュー 監視ロジック118を用いて、トリガ付勢プロセスをセットアップする。ステッ プ990のロジックは、FIWHCのロック及びリード要求を利用する。特に、 ステップ995のロジックは、DASDエンジンのロック・ファシリティ108 cを直接にコールし、条件を設定して、MCHRを共有しているクラスタにおけ る別の(ファ ントム)メインフレームが既にロックを備えたレコードを有していることを示す 。このようにして、メインフレームに戻された結果により、関連するメインフレ ームのソフトウェアは、そのレコードに対する待機状態に入る。従って、FIW HCを実行しているメインフレームは、それをアンロックするには、他のものを 待機しなければならない。このほかのファントム・メインフレームは、実際には 、以下で説明するように、キュー待機ロジック118である。ロジックは、次に 、ステップ995に進み、そこで、制御の流れは、DASDエンジン108に戻 される。(後に、この他のもの、すなわち、キュー監視ロジック118が新たに 受け取られたメッセージをメッセージ・キューにおいて検出すると、キュー監視 ロジック118は、DASDエンジン108に、ルーチン的に、レコードをアン ロックさせ、待機しているメインフレームに割り込みを生じさせ、それによって 、待機しているメインフレームがレコード上の発見を再要求し、今回は、その発 見に成功する。このプロセスは、後で、図19において、説明される。) ステップ995では、ロジックは、制御の流れをDASDエンジン108に、 そして結果的には、ロック・ファシリティ108cに戻させる。ロック・ファシ リティ108cは、要求しているメインフレームに、別のメインフレームが、レ コード上にロックを有していることを告知し、また、ロック・ファシリティ10 8cは、待機しているすべてのメインフレームに、キューに対応する所望のMC HR上のロックがいつ解除されるかを告知する。(このロック・ファシリティ・ ロジックは、従来型のものである。) 図10A−Bは、個々のメッセージがそれぞれ4Kバイトよりも大きいシング ル・ゲット・コマンドに対するロジックを示している。このロジックは、表8の バッファされたチャネル・プログラム・コマンドの1つが、シングル・ラージ・ ゲットと関連付けされたMCHRアドレスと共にマッピング・ロジック112に よって検出されるときに呼び出される。このロジックは、以下で説明されるよう に、共有されたMQFキューへのゲットをサポートする。キューの共有可能性は 、マッピング・ロジック112によって拡張された機能の結果である。 [表8] このロジックは、ステップ1000において開始し、ステップ1005に進む 。ステップ1005では、ロジックは、指名されたキューが開いているかどうか を判断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1010に 進み、そこで、指名されたキューは、MQF114への既知のAPIコールを用 いて、開かれる。マッピング・ロジック112は、アドレス監視ロジック110 とキュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テ ーブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的( cooperatively)に維持し、キュー状態を修正する。ロジックは、ステップ10 15に進む。 ステップ1015では、ロジックは、バッファされたチャネル・プログラム・ コマンドを解析し、それが、FIWHCであるかどうか、すなわち、ブロックさ れたリードであるかどうかを判断する。 ステップ1015において解析されたコマンドがFIWHCでない場合には、 ロジックは、ステップ1072に進む。 ステップ1015におけるコマンドがFIWHCである場合には、ロジックは 、ステップ1030に進む。ステップ1030では、ロジックは、MCHRアド レスに対応する指名されたキューにゲット・コマンドを発行する。既知のAPI を用いて、MQF114へのゲット・コールがなされ、長いメッセージをキュー からマッピング・ロジック112の内部の長いメッセージ・ステージング・キャ ッシュ112aにコピーさせる。MQF114がゲットの処理から戻ると、ロジ ックは、ステップ1035を継続する。 ステップ1035においては、ロジックは、MQF114からのリターン・コ ードを用いることによって、MQF114からの結果を受け取ったかどうかを判 断する。長いメッセージが受けとらえている場合には、ロジックは、ステップ1 040に進む。メッセージが受け取られていない場合には、ロジックは、ステッ プ1055に進む。 ステップ1040では、ロジックは、長いメッセージを、内部の長いメッセー ジ・ステージング・キャッシュ112aにおける4KのTPFレコードにセグメ ント化 することによって、TPFレコード・チェーンを構築する。レコード・チェーン におけるそれぞれのメッセージ・セグメントには、標準的なTPFレコード・ヘ ッダが与えられる。それぞれのレコードのフォワード及びバックワード両方のチ ェーン化フィールド(Chaining fields)にシーケンス番号を配置することによ って、レコードのチェーンは、論理的にはフォワード及びバックワードの両方向 に横断することが可能になる。この作用によって、内部の長いメッセージ・ステ ージング・キャッシュ112aに物理的に存在しているセグメント化されたチェ ーンの物理的なシーケンスがその論理シーケンスに適切に一致することが保証さ れる。チェーンのフォワード・チェーン化フィールドにおける最後のレコードは 、チェーンの最後を示すゼロ(null)に設定される。 ステップ1045では、マッピング・ロジック112は、セグメント化された 長いメッセージに対応するチェーンにおける最初のTPFレコードを、FIWH CのMCHRアドレスに対応するDASDエンジンのRAMキャッシュ・バッフ ァ120のエントリに配置する。アドレス監視ロジック状態テーブル110aは 、チェーンの最初のレコードがDASDエンジンのRAMキャッシュ・バッファ 120の中へのステージングの準備ができていることを示す長いメッセージ・カ ーソルを用いて更新される。処理は、ステップ1078を継続する。 ステップ1035では、MQFへのゲットが指名されたキューにおいて何も見 つけなかった(例えば、キューが空であった)場合には、ロジックは、ステップ 1055に進み、そこで、上述のものと類似の、キュー監視ロジック118を用 いて、トリガ付勢プロセスをセットアップする。(先に述べたように、この他の もの、すなわち、キュー監視ロジック118が、メッセージ・キューにおいて新 たに受け取られたメッセージによって、アクティブにトリガされると、キュー監 視ロジック118は、DASDエンジン108に、ルーチン的に、レコードをア ンロックさせ、待機しているメインフレームに割り込みを生じさせ、それによっ て、待機しているメインフレームがレコード上の発見を再要求し、今回は、その 発見に成功する。このプロセスは、後で、図19において、説明される。) ロジックは、ステップ1059に進み、そこで、ロジックは、制御の流れをD ASDエンジン108に、そして結果的には、ロック・ファシリティ108cに 戻さ せる。ロック・ファシリティ108cは、要求しているメインフレームに、別の メインフレームが、レコード上にロックを有していることを告知し、また、ロッ ク・ファシリティ108cは、待機しているすべてのメインフレームに、キュー に対応する所望のMCHR上のロックがいつ解除されるかを告知する。(このロ ック・ファシリティ・ロジックは、従来型のものである。) ステップ1015において、ロジックは、コマンドがFIWHCでないことと 判断した場合には、ステップ1072に進む。 ステップ1072では、ロジックは、バッファされたチャネル・プログラム・ コマンドを解析し、それがFINWCであるかどうか、すなわち、ブロックされ たリードであるかどうかを判断する。そうである場合には、処理は、ステップ1 074を継続する。FINWCは、長いゲットのすべての後続の4Kセグメント をリードするのに用いられる。ステップ1072において解析されたコマンドが FINWCではない場合には、ロジックは、ステップ1092に進み、そこで、 制御の流れは、DASDエンジンに戻され、エラー条件が告知される。このシナ リオでは、認識されていないチャネル・プログラム・コマンドが受け取られてい る。 ステップ1074では、ロジックは、アドレスを監視する長い状態テーブル1 10aの長いメッセージ・カーソルをチェックして、長いメッセージのチェーン 化されたレコード・セグメントのすべてがメインフレームに転送されているかど うかを判断する。そうではない場合には、処理は、ステップ1078を継続する 。長いメッセージの全体がメインフレームに転送されている場合には、処理は、 ステップ1076を継続する。 ステップ1076において、ロジックは、ゼロ・レコード(長いメッセージの セグメントのすべてがメインフレームに転送されていることを示す)を、FIN WCのMCHRアドレスに対応するDASDエンジンのRAMキャッシュ・バッ ファ120のエントリに配置する。 ステップ1078では、マッピング・ロジック112は、長いメッセージ・カ ーソルによって示されたチェーンにおける次のTPFレコードを、FIWHCの MCHRアドレスに対応するDASDエンジンのRAMキャッシュ・バッファ1 20のエントリに配置する。ステップ1080では、ロジックは、DASDエン ジンのR AMキャッシュ・バッファ120に転送されたばかりのレコードの標準的なTP Fフォワード・チェーン・フィールドをチェックし、これが、チェーンにおける 最後のレコードであるかどうかを判断する。最後のレコードではない場合には、 処理は、ステップ1085に進む。チェーンにおける最後のレコードである場合 には、処理は、ステップ1090に進む。 ステップ1090では、ロジックは、このエントリに対する長いメッセージ・ ステージング・キャッシュ112aをフラッシュし、アドレス監視ロジック状態 テーブル110aの長いメッセージ・カーソルをクリアする。処理は、ステップ 1095に進む。 ステップ1085では、ロジックは、アドレス監視ロジック状態テーブル11 0aの長いメッセージ・カーソルを更新して、チェーンにおける次のレコードを 指す。処理は、ステップ1095を継続する。 ステップ1095では、ロジックは、制御の流れを、DASDエンジンに、そ して結果的には、レコードをRAMキャッシュ・バッファ120からチャネル・ インターフェース104を介してメインフレームに転送させる処理ロジック10 8bに戻させる。 チェーンの最後のレコードがメインフレームに転送されるときには、UNFR Cを実行して、MCHR上のロックを解除するのは、メインフレーム・アプリケ ーションの責任である。 図11A−Bは、個々のメッセージが作業のトランザクション・ユニットを構 成するマルチプル・ゲット・コマンドに対するロジックを示している。ただし、 作業ユニットを構成する個々のメッセージは、それぞれが、4Kバイトよりも小 さい。このロジックは、表9のバッファされたチャネル・プログラム・コマンド の1つが、マルチプル・ゲットと関連付けされたMCHRアドレスと共にマッピ ング・ロジック112によって検出されるときに、呼び出される。このロジック は、以下で説明されるように、共有されたMQFキューへのゲットをサポートす る。キューの共有可能性は、マッピング・ロジック112によって拡張された機 能の結果である。 [表9] ロジックは、ステップ1100において開始し、ステップ1105に進む。ス テップ1105では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1110に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。ロジックは、次に、ステップ1125に進む。 ステップ1125では、ロジックは、バッファされたチャネル・プログラム・ コマンドを解析し、それがHOLDCであるかどうか、すなわち、ロックである かどうかを判断する。コマンドがHOLDCである場合には、処理は、ステップ 1130を継続し、そこで、制御の流れは、エンジン108とロック・ファシリ ティ108cに戻り、これにより、MCHRがロックされる。テーブル110a が更新され、シンクポイント指示が設定される。 ステップ1125において解析されたコマンドがHOLDCでない場合には、 ロジックは、ステップ1135に進む。ステップ1135では、ロジックは、バ ッファされたチャネル・プログラム・コマンドを解析し、それがFINWCであ るかどうか、すなわち、ブロックされたリードであるかどうかを判断する。そう である場合には、ロジックは、ステップ1137を継続し、そうでない場合には 、処理は、ステップ1180を継続する。 ステップ1137では、ロジックは、作業ユニットを指示するシンクポイント を備えたゲット・コマンドを、シンクポイント指示がテーブル110aにおいて 設定されている場合にはMCHRに対応する指名されたキューに対して、発行す る。MQF114が結果を戻すと、処理は、ステップ1155を継続する。 ステップ1155では、ロジックは、MQF114からのリターン・コードを 用いて、MQF114がメッセージを戻すかどうかを判断する。メッセージを見 つけなかった場合には、ロジックは、ステップ1160に進む。ロジックがメッ セージを受け取った場合には、ロジックは、ステップ1159を継続する。 ステップ1159では、ロジックは、戻されたメッセージ・ペイロードを、F INWCのMCHRアドレスに対応するDSTCのRAMキャッシュ・バッファ 120のエントリに配置する。ロジックは、また、このMCHRに対するアドレ ス監視ロジック・テーブル110aのエントリを更新し、作業のこのゲット・ユ ニットに対するデータ転送が開始していることを示し、シンクポイントをクリア する。ロジックは、ステップ1169に進み、そこで、制御の流れは、DASD エンジン108に、そして結果的に、レコードをRAMキャッシュ・バッファ1 20からチャネル・インターフェース104を介してメインフレームに転送させ る処理ロジック108cに戻される。 ステップ1160では、ロジックは、このMCHRに対するアドレス監視ロジ ック・テーブル110aをチェックして、作業のこのゲット・ユニットに対する キューからメインフレームへのデータ転送が、実際に開始されているかどうかを 調べている。まだ開始していない場合には、処理は、キューにおいて受け取られ る作業の入ってくるユニットに対する待機をセットアップしなければならない。 このトリガ待機処理のセットアップは、ステップ1170において生じる。ステ ップ1160では、作業ユニットのデータ転送は、キューからメインフレームに 開始されており、MQF114上にメッセージが全く存在しないということが、 作業の全ユニットがメインフレームに転送されたということを示している。処理 は、ステップ1165を継続する。 ステップ1170では、マッピング・ロジック112は、図9及び図10にお いて既に説明したものと類似のキュー監視ロジック118を用いて、トリガ付勢 プロセスをセットアップする。次に、ロジックは、ステップ1175に進む。 ステップ1175では、ロジックは、制御ロック・ファシリティの流れを、D ASDエンジン108に、そして結果的には、ロック・ファシリティ108cに 戻す。ロック・ファシリティは、要求しているメインフレームに、別のメインフ レームがレコード上にロックを有していることを告知し、また、ロック・ファシ リティ108cは、待機しているすべてのメインフレームに、キューに対応する 所望のMCHR上のロックがいつ解除されるかを告知する。 ステップ1165では、ロジックは、ゼロ・レコード(作業ユニットの最後に 到達したことを示している)を、FINWCのMCHRアドレスに対応するDS TCのRAMキャッシュ・バッファ120に配置する。ロジックは、ステップ1 169に進み、そこで、制御の流れは、DASDエンジン108に、そして結果 的には、ゼロ・レコードをRAMキャッシュ・バッファ120からチャネル・イ ンターフェース104を介してメインフレームに転送させる処理ロジック108 bに戻される。 ステップ1180では、ロジックは、バッファされたコマンドがUNFRCで あるかどうかを判断する。UNFRCである場合には、処理は、ステップ118 5を継続する。コマンドがUNFRCではない場合には、処理は、ステップ11 90に進み、コマンドがFILUCであるかどうかを判断する。FILUCであ る場合には、処理は、ステップ1192を継続する。そうでない場合には、コマ ンドは認識されず、ロジックは、ステップ1199に進み、制御の流れはDAS Dエンジン108に戻され、エラー条件が告知される。このシナリオでは、認識 されていないチャネル・プログラム・コマンドが受け取られる。 ステップ1185では、ロジックは、MQF114へのコミットに作業ユニッ トを発行するが、その理由は、それが、キューからメインフレームに成功裏に完 全に転送されたからである。処理は、ステップ1195を継続し、そこで、制御 の流れは、DASDエンジン108に、そして結果的には、UNFRCのMCH Rと関係付けられたレコードをアンロックすることにより他のエンティティがそ のキューに対応するMCHRアドレスにアクセスすることを可能にするロック・ ファシリティ108cに、戻される。 ステップ1190において解析されたコマンドがFILUCである場合には、 ロジックは、ステップ1192に進む。ステップ1192では、ロジックは、ロ ールバックをMQF114に発行して、作業ユニットをアボートする。処理は、 ステップ1195を継続し、そこでは、制御の流れは、DASDエンジン108 に、そして結果的には、レコードをアンロックすることにより他のエンティティ がそのキューに対応するMCHRアドレスにアクセスすることを可能にするロッ ク・ファシリティ108cに、戻される。 図12A−Bは、個々のメッセージが作業のトランザクション・ユニットを構 成するマルチプル・ゲット・コマンドに対するロジックを示している。ただし、 作業ユニットにおいて与えられる任意のメッセージは、それぞれが、4Kバイト よりも大きい。このロジックは、表10のバッファされたチャネル・プログラム ・コマンドの1つが、マルチプル・ゲットと関連付けされたMCHRアドレスと 共にマッピング・ロジック112によって検出されるときに、呼び出される。こ のロジックは、以下で説明されるように、共有されたMQFキューへのゲットを サポートする。キューの共有可能性は、マッピング・ロジック112によって拡 張された機能の結果である。 [表10] ロジックは、ステップ1200において開始し、ステップ1205に進む。ス テップ1205では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1210に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。ロジックは、次に、ステップ1225に進む。 ステップ1225では、ロジックは、バッファされたチヤネル・プログラム・ コマンドを解析し、それがHOLDCであるかどうか、すなわち、ロックである かどうかを判断する。コマンドがHOLDCである場合には、処理は、ステップ 1230を継続し、そこで、制御の流れは、エンジン108とロック・ファシリ ティ108cに戻り、これにより、MCHRがロックされる。テーブル110a が更新され、シンクポイント指示(syncpoint indication)が設定される。 ステップ1225において解析されたコマンドがHOLDCでない場合には、 ロジックは、ステップ1235に進む。ステップ1235では、ロジックは、バ ッファされたチャネル・プログラム・コマンドを解析し、それがFINWCであ るかどうか、すなわち、ブロックされたリードであるかどうかを判断する。そう である場 合には、ロジックは、ステップ1237を継続し、そうでない場合には、処理は 、ステップ1280を継続する。ステップ1237及び1240は、ステップ1 242への処理通過コネクタである。 ステップ1242は、アドレス監視ロジック・テーブル110aをチェックし て、この作業ユニットに対するすべてのメッセージが転送されているかどうかを 判断する。作業ユニットが転送されている場合には、処理は、ステップ1250 に進む。ステップ1244において、そうでない場合には、ロジックは、シンク ポイントを備えたゲット・コマンドを発行し、作業ユニットにおける最初の長い メッセージを、MCHRアドレスに対応する指名されたキューからゲットする。 ゲット・コールは、既知のAPIを用いてMQF114に対してなされ、それに よって、長いメッセージがキューからマッピング・ロジック112の内部の長い メッセージ・ステージング・キャッシュ112aの中にコピーされる。MQF1 14がゲットの処理から戻ると、ロジックは、ステップ1260を継続する。 ステップ1260では、ロジックは、MQF114からのリターン・コードを 用いることによって、MQF114からの結果を受け取ったかどうかを判断する 。長いメッセージが受け取られた場合には、ロジックは、ステップ1265に進 む。メッセージが受け取られていない場合には、ロジックは、ステップ1261 に進む。 ステップ1265では、ロジックは、最初の長いメッセージを、内部の長いメ ッセージ・ステージング・キャッシュ112aにおける4KのTPFレコードに セグメント化することによって、TPFレコード・チェーンを構築する。レコー ド・チェーンにおけるそれぞれのメッセージ・セグメントには、標準的なTPF レコード・ヘッダが与えられる。それぞれのレコードのフォワード及びバックワ ード両方のチェーン化フィールド(Chaining fields)にシーケンス番号を配置 することによって、レコードのチェーンは、論理的にはフォワード及びバックワ ードの両方向に横断することが可能になる。この作用によって、内部の長いメッ セージ・ステージング・キャッシュ112aに物理的に存在しているセグメント 化されたチェーンの物理的なシーケンスがその論理シーケンスに適切に一致する ことが保証される。チェーンのフォワード・チェーン化フィールドにおける最後 のレコードは、チェーンの最後を示すゼロ(null)に設定される。 ステップ1267では、マッピング・ロジック112は、セグメント化された 長いメッセージに対応するチェーンにおける最初のTPFレコードを、FIWH CのMCHRアドレスに対応するDSTCエンジン108のRAMキャッシュ・ バッファ120のエントリに配置する。アドレス監視ロジック状態テーブル11 0aは、チェーンの最初のレコードがDSTCエンジンのRAMキャッシュ・バ ッファ120からメインフレームの中への転送の準備ができていることを示す長 いメッセージ・カーソルを用いて更新される。処理は、ステップ1279を継続 する。 ステップ1261では、マッピング・ロジック112は、図9及び図10にお いて先に説明したものと類似するキュー監視ロジック118を用いて、トリガ付 勢プロセスをセットアップする。ロジックは、次に、ステップ1262に進む。 ステップ1262では、ロジックは、制御ロック・ファシリティの流れをDAS Dエンジン108に、そして結果的には、ロック・ファシリティ108cに戻さ せる。ロック・ファシリティは、要求しているメインフレームに、別のメインフ レームが、レコード上にロックを有していることを告知し、また、ロック・ファ シリティ108cは、待機しているすべてのメインフレームに、キューに対応す る所望のMCHR上のロックがいつ解除されるかを告知する。 ステップ1250(ステップ1242から)では、ロジックは、アドレス監視 ロジック状態テーブル110aの長いメッセージ・カーソルをチェックして、長 いメッセージのチェーン化されたレコード・セグメントのすべてがメインフレー ムに転送されているかどうかを判断する。そうではない場合には、処理は、ステ ップ1251を継続する。長いメッセージの全体がメインフレームに転送されて いる場合には、処理は、ステップ1252を継続する。 ステップ1251では、マッピング・ロジック112は、長いメッセージ・カ ーソルによって示されたチェーンにおける次のTPFレコードを、FIWHCの MCHRアドレスに対応するDSTCエンジンのRAMキャッシュ・バッファ1 20のエントリに配置する。処理は、長いメッセージ・カーソルをインクリメン トした後で、ステップ1279を継続する。 ステップ1279では、制御の流れが、DSTCエンジン108に、そして結 果的には、レコードをRAMキャッシュ・バッファ120からチャネル・インタ ーフ ェース104を介してメインフレームに転送させる処理ロジック108cに戻さ れる。 ステップ1252では、ロジックは、別のゲット・コマンドを発行し、MCH Rアドレスに対応する指名されたキューから、作業のシンクポインテド・ユニッ トにおける次のメッセージをゲットする。ゲット・コールが、既知のAPIを用 いてMQF114に対してなされ、それによって、長いメッセージが、キューか らマッピング・ロジック112の内部の長いメッセージ・ステージング・キャッ シュ112aの中にコピーされる。MQF114がゲットの処理から戻ると、ロ ジックは、ステップ1254を継続する。 ステップ1254では、ロジックは、MQF114からのリターン・コードを 用いることにより、MQF114からの結果を受け取ったかどうかを判断する。 長いメッセージが受け取られた場合には、ロジックは、1256に進む。メッセ ージが受け取られなかった場合には、ロジックは、ステップ1258に進む。 ステップ1256では、ロジックは、長いメッセージを、内部の長いメッセー ジ・ステージング・キャッシュ112aにおける4KのTPFレコードにセグメ ント化することによって、TPFレコード・チェーンを構築する。レコード・チ ェーンにおけるそれぞれのメッセージ・セグメントには、標準的なTPFレコー ド・ヘッダが与えられる。それぞれのレコードのフォワード及びバックワード両 方のチェーン化フィールド(chaining fields)にシーケンス番号を配置するこ とによって、レコードのチェーンは、論理的にはフォワード及びバックワードの 両方向に横断することが可能になる。この作用によって、内部の長いメッセージ ・ステージング・キャッシュ112aに物理的に存在しているセグメント化され たチェーンの物理的なシーケンスがその論理シーケンスに適切に一致することが 保証される。チェーンのフォワード・チェーン化フィールドにおける最後のレコ ードは、チェーンの最後を示すゼロ(null)に設定される。 ステップ1257では、ロジックは、長いメッセージの最後に到達したが、作 業ユニットの最後には到達していないことを示すX’FFされたレコードを準備 する。アドレス監視ロジック状態テーブル110aの長いメッセージ・カーソル は、次の長いメッセージに対してクリアされる。X’FFされたレコードは、F INWCの MCHRアドレスに対応するDSTCのRAMキャッシュ・バッファ120のエ ントリに配置される。ロジックは、ステップ1279に進み、そこで、制御の流 れは、DSTCエンジン108と、そして結果的には、X’FFされたレコード をRAMキャッシュ・バッファ120からチャネル・インターフェースを介して メインフレームに転送させる処理ロジック108bに戻される。 ステップ1258では、ロジックは、長いメッセージの最後と、作業ユニット の最後との両方に到達したことを示すゼロ・レコードを準備する。このゼロ・レ コードは、FINWCのMCHRアドレスに対応するDSTCのRAMキャッシ ュ・バッファ120のエントリに配置される。ステップ1259では、この長い メッセージに対する内部の長いメッセージ・ステージング・キャッシュ112a の長いメッセージ・カーソルがクリアされる。ロジックは、ステップ1279に 進み、そこで、制御の流れは、DSTCエンジン108と、そして結果的には、 ゼロ・レコードをRAMキャッシュ・バッファ120からチャネル・インターフ ェースを介してメインフレームに転送させる処理ロジック108bに戻される。 ステップ1280においては、ロジックは、バッファされたコマンドがUNF RCであるかどうかを判断する。UNFRCである場合には、処理は、ステップ 1285を継続する。コマンドがUNFRCではない場合には、処理は、ステッ プ1290に進み、コマンドがFILUCであるかどうかを判断する。FILU Cである場合には、処理は、ステップ1292を継続する。そうでない場合には 、コマンドは認識されず、ロジックは、ステップ1299に進み、制御の流れは DSTCエンジン108に戻され、エラー条件が告知される。このシナリオでは 、認識されていないチャネル・プログラム・コマンドが受け取られる。 ステップ1285では、ロジックは、MQF114へのコミットに作業ユニッ トを発行するが、その理由は、それが、キューからメインフレームに成功裏に完 全に転送されたからである。処理は、ステップ1295を継続し、そこで、制御 の流れは、DSTCエンジン108に、そして結果的には、UNFRCのMCH Rと関係付けられたレコードをアンロックすることにより他のエンティティがそ のキューに対応するMCHRアドレスにアクセスすることを可能にするロック・ ファシリティ108cに、戻される。 ステップ1290において解析されたコマンドがFILUCである場合には、 ロジックは、ステップ1292に進む。ステップ1292では、ロジックは、ロ ールバックをMQF114に発行して、作業ユニットをアボートする。処理は、 ステップ1295を継続し、そこでは、制御の流れは、DSTCエンジン108 に、そして結果的には、レコードをアンロックすることにより他のエンティティ がそのキューに対応するMCHRアドレスにアクセスすることを可能にするロッ ク・ファシリティ108cに、戻される。 図13は、個々のメッセージがそれぞれ4Kバイト未満であるブラウズ・ファ ースト(Browse First)コマンドに対するロジックを示している。このロジック は、次の表11のバッファされたチャネル・プログラム・コマンドの中の1つが 、ブラウズ・ファーストと関連付けされたMCHRアドレスと共にマッピング・ ロジック112によって検出されるときに呼び出される。 [表11] ロジックは、ステップ1300において開始し、ステップ1305に進む。ス テップ1305では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1310に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ1330に進 む。ステップ1330では、ロジックは、バッファされたチャネル・プログラム ・コマンドを解析して、それがFINWCであるかどうか、すなわち、与えられ たMCHRのリードであるかどうかを判断する。このコマンドは、ブラウズ・フ ァースト・バーブにマップするのに用いられる。MQF114に指名されたキュ ーへのブラウズは、非破壊的(nondestructive)なアクセス、すなわち、メッセ ージがリード されるがメッセージはキューに留まるリートである。FINWCが検出されると 、ロジックは、ステップ1340に進む。 ステップ1330において解析されたコマンドがFINWCではない場合には 、ロジックは、ステップ1335に進み、そこでは、制御の流れはDASDエン ジン108に戻され、エラー条件が告知される。このシナリオでは、認識されて いないチャネル・プログラム・コマンドが受け取られる。 ステップ340では、ロジックは、Browse_Firsセオプションを備えたゲット をMQF114に発行する。マッピング・ロジック112は、戻されたメッセー ジ・ペイロードを、FINWCのMCHRアドレスに対応するDSTCのRAM キャッシュ・バッファ120のエントリに配置する。 ステップ1380では、マッピング・ロジック112がメッセージが戻された というMQFからリターン・コードを検出すると、処理は、ステップ1385に 進む。ステップ1385では、ロジックは、制御の流れを、DASDエンジン1 08に、そして結果的には、ブラウズ・レコードをRAMキャッシュ・バッファ 120からチャネル・インターフェース104を介してメインフレームに転送さ せるチャネル・プログラム処理ロジック108aに戻させる。 ステップ1380においてメッセージが存在しない場合には、ロジックは、ス テップ1390に進み、そこでは、ゼロ・レコードがキャッシュ・バッファ12 0に記憶される。ロジックは、ステップ1395に進み、そこで、ゼロ・レコー ドは、メインフレームに戻される。 図14には、個々のメッセージがそれぞれ4Kバイトよりも小さいブラウズ・ ネクスト・コマンドに対するロジックが示されている。このロジックは、表12 のバッファされたチャネル・プログラム・コマンドの1つがブラウズ・ネクスト と関連付けされたMCHRアドレスと共にマッピング・ロジック110によって 検出されるときに、呼び出される。 [表12] ロジックは、ステップ1400において開始し、ステップ1405に進む。ス テップ1405では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1410に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ1430に進 む。ステップ1430では、ロジックは、バッファされたチャネル・プログラム ・コマンドを解析し、それがFINWCであるかどうか、すなわち、与えられた MCHR又はFILECのブロックされたリード及びロックであるかどうか、す なわち、ロックのない単純なファイル・ライトであるかどうかを判断する。これ らのコマンドは、それぞれ、ブラウズ・ネクスト・バーブにマップし、ブラウズ ・ネクストをキューの最初に強制するのに用いられる。MQF114に指名され たキューへのブラウズは、非破壊的(nondestructive)なアクセス、すなわち、 メッセージがリードされるがメッセージはキューに留まるリードである。FIN WC又はFILECが検出されると、ロジックは、ステップ1440に進む。 ステップ1430において解析されたコマンドがFINWC又はFILECで はない場合には、ロジックは、ステップ1435に進み、そこでは、制御の流れ はDASDエンジン108に戻され、エラー条件が告知される。このシナリオで は、認識されていないチャネル・プログラム・コマンドが受け取られる。 ステップ1430では、コマンドがFILECではない場合には、ロジックは 、ステップ1445に進み、そこで、ロジックは、アドレス監視ロジック状態テ ーブル110においてBrowse_Nexセインジケータを設定し、このMCHRエント リが、Browse_Nextをキューの最初に強制するようにする。ロジックは、ステッ プ1449に進み、そこで、制御の流れはDASDエンジン108に戻され、エ ラー条件が告知される。コマンドがFILECではない場合には、FINWCで あり、これは、ステップ1450で処理される。 ステップ1450では、ロジックは、Browse_Nextオプションを備えたゲット をMQF114に発行する。キュー・インジケータの開始への強制(force)が こ のMCHRに対するアドレス監視ロジック状態テーブル110aエントリにおい て設定される場合には、Browse_Nextを伴うゲットは、キューの最初に強制され る。マッピング・ロジック112は、戻されたメッセージ前記ペイロードを、F INWCのMCHRアドレスに対応するDSTC102のRAMキャッシュ・バ ッファ120のエントリに配置する。次に、ロジックは、ステップ1460に進 む。 ステップ1460では、ロジックがメッセージが戻されたMQFからのリター ン・コードを検出すると、処理は、ステップ1465に進む。ステップ1465 では、ロジックは、制御の流れを、DASDエンジン108に、そして結果的に は、ブラウズ・レコードをRAMキャッシュ・バッファ120からチャネル・イ ンターフェース104を介してメインフレームに転送させるチャネル・プログラ ム処理ロジック108aに戻させる。 戻されたメッセージが存在しない場合には、ロジックは、ステップ1470に 進む。ステップ1470では、リターン・コードが、キューが空であることを示 す場合には、ステップ1475が、ロジックに、ゼロ・レコード(キューが空で あることを示す)を、FINWCのMCHRアドレスに対応するDSTCのRA Mキャッシュ・バッファ120のエントリに配置させる。ステップ1485では 、ロジックが、制御の流れを、DASDエンジン108に、そして結果的には、 ゼロ・レコードをRAMキャッシュ・バッファ120からチャネル・インターフ ェース104を介してメインフレームに転送させる処理ロジック108bに戻さ せる。 ステップ1470では、リターン・コードがキューに現在あるすべてのレコー ドがブラウズされたことを示す場合には、ステップ1480は、ロジックに、X ’FF(キューの終わりを示す)で満たされたレコードを、FINWCのMCH Rアドレスに対応するDSTCのRAMキャッシュ・バッファ120のエントリ に配置させる。ステップ1485では、制御の流れが、DASDエンジン108 と、そして結果的には、X’FF’のゼロ・レコードをRAMキャッシュ・バッ ファ120からチャネル・インターフェースを介してメインフレームに転送させ る処理ロジック108bに戻される。 図15には、個々のメッセージがそれぞれ4Kバイトよりも小さいBrowse_wit h_Cursorコマンドに対するロジツクが示されている。このロジック は、表13のバッファされたチャネル・プログラム・コマンドの1つがBrowse_w ith_Cursorと関連付けされたMCHRアドレスと共にマッピング・ロジック11 0によって検出されるときに、呼び出される。 [表13] ロジックは、ステップ1500において開始し、ステップ1510に進む。ス テップ1510では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1515に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ1520に進 む。ステップ1520では、ロジックは、バッファされたチャネル・プログラム ・コマンドを解析し、それがFIWHCであるかどうか、すなわち、ブロックさ れたリード及びロックであるかどうかを判断する。 ステップ1540において解析されたコマンドがFIWHCコマンドである場 合には、ロジックは、ステップ1525に進み、そこで、制御の流れは、DAS Dエンジン108に、そして結果的には、レコードをロックすることにより他の エンティティがそのキューに対応するMCHRアドレスにアクセスすることを防 止するロック・ファシリティ108cに戻させる。 コマンドがFIWHCではない場合には、ロジックは、ステップ1530に進 む。ステップ1530では、ステップ1530で解折されたコマンドがFILE Cである場合には、ロジックは、ステップ1535に進むが、そこでは、データ ペイロードはMQF114へのBrowse_with_Cursorコールに対する数値カーソル (numeric cursor)である。数値カーソルは、このMCHRに対するアドレス監 視ロジック状態テーブル110aのエントリのカーソル・フィールドに転送され る。ロジックは、ステップ1539に進み、制御の流れはDASDエンジン10 8に戻 され、正常なリターン条件(good return condition)が告知される。コマンド がFILECでない場合には、処理は、ステップ1540に進む。 ステップ1540では、解析されたコマンドがFINWCである、すなわち、 ブロックされたリードである場合には、コマンドは、ステップ1550において 、このMCHRに対応するキューへのBrowse_with_Cursorにマップされる。Brow se_with_Cursorコールが、MQF114に指名されたキューに、このMCHRに 対するアドレス監視ロジック状態テーブル110aに保存されている数値カーソ ルを用いてなされる。カーソルを用いてのブラウズは、非破壊的なアクセス、す なわち、特定のメッセージがリードされるがメッセージはキューに留まるような リードである。ロジックは、戻されたメッセージ・ペイロードを、FINWCの MCHRアドレスに対応するDSTCのRAMキャッシュ・バッファ120のエ ントリに配置する。ロジックは、次に、ステップ1560に進む。ステップ15 40において解析されたコマンドがFINWCでない場合には、ロジックは、ス テップ1545に進む。 ステップ1545では、解析されたコマンドがUNFRCでない場合には、ロ ジックは、ステップ1549に進み、そこで、制御の流れはDASDエンジン1 08に戻され、エラー条件が告知される。このシナリオでは、認識されていない チャネル・プログラム・コマンドが受け取られる。 ステップ1545で解析されるコマンドがUNFRCである場合には、ロジッ クは、ステップ1555に進み、そこで、制御の流れは、DASDエンジン10 8に、そして結果的には、レコードをアンロックすることにより他のエンティテ ィがそのキューに対応するMCHRアドレスにアクセスすることを許容するロッ ク・ファシリティ108cに戻させる。 ステップ1560では、マッピング・ロジック112がメッセージが戻された というMQF114からのリターン・コードを検出すると、処理は、ステップ1 565に進む。ステップ1565では、制御の流れを、DASDエンジン108 に、そして結果的には、ブラウズ・レコードをRAMキャッシュ・バッファ12 0からチャネル・インターフェース104を介してメインフレームに転送させる チャネル・プログラム処理ロジック108aに戻させる。 ステップ1560では、リターン・コードがキューが空であるであることを示 す場合には、ロジックは、ステップ1570に進み、そこで、ロジックは、ゼロ ・レコード(キューが空であることを示す)を、FINWCのMCHRアドレス に対応するDSTCのRAMキャッシュ・バッファ120のエントリの中に配置 させる。ステップ1575では、制御の流れは、DASDエンジンに、そして結 果的には、ゼロ・レコードをRAMキャッシュ・バッファ120からチャネル・ インターフェース104を介してメインフレームに転送させる処理ロジック10 8bに、戻される。 図16には、個々のメッセージがそれぞれ4Kバイトよりも小さいGet_with_C ursorコマンドに対するロジックが示されている。このロジックは、表14のバ ッファされたチャネル・プログラム・コマンドの1つがGet_with_Cursorと関連 付けされたMCHRアドレスと共にマッピング・ロジック110によって検出さ れるときに、呼び出される。このロジックは、以下で説明されるように、共有さ れたMQFキューへのゲットをサポートする。キューの共有可能性は、マッピン グ・ロジック112によって拡張された機能の結果である。 [表14] ロジックは、ステップ1600において開始し、ステップ1610に進む。ス テップ1610では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1615に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ1620に進 む。ステップ1620では、ロジックは、バッファされたチャネル・プログラム ・コマンドを解析し、それがFIWHCであるかどうか、すなわち、ブロックさ れたリード及びロックであるかどうかを判断する。このコマンドは、I/Oデバ イスに接続 された複数のメインフレームの間でキューが共有可能である場合に用いられる。 好適実施例でFIWHCを用いる理由は、それによって、MCHRアドレス上の ロックが、ロック・ファシリティ108cの通常の処理を通じて自然にトリガさ れるからである。ロックによって、このロックが解除(アンホールド)されるま で、他のメインフレームが対応するMCHRレコードにアクセスすることができ なくなる。 ステップ1620において解析されたコマンドがFIWHCコマンドである場 合には、ロジックは、ステップ1625に進み、そこで、制御の流れは、DAS Dエンジン108に、そして結果的には、レコードをロックすることにより他の エンティティがそのキューに対応するMCHRアドレスにアクセスすることを防 止するロック・ファシリティ108cに戻させる。 ステップ1620におけるコマンドがFIWHCではない場合には、ロジック は、ステップ1630に進む。ステップ1630では、ステップ1630で解析 されたコマンドがFILECである場合には、ロジックは、ステップ1615に 進むが、そこでは、データペイロードはMQF114へのGet_with_Cursorコー ルに対する数値カーソル(numeric cursor)である。数値カーソルは、このMC HRに対するアドレス監視ロジック状態テーブル110aのエントリのカーソル ・フィールドに転送される。ロジックは、ステップ1639に進み、制御の流れ はDASDエンジン108に戻され、正常なリターン条件(good return condit ion)が告知される。コマンドがFILECでない場合には、処理は、ステップ 1640に進む。 ステップ1640では、解析されたコマンドがFINWCである、すなわち、 ブロックされたリードである場合には、コマンドは、ステップ1650において 、このMCHRに対応するキューへのGet_with_Cursorにマップされる。Get_wit h_Cursorコールが、MQF114に指名されたキューに、このMCHRに対する アドレス監視ロジック状態テーブル110aに保存されている数値カーソルを用 いて、なされる。カーソルを用いてのゲットは、キューから特定のメッセージを ゲットする。ロジックは、戻されたメッセージ・ペイロードを、FINWCのM CHRアドレスに対応するDSTCのRAMキャッシュ・バッファ120のエ ントリに配置する。ロジックは、次に、ステップ1660に進む。コマンドがF INWCでない場合には、ロジックは、ステップ1645に進む。 ステップ1645では、解析されたコマンドがUNFRCでない場合には、ロ ジックは、ステップ1649に進み、そこで、制御の流れはDASDエンジン1 08に戻され、エラー条件が告知される。このシナリオでは、認識されていない チャネル・プログラム・コマンドが受け取られる。 ステップ1645で解析されるコマンドがUNFRCである場合には、ロジッ クは、ステップ1655に進み、そこで、制御の流れは、DASDエンジン10 8に、そして結果的には、レコードをアンロックすることにより他のエンティテ ィがそのキューに対応するMCHRアドレスにアクセスすることを許容するロッ ク・ファシリティ108cに戻させる。 ステップ1660では、マッピング・ロジック112がメッセージが戻された というMQF114からのリターン・コードを検出すると、処理は、ステップ1 665に進む。ステップ1665では、制御の流れを、DASDエンジン108 に、そして結果的には、ゲット・レコードをRAMキャッシュ・バッファ120 からチャネル・インターフェース104を介してメインフレームに転送させるチ ャネル・プログラム処理ロジック108aに戻させる。 ステップ1660では、リターン・コードがキューが空であるであることを示 す場合には、ロジックは、ステップ1670に進み、そこで、ロジックは、ゼロ ・レコード(キューが空であることを示す)を、ステップ1670において、F INWCのMCHRアドレスに対応するDSTCのRAMキャッシュ・バッファ 120のエントリの中に配置させる。ステップ1675では、制御の流れは、D ASDエンジンに、そして結果的には、ゼロ・レコードをRAMキャッシュ・バ ッファ120からチャネル・インターフェース104を介してメインフレームに 転送させる処理ロジック108bに、戻される。 図17には、個々のメッセージがそれぞれ4Kバイトよりも小さいオプション 及び説明付きのゲット・コマンドに対するロジックが示されている。このロジッ クは、表15のバッファされたチャネル・プログラム・コマンドの1つがオプシ ョン及び説明付きのゲットと関連付けされたMCHRアドレスと共にマッピング ・ロジック 110によって検出されるときに、呼び出される。このロジックは、以下で説明 されるように、共有されたMQFキューへのゲットをサポートする。キューの共 有可能性は、マッピング・ロジック112によって拡張された機能の結果である 。 [表15] ロジックは、ステップ1700において開始し、ステップ1710に進む。ス テップ1710では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1715に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持し、キュー状態を修正する。 指名されたキューが開いている場合には、ロジックは、ステップ1720に進 む。ステップ1720では、ロジックは、バッファされたチャネル・プログラム ・コマンドを解析し、それがFIWHCであるかどうか、すなわち、ブロックさ れたリード及びロックであるかどうかを判断する。このコマンドは、I/Oデバ イスに接続された複数のメインフレームの間でキューが共有可能である場合に用 いられる。好適実施例でFIWHCを用いる理由は、それによって、MCHRア ドレス上のロックが、ロック・ファシリティ108cの通常の処理を通じて自然 にトリガされるからである。ロックによって、このロックが解除(アンホールド )されるまで、他のメインフレームが対応するMCHRレコードにアクセスする ことができなくなる。 ステップ1720において解析されたコマンドがFIWHCコマンドである場 合には、ロジックは、ステップ1725に進み、そこで、制御の流れは、DAS Dエンジン108に、そして結果的には、レコードをロックすることにより他の エンティティがそのキューに対応するMCHRアドレスにアクセスすることを防 止するロック・ファシリティ108cに戻される。 ステップ1730では、ステップ1730において解析されたコマンドがFI LECである場合には、ロジックは、ステップ1735に進み、そこでは、デー タペ イロードは、MQF114の既知のAPIへのオプション付きのゲット・コール に対するオプションである。このオプションは、このMCHRに対するアドレス 監視ロジック状態テーブル110aのエントリのオプション・フィールドに転送 される。ロジックは、ステップ1739に進み、制御の流れはDASDエンジン 108に戻され、正常なリターン条件(good return condition)が告知される 。コマンドがFILECでない場合には、処理は、ステップ1740に進む。 ステップ1740では、解析されたコマンドがFINWCである、すなわち、 ブロックされたリードである場合には、コマンドは、このMCHRに対応するキ ューへのオプション及び説明付きのゲットにマップされる。オプション及び説明 付きのゲット・コールが、MQF114に指名されたキューに、このMCHRに 対するアドレス監視ロジック状態テーブル110aに保存されている数値カーソ ルを用いて、なされる。ゲット・オプションは、キューから特定のメッセージと その説明とをゲットする。マッピング・ロジック112、戻されたメッセージ・ ペイロードとメッセージ説明ペイロードとを、FINWCのMCHRアドレスに 対応するDSTCのRAMキャッシュ・バッファ120のエントリに配置する。 ロジックは、次に、ステップ1760に進む。コマンドがFINWCでない場合 には、ロジックは、ステップ1645に進む。 ステップ1745では、解析されたコマンドがUNFRCでない場合には、ロ ジックは、ステップ1749に進み、そこで、制御の流れはDASDエンジン1 08に戻され、エラー条件が告知される。このシナリオでは、認識されていない チャネル・プログラム・コマンドが受け取られる。 ステップ1745で解析されるコマンドがUNFRCである場合には、ロジッ クは、ステップ1755に進み、そこで、制御の流れは、DASDエンジン10 8に、そして結果的には、レコードをアンロックすることにより他のエンティテ ィがそのキューに対応するMCHRアドレスにアクセスすることを許容するロッ ク・ファシリティ108cに戻させる。 ステップ1760では、マッピング・ロジック112がメッセージが戻された というMQF114からのリターン・コードを検出すると、処理は、ステップ1 765に進む。ステップ1765では、ロジックが、制御の流れを、DASDエ ンジン 108に、そして結果的には、ゲット・レコードをRAMキャッシュ・バッファ 120からチャネル・インターフェース104を介してメインフレームに転送さ せるチャネル・プログラム処理ロジック108aに戻させる。 ステップ1760では、リターン・コードがキューが空であるであることを示 す場合には、ロジックは、ステップ1670に進み、そこで、ゼロ・レコード( キューが空であることを示す)が、ステップ1770において、FINWCのM CHRアドレスに対応するDSTC108のRAMキャッシュ・バッファ120 のエントリの中に配置させる。ステップ1775では、制御の流れは、DASD エンジンに、そして結果的には、ゼロ・レコードをRAMキャッシュ・バッファ 120からチャネル・インターフェース104を介してメインフレームに転送さ せる処理ロジック108bに、戻される。 図18には、メッセージと組み合わされたプット・オプションとが4Kバイト よりも小さいシングル・プット・コマンドに対するロジックが示されている。こ のロジックは、表16のバッファされたチャネル・プログラム・コマンドの1つ が、テーブル110aにおいて識別されるように、シングル・プットと関連付け されたMCHRアドレスと共にマッピング・ロジック112によって検出される ときに、呼び出される。このロジックは、以下で説明されるように、シングル・ プットをサポートし、更に、共有されたMQFキューへのプットをサポートする 。キューの共有可能性は、マッピング・ロジック112によって拡張された機能 の結果であって、MQF114に内在するものではない。 [表16] ロジックは、ステップ1800において開始し、ステップ1805に進む。ス テップ1805では、ロジックは、指名されたキューが開いているかどうかを判 断する。 指名されたキューが開いていない場合には、ロジックは、ステップ1810に 進み、ここで、指名されたキューは、MQF114への既知のAPIコールを用 いて開かれる。マッピング・ロジック112は、アドレス監視ロジック110と キュー監視ロジック118とをそれぞれ用いて、アドレス監視ロジック状態テー ブル110aとキュー監視ロジック状態テーブル118aとの両方を協動的に維 持する。従 って、この時点で、マッピング・ロジック112は、テーブル110a及び11 2aを、すべての関係するエントリに対して修正させる。次に、ロジックは、ス テップ1815に進む。 指名されたキューが開いている場合には、ロジックは、ステップ1815に進 む。ステップ1815では、ロジックは、バッファされたチャネル・プログラム ・コマンドを解析し、それがFIWHCであるかどうか、すなわち、ブロックさ れたリード及びロックであるかどうかを判断する。このコマンドは、I/Oデバ イスに接続された複数のメインフレームの間でキューが共有可能である場合に用 いられる。好適実施例でFIWHCを用いる理由は、それによって、MCHRア ドレス上のロックが、ロック・ファシリティ108cの通常の処理を通じて自然 にトリガされるからである。ロックによって、このロックが解除(アンホールド )されるまで、他のメインフレームが対応するMCHRレコードにアクセスする ことができなくなる。 ステップ1815において解析されたコマンドがFIWHCコマンドである場 合には、ロジックは、ステップ1820に進み、そこで、制御の流れは、DAS Dエンジン108に、そして結果的には、レコードをロックすることにより他の エンティティがそのキューに対応するMCHRアドレスにアクセスすることを防 止するロック・ファシリティ108cに戻される。 ステップ1815で解析されたコマンドがFIWHCではない場合には、ロジ ックは、ステップ1825に進み、そこで、ロジックは、チャネル・プログラム ・コマンドがFILUCであるかどうか、すなわち、アンロック・コマンドを備 えたライトであるかどうかを判断する。FILUCコマンドは、共有されたキュ ーへのプットに用いられ、また、共有されたキューへのプットに対して発行され た一連のコマンドにおける第2のコマンドとして用いられる。従って、非共有キ ューへのプットを望む場合には、メインフレームは、ステップ1815のFIW HCを最初に送ることは必要ない。 ステップ1825において解析されたコマンドがFILUCである場合には、 ロジックは、ステップ1830に進み、そこでは、データ・ペイロードは、メッ セージであり、リンクされたリストの形式でのそのプット・オプションである。 メッセージは、MQFの既知のAPIを用いて、対応する指名されたキューへの オプショ ンを用いてプットされる。キューの名称は、メッセージのデータ・ペイロードが 明白にキューの名称を提供しない限り、テーブル110aから提供される。ロジ ックは、次に、ステップ1835に進み、そこでは、制御の流れは、DASDエ ンジン108に戻され、そして結果的には、レコードをアンロックすることによ り、他のエンティティがこのキューに対応するMCHRアドレスにアクセスする ことを可能にするロック・ファシリティ108cに戻される。 ステップ1825におけるコマンドがFILUCではない場合には、ロジック は、ステップ1840に進み、そこでは、ロジックは、チャネル・プログラム・ コマンドがUNFRCであるかどうか、すなわち、アンロック・コマンドである かどうかを判断する。このコマンドは、メインフレームによって、共有されたキ ューへのプットをアボートする必要がある場合に用いられる。そのような場合に は、ステップ1825のFILUCの代わりに送られる。 ステップ1840で解析されるコマンドがUNFRCである場合には、ロジッ クは、ステップ1845に進み、そこで、制御の流れは、DASDエンジン10 8に、そして結果的には、レコードをアンロックすることにより他のエンティテ ィがそのキューに対応するMCHRアドレスにアクセスすることを許容するロッ ク・ファシリティ108cに戻される。 ステップ1840で解析されるコマンドがUNFRCではない場合には、ロジ ックは、ステップ1850に進み、そこで、制御の流れはDASDエンジン10 8に戻され、エラー条件が告知される。このシナリオでは、認識されていないチ ャネル・プログラム・コマンドが受け取られる。 図19には、キュー監視ロジック118に対するロジックが示されている。キ ュー監視ロジック118は、マッピング・ロジック112によって実際に開かれ たかどうかを問わずに、MQF114におけるすべてのキューを監視する。メッ セージがMQF114における指名されたキューに到着すると、キュー監視ロジ ック118が、既知のMQF114トリガ付勢メッセージによって付勢される。 ステップ1910では、それは、キュー監視ロジック状態テーブル118aをチ ェックし、ステップ1920において、指名されたキューがエントリを有するか どうかを判断する。エントリが存在する場合には、処理は、ステップ1930に 進む。 エントリがない場合には、ロジックは、ステップ1925において、トリガ付 勢メッセージと、メッセージのキューに対するキュー監視ロジック状態テーブル 118aが初期化されていないことの指示との両方を合成するメッセージを、マ スタ・トリガ応答キューに、プットする。マスタ・トリガ応答キューは、以下で 説明される実施例に対する複数の制御キューの中の1つである。その目的は、M QF114がメインフレームが処理する必要のあるメッセージを有していること をメインフレームが告知される合併されたキューを提供することである。これが 用いられる理由は、先に述べたように、すべてのゲット・キューがトリガ・ロッ クされた待機状態を用いて構成されているとは限らないが、メインフレームは、 依然として、いつメッセージが到着するのかを直ちに知る必要がある。処理は、 ステップ1960に進む。 ステップ1930では、アドレス監視ロジック状態テーブル110aの対応す るエントリがチェックされて、MCHRアドレスがトリガされたロック待機状態 にあるかどうかを判断する。その対応するキューにおいてメッセージが到着する のを待機している未決のFIWHCが存在すると判断される場合には、キュー監 視ロジック118は、ステップ1935に進む。それ以外の場合には、処理は、 ステップ1940に進む。 ステップ1935では、ロジックは、ロックされた待機状態キューをトリガす る条件を設定する。これは、マッピング及びキュー監視ロジックに、ロックを備 えたMCHRを保持する他のファントム・プロセッサであるような外見を与える ロック・ファシリティ108cに対する条件を設定することによって行われる。 ロック・ファシリティ108cにおいて、他のプロセッサがFILUCコマンド を完了しているようにDASDエンジン108を監視させる条件も更に設定され る。これらの条件は、DASDエンジン108によって、通常のDSTC108 の処理が継続しているステップ1980に処理が移動する際に、作用される。 ハイレベルにおいて、ステップ1935のシミュレートされたFILUCは、 DASDエンジン108とロック・ファシリティ108cとを監視する。同様に 、他のメインフレームが、最終的に、レコードの更新を終了しつつあり、また、 MCHRのホールドを放棄しつつある。従って、DASDエンジン108とロッ ク・ファ シリティ108cロジックとは、ホールド待機メインフレームへのアテンション 割り込みをルーチン的に告知し、更新されたレコードを再度リードすることがで きる。この再リード(リリード、re-read)は、TPFメインフレームのアンロ ック処理の自然な結果である。このリリードが生じるときは、メインフレームか らの新たなゲットのように見える。ただし、この場合には、キューの中に転送す ることができるメッセージが存在する。そのキューに対応するMCHR上でFI WHCコマンドを元々実行したメインフレームにおけるブロックされたアプリケ ーションは、MCHR上のロックを解除するリード・ロック・コマンドを有する メッセージによって、直ちに告知される。 ステップ1940では、メインフレームは、MCHR上のトリガされたロック 待機状態にはないので、メインフレームがキュー上にメッセージが存在すること の告知を受ける必要があるかどうかが判断される。キュー監視状態テーブル11 8aのエントリが告知を受ける必要ないことを示す場合には、ステップ1945 は、キュー監視状態テーブル118aを更新して、キュー上に少なくとも1つの メッセージがあることを指示し、ステップ1870に進む。(それぞれのエント リは、アテンション割り込みがクライアントに送られるべきかどうかの指示を含 み、MCHRアドレス上にトリガがロックされた待機状態が存在する場合には、 ウェークアップ・メッセージがマスタ・トリガ応答キュー(後で更に説明する) に配置されるべキかどうか、又は、クライアントがトリガされるべきでないかど うか、を含む。)ステップ1940において、メインフレームが告知を受ける必 要があると判断された場合には、ステップ1950は、対応するMCHRアドレ スを有するトリガ付勢メッセージと、メインフレームにおいて1つのメッセージ に付勢されるプログラムの名称とを合成し、それを、既知のMQF144のAP Iを用いて、マスタ・トリガ応答キューにプットする。処理は、ステップ196 0を継続する。 ステップ1960では、ロジックは、例えば、ロック・ファシリティ108c 又はああ状態テーブル110aに問い合わせを行うことによって、マスタ・トリ ガ応答キューがトリガされたロック待機状態にあるかどうかを判断する。典型的 には、マスタ・トリガ応答キューは、連続的にトリガされた待機状態にあるキュ ーである。というのは、メインフレームにメッセージ活動を告知される主要な方 法であるから である。トリガされたロック待機状態にある場合には、処理は、ステップ193 5に進むが、ここでは、ステップ1935は、マスタ・トリガ応答キューに対し て付勢されるのであって、実際のアプリケーション・メッセージが中にあるキュ ーに対してではない。そうでない場合には、処理は、ステップ970に進む。 ステップ1970は、キュー監視ロジック118を、イベント待機状態に戻し 、そこでは、更なるメッセージを受け取ると、MQF114によって再び付勢さ れる。 注意すべきは、トリガされたロック待機状態にあるMCHRアドレスは、メイ ンフレーム・アプリケーションによっては解放(リリース)することができない ということである。その理由は、ブロックされたリード・モードにあるからであ る。所定のタイムアウト値に到達したときには、メインフレームの既知の失われ た割り込みハンドラによって解放される。好適実施例では、タイムアウト値は、 従来型のDSTCよりも大きな値に設定される。しかし、異なるメインフレーム ・アプリケーションは、ゼロ・メッセージをMCHRがマップされるキューにプ ットすることによって、トリガされたロック待機状態のMCHRアドレスをマニ ュアルで解放することができる。 キュー・ベースの制御インターフェース 図20、表17及び表18は、それぞれが、ロジック、マスタ制御キュー及び キュー・ベースの制御インターフェースを示している。好適実施例では、改良型 のI/Oデバイス100上の新規なロジックと、デバイス100に常駐するMQ Fとへのキュー・ベースの制御インターフェースを定義している。キュー・ベー スの制御インターフェースは、メインフレーム、好適実施例及びMQF並びにネ ットワークの間の制御、アドミニストレーション、マネージメントを容易にする 。 特に、インターフェースには、マスタ制御キュー、マスタ制御応答キュー、マ スタ制御質問(inguiry)キュー、マスタ制御ロギング・キュー、マスタ・トリ ガ応答キュー、マスタ・アドレス監視ロジック・テーブル・キュー、マスタ・キ ュー監視状態テーブル及びマスタMCHRキューが含まれる。これらのキューに より、メインフレームのアプリケーションが、以下で説明されるように、キュー 状態をモニタ及び/又は修正することが可能になる。 キュー・ベースの制御インターフェースは、メインフレーム・システムには既 知であるMCHRの静的な組(static set)にマップされ得るマスタ制御キュー の固定された組(fixed set)を用いる。この静的なマッピングは、メインフレ ームのオペレーティング・システムのコンフィギュレーションの一部である。こ のようにして、メインフレーム・キーイング・アプリケーションが開始するとき には、静的にマップされた制御キューを介して好適実施例と通信し、全体の好適 実施例及びMQFのコンフィギュレーション及び状態にアクセスすることができ る。 表17には、好適実施例のマスタ制御キューがまとめられている。 [表17] マスタ制御キューは、すべての明白な状態変化要求をMQFに配置するのに用 いられる。特に、キューは、開く(オープン)、閉じる(クローズ)、接続(コ ネクト)、切断(ディスコネクト)又は特定キューの設定などの要求を受け取る 。MQFへの明白なコマンドと明白に選択されたキューとは、マスタ制御キュー へのプット・シングルMQF制御メッセージのデータ・ペイロード・セクション におけるメインフレームから、マッピング・ロジック112に送られる。処理ロ ジックについては、後で、図20において説明される。 マスタ制御応答キューは、与えられたマスタ制御キュー要求への応答であるM QF空のすべての応答を配置するのに用いられる。 マスタ制御質問キューは、既知のMQF質問メッセージへの応答を含む。MQ F質問応答メッセージは、特定されたMQFキューの現在の状態を説明する。既 知のMQFフォーマットでその特性及び状態を説明しているMQFにおいては、 すべてのキューに対して、マスタ制御質問キューにおいて、1つの質問メッセー ジ応答が存在する。MQCLOSE、MQCONN、MQDISC、MQOPEN、MQSETなどのMQFAP Iバーブのいずれかによって、いずれかのMQFキューの特性又は状態に変更が なされた場合には、又は、キュー・マネジャに対する適切なMQF制御コマンド がキューに衝撃を与えている場合には、新たな質問応答メッセージが古いものに 代わる。(キュー・マネジャは、MQF114の成分であり、制御コマンドに応 答する。) マスタ制御ロギング・キューは、マスタ制御キューに対してなされたすべての 制御タイプ・メッセージ要求及び応答(マスタ制御質問キューとの関係で既に述 べた) のコピーを配置するのに用いられる。マスタ制御制御ロギング・キューは、履歴 をトラッキングする。いったん初期化されると、決してリセットされることはな い。その中の項目(アイテム)は、履歴データベースに転送される。 マスタ・トリガ応答キューは、合併されたキューを提供する。ただし、メイン フレームは、MQFキューが処理を必要とするメッセージを有することを告知さ れる。これは、状態テーブル110a及び118aにおいて構成されたキューに 対して用いられる。キュー監視ロジック118は、ウェークアップ・メッセージ をこのキューの中に配置するかどうかをいつ決定するかを質問する。マスタ・ト リガ応答キューは、通常は、トリガされたロック待機状態アドレスによって構成 される。これは、メインフレームのFIWHCがそのアドレス上でホールド待機 状態にあるという意味であり、すなわち、ブロックされたゲットがあるというこ とである。 マスタ・アドレス監視ロジック・テーブル・キューとマスタ・キュー監視状態 テーブル・キューとは、それぞれが、アドレス監視ロジック・テーブル110a とキュー監視状態テーブル118aとのDSTC102のメモリ作業用コピーに おいて、持続型ストレージをチェックポイント(又は、キーポイント)するのに 用いられる。DSTC102の再スタート処理の間に、テーブルの持続型のコピ ーがメモリの中に再びリードされ、好適実施例を、その最後の既知のチェックポ イント状態に回復させる。新たなMCHR又はキュー・エントリは、外部ソース によって、これらのテーブルのそれぞれの持続型コピーに追加することができる 。新たなエントリは、選択的な再スタート・ロジック(図示せず)によってメモ リの中に選択的にリードすることができる。 マスタMCHRキューは、メインフレームによって、キューへのMCHRアド レスを取得して動的に配分する、すなわち、MCHRアドレスをキューの名称・ バーブの組合せに拘束するのに用いられる。好適実施例においては、このテーブ ルによって、上述したキューのマスタ制御ファミリに用いられる静的な拘束では なく、MCHRをキューにより動的に拘束することが可能になる。また、キュー が動的に追加されるので、キューへのMCHRアドレスのマッピングをリアルタ イムで追加することが可能になる。 図20には、制御コマンドのマスタ制御キューへのシングル・プットを処理す るロジックが示されている。ただし、メッセージ、MQFバーブ、オプション及 びデスクリプタ情報が4Kバイトよりも小さい。特に、この特別のプット・コマ ンドは、メインフレーム・アプリケーションからのMQFに対する制御、マネー ジメント及びアドミニストレーションを実行する目的で、特定の指名されたキュ ーに対して、選択されたMQF制御バーブを実行するものである。MQF又はマ ッピング・ロジック112からのすべての応答は、マスタ制御応答キューに配置 される。 このロジックは、表18のバッファされたチャネル・プログラム・コマンドの 1つが、テーブル110aにおいて識別されるように、制御メッセージを有する シングル・プットと関連付けされた静的なMCHRアドレスと共にマッピング・ ロジック112によって検出されるときに、呼び出される。このロジックは、以 下で説明されるように、シングル・プットをサポートし、更に、共有されたMQ Fキューへのプットもサポートする。キューの共有可能性は、図20に示されて いるマッピング・ロジック112によって拡張された機能の結果であって、MQ F114に内在するものではない。 [表18] ロジックは、ステップ2000において開始し、ステップ2005に進む。ス テップ2005では、ロジックは、マスタ制御キューが開いているかどうかを判 断する。マスタ制御キューの名称は、バッファされたチャネル・プログラムにM CHRアドレスを有するアドレス・テーブル110aの中のエントリから検索さ れる。 マスタ制御キューが開いていない場合には、ロジックは、ステップ2010に 進み、ここで、マスタ制御キューは、キューのマスタ制御ファミリにおけるすべ てのキューと同様に、MQF114への既知のAPIコールを用いて開かれる。 マッピング・ロジック112は、アドレス監視ロジック110とキュー監視ロジ ック118とをそれぞれ用いて、アドレス監視ロジック状態テーブル110aと キュー監視ロジック状態テーブル118aとの両方を協動的に維持する。従って 、この時点で、マッピング・ロジック112は、テーブル110a及び118a を、すべての関係するエントリに対して修正させる。次に、ロジックは、ステッ プ2015に進む。 キューのマスタ制御ファミリが開いている場合には、ロジックは、ステップ2 015に進む。ステップ2015では、ロジックは、バッファされたチャネル・ プログラム・コマンドを解析し、それがFIWHCであるかどうか、すなわち、 ブロックされたリード及びロックであるかどうかを判断する。 ステップ2015において解析されたコマンドがFIWHCコマンドである場 合には、ロジックは、ステップ2020に進み、そこで、制御の流れは、DAS Dエンジン108に、そして結果的には、レコードをロックすることにより他の エンティティがそのキューに対応するMCHRアドレスにアクセスすることを防 止するロック・ファシリティ108cに戻される。 ステップ2015で解析されたコマンドがFIWHCではない場合には、ロジ ックは、ステップ2025に進み、そこで、ロジックは、チャネル・プログラム ・コマンドがFILUCであるかどうか、すなわち、アンロック・コマンドを備 えたライトであるかどうかを判断する。 ステップ2025において解析されたコマンドがFILUCである場合には、 ロジックは、ステップ2030に進み、そこでは、データ・ペイロードは、メッ セージ、MQPUT、MQCLOSE、MQCONN、MQDISC、MQGET、MQINQ、MQOPEN、MQSETなど のMQFAPIバーブである。特定のキューの名称、MQFバーブのオプション などは、リンクされたリストの形式であり、既知のMQFAPIコールとして再 フォーマットされており、特定のキューの名称に対して実行される。キューの名 称は、メッセージのデータ・ペイロートにおいて、明白に提供される。 ロジックは、ステップ2035に進み、MQFAPIによって実行された直後 の要求メッセージとMQFAPIコールからのその応答及びリターン・コードは 、合成され、マスタ制御ロギング・キューだけでなく、マスタ制御応答キューに プットされる。メインフレームは、マスタ制御応答キューにおいて、その要求へ の応答を得ることができる。処理は、ステップ2040に進む。 ステップ2040では、ロジックは、MQFAPIへの既知の質問コールを実 行し、キューの状態及び特性を取得する。MQFAPIコールから戻る既知の応 答は、マスタ制御キューに対してなされた最初の要求において指名された特定の キュー に対して、マスタ制御質問キューニスでに存在していた任意の質問メッセージ・ エントリへの交換として、マスタ制御質問キューにプットされる。 ロジックは、ステップ2045に進み、そこでは、質問応答は、やはり、マス タ制御ロギング・キューにプットされる。 ロジックは、ステップ2050に進み、そこでは、制御メッセージからの任意 の更新が、それぞれ、適切なアドレス監視ロジック・テーブル110aと、キュ ー監視状態テーブル118aのエントリに与えられる。 ステップ2055では、2つのメモリ・ベースの状態テーブルのいずれかへの 任意のエントリが、チェックポイントされる、すなわち、持続型のキュー・コピ ーにプットされる。持続型ストレージ・ベースのキューにおける対応するエント リの古い方が、削除され、それによって、エントリの最も現時点でのコピーだけ が存在することになる。 ロジックは、次にステップ2060に進み、ここで、制御の流れは、DASD エンジン108に戻され、そして結果的には、レコードをアンロックすることに より、他のエンティティがこのキューに対応するMCHRアドレスにアクセスす ることを可能にするロック・ファシリティ108cに戻される。 ステップ2025におけるコマンドがFILUCではない場合には、ロジック は、ステップ2070に進み、そこでは、ロジックは、チャネル・プログラム・ コマンドがUNFRCであるかどうか、すなわち、アンロック・コマンドである かどうかを判断する。このコマンドは、メインフレームによって、マスタ制御キ ューへのプットをアボートする必要がある場合に用いられる。そのような場合に は、ステップ2025のFILUCの代わりに送られる。 ステップ2070で解析されるコマンドがUNFRCである場合には、ロジッ クは、ステップ2075に進み、そこで、制御の流れは、DASDエンジン10 8に、そして結果的には、レコードをアンロックすることにより他のエンティテ ィがそのキューに対応するMCHRアドレスにアクセスすることを許容するロッ ク・ファシリティ108cに戻される。 ステップ2070で解析されるコマンドがUNFRCではない場合には、ロジ ックは、ステップ2080に進み、そこで、制御の流れはDASDエンジン10 8に 戻され、エラー条件が告知される。このシナリオでは、認識されていないチャネ ル・プログラム・コマンドが受け取られる。 その他の側面 IBMのMQseriesなどのMQFは、典型的には、マルチスレッド型のオペレー ティング・システムを用いてパフォーマンスを獲得する。マルチスレッド型の環 境では、複数のアプリケーションや、1つのアプリケーションの複数のスレッド が、相互に独立に、同じキューにライトすることができる。すなわち、それぞれ が、同じキューに対する作業ユニットを用いて作業をすることができ、MQFは 、それらを相互に分離しておくことができる。 好適実施例におけるマルチスレッドの長所は、DASDロジック108、アド レス監視ロジック110、キュー監視ロジック118及びマッピング・ロジック 112が、すべて、適切な位置で、異なるスレッドにおいて動作することができ る点である。しかし、マルチスレッド環境の中には、適切な場合にはそれらが互 いに相互作用することを可能にするメカニズムが存在している。これによって、 アドレス監視ロジック110は、キュー監視ロジック118から分離して動作す ることが可能になる。 既に概要を述べた別の長所としては、与えられた指名されたキューは、それぞ れのMCHRアドレスが与えられた1つの作用に対応する複数の対応するMCH Rアドレスを有することができるという点がある。従って、MCHRアドレスA は小さなプットに対応し、MCHRアドレスBは大きなプットに対応することも 可能である。改良型のDSTC108の好適実施例では、マルチスレッドのオペ レーティング・システムが用いられている。マルチスレッドであることにより、 複数のMCHRアドレスからの作業の複数ユニットが異なる複数のMCHRを介 して同じキューにプットされている場合に、キューの統一性(coherency)が保 証される。 好適実施例は、小さな及び大きなメッセージのゲットを含めて、複数の形式の ゲットをサポートしている。このようにして、小さなメッセージを有しているこ とを知っているアプリケーションは、この知識を利用して、複雑性のより低いロ ジックによって動作効率を向上させる小さなゲット要求を用いることができる。 MQFの主要な使用は、共通点を有していないヘテロジーニアスなコンピュー ティング環境を、メッセージが一度だけ送られるという堅固な機能性と絶対的な 統一性をもって、相互にリンクさせることである。MQFの著しい利点は、オー プン・システムをオープン・システムとリンクさせることにあるが、最大の長所 は、オープン・システムのアプリケーションをメインフレームのアプリケーショ ンに密結合(tightly couple)させることを必要とせずに、オープン・システム をメインフレーム・システムとリンクさせることである。本発明は、特に、オー プン・システムのアプリケーションとレガシー・メインフレーム・アプリケーシ ョンとの間で、メインフレームのアプリケーションが、それ自体が最も精通して いる処理パラダイム、すなわち、データベース、クラスタ処理環境におけるファ イル及びレコード処理などを継続的に使用し続けながら、意味のあるアプリケー ション情報の交換を容易にする。メインフレーム・アプリケーションによるファ イル及びレコード処理からオープン・システムでのメッセージングへのパラダイ ム・シフトを、メインフレームに代わって、改良されたI/Oデバイスにおいて 、抽象化し、行うことができる。これによって、既存のファイル処理を行うこと ができるオープン・システムと、MQFAPIを用いて通信する際であっても、 メインフレーム・アプリケーションを著しく再構成(rework)する必要が限定さ れる。これは、後で、その他の実施例のセクションで説明される。TPFでは、 この実施例と容易にインターフェースすることが可能な多数のファイル・ベース のインターフェース・ユーティリティが存在し、オープン・システムなどの外部 システムにより多数の応用例を与える。 キュー・ベースの制御インターフェースを用いたシステムの初期化 どのようなMQF環境のセットアップにも計画が必要である。どのようなMQ F環境でも、キュー・マネジャ、キュー及び通信が、計画され、設定され、構成 (コンフィギュレート)されなければならない。改良型のI/Oデバイス上での MQFのコンフィギュレーション及びセットアップは、MQF環境全体のコンテ キストの中でなされなければならない。好適実施例では、キュー監視状態テーブ ルが、改良型のI/Oデバイス上に常駐するキュー・マネジャに対して明白(ex plicitly)にコンフィギュレーションのなされたキューに基づいてセットアップ される。MQFのためにコンフィギュレーションのなされたすべてのキューに対 して、キュー監 視状態テーブル118a内に、1つのエントリが存在する。既に述べたように、 これらのエントリは、マスタ・キュー監視状態テーブルのキューの中にチェック ポイント(プット)される。キューは、マスタ制御キューへの明白なオープンを 用いて、メインフレーム・アプリケーションによって、最初は選択的に開かれる ので、MCHRアドレスは、マスタMCHRキューから除去され、アドレス監視 ロジック・テーブル110a(awst)のエントリを増加させる(populate)のに 用いられる。 アドレス監視テーブル110aにおけるそれぞれのMCHRアドレス・エント リは、キュー監視状態テーブル118aにおける対応する指名されたキューと相 互参照(クロスリファレンス)される。指名されたキューが処理のために構成さ れるすべてのタイプの処理に対してマップされた、一意的なMCHRアドレス( awst)エントリが存在する。少なくとも1つのMCHRアドレス(awstエントリ )が1つのキューに対して構成されたそれぞれの一意的な動作に対して用いられ る。それぞれのMCHRのawstエントリは、それに割り当てられた表Aからのブ ランチ・ベクトル・コードを有している。これは、その一意的な動作に対応する マッピング・ロジック112を付勢するのに用いられる。(すなわち、共有され たキューへのシングル・ロングを5とプットし、シングル非共有を3とプットす るなど。)通常は、それぞれ(一対一マッピング(写像))の指名されたキュー に対して、アドレス監視ロジック・テーブル110aの複数のエントリが存在し 、それぞれが、異なるプロセスにマップされる。アドレス監視ロジック・テーブ ル110aのエントリが作られ、変更され又は削除されると、それらは、高速で の一般的な再スタートのために、チェックポイントされ、マスタ・アドレス監視 状態テーブル・キューとなる。メインフレーム・アプリケーションが対応する指 名されたキューを明白に閉じるときにだけ、アドレス監視ロジック・テーブルの エントリは削除され、閉じるというメッセージは、マスタ制御キューに送られる 。 その他の実施例 上述の実施例は、特に、TPF環境に関係する。同じ技術は、既知であるMV S/OS390環境を含む他のシステムにも応用できる。いくつかの点で、MV S/OS390環境の方が単純である。例えば、MVS/OS390環境は、4 Kのレコードに制限されず、既に説明したセグメント化やリアセンブリ・ロジッ クを必要 としない。他方で、MVS/OS390環境は、それ自身の問題点を有している 。例えば、ネイティブのDASDロッキング・システムは、メインフレーム自体 を中心としており、DSTC102にはほとんどの機能が常駐していない。MV S/OS390環境のネイティブのDSTCは、機能が非常に限定されているの で、クラスタ・アウェア(cluster aware)で非同期信号待機型プロセッサとは ならず、リソースがアンロックされている。この点で、市販のリソース・ロッキ ング又はシリアル化ソフトウェアの助けを借りないネイティブなMVS/OS3 90は、オープン・システムズ(open Systems)やマイクロソフトのNTアーキ テクチャに非常に類似している。しかし、後で述べるように、MVS/OS39 0とオープン・システムズとのロッキング、シグナリング、クラスタ・アウェア ネスの制限などは、本発明の実施例においては、容易に克服が可能である。 以上の及びこれ以下の説明を与えられれば、この技術分野における当業者であ れば、上述の実施例を、MVS/OS390、オープン・システムズ、マイクロ ソフトNT又はそれ以外の同様の環境に適合するように修正することは容易であ る。上述の環境のそれぞれに対する実施例は、相互に影響を有しあう。 上述の実施例は、MQFの機能を多くの方法で拡張しており、それには、共有 されたキューの使用が含まれる。これらの機能の拡張は、望むのであれば、複雑 性を低下させた実施例を得るために削除することが容易にできる。これは、特に 、MVS/OS390環境において意味を有するのであるが、それは、多くのレ ガシー・アプリケーションは、ネイティブに、シーケンシャルなデータ・セット のリード・ライトを行うからである。データ・セットが実施例の改良型のDST C上に常駐している場合には、レガシーのシーケンシャルなデータ・セットのラ イトは、MQFメッセージ・キューに再方向付けすることができる。シーケンシ ャルなデータ・セットのライト又は個々のライトは、データ・セットとMQFキ ューとの両方へのミラー・ライトでありうる(mirror written)。同じことが、 改良型のI/Oデバイス上に常駐するシーケンシャルなデータ・セットからリー ドしているレガシー・アプリケーションについてもいえる。というのは、実際に は、MQFキューからのリードであるからである。この実施例では、レガシー・ アプリケーションは、MQFAPIを用いれば、新たなシステムとのインターフ ェースのために再度のライト は必要ない。アプリケーションのレベルでは、変更されずに処理を継続するが、 システムのレベルでは、オープン・システムズの世界に開かれているのである。 上述の実施例は、特に、DASDである改良型のI/Oデバイスに向けられて いた。以上の説明を与えられれば、この分野の当業者であれば、テープ・デバイ スなど、他のI/Oデバイス上で動作するように、この実施例を容易に修正する ことができる。この点で、拡張された機能の幾つかは犠牲になるが、これ以上説 明する必要はないだろう。特に、カーソルによるゲットは、犠牲になる可能性が あり、幾つかのテープ指向の実施例も同様である。 上述の実施例は、メインフレームが応答への待機を保持することができるゲッ トを実現している。この実施例は、メインフレームが結果を求めてポーリングを 行うような状況をカバーするように変更することは容易である。 しかし、改良型のI/Oデバイス100とMVS/OS390、オープン・シ ステムズ、マイクロソフトNT及びそれ以外の類似の環境における現在のコンピ ューティング技術の性質のために、ロッキング、非同期、シグナリング及びクラ スタ・アウェアなどの特徴を、それぞれの環境の中で実現することが可能である 。上述の環境のすべての中で、幾つかは、ボリューム、データ・セットファイル 又はレコード・ロック・シリアル化は、DASDレベルで生じていることを示し ているが、原始的であり、ボリュームなどの階層において最も高いレベルをカバ ーするだけでありうる。MVS/OS390のボリューム・ロックであったり、 又はオープン・システムズのファイル・モード・インジケータであっても、ロッ ク・シリアル化の幾つかの形式は、DSTC又はDSTCに同等なものによって 検出することができる。 TPF環境の実施例は、MCHRアドレスの与えられた組に向けられた与えら れた一連のDASDI/Oコマンドは、マッピングされて、マッピングされたM QFキューにおけるメッセージ上の一連のMQFバーブを呼び出すことができる ことを示している。更に、この実施例は、指名されたキューを、他のキューすな わちマスタ制御キュー・ファミリを介して、メインフレーム・アプリケーション から制御し管理することができることを示している。この実施例は、DSTC、 インターフェース・ロジック、MQF及び通信スタックの間の堅固な統一性を示 している。他 の実施例では、与えられたI/Oデバイス・タイプの要素だけでは不十分である ときに、他のI/Oデバイス・タイプの処理を本発明による改良型のI/Oデバ イス上に配置する、又は、これらを組み合わせて、同じ目的を達成することに制 限はない。例として、MVS/OS390環境のDSTCは、ロッキングの分野 では不十分である。別のI/Oデバイス・タイプであるチャネル・ツー・チャネ ル・アダプタを、DASDが用いるのと同じチャネル・インターフェースを介し て、本発明による改良型のI/Oデバイスにインターフェースするという例を後 で述べる。本発明による改良型のI/Oデバイス・タイプは、複数のハードウェ ア・デバイス・タイプを同時にサポートし調整を行って、オフロードされたMQ Fキューを制御するという目的を達成する。これは、既存のメインフレーム又は オープン・システムズのI/Oインターフェース(又は、プロトコル)を用いて なされている。 TPFDSTCが提供するクラスタ・アウェアネス及び非同期シグナリングを 有する環境はほとんどないが、現在のコンピューティング技術によれば、本発明 による改良型のI/Oデバイスを用いて、その拡張を行うことが可能である。M VS/OS390環境のための改良型のDSTCの実施例は、既知のEXCP( MVS/OS390実行チャネル・プログラム)インターフェースを介して、M VS/OS390待機アプリケーションに非同期的にシグナリングをすることが できる。そのような実施例では、改良型のDSTCデバイスに接続されたMVS /OS390のチャネル/サブチャネルの幾つかは、DASDデバイスではなく 、チャネル・ツー・チャネル(channel to channel)デバイスとして設計するこ とができる。トリガされた待機状態処理のためのすべての非同期シグナリングは 、改良型のI/Oデバイス上のインターフェース・ロジック105と協動する追 加的なロジックと、既知のチャネル・ツー・チャネル/EXCPインターフェー スを介してシグナリング処理を扱うMVS/OS390アプリケーションにおけ る追加的なロジックとを用いることにより、チャネル・ツー・チャネル・インタ ーフェースを介して行うことができる。改良型のMVS/OS390ロッキング もまた、同じチャネル・ツー・チャネル/EXCPインターフェースを用いて実 現することができる。例えば、HOLDCマクロ(作業のシンクポイント・ユニ ットを表す)は、メインフレーム・アプリケーションからマッピング・ロジック 112へのチャネル・ツー・チャネル・ メッセージであって、MCHRのアドレスaを介して転送されるFILECライ トが作業ユニットであることを示すものによって代替することができる。この場 合には、ハードウェア経路が、DASDMCHR経路と共に、DASDファイル ・ライトが作業ユニットの一部であるマッピング・ロジック112に告知するの に用いられる。また、作業メッセージのHOLDCユニットは、DASDMCH R経路を介してであるが、MCHRアドレスA上のリード/ライト活動を関連付 けるようにマッピング・ロジック112が構成されているMCHRアドレスBに 送られる。この技術により、ある1つのハードウェア・デバイス・タイプの弱点 を別のものによって補完することが可能になる。 別の実施例は、オープン・システムズのアプリケーションがメッセージ上で待 機している場合の、改良型の非同期シグナリングのオープン・システムズ実施例 である。この実施例では、既知のSCSI(スモール・コンピュータ・システム ズ・インターフェース)インターフェースと、オープン・システムズのアプリケ ーションとの直接のインターフェースが可能な対応する改良型のオープン・シス テムズのデバイス・ドライバとを用いる。MVS/OS390環境の場合のよう に、アプリケーションは、ユーザ・アプリケーションであったり、中間的なアプ リケーション・プログラミング・インターフェースを介してトラフィックを結合 させるシステム・アプリケーションであったりする。 以上で述べた実施例のいずれかを用いる非TPFコンピューティング環境の直 接非同期シグナリングであれば、ファントム・プロセッサ(キュー監視ロジック 118)がメッセージがMCHRの対応するキューにおいて受け取られるまでM CHRアドレスをホールド/ロックしている間、待機しているプロセッサをトリ ックにかけることが不要になる。メインフレーム又はオープン・システムズのア プリケーションは、メッセージがそのキューに到着したことを明白に告知される ことができる。 改良型のI/Oデバイスの新規性は、これまでは別個であったI/Oデバイス を、MQFなどの新たな処理ファシリティがレガシー・アプリケーションの処理 パラダイムと、MQFAPIなどの新たなインターフェースを用いて処理を行う 新たなア プリケーション処理パラダイムとの両方と共に、透過性を備えながら動作するこ とを可能にするものに統合させたことである。 以上で実施例を説明したが、本発明の精神及び範囲から逸脱せずにここで説明 した実施例に変更を加えることが可能であることは、この分野の当業者には明ら かなはずである。
───────────────────────────────────────────────────── 【要約の続き】 ロードする。

Claims (1)

  1. 【特許請求の範囲】 1.プロセッサとメモリとを有し、対応するアドレスを有するI/Oコマンド を受け取るストレージ・コントローラにおいて、前記メモリに常駐する、プロセ ッサが実行可能な命令の組(a set of processor-executable instructions)で あって、 ネットワーク上で情報を受信及び送信する通信スタックと、 メッセージ・キュー・ファシリティ(MQF)であって、前記通信スタックと 協動し、メッセージ・キュー・バーブに応答して、前記通信スタックに、情報を このMQFにおけるキューに提供させる、又は、このMQFにおけるキューに情 報を前記通信スタックに提供させるメッセージ・キュー・ファシリティ(MQF )と、 前記I/Oコマンドに応答して、I/Oコマンドが所定のI/Oコマンドの第 1の組の中にあるかどうかを判断し、ある場合には、前記I/Oコマンドを対応 するメッセージ・キュー・バーブにマップし、前記MQFを呼び出すようにキュ ーイングして、それにより、前記MQFが前記通信スタックと協動して前記バー ブと対応する情報を送受信する、インターフェース・ロジックと、 を備えていることを特徴とするプロセッサが実行可能な命令の組。 2.請求項1記載のプロセッサが実行可能な命令の組において、前記MQFは 、非共有キューを有し、前記インターフェース・ロジックは、第1のI/Oコマ ンドに応答して、前記メモリの中にありキューに対応するデータ構造をロックし 、第2のI/Oコマンドに応答して、前記キューに対応する前記データ構造をア ンロックし、それによって、前記キューが前記ストレージ・コントローラと相互 作用する複数のクライアント・コンピュータの間で共有されるようにすることを 特徴とするプロセッサが実行可能な命令の組。 3.請求項2記載のプロセッサが実行可能な命令の組において、前記ストレー ジ・コントローラは、ロック・ファシリティを含み、前記インターフェース・ロ ジックは、前記ロック・ファシリティと協動して前記データ構造をロック及びア ンロックすることを特徴とするプロセッサが実行可能な命令の組。 4.請求項2記載のプロセッサが実行可能な命令の組において、前記第1及び 第2のI/Oコマンドは、前記ロック・ファシリティによって処理され、前記デ ータ構造のロック及びアンロックを生じさせることを特徴とするプロセッサが実 行可能な命令の組。 5.請求項1記載のプロセッサが実行可能な命令の組において、前記I/Oコ マンドの部分集合は限定されたサイズのペイロードを有しており、前記限定され たサイズのペイロードは、前記MQFによってサポートされるメッセージ・サイ ズよりも小さく、前記インターフェース・ロジックは、リアセンブリ・ロジック を含み、複数のコマンド・ペイロードから前記限定されたサイズよりも大きなペ イロードを有するメッセージ・キュー・バーブを形成することを特徴とするプロ セッサが実行可能な命令の組。 6.請求項5記載のプロセッサが実行可能な命令の組において、前記ストレー ジ・コントローラは、複数のI/Oコマンド・ペイロードを受け取り関係付けす るレコード・プーリング・ファシリティを含み、前記リアセンブリ・ロジックは 、前記レコード・プーリング・ファシリティと協動し、複数のI/Oコマンド・ ペイロードを収集して、前記メモリ内に、メッセージ・キュー・バーブのペイロ ードとして用いられる物理的にシーケンシャルなペイロードを形成することを特 徴とするプロセッサが実行可能な命令の組。 7.請求項1記載のプロセッサが実行可能な命令の組において、前記インター フェース・ロジックは、 前記MQFにおけるキューへのプット・メッセージ・キュー・バーブをサポー トするロジックと、 前記MQFにおけるキューへのゲット・メッセージ・キュー・バーブをサポー トするロジックと、 を備えていることを特徴とするプロセッサが実行可能な命令の組。 8.請求項7記載のプロセッサが実行可能な命令の組において、プット・メッ セージ・キュー・バーブをサポートする前記ロジックは、 限定されたサイズよりも小さなペイロードを有するプット・バーブをサポート するロジックと、 前記限定されたサイズよりも大きなペイロードを有するプット・バーブをサポ ートするロジックと、 複数のプット・バーブを、作業の取引ユニットとしてサポートするロジックと 、 を含むことを特徴とするプロセッサが実行可能な命令の組。 9.請求項7記載のプロセッサが実行可能な命令の組において、ゲット・メッ セージ・キュー・バーブをサポートする前記ロジックは、 限定されたサイズよりも小さなペイロードを有するゲット・バーブをサポート するロジックと、 前記限定されたサイズよりも大きなペイロードを有するゲット・バーブをサポ ートするロジックと、 複数のゲット・バーブを、作業の取引ユニットとしてサポートするロジックと 、 を含むことを特徴とするプロセッサが実行可能な命令の組。 10.請求項5記載のプロセッサが実行可能な命令の組において、前記インタ ーフェース・ロジックは、前記MQFにおけるキューへのブラウズ・メッセージ ・キュー・バーブをサポートするロジックを含むことを特徴とするプロセッサが 実行可能な命令の組。 11.請求項7記載のプロセッサが実行可能な命令の組において、ゲット・メ ッセージ・キュー・バーブをサポートする前記ロジックは、 いつ前記MQFがセロ・メッセージを用いて応答するかを検出するロジックと 、 いつ前記キューがメッセージを受け取ったかを前記ゲット・メッセージ・キュ ー・バーブを生じさせたクライアント・コンピュータに知らせ、それによって、 前記コンピュータ上で動作しているソフトウェアが応答への待機をブロックする 、ロジックと、 を含むことを特徴とするプロセッサが実行可能な命令の組。 12.請求項7記載のプロセッサが実行可能な命令の組において、前記MQF におけるキューへのプット・メッセージ・キュー・バーブをサポートする前記ロ ジックは、 I/Oコマンドの前記第1の組の第1の部分集合に応答して、前記I/Oコマ ンドのペイロードを検索し、前記I/Oコマンドと関連付けされたアドレスを指 名さ れたキューにマップし、前記検索されたペイロードを備えたプット・バーブを形 成し、それを前記指名されたキューに発行するロジックを含むことを特徴とする プロセッサが実行可能な命令の組。 13.請求項7記載のプロセッサが実行可能な命令の組において、前記MQF におけるキューへのプット・メッセージ・キュー・バーブをサポートする前記ロ ジックは、 I/Oコマンドの前記第1の組の第2の部分集合に応答して、前記I/Oコマ ンドと関連付けされたアドレスに対応するデータ構造をロックし、それによって 、前記データ構造がアンロックされるまでは、前記I/Oコントローラの他のク ライアントがこのアドレスに作用することを回避するロジックと、 I/Oコマンドの前記第1の組の第3の部分集合に応答して、前記I/Oコマ ンドの前記ペイロードを検索し、前記I/Oコマンドと関連付けされたアドレス を指名されたキューにマップし、前記検索されたペイロードを備えたプット・バ ーブを形成し、それを前記指名されたキューに発行するロジックと、 I/Oコマンドの前記第1の組の第4の部分集合に応答して、前記I/Oコマ ンドと関連付けされたアドレスに対応するデータ構造をアンロックし、それによ って、このアドレスに対する他の作用を許容するロジックと、 を含んでおり、それによって、クライアント・コンピュータに、前記第2の部 分集合から指名されたキューに対応するアドレスにI/Oコマンドを発行させ、 次に、前記第3の部分集合から前記アドレスにI/Oコマンドを発行させ、次に 、前記第4の部分集合から前記アドレスにI/Oコマンドを発行させることによ って、共有されたキューへのプットが達成されることを特徴とするプロセッサが 実行可能な命令の組。 14.請求項7記載のプロセッサが実行可能な命令の組であって、前記MQF へのキューへのプット・メッセージ・キュー・バーブをサポートするロジックは 、 I/Oコマンドの前記第1の組の第5の部分集合に応答して、前記I/Oコマ ンドのペイロードを検索し、前記I/Oコマンドと関連付けされたアドレスを指 名されたキューにマップし、前記検索されたペイロードを備えたシンクポイント を用い て、プット・バーブを形成し、それを前記指名されたキューに発行して、作業ユ ニットのフレーミングを開始するロジックと、 I/Oコマンドの前記第1の組の第6の部分集合に応答して、前記I/Oコマ ンドのペイロードを検索し、前記I/Oコマンドと関連付けされたアドレスを指 名されたキューにマップし、前記検索されたペイロードを備えた中間的なプット ・バーブを形成し、それを前記指名されたキューに発行するロジックと、 I/Oコマンドの前記第1の組の第7の部分集合に応答して、前記I/Oコマ ンドのペイロードを検索し、前記I/Oコマンドと関連付けされたアドレスを指 名されたキューにマップし、前記検索されたペイロードを備えた最後のプット・ バーブを前記指名されたキューに発行し、コミット・バーブを前記指名されたキ ューに発行して、前記作業ユニットのフレーミングを終了するロジックと、 I/Oコマンドの前記第1の組の第8の部分集合に応答して、前記I/Oコマ ンドと関連付けされたアドレスを指名されたキューにマップし、ロールバック・ バーブを前記指名されたキューに発行して、前記作業ユニットのフレーミングを 終了し前記作業ユニットをアボートするロジックと、 を含むことを特徴とするプロセッサが実行可能な命令の組。 15.請求項7記載のプロセッサが実行可能な命令の組において、前記MQF におけるキューへのゲット・メッセージ・キュー・バーブをサポートする前記ロ ジックは、 I/Oコマンドの前記第1の組の第9の部分集合に応答して、前記I/Oコマ ンドと関連付けされたアドレスを指名されたキューにマップし、ゲット・バーブ を形成し、それを前記指名されたキューに発行し、前記検索されたペイロードを 前記指名されたキューから前記ゲット・メッセージを生じさせるクライアント・ コンピュータに戻すロジックを含むことを特徴とするプロセッサが実行可能な命 令の組。 16.請求項7記載のプロセッサが実行可能な命令の組において、前記MQF におけるキューへのゲット・メッセージ・キュー・バーブをサポートする前記ロ ジックは、 I/Oコマンドの前記第1の組の第10の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスに対応するデータ構造をロックし、それによっ て、 前記データ構造がアンロックされるまでは、他のクライアントがこのアドレスに 作用することを回避するロジックと、 I/Oコマンドの前記第1の組の第11の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスを指名されたキューにマップし、ゲット・バー ブを形成し、それを前記指名されたキューに発行し、前記検索されたペイロード を前記指名されたキューから前記ゲット・メッセージを生じさせるクライアント ・コンピュータに戻すロジックと、 I/Oコマンドの前記第1の組の第12の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスに対応するデータ構造をアンロックし、それに よって、このアドレスに対する他の作用を許容するロジックと、 を含んでおり、それによって、クライアント・コンピュータに、前記第10の 部分集合から指名されたキューに対応するアドレスにI/Oコマンドを発行させ 、次に、前記第11の部分集合から前記アドレスにI/Oコマンドを発行させ、 次に、前記第12の部分集合から前記アドレスにI/Oコマンドを発行させるこ とによって、共有されたキューへのゲットが達成されることを特徴とするプロセ ッサが実行可能な命令の組。 17.請求項7記載のプロセッサが実行可能な命令の組であって、前記MQF へのキューへのゲット・メッセージ・キュー・バーブをサポートするロジックは 、 I/Oコマンドの前記第1の組の第13の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスを指名されたキューにマップし、ゲット・バー ブを形成し、それを前記指名されたキューに発行して、作業ユニットのフレーミ ングを開始するロジックと、 I/Oコマンドの前記第1の組の第14の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスを指名されたキューにマップし、中間的なゲッ ト・バーブを形成し、それを前記指名されたキューに発行するロジックと、 I/Oコマンドの前記第1の組の第15の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスを指名されたキューにマップし、最後のゲット ・バーブを形成して、それを前記指名されたキューに発行し、コミット・バーブ を前記 指名されたキューに発行して、前記作業ユニットのフレーミングを終了するロジ ックと、 I/Oコマンドの前記第1の組の第16の部分集合に応答して、前記I/Oコ マンドと関連付けされたアドレスを指名されたキューにマップし、ロールバック ・バーブを前記指名されたキューに発行して、前記作業ユニットのフレーミング を終了し前記作業ユニットをアボートするロジックと、 を含むことを特徴とするプロセッサが実行可能な命令の組。 18.請求項1記載のプロセッサが実行可能な命令の組において、前記インタ ーフェース・ロジックは、 前記I/Oコマンドが関心対象であるかどうかを判断するアドレス監視ロジッ クと、 前記アドレス監視ロジックと協動し、関心対象のI/Oコマンドを前記MQF への中間的な作用の中にマップするマッピング・ロジックと、 前記MQF及び前記マッピング・ロジックと協動し、未決のゲット・バーブに 対して、前記MQFにおけるキューにいつメッセージが到着したかを判断するキ ュー監視ロジックと、 を含むプロセッサが実行可能な命令の組。 19.請求項1記載のプロセッサが実行可能な命令の組において、前記インタ ーフェース・ロジックは、 I/Oコマンドのアドレスを監視して、それが関心対象であるかどうかを判断 する手段と、 関心対象のI/Oコマンドを前記MQFへの中間的な作用にマップする手段と 、 前記MQFにおけるキューを監視して、未決のゲット・バーブに対して、前記 MQFにおけるキューにいつメッセージが到着したかを判断する手段と、 を含むことを特徴とするプロセッサが実行可能な命令の組。 20.MQFプロトコルに従ってメッセージの送受信をする方法であって、 アドレスを有するI/Oコマンドを、その上に常駐する、通信スタックと、前 記通信スタックと協動するMQFと、前記MQFと協動するインターフェース・ ロジックとを有するI/Oコントローラに送信するステップと、 前記インターフェース・ロジックが、前記I/OコマンドをMQFバーブにマ ップし、前記バーブを前記I/Oコントローラに常駐するMQFに発行するステ ップと、 前記I/Oコントローラに常駐するMQFが、前記通信スタックに、メッセー ジを、前記MQFプロトコルに従って、前記MQFバーブに対応して送信させる ステップと、 を含むことを特徴とする方法。 21.請求項20記載の方法において、 I/Oコマンドを前記I/Oコントローラに送信し、前記アドレスに対応する データ構造をロックさせ、それによって、前記I/Oコントローラの他のクライ アントが、前記構造がアンロックされるまで、前記アドレスへの作用を実行する ことを回避させるステップと、 I/Oコマンドを前記I/Oコントローラに送信し、前記アドレスに対応する データ構造をアンロックさせるステップと、 を更に含むことを特徴とする方法。 22.請求項20記載の方法において、 前記I/Oコントローラが、前記クライアントに、前記MQFはMQFに応答 するデータを含んでいないことを指示し、それによって、前記クライアントは待 機をブロックするようにするステップと、 前記インターフェース・ロジックが、前記MQFが応答するデータが以前は存 在しなかったMQFバーブに応答するデータをいつ有するかを検出するステップ と、 前記インターフェース・ロジックが、I/Oコントローラに、クライアントに 対して、前記MQFが応答するデータが以前は存在しなかったMQFバーブに応 答するデータを現在では有していることを告知させるステップと、 を更に含むことを特徴とする方法。
JP53976698A 1997-03-13 1998-03-11 メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法 Pending JP2001514778A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US4055597P 1997-03-13 1997-03-13
US60/040,555 1997-03-13
PCT/US1998/004774 WO1998040850A2 (en) 1997-03-13 1998-03-11 A system for, and method of, off-loading network transactions from a mainframe to an intelligent input/output device, including off-loading message queuing facilities

Publications (1)

Publication Number Publication Date
JP2001514778A true JP2001514778A (ja) 2001-09-11

Family

ID=21911630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP53976698A Pending JP2001514778A (ja) 1997-03-13 1998-03-11 メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法

Country Status (4)

Country Link
US (1) US6141701A (ja)
EP (1) EP1018074A4 (ja)
JP (1) JP2001514778A (ja)
WO (1) WO1998040850A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006294027A (ja) * 2005-04-07 2006-10-26 Internatl Business Mach Corp <Ibm> 単一lanアダプタに機能をオフロードするためのイネーブル方法、データ処理システム及びコンピュータ・プログラム

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237036B2 (en) 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6697868B2 (en) 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US7167927B2 (en) 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US6401133B1 (en) * 1998-06-24 2002-06-04 Unisys Corporation System for high speed continuous file transfer processing of data files
US7756986B2 (en) * 1998-06-30 2010-07-13 Emc Corporation Method and apparatus for providing data management for a storage system coupled to a network
US7165152B2 (en) * 1998-06-30 2007-01-16 Emc Corporation Method and apparatus for managing access to storage devices in a storage system with access control
US7664883B2 (en) 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US6886047B2 (en) * 1998-11-13 2005-04-26 Jp Morgan Chase Bank System and method for managing information retrievals for integrated digital and analog archives on a global basis
US6347341B1 (en) * 1999-02-22 2002-02-12 International Business Machines Corporation Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
US6665714B1 (en) 1999-06-30 2003-12-16 Emc Corporation Method and apparatus for determining an identity of a network device
US6845395B1 (en) 1999-06-30 2005-01-18 Emc Corporation Method and apparatus for identifying network devices on a storage network
US6457068B1 (en) 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
AU2001238340A1 (en) 2000-02-16 2001-08-27 Bea Systems Inc. Message routing system for enterprise wide electronic collaboration
US6617855B2 (en) * 2000-03-24 2003-09-09 Radiodetection Limited Pipeline mapping and interrupter therefor
US7346910B1 (en) * 2000-05-26 2008-03-18 International Business Machines Incorporation Administration of groups of computer programs, data processing systems, or system resources
US20020004835A1 (en) * 2000-06-02 2002-01-10 Inrange Technologies Corporation Message queue server system
CA2381191A1 (en) * 2000-06-02 2001-12-13 Inrange Technologies Corporation Enhanced channel adapter
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
WO2002039305A1 (en) * 2000-11-09 2002-05-16 Sri International Information management via delegated control
US7260636B2 (en) * 2000-12-22 2007-08-21 Emc Corporation Method and apparatus for preventing unauthorized access by a network device
US7259881B2 (en) * 2001-10-03 2007-08-21 Kabushiki Kaisha Toshiba Method of monitoring multiple controller families
US7552222B2 (en) 2001-10-18 2009-06-23 Bea Systems, Inc. Single system user identity
US7080092B2 (en) * 2001-10-18 2006-07-18 Bea Systems, Inc. Application view component for system integration
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
US20030126109A1 (en) * 2002-01-02 2003-07-03 Tanya Couch Method and system for converting message data into relational table format
US6745303B2 (en) * 2002-01-03 2004-06-01 Hitachi, Ltd. Data synchronization of multiple remote storage
US7139932B2 (en) * 2002-01-03 2006-11-21 Hitachi, Ltd. Data synchronization of multiple remote storage after remote copy suspension
US7516447B2 (en) 2002-02-22 2009-04-07 Bea Systems, Inc. Methods and apparatus for building, customizing and using software abstractions of external entities
US6983462B2 (en) * 2002-03-15 2006-01-03 Toshiba Corporation Method and apparatus for serving a request queue
US7543087B2 (en) 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US8135772B2 (en) 2002-05-01 2012-03-13 Oracle International Corporation Single servlets for B2B message routing
US20040078440A1 (en) * 2002-05-01 2004-04-22 Tim Potter High availability event topic
US7155438B2 (en) * 2002-05-01 2006-12-26 Bea Systems, Inc. High availability for event forwarding
US7526519B2 (en) 2002-05-01 2009-04-28 Bea Systems, Inc. High availability application view deployment
US7257645B2 (en) * 2002-05-01 2007-08-14 Bea Systems, Inc. System and method for storing large messages
US7424717B2 (en) * 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US7484224B2 (en) 2002-05-02 2009-01-27 Bae Systems, Inc. Adapter deployment without recycle
US7222148B2 (en) 2002-05-02 2007-05-22 Bea Systems, Inc. System and method for providing highly available processing of asynchronous service requests
US7676538B2 (en) 2002-05-02 2010-03-09 Bea Systems, Inc. Systems and methods for application view transactions
US7350184B2 (en) 2002-05-02 2008-03-25 Bea Systems, Inc. System and method for enterprise application interactions
US7627631B2 (en) 2002-05-02 2009-12-01 Bea Systems, Inc. Systems and methods for collaborative business plug-ins
US7493628B2 (en) * 2002-05-02 2009-02-17 Bea Systems, Inc. Shared common connection factory
US7216349B2 (en) * 2002-06-05 2007-05-08 International Business Machines Corporation System and method for triggering message queue applications
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
US7406511B2 (en) * 2002-08-26 2008-07-29 International Business Machines Corporation System and method for processing transactions in a multisystem database environment
GB0225733D0 (en) * 2002-11-05 2002-12-11 Ibm Persistent messaging in a transaction processing environment
GB2395308B (en) * 2002-11-18 2005-10-19 Quadrics Ltd Command scheduling in computer networks
US20050022164A1 (en) * 2003-02-25 2005-01-27 Bea Systems, Inc. Systems and methods utilizing a workflow definition language
US7584474B2 (en) * 2003-02-25 2009-09-01 Bea Systems, Inc. Systems and methods for transaction chaining
US7752599B2 (en) 2003-02-25 2010-07-06 Bea Systems Inc. Systems and methods extending an existing programming language with constructs
US7293038B2 (en) * 2003-02-25 2007-11-06 Bea Systems, Inc. Systems and methods for client-side filtering of subscribed messages
US7774697B2 (en) * 2003-02-25 2010-08-10 Bea Systems, Inc. System and method for structuring distributed applications
US8032860B2 (en) * 2003-02-26 2011-10-04 Oracle International Corporation Methods for type-independent source code editing
US7539985B2 (en) 2003-02-26 2009-05-26 Bea Systems, Inc. Systems and methods for dynamic component versioning
US7076772B2 (en) 2003-02-26 2006-07-11 Bea Systems, Inc. System and method for multi-language extensible compiler framework
US7650276B2 (en) 2003-02-26 2010-01-19 Bea Systems, Inc. System and method for dynamic data binding in distributed applications
US7299454B2 (en) * 2003-02-26 2007-11-20 Bea Systems, Inc. Method for multi-language debugging
US7707564B2 (en) 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US20040226030A1 (en) * 2003-02-28 2004-11-11 Kyle Marvin Systems and methods for an extensible software proxy
US7444620B2 (en) 2003-02-28 2008-10-28 Bea Systems, Inc. Systems and methods for a common runtime container framework
US20050044173A1 (en) * 2003-02-28 2005-02-24 Olander Daryl B. System and method for implementing business processes in a portal
US7636722B2 (en) * 2003-02-28 2009-12-22 Bea Systems, Inc. System and method for describing application extensions in XML
US7650592B2 (en) 2003-03-01 2010-01-19 Bea Systems, Inc. Systems and methods for multi-view debugging environment
WO2005006144A2 (en) * 2003-06-30 2005-01-20 Finisar Corporation Propagation of signals between devices for triggering capture of network data
US8190722B2 (en) * 2003-06-30 2012-05-29 Randy Oyadomari Synchronization of timestamps to compensate for communication latency between devices
US20050066045A1 (en) * 2003-09-03 2005-03-24 Johnson Neil James Integrated network interface supporting multiple data transfer protocols
US7644118B2 (en) * 2003-09-11 2010-01-05 International Business Machines Corporation Methods, systems, and media to enhance persistence of a message
US20050080759A1 (en) * 2003-10-08 2005-04-14 International Business Machines Corporation Transparent interface to a messaging system from a database engine
US20050278708A1 (en) * 2004-06-15 2005-12-15 Dong Zhao Event management framework for network management application development
US20050278709A1 (en) * 2004-06-15 2005-12-15 Manjula Sridhar Resource definition language for network management application development
US20050278693A1 (en) * 2004-06-15 2005-12-15 Brunell Edward G Distribution adaptor for network management application development
US20060036721A1 (en) * 2004-06-15 2006-02-16 Dong Zhao Run-time tool for network management application
US7555743B2 (en) * 2004-06-15 2009-06-30 Alcatel-Lucent Usa Inc. SNMP agent code generation and SNMP agent framework for network management application development
US20050278361A1 (en) * 2004-06-15 2005-12-15 Brunell Edward G View definition language for network management application development
US20060070082A1 (en) * 2004-06-15 2006-03-30 Manjula Sridhar Managed object framework for network management application development
US20060004856A1 (en) * 2004-06-15 2006-01-05 Xiangyang Shen Data management and persistence frameworks for network management application development
US7461173B2 (en) * 2004-06-30 2008-12-02 Intel Corporation Distributing timers across processors
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
CN101005649A (zh) * 2006-01-19 2007-07-25 华为技术有限公司 一种多方通信业务的连接建立方法及系统
US20070282964A1 (en) * 2006-06-06 2007-12-06 International Business Machines Corporation Method and apparatus for processing remote shell commands
US8819242B2 (en) * 2006-08-31 2014-08-26 Cisco Technology, Inc. Method and system to transfer data utilizing cut-through sockets
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
WO2012141694A1 (en) 2011-04-13 2012-10-18 Hewlett-Packard Development Company, L.P. Input/output processing
US9009702B2 (en) 2011-11-30 2015-04-14 Red Hat Israel, Ltd. Application-driven shared device queue polling in a virtualized computing environment
US8924501B2 (en) * 2011-11-30 2014-12-30 Red Hat Israel, Ltd. Application-driven shared device queue polling
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901232A (en) * 1983-05-19 1990-02-13 Data General Corporation I/O controller for controlling the sequencing of execution of I/O commands and for permitting modification of I/O controller operation by a host processor
US4534013A (en) * 1983-06-30 1985-08-06 Burroughs Corporation Automatic write system for peripheral-controller
US5764922A (en) * 1986-11-04 1998-06-09 Unisys Corporation I/O system for off-loading operating system functions
EP0365731B1 (en) * 1988-10-28 1994-07-27 International Business Machines Corporation Method and apparatus for transferring messages between source and destination users through a shared memory
US5263161A (en) * 1989-07-26 1993-11-16 Massachusetts Institute Of Technology Non-busy waiting resource control
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5742761A (en) * 1991-03-29 1998-04-21 International Business Machines Corporation Apparatus for adapting message protocols for a switch network and a bus
US5293385A (en) * 1991-12-27 1994-03-08 International Business Machines Corporation Method and means for using sound to indicate flow of control during computer program execution
US5388219A (en) * 1992-03-02 1995-02-07 International Business Machines Corporation Efficient channel and control unit for host computer
US5499384A (en) * 1992-12-31 1996-03-12 Seiko Epson Corporation Input output control unit having dedicated paths for controlling the input and output of data between host processor and external device
GB2276739A (en) * 1993-03-30 1994-10-05 Ibm System for storing persistent and non-persistent queued data.
GB2276737A (en) * 1993-03-30 1994-10-05 Ibm Fault-tolerant transaction-oriented data processing
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5603059A (en) * 1994-04-22 1997-02-11 Pitney Bowes Inc. Software architecture system having a virtual I/O channel including multi-layered communication interface in between virtual stations and physical modules
US5577211A (en) * 1994-05-11 1996-11-19 Ibm Corporation System and method using chained structure queues for ordering of message delivery between connected nodes wherein unsuccessful message portion is skipped and retried
US5659794A (en) * 1995-03-31 1997-08-19 Unisys Corporation System architecture for improved network input/output processing
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US5828881A (en) * 1995-11-09 1998-10-27 Chromatic Research, Inc. System and method for stack-based processing of multiple real-time audio tasks
US5822766A (en) * 1997-01-09 1998-10-13 Unisys Corporation Main memory interface for high speed data transfer
US5931920A (en) * 1997-08-05 1999-08-03 Adaptec, Inc. Command interpreter system in an I/O controller
US5983292A (en) * 1997-10-15 1999-11-09 International Business Machines Corporation Message transport mechanisms and methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006294027A (ja) * 2005-04-07 2006-10-26 Internatl Business Mach Corp <Ibm> 単一lanアダプタに機能をオフロードするためのイネーブル方法、データ処理システム及びコンピュータ・プログラム

Also Published As

Publication number Publication date
WO1998040850A3 (en) 1998-10-22
EP1018074A4 (en) 2002-02-06
US6141701A (en) 2000-10-31
WO1998040850A2 (en) 1998-09-17
EP1018074A2 (en) 2000-07-12

Similar Documents

Publication Publication Date Title
US6141701A (en) System for, and method of, off-loading network transactions from a mainframe to an intelligent input/output device, including off-loading message queuing facilities
US7233984B2 (en) Light weight file I/O over system area networks
US7051330B1 (en) Generic application server and method of operation therefor
Hamilton et al. The Spring nucleus: A microkernel for objects
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
US8244903B2 (en) Data streaming and backup systems having multiple concurrent read threads for improved small file performance
US5109515A (en) User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
EP1015983B1 (en) Data sharing method and computer architecture
US6182108B1 (en) Method and system for multi-threaded processing
US6016489A (en) Method and apparatus for constructing stable iterators in a shared data collection
US6470398B1 (en) Method and apparatus for supporting a select () system call and interprocess communication in a fault-tolerant, scalable distributed computer environment
US7426735B2 (en) Threading and communication architecture for a graphical user interface
US20040216145A1 (en) User mode device driver interface
US6862595B1 (en) Method and apparatus for implementing a shared message queue using a list structure
US5968134A (en) Distributed pipes and fifos in a multiprocessor
WO1999063437A2 (en) Method and apparatus for updating information in a low-bandwidth client/server object-oriented system
US20020116538A1 (en) High-performance memory queue
US5682507A (en) Plurality of servers having identical customer information control procedure functions using temporary storage file of a predetermined server for centrally storing temporary data records
US20050091239A1 (en) Queue bank repository and method for sharing limited queue banks in memory
EP0747814A1 (en) Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
EP0769740B1 (en) Inter-object communication
US5630133A (en) Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment
US7206843B1 (en) Thread-safe portable management interface
JP2001520774A (ja) 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ
Giacomini et al. Low-level SCI software functional specification