JPH04167040A - ネットワーク通信システム - Google Patents

ネットワーク通信システム

Info

Publication number
JPH04167040A
JPH04167040A JP2295194A JP29519490A JPH04167040A JP H04167040 A JPH04167040 A JP H04167040A JP 2295194 A JP2295194 A JP 2295194A JP 29519490 A JP29519490 A JP 29519490A JP H04167040 A JPH04167040 A JP H04167040A
Authority
JP
Japan
Prior art keywords
routine
message
routines
queue
notification
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
JP2295194A
Other languages
English (en)
Inventor
Michel Farrell John
ジョン・マイケル・ファーレル
John Stuart Gladstone Philip
フィリップ・ジョン・スチュアート・グラッドストーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
Data General Corp
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
Priority to US07/604,696 priority Critical patent/US5377191A/en
Priority to EP90311828A priority patent/EP0483421B1/en
Priority to CA002028918A priority patent/CA2028918A1/en
Priority to AU65664/90A priority patent/AU6566490A/en
Application filed by Data General Corp filed Critical Data General Corp
Priority to JP2295194A priority patent/JPH04167040A/ja
Publication of JPH04167040A publication Critical patent/JPH04167040A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (イ)産業上の利用分野 本発明は、オフィス・オートメーション(OA)・シス
テム、テレックス、テレテックス、ファクシミリ等から
なるアクセス装置間の通信を取り扱うためのネットワー
ク通信システムに関するものである。
この明細書中で使う略語及び頭文字語は、発明の詳細な
説明の最後に説明されている。データ・ゼネラルという
参照語は、本願発明の譲り受け人である「データ・ゼネ
ラル・コーポレーション」のことである。
(ロ)従来の技術 現在、多くの専用の通信システムや、メッセージ・ハン
ドリング及びデータ通信に関する種々の国際標準が有る
。それにも拘わらず、総ての種類のアクセス装置に相互
に自由な通信を許すシステムは存在しない。
同一でないノステム間でメツセージの交換を許すことを
意図するソフト・スイッチ及びメイル・バスとして商用
的に知られるゲートウェイ・システムが有ることは事実
である。しかしながら、これらの公知のシステムは、本
質的に私的な企業及び他の大きなユーザに適合するもの
である。というのは、これらは種々のゲートウェイによ
って用いられるメツセージ・プロトコル間の変換をする
中央処理システムによって取り扱われる専用のメツセー
ジ転送プロトコルを用いるからである。更にこれらは、
各ゲートウェイが、システム上に他にどのようなゲート
ウェイが有るか及び種々のゲートウェイがどのような特
徴を持っているかを知っているべき、完全なシステムと
して組み立てられ公知のシステムは公共的なサービスを
意図するものでもなく、それに適してもいない。
本発明が関係するもう1つの問題は、−時に1つの処理
スレッドしか取り扱えない単一スレッド型の計算機オペ
レーティング・システム(例えばMS−DO8及びUN
 I X)に関連して生ずる。
これは、外部イベントを待機するとき処理経路が停止さ
れた場合、頻繁にルーチンが待たされる結果になる。ル
ーチンは未決(ペンド)であると言われる。他のオペレ
ーティング・システム(例えばAO9/VS)は多重ス
レッドを処理できるが、本発明のシステムは特定のオペ
レーティング・システムに拘束されず、単一スレッド型
のオペレーティング・システムで動作できることが望ま
しい。
あるシステム、例えばUNIXは、メモリー内にプログ
ラムの複数のコピーを保持し異なるプロセスに対するC
PUの割り当てを計画(スケジュール)することによっ
てマルチ・タスクを模擬する。
しかしながら、これは、メモリー資源の無駄である。M
S−DO5はこのレベルのマルチ・タスク処理を達成す
る機構をなにも内蔵していない。
常にイベント、例えば転送がインターフェースを介して
達成されるとき、が生ずるのを待機しているネットワー
ク通信システム及び単一スレッド型システムは、上述の
理由から計算機資源の利用が効率的でない。
(ハ)発明が解決しようとする課題 本発明の目的は、システム内の他のゲートウェイやノー
ドの性質またはシステムの性質の知識を必要とせずに、
拘束されない方法でゲートウェイやノードを使用するた
めに装置へのアクセスを許す、改良されたシステムを提
供することである。
「ノード」及び「ゲートウェイ」という語は、あるノー
ドは厳密な定義ではゲートウェイではないかもしれない
が、ここでは、交換可能に用いる。
より特定すれば、この改良されたシステムはPTT(電
気通信生官庁)によって利用可能であることを意図して
おり、同一のシステムまたは異なるPTTによって実現
された他のシステムに接続されたアクセス装置と透過的
な通信をするために、それぞれのアクセス装置がアクセ
スできるゲートウェイを提供する。
この改良されたシステムは、例えば公共及び私的な会社
のような他の大きなユーザによって用いるのにも同様に
適している。
本発明の他の目的は、単一スレッド型のオペレーティン
グ・システムであっても、ルーチンが外部的結果を待機
して未決な状態になる必要を防止することである。その
ようなルーチンはアンペンデド・ルーチンと呼ばれる。
(ニ)課題を解決するための手段 本発明によるネットワーク通信システムは、それぞれの
アクセス装置のために働く複数のゲートウェイまたはノ
ードからなる。例えば、1つのノードはファクシミリ・
ネットワークのために働き、もう1つのノードはテレッ
クス・ネットワークのために、他のゲートウェイは、C
EO(データゼネラル・コーポレション)、DISO5
S及びPROFS (両方共IBM)等の複数の専用の
OAシステムのために働く。
ゲートウェイまたはノードは、標準的なメッセージ・ハ
ンドリング・システム、好適にはCCITT、X400
標準を介して相互に通信するように接続されている。X
400には多くのユーザによって実現されている198
4年版(ここては、1984、X400と称する)があ
る。X400には1988年版(ここでは1988.X
400と称する)もあり、これが本発明のネットワーク
通信システムの「バックボーン」として好適に用いられ
るシステムである。本発明が、他の専用のメッセージ・
ハンドリング・システムでな(、このように受け入れら
れた国際標準を利用できたことは、特に有利な点である
。しかしながら、1988、X400はまだ広(実現さ
れていないので、1つのゲートウェイとして、ある程度
低級な特性の1984.X400と「バックボーン」と
をインターフェースし得るX400ゲートウエイを提供
することが特に効果的である。
本発明によるシステムの各ゲートウェイまたはノードは
、アクセス装置またはそのゲートウェイがそのために働
く装置にアクセスするためのネットワーク・インターフ
ェースを含む。これは、ゲートウェイの外部のユーザ定
義インターフェースである。各ゲートウェイは更に、標
準的なメッセージ・ハンドリング・システム即ちバック
ボーンとメツセージをやり取りする、外部メツセージ転
送インターフェース(MT I )を含む。
内部的に各ゲートウェイは、ソフトウエア・インターフ
ェースを含み、それらは総てのゲートウェイに対して同
一で、更にメツセージ転送インターフェースに適合して
いる。コア・ルーチンのライブラリがメツセージ転送イ
ンターフェースとソフトウエア・インターフェースとの
通信をさせる。
このライブラリは大量のゲートウェイ・ソフトウェアを
含み、総てのゲートウェイに対して同一なので、本発明
は各ゲートウェイに多(の特別のソフトウェアを開発す
る重い負担をなくす。
各ゲートウェイは更に、そのゲートウェイに独特で、ネ
ットワーク・インターフェースとソフトウエア・インタ
ーフェースとの間で通信をさせる特別のルーチンのライ
ブラリを含む。これらのルーチンは、一方ではネットワ
ーク・インターフェースのフォーマットとプロトコル(
これらは各ゲートウェイに特有である)を変換し、もう
一方ではソフトウエア・インターフェースのフォーマッ
トとプロトコルを標準化する。これらのノード特有のル
ーチンは、各ゲートウェイのソフトウェアのより小さな
部分を占める。
コア・ルーチンによって実行される関数の例は、次の通
りである。
データのパケットを組み立ててバックボーンへ転送する
バックボーンからのパケットを受け取って分解する。
ディレクトリ内の宛て先アドレスを探索する。
文書を文書フォーマット変換器に与える。
記録、追跡記録、譚金、誤り処理等の総てのハウスキー
ピング機能。
特別のルーチンによって実行される関数の例は、次の通
りである。
ゲートウェイが働くネットワークで特定されたフォーマ
ットとの相互変換。
ゲートウェイが働くネットワーク内のアドレスとホスト
のバックボーン内のアドレスとの間の変換。
標準的メッセージ・ハンドリング・システム上のゲート
ウェイまたはノード間の通信は、プロトコル・データ単
位(PDU)によって実行される。
各PDUはエンベロープ部とメツセージ部からなる(X
400を参照)。エンベロープ部は、メツセージの発信
者と受信者とを識別するデータを含むが、メツセージ受
信者のために働くゲートウェイを特定するデータは含ま
ない。1988.X400によれば、Plで表されるエ
ンベロープ部は、主として発信者、宛て先、メツセージ
優先順位及び配信報告が必要か否b)の表示からなる。
P2で表されるメツセージ部は、P1データの大部分を
繰り返し主題の名称を含むヘッダ、文書タイプ識別子と
、メツセージの主体部からなる。
これは、総てのアクセス装置が、それ自身受け取り側の
ゲートウェイの性質を考えることなく、他の総てのアク
セス装置にメツセージを送ることを可能にするので、本
発明の非常に著しい特徴である。実際に発信者は任意の
ゲートウェイが含まれることを知る必要はない。本発明
によるシステムは、そのユーザに対して完全に透過的で
あり、利用者側の処置の必要なくPTTによってそのメ
ッセージ・ハンドリングの能力を大幅に強化するために
実現され得る。そのうえに、このシステムはゲートウェ
イが付加されたり、除去されても再構     “成す
る必要がない。もちろん、ユーザは彼らが通信しようと
するアドレスを知る必要はあるが、それらが種々のゲー
トウェイ上にある事実は知る必要がない。これが各PD
Uのエンベロープ部がメツセージ受信者に対して働くゲ
ートウェイを特定するデータを含まない理由である。総
てのメツセージは単に共通メツセージ・バックボーン上
及びメツセージを受け取る受信者アドレスを認知するゲ
ートウェイに送出される。
従属的な問題が異なる文書フォーマットの存在にある。
共通に使われる種々のワードプロセッサ・フォーマット
や、種々のファイル・フォーマット及びテレックスやテ
レテックスを特定するフォーマットがある。本発明の他
の特徴は、アクセスの起動をメツセージ受信者のフォー
マットの詳細を心配する必要から楽にすることである(
しかし常識は普通に用いなければならない、即ち高度に
フォーマットされたワードプロセッサ・ファイルがテレ
ックスの受信者によって満足に取り扱われることを当て
にすることは無用である)。フォーマット変換用の文書
変換器はそれ自身知られており、本発明によるネットワ
ーク通信システムに組み込むことができる。
メツセージ部が文書(または文書の一部)からなる任意
のプロトコル・データ単位のエンベロープ部は、文書フ
ォーマットを識別するフォーマット情報を含む。各ゲー
トウェイの特定のルーチンのライブラリは、受け取った
フォーマット情報に応答して、フォーマット情報が互換
性のないフォーマットを表示するとき、メツセージ部を
自動的に文書変換器に渡すルーチンを含む。従ってゲー
トウェイは、受信者が受け取り可能な文書フォーマット
を考えることなく、もし変換が必要でもそれが自動的に
行われることの保証によって、どのような文書フォーマ
ットの転送も自由である。
1988、X400のようなメッセージ・ハンドリング
・システムにおいては、メツセージ発信者及び受信者を
識別する多くの部分を含む標準的アドレス構造がある。
殆どのネットワーク・インターフェースは、より限定さ
れた範囲の異なるアドレス・フォーマットを用いる。従
って、各ゲートウェイがメッセージ・ハンドリング・シ
ステムを介してアクセスできる少なくとも1つのディレ
クトリを与えるのが良い。ライブラリ・ルーチンは、発
信者ゲートウェイにおいてメツセージの発信者と受信者
を識別するデータを1つまたは複数のディレクトリに渡
すルーチンを含む。これが、PDUのエンベロープ部に
含ませるために(メッセージ・ハンドリング・システム
によって)標準的形式の識別データを決定するために用
いられる。
他のルーチンは、少なくとも受信側のゲートウェイのネ
ットワーク・インターフェースによって要求された形式
でメツセージを受信する者を決定するために、受け取っ
たPDUのエンベロープ部の識別データを1つまたは複
数のディレクトリに渡す。
好適には、システムはメッセージ・ハンドリング・シス
テム上の総てのゲートウェイによって直接にアクセス可
能なディレクトリを保持する主ディレクトリ装置を含む
。このディレクトリは、CCITT、X500標準に従
ったものでよい。しかしながら、1つ以上の補助的なデ
ィレクトリが個々のゲートウェイ内のディレクトリ装置
に保持されてもよい。そのようなディレクトリは、他の
ゲートウェイによってメッセージ・ハンドリング・シス
テム及び保持ゲートウェイを介して間接的にアクセス可
能である。
本発明は更に、コア・ルーチンの一部として、異なるオ
ペレーティング・システム(MV計算機上のAO8/V
S、PC上のMS−DO3及びMV計算機や他のハード
ウェア上のUNIX)と共に動作可能なインターフェー
スを含む。このインターフェースは汎用アンペンデド・
インターフェース(GUI)として参照される。CUT
の下において、ルーチンがサービス供給者(プロバイダ
)、特にGUIコンフォーマット・サービス・プロバイ
ダ(GC8P)、を要求しようとするとき、ユーザは適
切なルーチンを呼ぶがその完了を待つことは望まない。
そのかわり、ユーザは通知ルーチンによってそのルーチ
ンの完了を知らされる。その間にユーザは他の処理を実
行できる。
(ホ)実施例 この説明は4つの主要な節を含む。
■、システムの一般的な説明 ■、ネットワーク通信 ■、一般的なアンペンデド(unpended)−イン
タフェース ■、省略及び頭字語 ここで強調しておくが、説明全体は例として提示され、
添付の特許請求の範囲によって定義されている場合を除
いて、開示されたいかなる特徴によっても限定されるこ
とはない。例えば、GUIは通信サーバー(5erve
r)システムと関連して主に説明されているが、この特
定の応用に限定されない。GUIルーチンは開示された
構成を必ずしも備えてはいない。通信サーバー・システ
ム・ルーチンの組織化は変更等に無限の可能性を与える
更に、ルーチンの詳細なコード化とルーチンをコード化
する言語は、特定のハードウェアの内容の中で、特定の
応用に対して発明を実行するプログラマの選択事項であ
る。
■、システムの一般的な説明 第1図は、1988  X400プロトコルと少なくと
も部分的にはX25パケット切り替え型メツセージ転送
プロトコルとを用いる汎用メッセージング拳バックボー
ン(messagingbackbone) 15を介
して違いに通信する複数のノード又はゲートウェー12
を示している(ただし、それぞれのゲートウェーはその
通信経路の一部として他の媒体、例えばランド・ライン
[1and 1ine]を使用することもある)。第1
図は例として8個のゲートウェーを示している。原理的
には、ゲートウェーの数に制限はない。ゲートウェーの
例は、データ・ジェネラル・CEO・オフィス・オート
メー7ョン・ネットワーク13AのためのCEOゲート
ウェー12A  IBM  DISO8Sオフィス・オ
ートメーション・ネットワーク13Bのための5NAD
Sゲートウェー12IBM  PROFSオフィス・オ
ートメーション・ネットワーク13Cのための5NAD
Sゲートウエー12C X400通信ネットワーク13Dと通信する1984 
 X400のためのX400ゲートウニ−12D ファックス及びテレックス・ネットワーク13E、Fと
通信するファックス/テレックス・ゲートウェー12E
0 各ゲートウェーは標準のインターフェース又はアクセス
・ユニット14A−14Fを介してそのネットワークと
接続される。明瞭にするために、各ケートウェーは単一
のネットワーク専用のものとして示されているが、こう
した構成は、少なくともいくつかのゲートウェーに関す
る限り、実際に採用され得る。他方、単一のゲートウェ
ーは複数の異なるアクセス・ユニットに奉仕する。後述
する第2図は、ファックス/テレックス(テレファック
ス)とゲートウェーとの結合されたものであり、他の例
として、ゲートウェーはCEOゲートウェーでもファッ
クス/テレファックス・ケートウェーでもある。これに
より、ゲートウェーには、必要なインターフェースと各
タイプのアクセス・ユニットに対する必要な特定のルー
チンとを持つことが要求される。
第1図における全体のシステムは通信サーバー(cS)
システム10と表示される。各ゲートウェー12はメツ
セージ転送インターフェースに対する(MI Tで表示
される)インターフェース15Aを備え、これらインタ
ーフェースは、「バス」15B−任意の形の通信リンク
により物理的に構成され得る−によって指示されるよう
に、1988  X400プロトコルを介して通信する
。インターフェース15A及び「バス」15Bはメツセ
ージ・バックボーン15を構成する。また、「バス」1
5bはディレクトリ・サービス48及びマスク・ドキュ
メント・コンバータ46との通信を提供する。メツセー
ジ・バックボーン15そのものと結合されて、これらの
サービスは通信サーバー・システム10のホストIOA
とみなされる。
マスク・ドキュメント・コンバータ46とディレクトリ
・サービス48との物理的位置は重要ではない。構成的
には、それぞれはデータベースと処理ファシリティとを
備え、ゲートウェー12の1つに又は専用ゲートウェー
に物理的に位置している。マスク・ドキュメント・コン
バータ46はPCプログラムでそれ自体良く知られてい
るような変換ルーチンばかりでなく、−層複雑な応用ソ
フトウェアを実行する。ディレクトリ・サービス48デ
ータベースは、既に述べたように、ここに援用するCC
ITT  X500基準に従っており、質問・探索ディ
レクトリ項目と加算・補正・削除項目に対する標準デー
タベース・ファシリティを与える。
第2図は、複数のネットワークと装置へインターフェー
スする典型的なゲートウェーの全体的なハードウェア構
成を示す。結合されたテレックス/ファックス(テレマ
チック)ゲートウェー13E、Fが例示されている。複
数のコンピュータが処理容量を取り扱うことを要求され
ているとし、図の実施例はそれぞれのコンピュータ・プ
ログラムを記憶する関連のディスク・ドライブD1. 
D2、D3をそれぞれ備える3台のデータ・ジェネラル
MVシリーズ・マルチコンピュータMVI。
MV2.MV3を含む。これらのコンピュータは、40
0 M b / sを運ぶ標準の(密な)イーサネッ1
−LAN又はMRCバスのような高速LAN16によっ
て接続される。更に、コンピュータはディスク・コント
ローラ18を介して、ユーザ・データを保持するための
ディスク・フレーム22を(例えば)構成するディスク
・ドライブD4−D8のバンクへ接続される。
コンピュータは端末スイッチ20を介して、テレックス
・インターフェース14F1フアツクス・インターフェ
ース14E、プリンタ・インターフェース14Pとして
ここでは示されている複数のインターフェースへ接続さ
れる。端末スイッチ20は種々のアクセス・ユニットが
コンピュータ・リソースを共用することができるように
すると共に、2台の良好なコンピュータを一方がダウン
したときに使用することができるようにし、リソースを
フレキシブルに使用することを一般的に可能とする。原
理的には、本発明は複数のコンピュータを必要とするも
のではなく、複数のコンピュータが使用される方法は本
発明の一部を形成しない。簡単に言えば、実行される入
力/出力動作に対して、正しいコンピュータが正しいイ
ンターフェースと通信することができるように、1つの
コンピュータがマスクとして動作し、他のコンピュータ
の活動を割り当て、端末スイッチ20とX25スイッチ
32とを制御すると共に、誤り状態では別のコンピュー
タがマスクとして引き継ぐように準備する公知のマルチ
プロセッサ・システムの原理にしたがって、コンピュー
タは取り扱われる。簡単なシステムでは、1台のコンピ
ュータがあり、端末スイッチ20は不要である。
更に、それぞれのコンピュータは、PDN (パブリッ
ク・データ・ネットワーク)インターフェース34と(
また恐らくは)リースされた( teased)ライン
36即ち別のゲートウェーとの直接接続である1つの利
用とに接続されるX25スイツチ32との接続を備える
。インターフェース34は第1図のメツセージ転送イン
ターフェース15Aを与え、汎用メッセージング・バッ
クボーン15の一部を形成する。
第3図は、別のブロック図として描かれているが、ハー
ドウェアの面よりは機能の面でゲートウェーの構成を示
している。ゲートウェーが一例としてテレックスとファ
ックスとに奉仕するテレマチック・ゲートウェーである
と再び仮定すると、実際のテレックス及びファックスの
通信は、本発明が関係しない標準アイテム、例えばHa
slerテレックス・ユニットやファックス・カード(
例えばガンマファックスCP/Tカード)付きのPC等
によって取り扱われる。これらの標準アイテムはゲート
ウェーの1つのポートとして動作するネットワーク・イ
ンターフェース14と通信し、第2図に示すように、複
数のインターフェースを備える。同様に、ネットワーク
・インターフェース14はCEOネットワーク、PRO
FSネットワーク等と整合を取られる。メツセージ転送
インターフェース15Aはメッセーンング・バックボー
ン・バス15Bと通信する第2のポートを形成する。
インターフェース14.15Aは全部のゲートウェーと
同じであるソフトウエア・インターフェース44によっ
て連結される。このインターフェース44はメツセージ
転送インターフェース15Aとソフトウエア・インター
フェース44との間の通信を与えるコア・ルーチン(c
ore routines)のライブラリを含む。この
コア・ライブラリは単一のライブラリと機能的に常に等
価であるけれども、簡便のために、複数の個別に維持さ
れたライブラリとして扱われる。この実施例では、これ
らのライブラリはTOOLS、GUI、ARTで表され
るライブラリを含む。GUIはゼネラル・アンペンデド
・インターフェースを表し、以下に詳述する。ARTは
ASN、1 (ISO基準)ラン・タイムス(Run 
Times)ライブラリ・ルーチン、即ち、ここに援用
するISOASN、1基準にしたがったフォーマットで
データを符号化するルーチンを表す。これらのルーチン
はTOOLSにて使用され、PDU特に1988  X
400  PDUを作る。
不特定ソフトウエア・インターフェース44は特定のル
ーチン45のライブラリによりネットワーク・インター
フェースと整合される。特定のルーチンは、それによっ
てサービスされるゲートウェーの本質にしたがって、メ
ツセージの流れを制御するのに一層高いレベルで必要な
ルーチンを含む。他方、TOOLSは全部のゲートウェ
ーに共通の「ツール」又はサービスを提供する。詳細に
は、TOOLSルーチンはX400 1988フオーマ
ツトをARTにより構成されるPDUに課し、メツセー
ジを送出し、メッセーン確認を受信し、ディレクトリ・
サービス及びドキュメント・コンバータにしたがってデ
ィスク・セイブ(disk 5aves)を取り扱い、
ゲートウェーに共通に要求される他の機能を実行する。
ゲートウェーはメッセージング・バックボーン15を介
してドキュメント・コンバータ46及び主ディレクトリ
・サービス48と通信する。オプションとして、独自の
サブディレクトリ・ライブラリ49を含んでもよい。
■、ネットワーク通信 1つのネットワーク上のユーザが、対応するゲートウェ
ーを介する別のネットワーク上のユーザにゲートウェー
を介してメツセージrAJを送出するとき、ネットワー
ク通信システム10はこのメツセージをソース・ネット
ワーク(ここではCEOであると仮定する)の特定のフ
ォーマットから宛て先ネットワーク(ここではPROF
Sであると仮定する)の別の特定のフォーマットへ変換
する。第4図は、CEOフォーマットのメツセージrA
Jをシステム10へ送るCEOネットワーク13Aを示
す。次いで(第5図)、システム10はメツセージをP
ROFS (SNADS)−フォーマットへ変換し、そ
れをPROFSネットワーク52へ送る。
典型的には、このプロセスは、ディレクトリ・サービス
48にり取り扱われるアドレス変換と、特定のルーチン
45により取り扱われるプロトコル変換と、ドキュメン
ト・コンバータ46により取り扱われるドキュメント・
フォーマット変換とを含む。別の例をここで詳述する。
この例では、シナリオは、外部1984  X400ネ
ツトワーク(例えばPTTにより提供されるもの)から
到着し、ファックス・カードを介して電話回線へ出て行
くメツセージのそれである。
第6図で、X400ネツトワーク13Dは1984  
X400ゲートウエー12Dへの接続を開き、PTTネ
ットワークからのメツセージをX400ゲートウエー1
2Dへ転送する。このメツセージは58に示されるよう
に、ディスク即ちディスク・フレーム22にセーブされ
る(そのため、システムが暴走しても、メツセージが失
われることはない)。
メツセージは有効性をチエツクされ、受信者がネットワ
ーク通信システム「内」にあることを保証するために、
受信者のアドレスがチエツクされる。これらの処理は、
通信ネットワークではそれ自体公知である。次いで、メ
ツセージはメツセージの待ち行列60に置かれ、さらに
処理される。
メツセージは遠隔(PTT)システム13Dに対してア
クノリジされる。
第7図において、メツセージは1984  X400フ
オーマツトで既□・に受信されており、システムで使用
される内部フォーマットである1988X400へ変換
される必要がある。従来の通信技術にしたがって、トレ
ース(trace)情報が追加される。この情報は、メ
ツセージが通過する全/ステムを通してメツセージを追
跡するのに使用され、ループ動作中の(looping
)メソセージを検出するのに使用される(メツセージは
同一システムを2回通過する)。次いでメツセージはソ
フトウエア・インターフェース44のTOOLSへ伝え
られる。
第8図において、メツセージがどのゲートウェーへ送ら
れるべきかを知るために、ディレクトリ・サービス48
において受信者が調べられる。発信者がネットワーク通
信システムを使用することができるかどうかを知るため
に、発信者がチエツクされる。このディレクトリ・サー
ビスの使用はそれ自体普通のことである。
メツセージの新規なコピーが記憶され(62)、他のゲ
ートウェーのために待ち行列(64)に配置される。
第9図において、いまメツセージは他のゲートウェー1
0(この場合ではファックス)における対等なTOOL
Sへ転送される。これは、指令(SUBMIT−MES
SAGE)といくつかのデータ(この場合にはメツセー
ジ自体)が転送されることを意味する遠隔操作と呼ばれ
るものを用いて行われる。
メソセージの重複を避けるために、ンーケンス番号も送
られる。
こうして、メツセージはファックス・ゲートウェー12
EのTOOLS44’ にある。第9〜12図において
、このゲートウェーの要素はプライムの付加によって区
別される。
第10図において、メツセージは再び記憶される(72
)。発信者の名称はC8IDとして用いられる、人間に
読み取り可能な形(ファックス・ページの上部に現れる
ストリング)へ変換される(cONV、0RIG)。当
該溌呼者からアドレスされた受信者へディレクトリによ
り許容される呼びを禁止するために、更に呼び禁止チエ
ツクが行われる。
メツセージはファックス・ゲートウェー12Hの特定の
ソフトウェア・ルーチン45′へ渡される。ファックス
・ゲートウェー12Eでは全部の動作が行われる。
第11図において、メツセージのコピーが受信者毎に発
生されて記憶され(76)、ダイアル番号が形成される
。回送されるファックス・アドレスのファックフォーマ
ットは9くカントリー・コード〉く国番号〉である。こ
れはダイアルするための数字列へ変換される。
いま、それぞれのコピーは待ち行列(78)に配置され
、出線(ファックス・カード)が空きになると送出され
る。
注目されることであるが、メツセージは反復してディス
クにセーブされる。これは、メツセージの大部分がディ
スクに残り、メツセージが適切に記憶されるようにポイ
ンタを構成することにより別の「セーブ」が行われるの
で、重大なオーバーヘッドではない。コピーが削除され
るとき、最後のユーザが記憶されたメツセージを発する
まで、記憶されたメツセージ自体は削除されない。
第12図において、ファックス・カード82が利用可能
になる(事象として知らされる)まで、特定のルーチン
はメツセージの各コピーを待ち、次いでこのメツセージ
をファックス・ネットワーク・インターフェース・ユニ
ット80を介してファックス・アクセス・ユニット即ち
ファックス・カードを持つPC82へ転送する。これは
、GUES(ジェネリック・アンベンデド事象)ハンド
ラ(handier)サービス(これについては後述す
る)が利用されるときの例である。
そこで、PC82内で標準動作が行われる。(まだ内部
符号化形態である)メツセージはテキストへ変換される
。ヘッダーはその地方の言語で日時等と共にフォーマッ
ト化される。次いで、メツセージはファックス・カード
へ伝えられる。供給された番号をファックス・カードは
ダイアルし、テキストからその順番に白黒の画像へ変換
しながら、メツセージを送信する。呼びの終了時、ファ
ックス・カードはPCへC3lD(被呼加入者識別)を
返送する。ファックス・ゲートウェー12Eは継続時間
及びC8IDを含む送信結果を告げられる。
その後、他の動作がファックス・ゲートウェー12Eで
行われる。(まだ記憶されたままである)メツセージが
引き出され、発信者がメツセージの完了時に何等かの通
知(良好又は不良)を要求したかどうかをチエツクする
。この報告が発生され、発信者へ返送するためにTOO
LSへ渡される。
ここで、課金のために料金の記録がディスクになされる
第6〜12図は、標準の1984  X400ネツトワ
ークからファックス・アクセス・ユニットへのメツセー
ジの送信に関係する。反対方向へ伝えられるメツセージ
は相補的な即ち逆の方法(これはこれまでの説明から明
らかである)で取り扱われる。
■、一般的なアンペンデド・インターフェースこの項は
以下の章からなる: 第1章:序 第2章:環境 第3章:ユーザのモデル 第4章:機能性 第5章:GUIタスク・インターフェースの例 第6章:GUIタイマ 第7章:GUI事象ハンドラー 第8章:GUIの明細 第9章:GUTSの明細 第10章:GUESの明細 第11章:GUIのプログラミングの例第12章:内部
構造 第13章:データ構成の明細 第14章:GUI及び通信サービス・インターフェース 第1章 序 1、IGUIの概要 GUIは、インターフェース、外部事象及びタイマにわ
たる要求/応答相互作用を取り扱うための包括的な機構
である。また、GUrは、アプリケーションが単一の経
路での複数の筋道の処理を支持するためにアンペンデド
・サービスを利用することができる環境を提供する。こ
うした機構により、エンティティ(entity)は(
タイマの場合にはGUIにより、他の場合には別のエン
ティティにより提供される)サービスを要求することが
でき、サービス提供者側のルーチンが要求を満たしなが
ら保留することなしに、サービスの完了をその後動るこ
とができる。こうして、アンペンデド要求のサービス提
供者側の処理と平行して、アプリケーションは他の有用
な処理を実行することができる。
通信サーバー・システムのような複合製品(compl
ex product)では、ユーザにサービス・イン
ターフェースを提供し、ぶつかり合うことなく共存しな
ければならない多くの個別に設計されたモジュールが不
可避的に存在する。従来の課題は、ユーザが従わなけれ
ばならない独自の組の規則と制約を各モジュールが持っ
ているということであり、要件の間に両立性がない。こ
れは、全モジュールを一緒にするとき多くの努力を要し
、システムにバグ(bugs)が残る危険性が大きい。
例えば、外部のイベントを待つ必要があるライブラリは
該アプリケーションが時々何かが起こるかを判別するよ
うにポールされなければならないルーチンを有する。こ
れは、多分1つのライブラリには良いが、例えば1ダー
スのライブラリでは多くの時間が彼らの全部をポーリン
グする為に費やされる。伝統的なライブラリは、全部の
モジュールが処理において一緒の動作できる様に、注意
深く座標化されなければならない共用資源の排他的使用
を意図する。これは、モジュールが合体されていない時
には、孤立した状態で働く結果となる。
GUIはこの問題を、全資源(タイマ、信号および他の
外部イベント)のチャージを持つこと及び多種のライン
の全部が資源を調和状態でアクセスするために使用でき
るサービスを提供することにより解決した。GUIは根
本的な資源の唯一の直接的なユーザであるので、他のモ
ジュールを合体することに問題がないのである。付加的
な利益は、全部の外部のイベントはGUIを通して到着
するので(及びその後に多種のモジュールに発送される
)、該ライブラリの全部をポールする必要がない。事実
、GUIの原理に前面的に基づくアプリケーションにお
いては、GUIは実行するジョブがないときはいつでも
可能な外部イベントの全部を自動的に待つので、全(ポ
ーリングが存在しない。これは、彼らが処理するメツセ
ージをでない時には、実質的にCPUタイムを使用しな
いアプリケーションを結果的にもたらす。一般的に言っ
て、GUIが作業する方法は次ぎの遥りである。
種々の呼び出し及び跳び越しを伴う連続コードとして記
載されるプログラムに代えて、アプリケーションの主構
成はサービス提供者の要求(スケジュールジョブまたは
待ち行列上の通知)を作る。ジョブ又は通知は以下の如
く分類される。
サービスルーチンによりリターンデータ、外部イベント
が生じさせた通知、 タイムインターバルが経過した通知、 処理間隔通信(IPC)、即ち2つのコンピュータ処理
間にパスされたメッセイジ。
原理において、1つのジョブ待ち行列だけが必要である
が、アプリケーションは異なるプライオリティを伴う多
重待ち行列にセットアツプでき及び実行するジョブのプ
ライオリティを制御する方法の如(、待ち行列またはサ
ービス提供者がジョブを配列する待ち行列を選択せきる
。アプリケーション(ユーザ)は実行すべきジョブが無
いとき実行ルーチンgui  runOを読出す。Gu
i  run()は(a)待ち行列の優先度の為及び(
b)各待ち行列が関連している限り第1の続出順序にお
いて待ち行列と異なるスケジュールされたジョブを実行
する。アプリケーションはそれ自身ペンドする必要はな
い。アプリケーションがアイドルである時、アプリケー
ションはペンドオプションと共にgui  runOを
読出さねばならず、これによりgui  runOはジ
ョブが処理間隔通信(IPC)、以下にGUESと示さ
れるイベント処理サイ−ビスまたは以下にG  UTS
と示されるタイマサービスによりスケジュールされるま
でペンドする。これは、−旦アイドルになると、IPC
または外部イベントが起こるかタイマが終了するまでは
処理はさらに何も行わないとを仮定する。これが、“メ
ツセーシカミングイン”、“ファクスカードレデイ”等
またはインターバルの如きイベントに応答して作業が初
期化される通信サーバーシステムを得る状態である。
そのようなイベントは、例えばハンドシェーキングライ
ン上の論理状態の変化によって合図されるハードウェア
イベントと呼んでよいであろう。IPCはソフトウェア
イベントの如く見なされる。
入力イベントは発生したイベントを表示できる記入され
たパラメータを伴うユーザールーチンに対する呼び出し
により表されるこれらのイベントはgui  5che
dule Oの呼び出しにより待ち行列上に配置され、
それがgui  runOを呼び出し時にメインタスク
によりピックアップされる。外部イベントはGUIによ
りスケジュールさ 例えば、外部のイベントを待つ必要
があるライブラリは該アプリケーションが時々何かが起
こるかを判別するようにポールされなければならないル
ーチンを有する。これは、多分1つのライブラリには良
いが、例えば1ダースのライブラリでは多くの時間が彼
らの全部をポーリングする為に費やされる。伝統的なラ
イブラリは、全部のモジュールが処理において一緒の動
作できる様に、注意深(座標化されなければならない共
用資源の排他的使用を意図する。これは、モジュールが
合体されていない時には、孤立した状態で働く結果とな
る。
GUIはこの問題を、全資源(タイマ、信号および他の
外部イベント)のチャージを持つこと及び多種のライン
の全部が資源を調和状態でアクセスするために使用でき
るサービスを提供することにより解決した。GUNは根
本的な資源の唯一の直接的なユーザであるので、他のモ
ジュールを合体することに問題がないのである。付加的
な利益は、全部の外部のイベントはGUIを通して到着
するので(及びその後に多種のモジュールに発送される
)、該ライブラリの全部をポールする必要がない。事実
、GUIの原理に前面的に基づくアプリケーションにお
いては、GUIは実行するジョブがないときはいつでも
可能な外部イベントの全部を自動的に待つので、全くポ
ーリングが存在しない。これは、彼らが処理するメツセ
ージをでない時には、実質的にCPUタイムを使用しな
いアプリケーションを結果的にもたらす。一般的に言っ
て、GUIが作業する方法は次ぎの通りである。
種々の呼び出し及び跳び越しを伴う連続コードとして記
載されるプログラムに代えて、アプリケーションの主構
成はサービス提供者の要求(スケジュールジョブまたは
待ち行列上の通知)を作る。ジョブ又は通知は以下の如
く分類される。
サービスルーチンによりリターンデータ、外部イベント
が生じさせた通知、 タイムインターバルが経過した通知、 処理間隔通信(IPC)、即ち2つのコンピュータ処理
間にパスされたメツセイジ。
原理において、1つのジョブ待ち行列だけが必要である
が、アプリケーションは異なるプライオリティを伴う多
重待ち行列にセットアツプでき及び実行するジョブのプ
ライオリティを制御する方法の如く、待ち行列またはサ
ービス提供者がジョブを配列する待ち行列を選択せきる
。アプリケーション(ユーザ)は実行すべきジョブが無
いとき実行ルーチンguj  runOを読出す。Gu
i runOは(a)待ち行列の優先度の為及び(b)
各待ち行列が関連している限り第1の続出順序において
待ち行列と異なるスケジュールされたジョブを実行する
。アプリケーションはそれ自身ペンドする必要はない。
アプリケーションがアイドルである時、アプリケーショ
ンはベンドオプションと共にgui  runOを読出
さねばならず、これによりgui  runOはジョブ
が処理間隔通信(IPC)、以下にGUESと示される
イベント処理サイ−ビスまたは以下にGUTSと示され
るタイマサービスによりスケジュールされるまでペンド
する。これは、−旦アイドルになると、IPCまたは外
部イベントが起こるかタイマが終了するまでは処理はさ
らに何も行わないとを仮定する。これが、“メッセージ
カミンゲイン”、“ファクスカードレデイ”等またはイ
ンターバルの如きイベントに応答して作業が初期化され
る通信サーバーシステムを得る状態である。
そのようなイベントは、例えばハンドシューキングライ
ン上の論理状態の変化によって合図されるハードウェア
イベントと呼んでよいであろう。■PCはソフトウェア
イベントの如く見なされる。
入力イベントは発生したイベントを表示できる記入され
たパラメータを伴うユーザールーチンに対する呼び出し
により表されるこれらのイベントはgui  5che
dule Oの呼び出しにより待ち行列上に配置され、
それがgui  runOを呼び出し時にメインタスク
によりピックアップされる。外部イベントはGUIによ
りスケジュールされえる事にだけではない。れえる事に
だけではない。ペンドされないた要求の完了はスケジュ
ールされえる他の明瞭なりラスのユーザールーチンであ
り、メインタスク内のライブラリまたはユーザーのいず
れかが実行しているルーチンはそれが実行されることが
必要であり多少時間後に実行されるであろう一般的な処
理をスケジュールできる。アプリケーションがそれ自身
の処理を行っている時、それは、例えばタイマ誤りを生
じることにより又はネットワーク使用法または応答時間
に影響することによる、ンステムの分裂を十分に連続的
に回避する為にgui  runOに復帰しなければな
らない。該アプリケーションは次にGUlをポールして
もよいがアプリケーションが一般的なアプローチの如き
多くのハンドラーでなく1つの“イベントハンドラー”
をポールしなければならないことを認めることは重要で
ある。アプリケーションメインタスクは待ち行列を配置
する。
該待ち行列はそれが要求する各優先度のレベルのための
待ち行列標識またはキイドにより示される。
ライブラリルーチンが呼び出されるとそれはそのジョブ
をスケジュールしなければならないキイドを告げなけれ
ばならない。一般に、外部イベントは、高い優先度キイ
ドを与えられ、他方一般な内部処理が低い優先度キイド
を与えられる。
アイデアルアプリケーションの構成はメインルーチンの
以下のアウトラインにより示される。
main() 1nitialise 5elf; 1nitialise GUI; allocate guids、 for requi
red priorities;1nitialse 
all 1ibraries;maybe 5ched
ule 1nitial jobs and 5tar
t anyregular timer; do forever gui run(PEND) gui  run用のペンドオプションの表示はセクシ
ョン4.1.4で説明される。
外部イベント処理および内部ライブラリ処理の全てはg
ui  run□に対する読出からのスケジュールされ
たジョブの如(行われる。内部ライブラリ処理は内部の
ペンドされないリクエストルーチンかジョブランからス
ケジュールされ、これは以下にGC3P’  sと示さ
れた内部サービスを与える外部イベント故である。この
理想的な例において、アプリケーションのそれ自身の処
理はスケジュールされたジョブの如くに実行される。
これはアプリケーションに第1のジョブまたはそれがg
ut  runOを読出す前に行われることが必要であ
るジョブをスケジュールすることを要求し、アプリケー
ションはあとでさらなるジョブを常にスケジュールでき
る。この構成は、行うことが無い時にプロセスが自動的
にgui  run O内をスリープし且つアプリケー
ションコードがGUIメカニズム内に統合されるという
利益を有する。しかしながら、本発明は、ユーザルーチ
ンにペンドされたgui  runOを気付かせること
ができ且つGUIにアイドルユーザループを気付かせる
ことがでる“wakeup”ルーチンを任意的に与える
1.2GUI及びオペレーティング・システムGUIは
、アプリケーションがVSとNUIXの如き見掛は的に
非両立的なオペレーションシステムの間で携帯可能であ
る様にアプリケーションを記載可能である。UNIXは
、MS−DO3はリアル、ハイドウェア割り込みを使用
し、ところがUNIXはソフトウェア割り込みを使用す
る違いを有するMS−DO3に適用される。MSとUN
IXとの基本的な違いはVS処理はマルチスレートであ
りUNIX処理はそうでないことである。
VSの下で、マルチスレート(VSタスク)が可能であ
り、。全は同一処理アドレス空間内に見掛は的に同時的
に実行される。他方、UNIX下で、ソフトウェア割り
込みの使用により他の割り込みレベルパスをホストでき
るが、処理において唯一のスレートランニングが存在す
る。しかしながら、VSは、NUIXルーチン0との比
較で、ユーザ処理のメインタスクを割り込むソフトウェ
ア用のドキメントされた機構を有しない。MS下では、
アプリケーションは外部イベントを待機するために奉納
されたVSタスクを使用する。
これらの非両立性にもかかわらず、GUI内に記載され
たアプリケーションはvSまたはUNIX下で実行でき
、アプリケーションは2つのオペレーションシステムに
対する特徴事項は使用されない。したがって、非使用は
GUIユーザによってVSマルチスレートを作成しなけ
ればならず、非使用はUNIX割り込みを作成しなけれ
ばならない。比較において、アプリケーションは単一メ
インタスクにより記載されねばならず、割り込み又はイ
ベントはBUIフレームワーク内のイベント処理者によ
り処理されなければならない。ネットワーク通信の如き
“サービス”書込みアプリケーションにおいては、資源
の使用実時間が他のメツセージの処理により作成され間
イベント待機のために多(の時間がペンドされるので、
単一処理内で多くのアイテムが並列に処理されることが
尤も好ましい。GUIはこの要求を処理でき且つ基礎を
なすオペレーションシステムにかかわらず同じである環
境を与える。マルチメツセージを効率的に処理するため
に資源を用いる公知のアプリケーションパッケージはあ
るオペレーションシステムに特有のものである。上述の
通信サーバーシステム内にGUIがどのように使用され
るかの例はこの記載の14章に記載される。
1.3  用語法 GUIはサービスを与える為の1組のプログラムにより
記載されたライブラリとサービスの使用を作る為に異な
るプログラムで記載されたユーザコードとの間のインタ
ーフェースを与える。GUIを用いるライブラリコード
はGUI−Conformant  5ervice 
 Provider (GCSP)と呼ばれる。該ユー
ザコードは単にUserと呼ばれる。この記載を通して
、GUIにより与えられたルーチンは開始“gut”(
例えば、gui  5chedule)により示される
。GCSPにより与えられたルーチンは開始“GCSP
−”で示され、Userにより記載されたルーチンは“
user−”で始まる。
以下は本記載で使用されたタームのリストである。
Pend  その処理パスが外部イベントを待つ間に停
止になるならルーチンをペンドす る。例えば、多くの■Sシステム呼出 は該呼出がVSバス上で実行される間 呼出タスクをペンドする。
Unpended    待機外部イベントがペンドさ
れない間ペンドしないルーチン。
Ta5k  他の処理実行スレートから論理的に分離さ
れた処理のスレート/ Main  Ta5k   プロセス中のメイン処理ス
レート Path  他の処理の実行スレートから物理的に分離
された処理のスレート。Path はマルチVS−Taskの場合の如き Parallelまたは割り込みレベ ルバス且つベースレベルパスの場合の 如きNe5tedである。
VS−Task  物理的にスケジュールされた構成要
素であるパスはAO8/VSオペ レテイング・システム下で?TASK システム続出により作られる。
GCSP  GUI  Comformant  5e
rvice  Prpvider  GU■規則および
フォーマットを一致させ るサービスを与えるライブラリ。
User  GC8Pのサービスを要求するためにGU
I使用を成させるコード 第2章 環境 2.1  ハードウェア及びO8環境 GUIの目的はO8とハードウェア環境の適に依存させ
るインターフェースを与えることである。
これは、例えばMV上でAO8/VS、PC上(7)M
S−DOSおよびMVまたはたのハードウェア上のNU
IX下で作業することを意味する。MS−DOSおよび
UNIXは単一スレーデッドである。この記載は1つ以
上のメインタスクを有するマルチタスクおよびイベント
待機タスクについて述べいる。MS−DOSおよびUN
IX環境において、この用語法はベースレベル“メイン
タスク”と1対の割り込みレベルサービスルーチン“タ
スク“とを同一視する。GUIはユーザが幾つかの“メ
インタスク”を持つことを許すが、この特徴はMS−D
OSまたはUNIX下において有用でないことに注意を
要する。他のO8への将来のポートのための要求の可能
性のためにAO3/VS下でさえ唯一のメインタスクを
持つことが提案される。マルチタスクを持つ可能性はマ
ルチタスクされたプログラムの実行をGUIの使用の変
換するプログラムを補助することを意図する。物理的な
環境がどのようであろうと、GUIは単一アドレススペ
ースにおいて実行されるように強制されている。分離し
たアドレススペースにおける実行の存在、例えば2つ異
なるvSまたはUrlX処理、の間のインターフェース
を供給しない。
2.2  言語の条件 能率上の理由故に、一般的なGUIライブラリはC読出
規則(即ち、バリューウによる続出)で読出される様に
設計されている。GUIはこの同一の規則でユーザに適
用されたルーチンを読出す。
AOS/VS下で、PL/lの如き言語は、GUIを使
用したCl1c出規則と両立性でない外部続出シーケン
ス(VS/EC8)とよばれる番地読出規則を使用する
。これはGUIはPL/Iから直接的に読出しができず
、PL/Iルーチンはguj  5chedule()
を用いてスケジュールできないことを意味する。必要が
生じれば、GUl(7)PL/IバージョンはCコード
の薄い層を各GUl側に加えることにより実施できる。
1つの層は、パラメータを変換し、その後一般的なGU
Iルーチンを読出すEC8読出可能ルーチンを供給しえ
る。コードの他の層はgui  5cheduledO
であることを必要とするPL/Iルーチンを要求し、実
際的にスケジュールされその後にPL/Iルーチンを修
飾されたパラメータフォーメットで読出すCルーチンか
らなる。
第3章 ユーザのモデル GUIユーザのモデルはペンドされない方法でサービス
提供者の要求を作らせことを要求する構成要素である。
要求の作成の為に、ユーザはそれが要求するサービスを
明瞭にするルーチンを読出す。要求を実施するのに要求
されたアクションは長いので、ユーザは即時に完了する
まで待機することを望まず、むしろ終了した時を知るこ
とを望む。これは、ペンドしない要求の基本的な内容で
ある。要求の完了をユーザに告げる方法はユーザのより
提供される通常GUIにより読出される通知ルーチンで
ある。
3.1  アンベンデド要求の例 第13図の描かれた以下の例を考察する。ユーザ130
はキーボードからの入力ラインの読取りを望むが、入力
がまだ利用できなければペンドすることを望まず、入力
の利用のための繰り返して赤なポールのも望まない。こ
の機能はGC3Pにより与えられるペンドしない要求に
より満足されえる。GC8Pライターは要求ルーチン1
31を与える。このルーチンは“GC8P  get 
 1ineO” と呼ばれ、これは入力が利用出来る時
を読出すユーザ通知ルーチン137の引き数の如きアド
レスを取る。要求ルーチンはサービスを初期化しペンド
なしにリターンする。
要求がGC8P要求ルーチンにより初期化される多くの
方法がある: (1)ラインが利用可能になるまで、キーポ−ド割り込
みがある毎に入力文字をセーブする割り込みハンドラー
をセットアツプする。
(2)ペンドされた続出を行い、入力ラインが受信され
た時にメインプロセスを信号するプロセスを大量に生じ
る。
(3)ペンドされた続出を行い、入力が完了したときに
通知ルーチンを読出すタスクを大量に生じる。
これらは可能性があり(1)は典型的なMS−DoS用
であり、(2) はUNIX用であり、(3)はMS用
である。
一度要求ルーチンがリターンすると、ユーザはそれが行
うでき他の処理132を実施できが、該処理はgui 
 runOに対する続出を含まなければならない。この
ユーザの為に確立された処理の2つの分離したスレート
があり、これは(1)メインタスクと(2)他のプロセ
スまたは分離したVS形式タスクにおける割り込みでレ
ベルでの処理により処理される要求処理タスク134で
ある。要求タスクが要求の完了を検出したとき(即ち、
135と示される様な入力ラインを受信した時)キッド
上のユーザの通知ルーチン137を要求結果(入力のラ
イン)で置き換える為にguischdule()を読
出す。138で示される様にgui  runOが次に
読出されるとき通知ルーチンはキッドを切断しユーザ処
理タスクはそれが要求された入力のラインを得る。通知
ルーチンまたはジョブがキッドに置かれ、外されること
はべんりである。キッド上におかれたものは通知ルーチ
ンのアドレスとこのルーチンのための引き数であり、第
24図に説明される。第13図の場合には、引き数は入
力ラインの文字である。
本例の全部はGUIなしに成就されえ、他のケースの場
合にはそう簡単でない。どのようなケースでも、GUI
は、使用されているオペレーテングシステムを独立させ
る方法の如き機構におけるGC8P−ライターとユーザ
ライターの両方を目的とするフレームワークを、供給す
る。
第4章 機能性 この章は、ペンドされない環境をサポートするためにG
UIにより供給されたルーチンを記載することにより開
始する。その後で、ペンドされないインターフェースを
サポートするためにGC3Pの要求されたルーチンとG
USPユーザとを記載する。
4、IGUI提供ルーチン GUIのライブラリ部分(その用法を支配するルーチン
に対立する)は後時での実行用、任意ユーザルーチンの
スケジュール用の機構を与える。
スケジュールされたルーチンの1つを使用した一般的な
タームはジョブである。GUIは、ジョブ(gui  
5chedule)を待つためのルーチンと、ユーザが
これらのジョブを実行する準備するときに読出されるべ
きルーチン(gui  run)を与える。付加的な柔
軟性の為に、GUIは、割り当て時間で彼らに関連する
異なる優先度を持つことができるマルチ待ち行列ジョブ
をサポートする。
4、 1.  I  GUI初期化 gui−init
ialise □このルーチンはパラメータを取らない
。他のGUlルーチンが読出される前に、それは各成分
(各GC3Pとユーザ)により続出去れねばならない。
412キュー割り当て 上述の如<、GUIはスケジュールされたジョブのマル
チ待ち行列を与える。これは、ユーザにジョブの相対優
先度を明瞭化させえ、他の論理的クラスから分離してい
る待ち行列上の論理的クラスを形成するジョブを訂正さ
せえる。各GUI待ち行列1jQUeue指標(QU 
I D)を有し、このQUIDは、待ち行列が割り当て
られたときに、即ちgui割り当てgui(優先度、ユ
ーザーウェイクアップ キッド−ptr)の如く、GU
Iにより割り当てられる。
この続出の為のパラメータは以下の通りである。
*priority  −他の待ち行列に関連し、この
待ち行列と外れたジョブ実行用の優先度を明示する。
*user  wakeup  −この待ち行列上で実
行される得るジョブがあるときはいつでもGUIが読出
すユーザの与えられたルーチンを任意的に明示する。
*quid  ptr  −GUIはこの待ち行列に関
連した待ち行列指標によってこのパラメータ内を満たす
割り当てられた各待ち行列はそれに割り当てられたパス
である親を有する。
VS下で、上に説明された適応性の理由故にこれは提案
されないが、GUI待ち行列の割り当てが可能であるマ
ルチパス(VS−Ta s k s)が存在できる。単
一スレードオベレーテングシステム下で、メインスレー
トだけが待ち行列の割り当てるを許される(例えば、彼
らは割り込みレベルから割り当てされれない)。パスは
待ち行列上のジョブをスケジュールするが、親だけが待
ち行列からずれたジョブを実行できる。これは以降の“
gui  runO”の項で述べられる。
4.1.3  ジョブ・スケジューリングGUIは、特
定のタスクに対して(VSのために)、一定の引き数を
有する特定のルーチンがコールされるようにするため、
ユーザ及びGC3Pがコールできる次のようなルーチン
を与える:quj  5chedule (quid、
routine、argl、arg2.arg3.ar
gここで、引き数は次の通り・ *quid−rルーチン」がスケジュールされるべきキ
ュー *rout 1ne−GUIがコールすべきルーチンに
対するポインタ *argl・・・arg4−「ルーチン」をコールする
引き数 このGUIルーチンはベンドせず、このコールの結果、
GUIは、特定のキューのオウナーがqui  run
をコールするとき、「ルーチン」をコールする。従って
、そのルーチンは次のようにコールされる: (*rout ine)(argl、arg2.arg
3.arg4、quid) rargNJパラメータはポインタ(MVに対して32
ビツト、PCに対して16または32ビツト)を含むほ
ど大きくすることができるが、GUIはそれらを通して
インダイレクトしない。従って、それらのパラメータは
、要求されるように整数またはポインタを通過させるの
に使用することができる。後者の場合、qui  5c
heduleのコーラは、スケジュールされたルーチン
が実際に実行されてしまうまで、そのポインタが妥当性
を維持することを確実にしなけれはならない。
GUIは、スタック間の引き数それ自体の値のみをコピ
ーし、それらがポイントする可能性のあるものについて
はコピーしない。rquidJは、ジョブがスケジュー
ルされるべき特定のGUIキューを識別する。これによ
って、スケジュールされるジョブの相対的優先度が制御
され、オウナーがqui  runをコールするとき、
ジョブが実行されるシーケンスを決定される。複数のメ
イン・タスクを有するvS環境において、quidは、
また、ジョブが実行されるvSタスクの制御を行う。し
かし、これは推奨される構成ではない。
4、 1.4  実行ジョブ qui  5cheduleされたジョブをGUIが実
行できるようにするために、そのジョブが置かれたキュ
ーを所有するスレッドの制御を得なければならない。こ
の目的のため、GUIは、ユーザがメイン・スレッドか
らコール出来る次のようなルーチンを与え、そのスレッ
ドによって所有されたキューにスケジュールされたあら
ゆるジョブを実行する: qujrun(flag) ここで、引き数は次の通り: 本flag−このフラッグは実行すべきスケジュールさ
れたルーチンかない場合、GUIがスレッドをペンドす
べきか否かを示す。ジョブはコーリング・パス(rqu
i  allocate  quidOJに関する記載
参照)によって所有されるキューから優先度に基づいて
選択される。1つのキューにおいて、ジョブはFIFO
順に実行される。r’flagJがN0PENDにセッ
トされると、GUIは実行するルーチンのチエツクを行
い、もし動作可能状態にあるものなければ、直ちに戻る
。もし、実行するルーチンがあれば、GUIそれらのう
ちの1つを実行して、もどる。qui  runOから
戻る値はジョブが実行されたか否かを示す。rflag
JがPENDにセットされる場合は、GUIは、実行す
る動作可能状態のルーチンがあるまで、コーリング・ス
レッドをペンドする。動作可能状態になったいずれかの
ルーチンを実行した後、GtJIはコーラをもう1度ペ
ンドする。
4、 1. 5  スレッド・コントロールペンドされ
る場合、QUIはqui  runからはけっして戻ら
ないであろうから、ユーザは、必要であれば、スレッド
をリターンさせるためにコールできる次のような別のル
ーチンが設けられる: qujwakeup(quid) このw a k e u pルーチンはペンドしない。
従って、特定のquidで既に実行しているジョブを含
みあらゆるバスからコールすることができる。
このコールはquidを所有しているパスを最初の機会
に(即ち、ペンドされた待機ジョブの場合は直ちに、そ
して実行中の場合はそのジョブが終了したとき)qui
  runからリターンさせる。
qui  runのペンド/非ベント オプンヨンを使
用して、ユーザは、アイドルであればいつでもGUI内
でペンドするか、あるいはそれ自身のアイドル・ループ
から出るため通知をポーリングするかの選択をすること
ができる。付加的オブンヨンとして、ユーザがqui 
 run内でペンドすることを望まない場合、GUIの
ための次のようなwakeupルーチンを与え、そのス
レ・ソドによって所有されるquidにおけるジョブを
実行するため、GUIがスレッドの制御を必要とすると
きはいつでもコールすることができる:user−wa
keup(quid) このルーチンのアドレスは、割り当てられる各quid
のqui  aiiOcate  quidのパラメー
タとして明示される。このメカニズムは、ユーザに、実
行する通知をポーリングすのではなく、利用することが
できるときが告げられるオプションを与える。この場合
、GUIがI”user  wakeupJをコールす
るときはいつでも、ユーザは、近い将来、即ちそうする
位置になったらすぐに特定のタスクを有するrqui 
 run」をコールしなければならない。
理想的には、GUIは、qui  5chedu1eO
及びqui  runOルーチンのみを使用してプログ
ラムされる。しかし、このオプションのwakeupル
ーチンは、ユーザが異なるタスク構造でそれらの要求に
最も都合の良い方法においてGUIを使用することを可
能にするので、有効である。例えば、qui  wak
eupOは、ユーザ・インターフェース・プログラムを
作成するとき、例えばコミュニケーション・サーバー・
システムのディレクトリにエントリを追加するとき有効
である。特に、qui  wakeupOは、(この例
では)ディレクトリ要求が終了するとき、GUI環境よ
り普通の環境(ユーザ・インターフェースを処理する)
に戻る場合、コールすることができる。
4.20C5P供給ルーチン ここでは、GUIに対してペンドされないサービスを与
えるため、GCSPが供給しなければならないルーチン
について記載する。GCSPは、GCSPが与えるサー
ビスを開始するため、ユーザによってコールされるリク
エスト・ルーチンを与える。それらのリクエスト・ルー
チンは次のルールに従わなければならない: *ペンドしてはならない。
*リクエストが終了したとき、コールされるべきユーザ
供給通知ルーチンの準備をしなければならない。
スタック・ランナウェイの問題を防止し、リクエスト・
ルーチンがリターンする前にユーザの通知ルーチンがコ
ールされるのを回避するため、GCSPはリクエスト・
ルーチンから直接通知ルーチンをコールしてはならない
。しかし、GCSPがまえもってスケジュールされてい
たそれ自身のルーチンの1つから通知をコールすること
はさしつかえない。
*要求された場合、それによってユーザが特定できるメ
カニズムを与えなければならず、通知ルーチンはそのq
uidにスケジュールされなければならない。GCSP
によって与えられたサービスがリクエスト/レスポンス
 タイプから成るものでなければならない場合、典型的
リクエスト・ルーチンは次のような形式で良い: GCSjRequest(Nfunc、 quid、 
argl、 −−−argN)ここで、引き数は次のと
おり: *Nfunc−コーラの通知ルーチンに対するポインタ *quid−rNfuncJがスケジュールサレるGU
Iquid *argl・・・argN−リクエストに特有の付加的
引き数 GCSPがそのように決定すれば、rNfuncj及び
rqu i dJを特定するのに好ましい他の任意のメ
カニズムを使用することができる(例えば、初期化時に
ハード・コード化あるいは決定される)。特に、GCS
Pはいつでも任意のユーザ・ルーチンがコールされるよ
うにスケジュールすることができるので、インターフェ
ースに対するインタラクンヨンは厳密にリクエスト/レ
スポンス形式から成る必要はない。
4.3  ユーザ供給ルーチン 前述の如く、ユーザはすべてのリクエストに対して通知
ルーチンを与えることができる。それらは、ユーザにリ
クエストの完了を知らせるため、コールされるルーチン
である。ユーザがGC3Pリクエスト・ルーチンをコー
ルしてからある時間後、そのルーチンあるいは他のある
GCSPまたはGUIルーチンがユーザ通知ルーチン(
前述の例では、Nfunc)をコールする。この通知ル
ーチンは次の規則に従わなければない:*ペンドしては
ならない。
*あらゆるバスにおいて、ccspで別に(例文ば、通
知がスケジュールされるquidを特定することによっ
て)アレンジされなければコールされる準備をしなけれ
ばならない。qui  runOをコールしてはならな
い。スタック・ランナウェイの問題を防止するため、q
ui  runに対するコールはネストされない。前述
のリクエスト・ルーチンの例を考えると、GCSPはG
UIを使用してユーザ通知ルーチンを直接的にスケジュ
ールし、そのルーチンは次のようにコールされるであろ
う: (本Nfunc)argl、arg2.arg3.ar
g4.quid)ここで、引き数は次の通り: *arg1.  ・・・arg4−通知に特有の引き数 *qu i d−rNf un clがコールされてい
るGUIquid GCSPから直接的に、あるいはGCSPにリターンす
るスタックでコールされないので、Nfuncからのリ
ターン値を使用することはできない。
特定のquidにおいてコールされるNfuncに対し
てユーザがGCSPで準備していなければ、任意のバス
でコールすることができる。
4.4  スケジュールされた通知のキューイングqu
id毎に、GUIは、スケジュールされた順番でキュー
されたあらゆるジョブを実行することを保証する。別個
のquid間で強制されたシーケンスはない。特定の高
い優先度のquidで実行するようにスケジュールされ
たジョブがあり、ユーザがそのquidを所有するバス
てqui−runをコールする場合、GUrはそのジョ
ブを実行する。このことは、通知が他の低い優先度のq
uidで、あるいはより長い別のバスによって所有され
た高い優先度のquidにおいてさえ、キューされたか
もしれないこととは無関係に生じる。
第5章 使用可能なGUIタスク・インタラクションの
例 ユーザは1以上の「メイン・タスク」を有しくここで、
メイン・タスクはユーザ処理を行うバスを意味するよう
に定義づけされる)、GUIquid(即ち、イベント
−ウェイト−タスク及びインタラブド−ハンドラを排除
)を所有することができる。メイン・タスクは、非常に
長い命令を実行し、ディスクI10の如き命令に対する
ペンドさえ可能であるが、可能な限りの無限待ち(例え
ば、ペンドされたタイムアウトされない端末l10)で
ペンドするのは好ましくない。そうしないと、通知をラ
ンするためGUIがメイン・タスクを「Wake  u
pJすることが不可能になる可能性があるので、全体的
GUI@境の重大な分裂を引き起こすかもしれない。
セクション4.1.5で説明したように、GUIによっ
て与えられ、qui  runに対するコールの「フラ
グ」によって支持されるスレッド制御の基本的2つの方
法がある。このセクションは、これらのメカニズムの可
能な使用例を説明し、各々についてのインタータスク関
係を図示説明する。
この2つのメカニズムはアイドルの「ウェイト−ポイン
ト」の位置、GUI内か、ユーザ内かによって区別され
る。
5、IGUIGUI内ト・ポイント このメカニズムはGUIルーチンに対する次の2つのコ
ールによって支持される: *qui  run (pend) *qui   wakeup(quid)ユーザは、そ
れがアイドル中に、メイン・タスク・スレッドにおいて
選択されたペンド・オプションを有するqui  ru
nをコールする。ジョブが使用可能になると、コーリン
グ・パスによって所有されるquidで、GUIはqu
i  runからスケジュールされたルーチンをコール
する。ユーザがそのメイン・タスク・スレッドの制御を
回復することが必要な場合(それ自身の別のタスクある
いはGUI通知コールがそれのためのある作業をキュー
したことにより)、ユーザはqui−wakeupOを
コールすることができ、それがqui〜runをメイン
・タスクにできるだけ速くリターンさせる。もしユーザ
が、このようにして1つより多いメイン・タスクのスレ
ッドを制御することが必要な場合は、rquidJ引き
数を使用して所有パスを一義的に識別することができる
第15図及び第16図は、第14図に示す約束事を使用
して、制御の流れ及びこのメカニズムのタスク・インタ
ラクションを図示する。第14図は、GC8Pルーチン
、USERルーチン及びGUlルーチンを表すために使
用される3つの異なる種類のボックスと、左、右及び下
方の軸の意味、即ち夫々CALL、RETURN及びT
IMEを表している。これらの図及び以下の説明は、た
った1つのメイン・タスクを仮定していることが注目す
べきである。しかし、この仮定は説明を簡単にするため
であり、それによって根本的メカニズムは影響されない
結果としてユーザ通知となるペンドされたqui u 
n 第15図はペンドされたqui  runOルーチンの
使用を示し、そのルーチンはこのタスクを実行するよう
にスケジュールされたGC5Pi知ルーチンをコールす
るGUIとなる。図面の上部から下方に進むのであるが
、ユーザはメイン・タスク・スレッド150に対するそ
れ自身の処理の一部を行うことによってスタートする。
ユーザ処理151の間、ユーザはGCSPリクエスト・
ルーチン(ここではGCSP  Request153
として示される)に対するコール152を行う。このル
ーチンは、ある処理、たぶんあるアクティビティを開始
し、そしてリターンする。ユーザがアイドル中でなけれ
ば、GUIにメイン・タスク・スレッドの制御を与える
ため、ペンド・オプションを有するqui  run 
0155、即ちqui  run (pend)をコー
ルする。qui  run()の内部で、GUIはラン
する通知をチエツクし、それがないと仮定すると、qu
i  5cheduleまたはqui  wakeup
によってボークされるのを待つ。ある時間後、GCSP
によって開始されたパス156は入来イベントを受ける
。イベントの簡単な例は、「キー押下コ、「プリンタ使
用可能」、「ディスク・ドライブ使用可能」等である。
コミュニケーション・サーバ・システムの場合の他の例
は、「メツセージ入来」、「ネットワーク使用可能」、
「ネットワークが送信要求」等である。それのほかには
、イベントはIPCである可能性がある。パス156は
、イベント(157)を取り扱い、GC3Pリクエスト
であることから現在メイン・タスクで実行する通知を有
することを知っている。従って、実行すべきルーチンを
キューアップするqui−schedule158をコ
ールし、インタータスク・メツセージをメイン・タスク
に送り、このタスクは依然としてインサイドqui  
runOを待っている。そのイベントに対する責任をメ
イン・タスクに渡してしまうと、qui  5chec
luleはGC8Pイベント・ハンドラに戻り、そのハ
ンドラは別のイベントを待つことになる。
メイン・タスクはここでqui  run内でウェーク
・アップし、所有のquidのなかに実行する通知がな
いかを見て、スケジュールされたコールのためGC3P
通知ルーチン159をコールする。通知が一旦リターン
すると、qui  runOは再びボークされるのを待
つことに戻る(155′) qui  wakeupによって割り込まれるベンドさ
れたqui  run 第16図は、メイン・タスク・スレッドの制御を回復す
るため別のパスのユーザがqui  runをコールし
ながら、メイン・パス内のqui−run (pend
)160の使用を示す。メイン・タスクがアイドル期間
にある間qui  run□をコールすると、別のパス
はあるイベントを受け、その処理161はユーザにその
メイン・タスクがペンドされたqui  runOを中
止させることを要求する。
この別のパス(これは、ユーザ通知ルーチンを実行する
GUI待ちタスクあるいは別のユーザ・パスであるかも
しれない)は、qui  wakeupOをコールし、
GUIをしてメイン・スレッドを解放させ、qui  
runOからリターンする。ここで、ユーザは、メイン
・スレッドで望む任意の処理163を自由に行うことが
できる。
その処理が完了すると、ユーザはアイドルになり、qu
i  run()をもう1度コールする。
5.2 ユーザ内の待ちポイント このメカニズムは、ユーザ供給ルーチン及び非ベンド・
オプションqui  runOルーチンによって作成さ
れる。
*user  wakeup (quid)*qui 
 run (nopend)ユーザはそのメイン・タス
ク・アイドル・ループにおいて望むあらゆることを行う
ことができる。
ユーザは周期的にqui  runをポールしてスケジ
ュールされたコールがない場合ペンドすべきでないこと
を明示するか、あるいはGUIがスレッドの制御を望む
ことを示すのを待つことができる。
前者の場合については、第13図の例に例示されている
。後者の場合は、quidのオウナーがqui  ru
nをコールすることを望むとき、GUIはuser  
wakeup □ルーチンをコールする。メイン・スレ
ッドの制御をGUIに与えるため、ユーザは近い将来q
ui  runOをコールしなければならない。典型的
には、GUIは1つのジョブを実行し、次にqui  
runOからリターンする。
rquidJ引き数は1以上のメイン・スレッドの制御
を許容する。GUIが一定のquidにおいてスケジュ
ールされたジョブを実行するを欲するとき、user 
 wakeup Oをコールし、それはquidが割り
当てられたとき供給される。GUIは、ジョブがスケジ
ュールされたquidを所有するメイン・タスクのスレ
ッドにおいてそのジョブを実行するのみである。
user  wakeupルーチンは、ここでは1つの
名前付ルーチンとして考慮されているが、コールする実
際のルーチンはqui  allocate  qui
d()コールに対するパラメータとして特定されること
を注意すべきである。これによって、ユーザが、異なる
GUIキューのため異なるwakeupルーチンを示す
ことができ、これは1つのプロセスにおいて複数の分離
されたユーザ・エンティティがある場合有効となる。
第17図は、qui  runの非ペンド・バージョン
とuser  wakeup □ルーチンを有するその
インタラクンヨシを示す。それは、ユーザがメイン・タ
スク・スレッドにおいてGC3P  request 
()170を行い、次に架空のアイドル・ループ171
に入る(周期的にUSer  wakeupをチエツク
する手段を有し明示のアイドル・ループを有する実際の
必要性がない限り)ことを示している。
ある時間後、1つのイベントが到来し、GC3Pイベン
ト・ハンドラ172タスクを呼ぶ。このタスクはそのイ
ベントをサービスすることを開始し、そしてこの場合メ
イン・タスクにおいて実行する完了通知があることを発
見する。それによって、その通知を内部的にキューする
qui  5chedule173をコールし、そして
問題となっているquidのためのuser  wak
eupルーチン174をコールする。
このユーザ供給ルーチンは、そのメイン・タスクのqu
i  runをコールさせるある動作をする。このイン
ター・タスクの正確な形式は、ユーザのイッシューであ
る。user  wakeupルーチンは次にサービス
・ルーチンに戻り、そのルーチンは次に別のイベントの
待機に戻る。近い将来のあるとき、ユーザのメイン・タ
スクはUSer  wakeupによって送られるイン
ター・タスク・メツセージをピックアップし、その結果
メイン・タスク・スレッドの制御GUIに与えるためq
ui  ’run 0175をコールする。
qui  run(’)において、GUIは、コールし
ているバスが所有しているquidにおいて実行すべき
ジョブを発見するまで、実行を待っているジョブのキュ
ーをスキャンする。発見すると、適切なユーザ通知ルー
チン176をコールする。
その通知ルーチンがリターンすると、GUIはその内部
的処理を終了し、次にqui  runからリターンし
て、ユーザ177に制御を戻す。
明細書の浄書(内容に変更なし) 6  GUIタイマ 本章は、アンベンド・タイムド・イベント(unpen
ded timed events)をスヶジ、x −
1しするための機構を与えるジェネリック アンベンゾ
イド・タイマ・サービス(Generic Unpen
ded Ti1Ier 5ervice)  (GLI
TS)を述べている。これはGUI周辺の集積部分では
ない、むしろ、それはGUIライブラリの一部としてし
ばしば供給されるGC8Pである。この特定サービスの
理解はGUI自体を理解するために必要でない。タイマ
・サービスは一連のGUTS供与のリクエスト・ルーチ
ン、及びユーザ供与の通知ルーチン用の制限を構成して
いる。
6.1G[JTS供与にQルーチン このセクションはタイマをスタート及びキャンセルする
ために、GUTSにより与えられるルーチンを述べてい
る。フォーマル・インターフェイスの明細は9章に述べ
られている。
6、 1. 1  gutsスタートタイマこのルーチ
ンは記入された遅延が経過した後にタイマをオフにする
ようスゲジュールするために呼び出される。それは、セ
クション4.1で述べているように汎用化されたGC3
Pリクエスト・ルーチン・フォーマットに従い、そして
次の引き数を行う。
* Nfunc−タイマが終了したときに呼び出される
なめ、ユーザの通知ルーチンへのポインタ。
* quicl−NfuncがスゲジュールされるG[
Jrキュー。
もし値NULL  QUIDが特定されると、そのとき
通知が、満期を検出するパスがら直接呼び出されるであ
ろう(これはVsのもとての個々の仕事でありそしてU
NIX又はMS−DO3のもとての割込ハンドラである
ン。
* deIay−秒単位で、現在にrWi係する正の遅
延。
* user ref−ユーザ参照(典型的にはいくつ
かのユーザ制御ブロックへのポインタ)。
*  tiger−name−ユーザ及びdUTsに対
し、このタイマを区別する番号。
* user argl−ユーザの利益のために、通知
ル−チンへ呼出しを戻す引き数。
* user−arg2−上述のような、別ノユーザ引
キ数。
タイマの1例はuser−reference/lig
er−name対により唯一識別される。例えば、もし
ユーザがいくつかのネットワーク・プロトコルを与える
ならば、“use、r−ref ’は特定結合用の制御
ブロックへのポインタであり、そしてtiger〜na
iIe’は調時されるインベントを指示しても良い(例
えば、コネクション−タイムアウト、フレアータイムア
ウトなど)。
’ user−ref ’及び’time name’
は’user argl’と’ user−arg2’
に沿って、ユーザ通知ルーチン“Nfune”へのパラ
メータとして仕分けられるだろう。
GUTSタイマは1回オフ・イベントである。
タイマが経過し、そしてユーザの通知ルーチンがスゲジ
ュールされると、該タイマはもはや存在しない。もしユ
ーザがタイマに規則的間隔でオフすることを要求するな
らば、新しいタイマが通知ルーチンから新しいタイマが
開始されるべきである。
6、 1. 2  guts−cancel−タイマ〈
)このルーチンは前に開始したタイマをキャンセルする
ために呼出される。それは次の引き数を取る。
* user−ref−ユーザ参照、guts 5ta
rt−Linerへの呼出しを指定される。 、 *  tiIIer−name−タイマ・ネイム、gu
ts−start−timerへの呼出しを指定される
*  re+*ain−ptr −G U T Sはタ
イマがオフする前に残っている秒数でこのパラメータ中
に満ちる。
6  、 1  、 3   guts  eheek
jimer  ()このルーチンはタイマがオフする前
にどのくらいの時間が残っているかをチエツクするため
に呼出される。それはgut3cancel−tige
r □と同じ引き数を取るがタイマはキャンセルされな
い。
6.2 ユーザ供与通知ルーチン 上述のように、guts−start−timerの呼
出者は。
タイマが経過するときに呼出される通知ルーチン’Nf
unc’を与える。もし我々がこのルーチン’user
 tiger−expired’ を呼出すならば、こ
のときそれは次のように呼ばれるだろう。user−t
 imer−expired  (user−ref、
  Liner  name、  user−argl
user−arg2、quid) 、その引き数はgu
ts start−timerへの最初の呼出しで指定
されるものである。
6.3 タイマ正確度 タイマ・サービスの正確度は、メモリ・コンテンション
を有しない通常の負荷されたMV上を動作しているとき
に、タイマの終期が意図された時間の+1秒内にスケジ
ュールされることであろう。
しかし、GUTSが通知スケジュール動作用のGUIを
使用するから、通知が実行される正確な時間は現在スケ
ジュールされるGUI通知の数及びいかに早急にユーザ
がgujrunを呼出すかに依存する。
7  GUエイベント・ハンドラ 本章はGUIライブラリに含まれても良い別のGCSP
、即ちジェネリック・アンベンゾイド・イベント−ハン
ドラ・サービス(GUES)を述べている。タイマ・サ
ービスと似て、このサービスはGUI自体の集積部分で
ない、GCSPがイベント・ハンドラをセットすること
は、これらが開始する行動の完成を待つために、頻繁な
要請である。このようなハンドラは環境−特定(env
ir。
nment−specif ic )である。AO3/
VSのもとで、それらはVS型タスクでもよく、これに
対してUNIXのもとではそれらは明らかではない。
この理由のため、そして多くのユーザが同じサービスを
要求するから、GUIは、ユーザから待ちタスクの詳細
を隠くそうとするイベント登録サービスを与える。明ら
かに、ユーザは待つべきイベントはどの種類であるかを
GUIに告げなければならない範囲まで、環境に気付く
であろうが、この気付きはインターフェイス呼出し上の
1つの型のイベントの選択に制限される。発生されたV
S様式のタスクの詳細、又は割込みベクトルの詳細、又
は基礎的な機構のすべてをユーザが知ることは必要ない
このサービスの情況において、”ユーザはGUIユーザ
又は他のGC3Pでも良い、彼らはGUESが関係する
限り、両者が正に“ユーザである。
GUESはAO3/VS及びUNIXオペレーティング
・システムのもとでのみ役に立つ。MS−DOSハード
ウェア割込の受信に要求されるアクションはGLIES
のような一般のサービスによって取扱われるにはあまり
にも仕分けされている。
この種類の機能性を要求するMS−DOSプログラムは
自らのアプリケーション−特有の割込みサービス・ルー
チンを書くであろう。これらのISRから、それらはア
クションが割込みを退けるために必要とすることを取る
ことができ、そしてアプリケーションの主要部分にイベ
ントを通すためにgujschedule □を呼出す
ことができる。
7.1GUES供与ルーチン 1クラスのイベントにおけるインターレストを登録する
ために、GLIIユーザはGUESルーチンを呼出す。
gues 5ubscribe () このルーチンは次の引き数を取る。
* gu:d−その上のNfuncがスケジュールされ
るべきguid。
*  1n−pars−この構造は加入されるイベント
の型の指示、及び特定の予約(例えば信号番号)に要求
される付加的パラメータを含む。
* out pars −G U Tは予約id及びこ
の構造、型等のいくつかのイベント特定情報を戻す。
GUESが到来イベントを受信するとき、それは該イベ
ント用の予約のキューを走査し、そして各々の通知ルー
チンをスケジュールする。所与のイベント用に、特に信
号の場合に、登録された1以上の通知ルーチンがあるこ
とに注意されたい。
GUESは、通知がイベントを受け取るか又は拒絶する
ことを認めるよりも、すべての冗長通知ルーチンを呼出
すアプローチを取るだろう、これはユーザ誤りによるイ
ベントの損失を少なくする。
次のイベントはこれらの間で登録に役立つであろう。
*  ?ST[;NL’5(AO3/VSにおいて)。
* ソフトウェア割込(UNIXにおいて信号(2>)
* チャイルド プロセス終了。
*  AO3/VS接続区切り(GUESにより終了と
してシュミレートされる)。
* Unix  I10用意、セクション(2)により
指示されたように。
これらのイベントの各々に要求される確実なパラメータ
はGUESインターフェイス仕様(第10章)において
仕分けされている。
7.2 ユーザ供与ルーチン このサービスのユーザは通知ルーチンNf uncを与
えなければならない、もし我々がこのルーチンを’ u
ser−event−occurred’と呼ぶならば
、このときこの呼出しは次の形をもつ。
user evenjoecurred (sub i
d、 event−type。
udata、 event−param quid)の
引き数は次のようである。
*  5ujid−4ues−subscribe呼出
しのGUESにより戻される予約id。
* eventjype−gues−subscrib
e (>へ仕分けされるような、イベントの型。
*  udata−gues−subscribeに)
へin parsにおいて仕分けされるようなユーザデ
ータ。
* evenjparam−この引き数は通知されるイ
ベントへ特定の情報を伝送する。(例えば、喪失のため
にそれは終了したプロセスのP■D及び出口を含む)。
* quid−通知が実行されているG U I qu
id。
再び、各イベント発生の確定パラメータは第10章に仕
分けされる。
7.3 イベント概念及び警報 このセクションはGUF、Sイベント添え字の夫々と関
係する概念を述べ、そしてこれらの使用により暗示され
るいくっがの制限について警告する。
7.3.I  AO3/VS?5IGNLイヘントコノ
添え字はGUEsユーザにAO8/VSFast  I
PCs (?5IGNL)の受信と同時に通知されるこ
とを許す。
GUESは、?WTSIG呼出しを行い続けることに従
事するすべての?5IGNL加入者により分担される信
号AO5/VSタスクを確立する。
このタスクのUnique Ta5K rDはgues
 5ubscribe呼出しからの出力として各加入者
に戻され、そして?5IGNLシステム呼出しへのパラ
メータとしてアプリケーションにより使用され得る。
?WTSIGタスクUIDを別のプロセスへ通過するこ
とにより、このGUESサービスは非直接データ伝送で
FastrPC機構を支持するために使用され得る。こ
れはデータ伝送用の分担されたメモリ機構との結合にお
いて又は?QNETのようなアンベンドなKerne 
lサービスに対するインターフェースにおいて役立つ。
?5IGNLイベントに関係する2つの問題がある。
* 何らの確認がされることなく、あなたの70セスに
?5IGNLを送ることができる。
*  ?5IGNLsは入れ子にしない、そこでもし十
分に速く処理されないならば失われても良い。
次の警戒はこれらの問題を克服する。
ネ ?5IGNL通知はあなたのなめに意図されている
と決して仮定してはならない。それは別のGUES加入
者のためでも良く、又はPMGRにより送られても良く
、又は不注意に別のプロセスにより送られても良い。?
5IGNL通知は、いくつかのイベントが生じた指示と
して、そしてそれが実際に有するかを見い出すために使
用されるいくつかの他の手段として使用されるべきであ
る。例えば、キューは走査又はフラグチエツク動作を必
要としても良い。
* あなたはすべての送られた?5IGNLのための通
知を得るであろうと仮定してはならない。
通知が受信されるときはいつも、すべての未解決のワー
クがチエツクされるべきで(例えば、完全なキューのス
キャンがされる)、なされるべきワークの各ピースのた
めの1つの通知をあなたが入手すると仮定するよりむし
ろ良い。
GUE’Sは、しかしながら、通知が実行を開始した後
に受信されるいくつから?S IGNLのための別の通
知をあなたに与えることを保証するであろう、そこで通
知の間に到着する?5IGNLに依ってワークが失われ
る情況はない。
7、3.2  Unix信号(2)イベントこの予約は
多重GUESユーザにUnix信号(2)イベントの受
信と同時に通知されることを許容する。
各加入者はGUESへ関心のある信号番号を通過し、そ
してGLIESは該信号のために、信号ハンドラ(信号
(2)を使用する)を確立する。各種信号はアプリケー
ションに役立つ、5IGUSR1とS IGUSR2信
号はAO5/ VS (Fast、IPC機構のように
)のもとで?S IGNLに対して同様な方法で使用さ
れ得る。これに対して5IGPOLLのような他の信号
はにerne lサービスにインターフェイスすること
に役立つ。
同じ警報及び警告は上述のAOS/VS?5IGNLに
関して適用する。付加的に、ユーザ自身の信号ハンドラ
は予想できない結果で、ALL加入者用のGUESハン
ドラとインターフェイスするから、ユーザは自らの信号
ハンドラを制限してはならない。
GUTSはそのタイマサービスを支持するために内部に
この予約を使用するから、ユーザはSfGALRM信号
への加入をまた止めるべきである。
アプリケーションはGUTSタイマを替わりに使用すべ
きである。
この予約はGLIESユーザにチャイルド・プロセス終
了、及びAO3/VSのために、カスタマ/サーバー接
続区切りを通知されることを許容する。各加入者は、終
了したプロセスのピット及び出口状態を特定す・る、各
死亡の通知を受ける。
AO3/VSのもとで、GUESは終了メツセージ(?
SPTM)用のシステムボート上に繰り返しの?IRE
C’sをするために個々のタスクを確立する。ユーザは
GUESサービスを中断するだろうから、このボート上
に自らの?IREC’sをしてはならない、UNIXの
もとで、GUESはチャイルド終了につき通知されるた
めに、5IGCLDの信号番号で自らの信号(2)サー
ビスに加入する0通知が受けたときに、GUESは、す
べての終了したチャイルドのための終了情報を集めるた
めに、WNOHANGオプションで繰り返してウェイト
3(2)呼出しを行う、ユーザは、これはすべての加入
者用のGUESサービスを中断させるであろうので、自
らウェイト(2)又はウェイト3(2)を呼出してはな
らない。
7、3.4  Unixセレクト(2)イベントI10
条件が1つの特定された組のファイル記述子上に存在す
る時に通知されることを、この予約はUNIXユーザに
許容する。
unixセレクト(2)システム呼出しは3バイトアレ
イ引き数、readfds C) 、writefds
 ()及びexeeptfds ()を取る。これらの
アレイの夫々の内部で、各ビットは制限されたファイル
記述子を表わす、 readfds ()マスクは呼出
し人がリード(2)呼出しをすることに関心があるファ
イル記述子を記入し、writefds ()マスクは
呼出し人がライト(2)呼出しをすることに関心がある
ファイル記述子を記入し、そしてexeeptfds 
(〕マスクは呼出し人が例外条件に関心があるファイル
記述子を記入する。
セレクト(2)呼出しは、入力において仕分けされた条
件のいずれが実際に存在するかを指示する情報を戻す(
即ち、仕分けられた記述子のいずれが読出し、書込み用
に準備され又はそれらに例外を有するか)、仕分けられ
た条件の1つが存在し又はそれがボールされ得るまで、
呼出しは未処理にされることができる。
GUESは、未決のgui−run Oからの実行する
ジョブがないときはいつも、未決の方法でセレクト(2
)を呼出すためにgujrun □のために整備する。
また、アンベンドのgujrun □は、GUI内にす
でに列をなすジョブがないときはいつもボールされたセ
レクト(2)呼出しをするだろう。
GUESセレクトサービスへの各加入者は、セレクト(
2)マスクによく似ている1組のファイル記述子マスク
を有する。加入者は彼/彼女GUES  5ELECT
  MASK構造をHues−subscribeの中
へ通過し、そしてGUESはそれを記憶している。GU
ESはセレク−)(2)に仕分けするreadfds 
() 、writefds ()及びexceptfd
s ()マスクはそれから全加入者のマスクを共にOR
することにより構成される。ここで彼/彼女GUES 
 5ELECT  MARK中のビットを処理すること
により、加入者は彼/彼女が通知されることに関心のあ
るファイルの組から所要のファイル記述子をダイナミッ
クに加え又は除去することができる。
セレクト(2)呼出しがI10条件を指示するときはい
つも、GUESは、各加入者のセレクトマスクがその条
件で1以上の記述子を仕分けしている該各記述子用の単
一の通知をスケジュールするだろう、マスク上に条件を
もったファイルに現在関心のあることをその加入者のマ
スクが示している加入者のみが与えられた通知を受ける
だろう。
次の警報はこのサービスの使用者に適用する。
* 与えられたファイル記述子に関心のあるのは1Å以
上の加入者であっても良く、そこでいくつかの注意が通
知を取り扱うことに支払わなければならない1例えば、
もし2人の加入者が5TDINの上に可能である読取り
の関心を登録するために彼らのセレクトマスクをセット
するならば、そのとき有効に入力されるとき、彼らは夫
々呼出されるべき通知ルーチンを手に入れるだろう、も
し、最初の加入者が通知ルーチンからすべての有効な入
力を読出すならば、そしてそれから第2の加入者が読出
しを試みるならば、その読出しはおそらく永久に未処理
であろう。
周知のファイル記述子(STDINのような)を使用す
るときに、条件がなお存在することをチエツクするため
に、イベント通知から別のボールされたセレクト(2)
呼出しをすることが助言される。
* 通知の1つがI10条件をクリアすること、又は別
にすべての加入者が彼らのセレクトマスク中のオフエン
デイングビットをクリアにすることは等しく重要である
。上記例において、いずれの通知も有効な入力を読み取
らずそして彼等両方が変更されてないセレクトマスクを
残しているならば、このときプロセスは、すべてのタイ
ムGUESがセレクト(2)を呼出すので、ハートルー
ズに移行し、I10可能を示し、そして加入者通知は再
びスケジュールされるであろう。
本 もし加入者マスクのいずれかが現在開放されてない
ファイルを仕分けするならば、このときGUIはセレク
ト(2)から誤りを得てそしてプロセスを終了するであ
ろう、加入者はそこで彼等がファイルを閉じるときはい
つも彼等のセレクトマスクを注意深く修正しなければな
らない、また、もしファイルが多数のGUES加入者に
対して見えるならば、該ファイルを閉じる唯かは、他の
加入者がまた彼等のセレクトマスクを補正できるように
、該他の加入者に知らせるための機構を明らかにしなけ
ればならない。
GUESのみが上述された適切に制限されたポイントか
らセレクト(2)呼出しを行うことに注意されたい、特
に、GUESは、ユーザ通知が実行している開法してセ
レクト(2)呼出しをすることができないことに注意さ
れたいく単一ベースレベルパスのみであるから)。そし
てHui−runに)が呼出されている(又は戻されて
いる)ときはいつもユーザのセレクトマスクが有効であ
る限り、問題は生じないであろう。明らかに、この予約
は注意して使用されなければならず、しかしもし注意し
て使用すればそれは強力なサービスを与える。
第8章 GUIインターフェース仕様 この章では、具体例としてのG、UIインターフェース
の好適なフオームを機能的に記述する。
gui 1nitialise    G U I環境
の初期化。
フォーマットgui−initialiseOこのルー
チンは、他のGUIルーチンが呼び出される前に各ライ
ブラリおよびメインアプリケーションによって呼び出さ
れねばならない。
gui−allocate−quid ジョブスケジューリングのためのキューの割り当て、お
よびその識別子への復帰。
フォーマット:  gujallocate−quid
(priority、user−wakeup、 qu
id) パラメータ: prtorit7   この列にスケジュールされるジ
ップの相対的な優先関係を定義す る。
user  wakeup   もし指定される(no
n−NULL)ならば、ジョブがこ のqujdにスケジュールされる時は いつでも、このルーチンはGUIによって呼び出される
quid  GUIは、新しく割り当てられたキューの
ためにキュー識別子と共にこのパ ラメーターの中で対応する。
このルーチンは、内部GUIキューを割り当て、このキ
ューの上でジョブはgui  5chedu1eOによ
りスケシールされる。このキューがらジョブを引き出す
ために、ユーザーは、同じスレッド(thread)(
VS−Task)において、gui  runOを呼び
出さねばならず、これはそれ(キュー)を割り当ててい
る。もし“user  wakeup”ルーチンが指定
されると、そのときこのルーチンは、ジョブがスケジュ
ールされるときはいつでも、それをスケジュールしたス
レッドにおいて呼び出されねばならない。
ユーザーは、その後前記quidを割り当てたスレッド
の上でgui  runを呼び出さねばならない。
gui schedule 指定のスレッドで実行するためのジョブのスケジュール
フォーマット:  gujschedule(quid
、 routine、 argl、 arg2. ar
g3. arg4)パラメータ: quid  その上でジョブがスケジュールされるべき
quido これは以前のコールからgui  all
ocate  quidヘリターンされるquidでな
け ればならない。
routine   コールがスケジュールされる機能
のアドレス。
argl−arg4   スケジュールされたルーチン
が呼び出される引き数(argu ments)。
特定のquid上で呼び出されるルーチンをスケジュー
ルする。このルーチンは、ユーザーがquidを割り当
てたスレッドからgui  runを呼び出したとき、
(指定された引き数と共に)呼び出される。GUIは、
4つのINT32s (arg−arg4)をそのまま
通過してスケジュールされたルーチンへ行く。スケジュ
ーリングとスケジュールされたルーチンとの間の引き数
により、これらのパラメータは、それらにより占められ
る全体のスペースが4つのINT32Sにより使用され
るそれよりも大きくない限り、何らかのサイズの何らか
の数のパラメータが使用され得る。事実上、GUIは、
スケジューラ−からスケジュールされたルーチンまでの
間にスタックの4つのダブルワードを複写し、このブロ
ックの解釈はユーザーに委ねられる。
gujrun 以前にスケジュールされたルーチンの実行。
フォーマット:  gujrun(flag)パラメー
タ: flag   すべてのジョブが実行の用意ができてい
ないときにコーラ−(calle r)が待つことを欲するかどうかの指 示。PENDまたはN0PENDへの セット。
このルーチンは以前にスケジュールされたジョブを実行
させる。ジョブは呼び出しタスクにより割り当てられた
quidから優先順序にしたがって選択される。
もしGUI  0PTION  N0PENDが選択さ
れると、GUIは、1つのジョブが実行された後か何ら
のジョブも利用されないときコーラ−に復帰する。
もLGUI  0PTION  PEND!l(選択さ
れると、GUIは、ユーザーがgut  wakeup
を呼び出すまで、復帰しない。GUIは、何らのジョブ
も準備されてないときはそのまま静止し、ジョブが利用
されるときはそれらを実行する。
gui−vakeup ベンドされたgui  runを復帰させる。
フォーマット:  gujwakeup(quid)パ
ラメータ: quid   quid”を有するスレッドが起動され
るべきものであることを指定す る、 ユーザーは、ペンドオブシタンと共にgutrunを呼
び出すスレッドを発生し、それが次のジョブの実行を終
了するとき復帰するために、この機能を呼び出す。指定
された“quid”は起動されるスレッドが有していな
ければならない。
もしスレッドが現在ジョブの実行を待ちでいるときは、
それは直ちに復帰する。もしそれが現在gui  ru
nO内に全くないときは、guirunOへの次の呼び
出しは直ちに復帰される。
ルーチンはまた、ジョブをその上にスケジュールするこ
となしに、quidが変化することをチエツクするため
に提供される。これはG C’S P sのために有益
であり、GCPSsは、ユーザーによりサービス要求ル
ーチン内ヘバスされたquidが変化することをチエツ
クするために使用し得る。
これは、その処理の後に、GCPSが、そのquidが
無効でありユーザーにしらせることができないことを発
見するのを妨げる。
ユーザーはまた、gui  5cheduleのユーザ
ーであるジョブの連続呼び出しのために、ジョブがgu
i  5cheduleへの呼び出しと共にスケジュー
ルされるとき指定される引き数と共に、またジョブがス
ケジュールされるquidと共に、user  job
スケジュールド・ルーチンを提供する。
ユーザーは、ジョブをリスケジュールするために、同じ
quidで、あるいはもしそれがguirunOからの
復帰を実行するスレッドを欲するなら、gui  wa
keupへの呼び出しで、quidを使用する。
第9章 GUT S  インターフェース仕様この章で
は、GUTSインターフェースの1例の機能的な記述を
提供する。
guts−initialise  G U T Sラ
イブラリの初期化このルーチンは、他のGUTSルーチ
ンが呼び出される前に各コンポーネントにより呼び出さ
れる。最初の初期化のほかはみな、 GUTSによって
無視される。
guts 5tart tiIIer   G CS 
PはGUTSタイマの開始を要求する。
フォーマット  guts start−timer 
(nfunc、 quid。
delay、 uargl、 uarg2)パラメータ
nfunc   これはユーザー通知ルーチンであり、
これはタイマが終了したときGL″TSによってスケジ
ュールされる。
quid   これはタイマが終了したとき“nfun
C”がスケジュールされるqui dである。
delay   タイマが終了し“nfunc”がGU
TSによってスケジュールされる 前に経過せねばならない秒の数。
uargl   このパラメータは、 通知ルーチンで
ユーザーへ返される。
uarg2   uarglと同様。
このルーチンは、ワンスオフタイマイベント(once
−off  timer  event)を開始させる
ために呼び出される。“delay”秒においてタイマ
が終了したとき、CUTSはユーザー通知をスケジュー
ルし、それがgui−runOl例えば(*nfunc
)   (uargl、uarg2.quid)から呼
び出すレル。
他のパラメータは単一のタイマをユニークに識別するた
めに使用される。
GUTSを使用する幾つかの存在の間における特徴を確
保する良い道は、“user  ref”パラメータの
ための制御ブロックのポインタを使用することである。
前記制御ブロックが割り当てられたままでいる限り、他
の存在が同じアドレスでメモリに割り当てられることは
なく、したがって、“user  ref″は特有のも
のである。
このアプローチはまた、調節される操作の配置は単純な
ことであることを意味している。
もし規則的に繰り返すタイマが要求されるときは、同じ
(または異なる)名前のタイマは、通知ルーチンからス
ケジュールされ、その都度タイマは終了する。
guts−cancel−timer 未決定の(outstanding)タイマのキャンセ
ル フォーマット:  guts cancel−time
r(identifiers。
timeleft) パラメータ: 1dentifiers   タイマをユニークに識別
する。
timeleft   タイマが見付けられうまくキャ
ンセルされたとき、GUTSはタ イマが終了する前のままの時間量に復 帰する。
このルーチンは、guts  5tart  time
rにより以前にスタートした未決定のタイマをキャンセ
ルするために呼び出す事ができる。これは、もし、例え
ば計られたイベントが正常に終了するか中断されるとき
は、有益である。
guts−check−tiger タイマが終了する前にどのくらい長くそのままでいたか
を見るためのチエツク。
フォーマット:  guts−check−timer
(identifiers。
timeleft) パラメータ: 1dentifiers   上記のとおりtimel
eft   GUTSはこのパラメータが終了する前の
時間に復帰する。
このパラメータは、指定されたタイマが終了する前にど
のくらい残されたかをチエツクするために呼び出される
。これは、マネージメントアプリケーションへの情報を
報告するために使用される。
第10章  GUES  インターフェース仕様この章
では、GUESインターフェースの1例の機能的な記述
が提供される。
gues 5ubscribeOG U E Sライブ
ラリの初期化。
このルーチンは、他のGUESルーチンが呼び出される
前に各コンポーネントにより呼び出される。最初の初期
化の外は皆GUESにより無視される。
gues 5ubscrfbeOG CS Pリクエス
ト。
イベントの分類について述べることを求める。
フォーマット:  gues−subscribe(g
ui−quid、 in pars、 out−par
s) パラメータ: gui  qu’id   コーラ−がイベント受け取
りの通知を欲するGUI  quidを指定する。  
”In  fJarS″で指定された通知ルーチンは、
イベントが受 け取られる毎にこのquidにスケジュールされる。
in  pars   登録のためのパラメータを入力
する。下記の例参照。
out  pars   登録のためのパラメータを出
力する。下記の例参照。
ユーザーは、AO3/VS Fast  IPC’5(
7STGNL) 、UNIX  ソフトウェア割り込み
(信号)、またはチルド処理ターミネーンヨン(オビチ
ュアリイ)のような、外部イベントのインタレストを記
録するために呼び出される。
“in  pars”パケットは、イベントの型、指定
されたイベントが受け取られて呼び出される通知ルーチ
ンのアドレス、さらにそのイベントを指定するパラメー
タを含む。
“out  pars”パケットは、記録されたイベン
トに関するGUESにより戻される情報を含む。
これらのパケットが従うフオームの例:5ubscri
be to VS ?5IGNAL events g
ues−subscribeOcall : 入力パラメータ: typedef  5truct  gu=es  i
nars event  type   *GUES  EVEN
T  VS  5TGNL  へのセット。
nfunc   これはイベントの受け取りでGUES
により呼び出されるユーザー通知 ルーチンのアドレスである。
udata   “nfunc′ヘバスされるユーザー
データ。
出力パラメータ・ typed  5truct  gues  outa
rs sub  id   GUESはこのサブスクリブショ
ンのための識別子を戻す。
wait  task  uid   このメンバーは
タスクを待つのに使用される内部GU ESタスクのVS  Unique  Ta5k  I
Dを指定する。これは?5IGNALタスクのために必
要である。
このイベントはAOS/VSの下でのみ利用でキル。F
ast  IPCを受け取ると、コーラ−の通知ルーチ
ンはスケジュールされるが、それは次のように呼び出さ
れる。すなわち: (本nfunc)  (sub−id、  event
−type、  udata、  0.  gui−q
uid); “gui  quid”は前記通知が実行されるqui
dである。
5ubscribe to Interrupt ev
ents gues 5ubscribe() cal
l: ソフトウェア割り込みイベントの共用(subscri
ption)のためのパラメータの使用。
入力パラメータ: typedef  5truct  gues   i
npars event type  値GUES EVENT  
INTのセット。
int  num   これは、コーラ−が共用を欲す
る“割り込みナンバー”である。U NIXの下では、これは信号数(si gnal、h、で定義される)である。
nfunc   これはイベントが受け取られたときG
UESにより呼び出されるユーザ ー通知ルーチンのアドレスである。
udata   ″nfunC″ヘパスされるユーザー
データ。
出力パラメータ: typedef  5truct  gues  si
gnal  out  pars sub  id    GUESはこの共用のための識
別子を戻す。この共用は、例えばU NIXの下で、信号の受け取り時に通 知される処理内のマルチ・エンティティを許容する。
指定された割り込みの受け取り時に、 コーラ−の通知
ルーチンはスケジュールされるが、これは次のように呼
び出される。
(本nfunc)  (sub  id、  even
t  type、  udata、  int  nu
n。
gut quid); “gut  quid″は前記通知が実行されるqui
dである。
5ubscribe to child obitua
ries gues−subscribeOcall: チルド・オビチュアリイの共用のためのパラメータの使
用 入力パラメータ: typedef  5truct  gues  in
ars event type  値GUES EVENT  
0BITのセット。
nfunc   これはイベントの受け取り時にGUE
Sにより呼び出されるユーザー通 知ルーチンのアドレスである。
udata   ″nfunc″ヘパスされるユーザー
データ。
出力パラメータ: typedef  5truCt  gues  si
gnal  out  pars この共用は、AO8/VSとUNIXの下でサポートさ
れる。それは、チルド処理の終結時に通知される処理内
の1または1以上のエンティティを許容する。チルド処
理の(またはAO8/VSCustomer−8erv
er  関係におけるハードナーの)終結時に、コーラ
−の通知ルーチンはスケジュールされるが、これは次の
ように呼び出される。
(零nfunc)  (sub  id、  GUES
  EVENT  0BIT、  udata、  o
bit−ptr、 gui−quid);前記’gui
  quid”は、通知が実行されるquidであり、
  “obit  ptr”は次のような構造のポイン
タである。
USINT32 pid; USINT325tatus; IGUEs 0BIT: pid  この領域はターミネイト(終結)処理のPI
Dを含む。
5tatus   この領域はどのように処理が終結さ
れるかを含む。
AOS/VSの下で、それは正常な終結のためのゼロま
たはこれに代わるエラーコードを含む。
このエラーコードは終結された処理(via  ?RE
TURN)から戻され、または異常な終結を示すために
GUESにより供給される。
UNIXの下で、“5tatus”は、UNIXにおい
て記述されたwait3(2)システム呼び出しから得
られるような終結されたチャイルドの出口状態を含む。
5ubscribe to 5elect(2) ev
ents gues−subscribe() cal
l select(2)イベントの共用のためのパラメータ
の使用。
入力パラメータ: typedef  5truct  gues  se
Iect   mask typedef  5truct  gues  in
ars event type  値GUES EVENT  
5ELECTのセット。
event  mask   この領域はGUESSE
LECT  MASKの構造へのポインタを含まねばな
らない。もしこの 構造が動的に割り当てられるなら、そ れは、GUESが処理の持続時間のた めのそれにアクセスすることを含むの で、フリーであってはすらない。
nfunc   これはイベントの受け取り時にGUE
Sにより呼び出されるユーザー通 知ルーチンのアドレスである。
udata    nfunc”内ヘパスされるユーザ
ーデータ。出力パラメータ= typedef  5truct  gues  ou
t  pars sub  id   GUESはこの共用のための識別
子を戻す。
この共用は、5elect(2)システム呼び出しによ
り実行されるような、I10状態を通知されるマルチプ
ルユーザーを許容する。このGUESサービスの各共用
者は、ファイルデスクリブターマスクのセットを有して
おり、これは共用者がリード、ライトおよびイクスペク
ンヨンの状態に関係があるかのファイルを示している。
セレクト(2)呼び出しカ月10状態を示す時はいつで
も、GUESは各共用者のための単独の通知をスケジュ
ールし、各共用者のセレクトマスクは1または1以上の
デスクリブターをその状態と共に指示する。通知は次の
ように呼び出されるようにスケジュールされる。
(本nfunc)  (sub  id、  GUES
  EVENT  5ELECT、  udata。
mask−ptr、 gut quid);“gut 
 quid”は通知が実行されるquidであり、“m
ask  ptr”はセレクト(2)呼び出しく例えば
、それはファイルの共用者にその状態が存在することを
示す)からの出力を含むGUES  5ELECT  
MASKへのポインタである。
user event receivedOユーザー通
知イベントの連続の呼び出し フォーマット:  void user event 
received(sub−id、 event−ty
pe、 udata、 event param、 q
ui quid)パラメータ: sub  id   これは共用IDで、これはニーザ
ーが通知されたイベントを共用した ときGUESにより戻される。
event  type   これは、(GUES−E
VENT  VS  5IGNL、GUES  EVE
NT  INT、GUES  EVENT  0BIT
、又1tGUEs  EVENT  5ELECT)に
到達するイベントの型を示す。
udata   これはユーザーデータパラメータであ
り、これはGUESによりパスさ れる。それは共用時にユーザーにより 指示される値を有している。
event  param   このパラメータの使用
は特定のイベントの型に依存してい る。
qui  quid   通知が実行されるGUIqu
idを指示する。このルーチンは、 以前に共用されたイベントが受け取ら れたとき呼び出される。このルーチン の名前はユーザーにより実際に割り当 てられ、そのアドレスは共用呼び出し にパスされる。例えば“user  event  r
eceived()”の名前が使用される。
GUTSタイマと違って、イベント共用は処理の実施の
間有効である。通知ルーチンからの共用を更新する必要
はない。
第11章  GUI  プログラミング例この章では、
アンペンドされた(unpended)リードサービス
を提供する単一のGCSPを実行するためのGUIの使
用を示す。またそれは、アンペンドされたリードを達成
するために、GCSPのサービスを実施する単一のユー
ザーを示す。この例は“C”言語で書かれているが、完
全なプログラムとして意図されてはいない。むしろ、そ
れはGUIの使い方を示すことを意図している。この例
はAO3/VSを示すが、それはベンドされたIloへ
のスレーブAO3/VSタスクを使用するからである。
これは、もしUNIXポータビリティが問題ならばGU
Iが使用される方法ではないが、より実際的な例は不必
要に複雑となり説明には適さないものとなろう。
この例はまたエラーチエツクでは比較的弱い。
GUIの実際のユーザーは徹底的にリターンコードをチ
エツクするが、それはGUIリクエストを間違えると後
でトレースすることが深刻かつ困難となるからである。
Globals GIJI−QUID  5lave quid;  7
本 Quid  allocated  to GCS
P  5lave  task  */GUjQUID
  user−quid;  /ネ Quid  of
  user’ s +aain  task  本/
End Globals GCSP Code /* GCSP  1nitO本 * Routine to be called by
 user、 to 1nitialise the 
GCSP。
本Spawns a 5lave VS−Task、 
to do pended requests。
本/ GCSP 1nit O(extern GCSP 5
lave O:mtask  (GCSP−slave
、  $5TACK−3IZE);  7本 5tar
t  5lave  task  本/gui  1n
itialise  O+7本 GCSP  5lav
e  □ 宰 本Run5 as a 5lave VS−task、
 Just calls gu辷rvn、 from 
where any零5cheduled calls
 will be run。
本/ GCSP−slave  O /* Run  any  routines  th
e GCSP  tells  us  to、  本
/四辷run (GUjOFTION−PEND) ;
7本 GCSP  as)mc−read□ネ 本The unpended read Reques
t routine、 Builds an 1nte
rnal本representation of th
e request (understood wit
hin the零GC3P)、 and 5chedu
les it to nm on the 5lave
 task。
零 零The 5lave will call the 
users notification routin
e、 when the本 read  is  do
ne、本/GC3P−async−read (Nfu
nc、 quid、 buff、 fp、 nbyte
g)void  (本Nfunc)  O;  7本 
Users  notification  rout
ine 本/GUjQ[IID quid;  /* 
 User quid  to  run  noti
fication  on  零)char *buf
f;  /*  Buffer、  to  read
  1nto 本/FILE *fp;  7本 Fi
le descriptor  to  read  
from  本/I?JT32  nbytes:  
7本 Number of  bytes  to  
read  本/READ−PKT *readJet
;extern 5lave−read□ ;7本 ^
11ocate  an  1nternal  re
quest  packet、  and  fill
  an本 paraseters  fros  o
ut  arguments、  本/readJet
 =  (READ−PKT本)alloc  (si
zeof  (READ−PIT));raad、Jt
−>fp −fp; readJet−>buff −buff;readJ
<t−>nbytes =nbytes;/* 5ch
edule  the pended  raad  
to happen  on  our  5lave
  task  、、  本/gui−schedul
e (slave quid、5lave reat 
readJtt);/* 、、、  and  ret
urn  寧/return (ON); /零 5lave−read  0 本 本Th1s’ GCSP routine actua
lly does the pended read。
本It is run from gui run、 
on the 5lave task、 when 5
cheduled by零 GCSP−async−r
eady、本/5lave rand (readJt
)READ PKT tread Jkt;/木 Do
  the  pended  read、  零/f
read (readJkt−>buff、 read
Jet−>nbytes、 1. readJkt−>
fp);7本 Request  done  −5c
hedule  the  notification
  hack  onto  the本User’ s
 Uin task: passing the fu
ll data buffer back isネ ’
argl’  本/ /*  Free  up  the  1ntern
al  request packet  本/fre
e (readJet); return (OK); End GC3P Code User Code 7車 The  User’s  1ain  rou
tine、  Th1s  simple  exam
ple  just  1ssues* Unpend
ed reads and waits for th
em to ccmplete、 until the
本 End−of−File  is  raache
d、本/USERmain 0 FILE  *fp; char buff [$BUFF−SIZE] ;e
xtern USERread−done O:/木 
In1tialise  the  world   
宰/四辷1nitialise O+ GC3P 1nit O; 四辷allocate quid (1,NULL、 
&user−quid);fp = fopen (”
testfile”、”r”);while (lfe
of (fp))7本 11ake  unpende
d  request、  本/GC3P async
 read (USER−read−done、 us
er quid、 buff、 fp);7本 In 
 practice、  the  user wou
ld  do  some  other proce
ssing本 here、  Al5o、  ther
e  would  prohably  be mu
ltiple  requests本outstand
ing。
本 For  sia+plicity  in  t
his  example、  we  just  
wait  for  the本 read  to 
complete、  零/gui run (GUI
−OFrION PEND)+7本 USER,、−r
ead−completeネ 本The user’ s notification
 routine、 called by GUl、 
fro+n gui run。
本when the request coa+ple
tes。
本It does 5otae processing
 of the received data、 an
d then calls本gui wakeup□、
 so that when we return、 
ttre task will return本fro
+* gu辷run、 enabIing anoth
er request to be made、本/p
rocess−data  (buff);  /* 
 Don’ t  care  what  it  
does  本/四辷wakeup (user−qu
id) ;return (ON);I End User Code 第12章 内部構造 この章は、GUIのAO8/VS版の設計を表す。UN
IX版とMS−DO8版とは、出来る限り類似しつるか
、相違っは存在する。特定のかつ明白な相違あるいはイ
シュウ(issue)がある本明細書の各個所で、[U
NIX:UNIXイシュウのチクスト]のように鍵括弧
のコメントにより記される。
GUIは、第18図に示されるように非常に単純な構造
を有する。GUIは、単に1組のキュウから成る太線ブ
ロック180により表される。この1組のキュウの4つ
が、ここではランされるべき通知待機を含むQl、Q2
.Q3およびQ4により示される。キュウはrgui 
 allocate  quidOJを呼び出すことに
より割り当てられる。通知は、図に示されるように、[
gui  5chedule()ゴを呼び出すことによ
りキュウ上に配置され、rgui  runOJにより
キュウから取り出される。第18図は他のGUIルーチ
ンを図示していない。
GUIは、ネットワーク通信システムに対して制御環境
のタスクとフローの基礎を形成する。
ユーザ・アブリケーンヨン181は、1つ以上のGCS
P、図においては2つのccsP182および183に
アンペンデッド要求をする。これらのGCSPは、次に
他のGCSPに要求をし、GC8P18および183は
、第18図の例のおいては、経路184により互いに通
信することが示される。
そのプロセスの過程において、GCSPは、それ自身に
おいて、他のGCSPにおいて、あるいはユーザにおい
て、呼ばれるルーチンをスケ−ジュールしうる。このス
ケジューリングは、GCSPからrgui  5che
duleJへの矢印185により示され、そして内部G
UIキュウ上に置かれ、かつrgui  runJによ
り取り出される通知をもたらす。典型的には、このスケ
ジューリングは、外部イベントを待機する個別のVSタ
スクからなされる[UNIX/MS−DOS :インタ
ラブト・レベルから]。
ユーザが、rgu i  runJを呼ぶとき、スケ−
ジュールされたルーチン呼び出しが、ランを得る。これ
は、キュウQ1ないしQ4から「gui  runJへ
の矢印187と、ユーザ181からgui  runO
への矢印188とにより示される。スケ−ジュールされ
た呼び出しは、再び矢印186により示されるように、
ユーザ181に、あるいは、呼び出されているGCSP
182.183内にルーチンを生じうる。
先に留意したように、ユーザは、quidsへのルーチ
ンをスケ−ジュールする必要がありうる。
これは、接続189により示される。
第13章 データ構造の仕様 GUIの通知の一時的なかつランタイムの特定の性質の
ため、プロセスの呼び出しにかかるいずれの情報を保存
する必要がない。従って、GUI構造の全てはメモリ常
駐である。オン・ディスク構造はない。以下のデータ構
造においては、MV上にあるように示される種々のメン
バー(特にポインタ)のサイズが描かれる。これらは、
かなずしもPC上である同じではない。
13.1GUIキユウ GUI内のメインデータ構造はジョブ・キュウである。
これらは、rgui  5chedulejとrguj
  runJとの間の唯一のカップリングを形成する。
ジョブ・キュウは、パー・タスク・ヘッダからアンカー
オフされる。このパー・タスク・ヘッダは、それ自身で
、リンクされたリスト上にあり、単一のキュウ記述子で
アンカーされる。
従って、唯一のグローバル・アンカーがあり、それを全
てのGUI構造は直接的にあるいは間接的に解き放つ。
ジョブ・キュウ上のエントリーは、GUIが、指示され
たパラメータとともに要求された通知をランするのに必
要な情報を含む通知制御ブロック(NCB)である。
典型的な構成は、第19図に示される。この例は、N個
のオーナ(VSタスク)に対するジョブ・キュウ・リス
トを示す。[UNI X/MS−D。
S、唯一のオーナが存在する。] オーナ1は、割り当てられた2つのrquidS」ジョ
ブQ1、Q2を有し、2つのジョブは、これらの第1の
上ヘスケージュールされ、第2にはなにもない。オーナ
2とオーナNとは、各々割り当てられた1つのquid
を有し、スケ−ジュールされたジョブは伴わない。
全てのリストは、二重リンクされたMVキュウであ−リ
、そのためMVハードウェア・キュウ命令を用いること
ができる。これらの命令は、アトミックであり、ロック
の必要を排除する。[UNIX/MS−DOS:これら
の環境におけるハードウェアが類似した命令を与えない
場合には、エンキュウとデキュウの持続時間に対する割
込みを使用不能にする必要がありうる。コ 13.1.I  GUI  ROO前記述子これは、全
てのGUIキュウ用のルート・アンカーである。それは
、第20図に示される構造を有する。この2つのメンバ
ーは、ポインタであり、これらのポインタはそれぞれ、
最初のオーナ・キュウと最後のオーナ・キュウを指示す
る。全てのMVキュウに関して、Qが空である場合には
、これらのメンバーはともに−1である。
13、 1. 2  パー・オーナ・リスト・アンカー
この構造は、リスト上でGUI  ROOTでアンカー
され、第21図に示されるものである。それは、rne
xtJポインタ、rprevJポインタ、オーナ id
lおよびそのユーザにより所有されるrquidsJの
リスト用のQ記述子を含む。このアンカーを解き放つジ
ョブ・キュウは、優先して分類される。オーナによるそ
のQへのアクセスを制御するために用いられる数フィー
ルドもある。
「オーナ」フィールドは、このリスト上のジョ、 ブ・
キュウのオーナ・タスクを識別する。VSタスク−ID
を発見するためのシステム呼び出しのオーバヘッドを避
けるため、オーナ・タスクのスタック・ベースが、この
識別のため用いられる。
この方法は、DG言語ランタイム・ライブラリに共通で
あり、従って、特別の制約を課すことはない。
rmboxJは、タスク間メイルボックスであり、所有
されたジョブ・キュウのいずれか上でスケジュールされ
た通知がないとき、オーナが、ペンデッドrgui  
runJを行う場合は、そのオーナは、そのメイルボッ
クス上に待機する。タスクが、それに所有されたrqu
idJ上で「gui  5cheduleJまたはrg
ui  wakeupJを行うとき、別のタスクが起動
される。
VSタスク間シスンテム呼び出しく?RECと?XMT
)は、この目的のために用いられるであろう。
[UIX/MS7DOS :起動は、割込みレベルから
なされるでろう。スピン・ロックはMS−DOSのため
と、UNIX用のrselectOJシスンテム呼び出
しのためとに用いられるであろう。] rstatusJフィールドは、種々の制御ビットを含
み、第22図に定義されている。「runningJビ
ットは、GUIがこのオーナに向けて通知をランしてい
るときセットされ、rgu 1runJのネステッド呼
び出しを阻止するために用いられる。rwaiting
Jビットは、タスクがrmboxJ上で待機していると
き用いられる。rwa k e  u pJビットは、
現在ランしているジョブの後にランしているタスクを起
動させるためにセットされる。rjob  5ched
uledJビツトは、ジョブがスケジュールされるとき
は常にgui  5cheduleによりセットされる
。このことは、そうでないときに存在するであろうウィ
ンドウを、別の■Sタスクがランすべきジョブを検索し
ている間にジョブがスケジュールを得るとき、閉じる。
13、 1. 3  ジョブ・キュウ・アンカーこの構
造は、所与のrquidJに対する実際のNCRがアン
カーされるものである。それは第23図に示され、ジョ
ブQ  id  rquidJと、NCBに対して通常
のQ記述子を加えたその優先順位とを含む。
13、 1. 4  通知制御ブロックこれらは、ジョ
ブQ上ヘキュウされる制御ブロックである。各々は、ス
ケジュールされた通知を表し、それをランするのに必要
な全ての情報を含む。
これらの制御ブロックは、第24図に示されるフォーマ
ットを有する。rnextJフィールドとrprevJ
フィールドとは、このジョブQ上でそれぞれ次のNCB
と先のNCBとを指示する。
他のメンバーは、  「guj  run OJに渡さ
れるパラメータであって、通知ルーチンがランを得ると
き、それへ渡されるであろうパラメータである。
この構造から、各未定のスケジュールされた通知に対す
るメモリ要件は、7ダブルワード(28バイト)である
ことが理解できる。メモリがこれらはブロックを使用可
能であることを保証することが、GUIユーザに残され
るであろう。GUIがNCBを必要とするとき、GUI
はNCBを割り当てることが出来ない場合、GUIはr
gu 1scheduleOJからエラーを戻すであろ
う。
13.2  quidテーブル GUIジョブ・キュウへのアクセスをスピードアップす
るため、rquidJによりインデックスされたテーブ
ルが存在し、このテーブルは、rquidJにより識別
されるジョブQのロケー7ョンを与える。このテーブル
の各エントリは、第25図に示されるフォーマットを有
する。
quidテーブルをロックする必要を避けるため、エン
トリは自動的に書込みされる。割り当てられていないq
uidは、そのテーブル・エントリのrjob  q 
 ptrjフィールドにおいてNULLの値を有するで
あろう。割り当て中に、このフィールドは、自動的に充
填され、割り当ての最終段階点で、そのquidは有効
になる。
再び、ロックの必要を避けるため、テーブルは、256
エントリの固定サイズでありうる。これは、使用可能な
quid数を256に制限することを課する。共用アク
セス・スキームは交互に実行されえて、quidテーブ
ルの共用読出し専用アクセスを許容するが、排他的書込
みアクセスを許容しないで、そのため、テーブルが一杯
になるときそのテーブルは成長されうる。
quidsは、1の値で開始して割り当てられ、値Oを
特別の値(NULL  QTJID)としてフリーのま
まにしておく。更に、全ての負の値は無効であり、特別
の意味が確保される。
13.3  例により上記したデータ構造のコンテツク
スト内で、この章は、GUIモジュールの1つが取り得
る動作の単一の例、即ちプロシジャ−gui  all
ocate  quid (priority、use
r  wakeup)で終わる。
egin get the callers 5tack bas
e;5earch the owner Q chai
n for an anchor owned by 
this task;if (owner ancho
r not found)egin allocate a new per−owner 
1ist anchor;fill it in; add it to tail of the own
er Q chain;nd allocate and 1nit Job Q a
nchor;put allocated quid 
1nto Job Q anchor;put use
r wakeup 1nto Job Q ancho
r;add  Job  Q  to  the  o
wners  Job  Q  chain、  at
  a  point  determinedby 
priority: obtain the next available
 quid、 and claim that 5lo
t in thequid table; Put pointers to the owner
 anchor、 and Job Q、 1nto 
theclaimed 5lot; return the quid just allo
cated;nd gui  5chedule、gui  run等のモ
ジュール仕様は、類似して導くことができる。
13.4GUIメモリ管理 GUIは、メモリ・ブロックのプールされたものから成
り、かつNCR,ジョブQおよびオーナ・アンカーにと
って適当なサイズからなるGUI自身のメモリ管理スキ
ームを有することが出来る。
このスキームの目的は、要求された大部分のメモリが同
じサイズのブロックにあるという知識に基づいて、標準
Cランタイムより効率的な割り当て機構を提供すること
にある。しかし、標準C機能rallocJおよびrf
reeJを用いてもよい。
第14章 GUrおよび通信サーバー・システム第26
A図および第26B図は、メツセージがネットワーク・
インターフェースから受信され、その宛て先に送られる
ことを必要とするとき住しる動作の基本的概要を示す。
これは、過剰の詳述から不明が生じることを避けるため
、単純化・された例として純粋に与えられる。送るべき
メツセージがあるという通知が、別のサーバー・プロセ
スからIPCの形式で、特別のルーチン45(第3図)
から到来するであろう。ソフトウエア・インターフェー
ス44は、262で示されるように、qui  run
 (pend)内で待機していると想定する。264で
、IPCは到来し、ルーチンをGUI  quid上に
置く。ゲートウェイがCEOゲートウェイ12Aである
場合、例えば、これは、266でルーチンCeOmSg
  rCVd Oである。ソフトウエア・インターフェ
ースがquj  run (pend)にあるため、c
eo  msg  rcvdOはランされ、別のルーチ
ン、即ち同様にランされる268でのbuild  P
DUOをスケジュールする。このルーチンは、それ自体
よく理解された機能を実行するT00LSルーチンであ
る。それは、UMB上で用いられるX400 1988
フオーマツトでPDUを組立て、CEOメツセージから
の各フィールドを得ることにより、ART  X400
を利用し、そのメツセージをUMBフォーマットに変換
し、それを、組立てられているPDUに加える。これは
、通常実行されつる単純なアト・アイテム・ルーチン 
additemOにより、かつquischedule
dされ、qui  runされるプロシジャ−を介さず
になし得る。それは、ARTルーチンが多数の処理を行
わないからである。
ceo  msg  rcvd Oはまた、メツセージ
を汎用メツセージ・バックボーン15上へ送り出すGC
8P  request  TOOLS−sendOを
270においてスケジュールスル。
TOOLS  5end Oは、最初に内部処理272
を実施し、それは、あらゆる受信者に対する受信者リス
トを介して進み(一般に2以上で有り得る。)、274
で示されるようにあらゆる受信者に対してディレクトリ
探索をする。ディレクトリ探索は、個別ディレクトリ・
サーバ・プロセスにより処理され、また276でのqu
i  run内でランし、各探索は、IPC278によ
り開始され、その結果は、IPC280により戻される
ディレクトリ完了は、282で順に各探索に対して決定
され、次にメツセージは、284(第26B図)におけ
るGCSP要求ルーチンmti  5endOに提出さ
れる。このルーチンはUMB15への実際の送信を実行
する。ネットワークの接続が確立され、イベント「接続
完了」288が、ルーチンmti  connecte
d  290を介して送られる。次に、292で、TO
OLS−data  access Oは、メツセージ
・データをディスクから得て、データを294において
送ることを実行する。このプロシジャ−は、全ての受信
者に対して順に続けられる。
平易にするため、メツセージ送信において続くプロトコ
ルの最もありのままの概要が、単にここに与えられてい
る。図面は、データ確認プロシジャ−も、例えばアスタ
スクにより示される、種々の段階で住じるディスクへの
セーブも図示していない。更に、図面は、GUIの真の
本質を明らかに出来ない。それは、図面が、リニヤ・プ
ログラミング言語の正規の方法で実行されうるルーチン
の通常のシーケンスを図示するようにみえるからである
。ルーチンは、オペレーションのシーケンスを真に実行
しなければならず、このオペレーションのシーケンスは
、データ通信の十分確立された原理に従わなければなら
ない。しかし、GUlでの実行についての重要な点は、
ルーチンは、正しいシーケンスにおいて互いを単に呼ば
ないで、完了までペンドされる。むしろ、これらの通知
ルーチン又はジョブは、第13図ないし第17図を参照
して先に説明したように、quj  5chedule
Oを呼び出すことによりGUI  quids上に置か
れ、qui  runOを呼び出すことによりランされ
る。
更に、現実の状況においては、多くのメツセージが同時
に処理され、メツセージからメツセージへ処理する種々
の段階にありうる。これは、多かれ少なかれ図面で意味
をもって図示することは不可能であるが、上述したよう
に、GUIが、この状況を処理するため理想的に適合さ
れることは容易に理解されつる。それは、全ての異なる
通知ルーチン又はジョブが、GUI  quids上に
置かれ、これら全ては、qui  run□を呼び出す
結果として順にランを得るからである。また、通信サー
バ・システムにおいては、ジョブは、変化する優先順位
を有し、異なる優先順位を有するquidsの使用によ
り異なる優先順位を実行するのは容易である。
■、略語と頭字語 AO5/VS  データ・ゼネラルのMVコンビュ−夕
用データ・ゼネラル・オペレ ーティング・システム ART     ASN、1  ランタイム−ライブラ
リ・ルーチン、転送構文と内部 構文間のデコード/エンコード ASN、  1   アブストラクト構文表記法1、デ
ータのタイプの表記のアブストラ クトの定義用国際標準(ISO) AU      アクセス単位 Cプログラミング言語 CCITT   国際電信電話諮問委員会CEOデータ
・ゼネラル・オフィス・オートメーション・システム C8通信サーバ C8ID    呼び出された加入者識別子DG   
   データ・ゼネラル・コーポレーション DTSO8S  IBMオフィス・オートメジョン・シ
ステム EC8外部呼び出しンーケンス GC5P    GUI−コンフォーマント・サービス
・プロバイダー GUE S    汎用アンペンデッド・イベント・ハ
ンドラー・サービス GUI     汎用アンペンデッド・インターフェー
ス GUTS    汎用アンペンデッド・タイマ・サービ
ス ID      識別子 IPCプロセス間通信−2つのプロセス間を渡されるメ
ツセージ Ilo    人力/出力 IBM     インタナショナル・ビジネス・マシン
・コーポレーション ISO国際標準機構 LAN     ローカル・エリア・ネットワークMR
Cメツセージ・ベースの信頼しうるチャネル、標準の4
00Mb/s ノくス MTI     メツセージ転送インターフェースMS
−DO8PC用1jl準オペレーティング・システム MV      AO3/VSがランしているデータ・
ゼネラル・コンピュータ NCB     通知制御ブロック O8コンピュータ用オペレーティング・システム PAD     パラケラト組立て/分解装置PCパー
ソナル・コンピュータ(IB Mまたはクローン) PDN     公衆データ・ネットワークPDU  
   プロトコル・データ・ユニ・ソトー単一構造のチ
ャンク(chunk) の中を通る情報 PID     プロセス識別子 PROFS   IBMオフィス・オートメーション・
システム PSTN    公衆交換電話ネットワークPTT  
   郵便電信電話管理局 Q      キュウの略記号 QUID    キュウ識別子 RUA     遠隔使用エージェントSNA    
 システム・ネットワーク・アーキテクチャIBMネッ
トワーク 5NADS   IBMメツセージ・プロトコルVS 
     =AO8/VS X25     パラケラト交換プロトコルX400 
  メツセージ処理用CCITT標準X500   デ
ィレクトリ・サービス用CCITT標準 AO8/VS用語の説明のために刊行されたマニュアル
を参照することに留意されたい。
【図面の簡単な説明】
第1図は全システムを示す図、 第2図はシステムの1つのゲートウェイのハードウェア
のブロック図、 第3図はシステムの1つのゲートウェイの機能的ブロッ
ク図、 第4図及び第5図は2つの異なるネットワーク間のメツ
セージ転送を示す図、 第6図乃至第12図はメツセージ取り扱いの手順をより
詳細に示す図、 第13図はGUI(汎用アンペンブト・インターフェー
ス)の下での2つの同時実行タスクのふるまいを示す図
、 第14図は第15図乃至第17図に対するキーを示す図
、 第15図乃至第17図はGUIの下でのルーチンの流れ
を示す図、 第18図はGUIの構造を示す図、 第19図はGUIに対するジョブ・キュー構造を示す図
、 第20図乃至第25図は種々のGUIデータ構造を示す
図、 第26A図及び第26B図は通信サーバ・ネットワーク
におけるGUIの使用例を示す図である。 図面の浄書(内容に変更なし) ta2 F/a、4 FIO,5 X400 ’rlつ’x−(−12D−Fta、7 2D− Flcy、8 ベエーウ゛リ         −12E−婁ネ定7 Fta、 76 Ftcy、18 Ftcy、 19 砕 王QJ! マ FIG 26Bへ FIG、26Aつ゛う 1、事件の表示 平成2年特許願第295194号 2、発明の名称 ネットワーク通信システム 3、補正をする者 事件との関係   特許出願人 住所 名 称  データー・ゼネラル・コーポレーション4、
代理人 住 所  東京都千代田区大手町二丁目2番1号6、補
正の対象

Claims (1)

  1. 【特許請求の範囲】 1、デジタル計算機システムにおいて、 (a)複数のルーチンを含む主処理タスクを実行し、 (b)前記主処理タスクの呼び出しルーチンの実行中に
    サービス・ルーチンを呼び出し、(c)前記呼び出しル
    ーチンを未処理にせずに前記主処理タスクにおける処理
    を更に継続し、 (d)前記サービス・ルーチンを終わらせて通知ルーチ
    ンを識別するジヨブ・データを記憶し、 (e)実行されるべき記憶されたジョブ・データによっ
    て識別された通知ルーチンを生じるために、前記主タス
    ク内のラン・ルーチンを実行する、ステップからなる前
    記計算機システムを操作する方法。 2、請求項1に記載の方法において、前記ラン・ルーチ
    ンが、実行されるべき通知ルーチンがないときは未処理
    にならず、そのようなイベントのときには前記主タスク
    内に直ちに戻る、非ベンド・モードのインターバルにお
    いてランされることを特徴とする計算機システムの操作
    方法。 3、請求項1に記載の方法において、前記ラン・ルーチ
    ンが、実行されるべき通知ルーチンがあるときは未処理
    になる、ベンド・モードにおいてランされることを特徴
    とする計算機システムの操作方法。 4、請求項1に記載の方法において、前記複数の通知ル
    ーチンを識別するジョブ・データが、前記通知ルーチン
    が前記ラン・ルーチンに応答して逐次に実行されるため
    に、少なくとも1つのキューに記憶されることを特徴と
    する計算機システムの操作方法。 5、請求項4に記載の方法において、複数の前記キュー
    があり、該キューは異なる優先順位を持ち、前記通知ル
    ーチンが前記キューの優先順位に従って実行されること
    を特徴とする計算機システムの操作方法。 6、請求項5に記載の方法において、前記通知ルーチン
    及び前記キューの同一のものに記憶された識別データが
    、前記キュー内のそれらが置かれた順でランされること
    を特徴とする計算機システムの操作方法。 7、(i)オペレーティング・システムと、 (ii)前記オペレーティング・システムの下で実行可
    能な複数のルーチンと、 (iii)ランされるべきルーチンを識別するジョブ・
    データに対する少なくとも1つのキューと、を記憶する
    手段を含むデジタル計算機システムにおいて、前記ルー
    チンは第1、第2及び第3のモジュール内のルーチンを
    含み、前記第1のモジュールはユーザ・ルーチンを含み
    、前記第2のモジュールはサービスを提供するサービス
    ・ルーチンを含み、前記第3のモジュールはインターフ
    ェース・ルーチンを含み、 前記ユーザ・ルーチンは、前記サービス・ルーチンから
    のサービスを要求するルーチンを含み、前記インターフ
    ェース・ルーチンは、ジョブ・データを前記キューに置
    くために各サービス・ルーチンから呼び出し得るスケジ
    ュール・ルーチンと、前記キュー上のジョブ・データに
    よって識別された通知ルーチンをランさせるためにユー
    ザ・ルーチンから呼び出し得るラン・ルーチンと、前記
    ルーチンの第1のモジュールに戻り結果を提供する前記
    サービス・ルーチンの少なくとも幾つかとを含み、 サービス・ルーチンの要求に続いて、サービス・ルーチ
    ンからの戻り結果を待つことなしに前記第1のモジュー
    ル内での処理を継続できることを特徴とするデジタル計
    算機システム。 8、請求項7に記載のシステムにおいて、前記ラン・ル
    ーチンが、前記キュー上にジョブ・データが無いとき前
    記ラン・ルーチンを未決にするかしないかを指示するフ
    ラグと共に呼び出し得ることを特徴とするデジタル計算
    機システム。 9、請求項8に記載のシステムにおいて、前記スケジュ
    ール・ルーチンが、ジョブ・データが前記キューにあり
    、それによって該ジョブ・データによって識別された前
    記通知ルーチンをランさせるとき、前記ラン・ルーチン
    に信号するように動作可能であることを特徴とするデジ
    タル計算機システム。 10、請求項8に記載のシステムにおいて、前記第3の
    モジュールが更に、前記ラン・ルーチンが未決にされた
    とき、戻るべきことをそれに信号するようにユーザ・ル
    ーチンによって呼び出し得る起動ルーチンを含むことを
    特徴とするデジタル計算機システム。 11、請求項8に記載のシステムにおいて、前記第1の
    モジュールが、前記ラン・ルーチンが呼び出されるよう
    に前記スケジュール・ルーチンによって呼び出され得る
    起動ルーチンを含むことを特徴とするデジタル計算機シ
    ステム。 12、請求項11に記載のシステムにおいて、各々前記
    通知ルーチンの1つを指示する引き数を取る前記サービ
    ス・ルーチンの少なくとも幾つかが、前記サービス・ル
    ーチンの完了時に前記キュー上にスケジュールされるべ
    き前記通知ルーチンの1つを選択するポインタを渡すた
    めに各ユーザ・ルーチンを可能化することを特徴とする
    デジタル計算機システム。 13、請求項7に記載のシステムにおいて、前記スケジ
    ュール・ルーチンが、ユーザ・ルーチンから追加的に呼
    び出し可能であることを特徴とするデジタル計算機シス
    テム。 14、請求項7に記載のシステムにおいて、複数の前記
    キューがあり、前記スケジュール・ルーチンが、通知ル
    ーチンを識別するキュー・ジョブ・データのどれが置か
    れるべきかを識別する引き数を取ることを特徴とするデ
    ジタル計算機システム。 15、請求項14に記載のシステムにおいて、前記キュ
    ーが異なる優先順位を持ち、前記ラン・ルーチンが、そ
    れらの優先順位に従って通知ルーチンをランさせること
    を特徴とするデジタル計算機システム。 16、請求項15に記載のシステムにおいて、前記ラン
    ・ルーチンが、前記スケジュール・ルーチンによって前
    記キュー上に置かれた順番で、該キュー内の通知ルーチ
    ンをランさせることを特徴とするデジタル計算機システ
    ム。 17、請求項14に記載のシステムにおいて、前記第3
    のモジュールが、キューをセットアップするための、か
    つセットアップされたキューに割り当てられるべき優先
    順位を引き数として取る、割り当てルーチンを含むこと
    を特徴とするデジタル計算機システム。 18、請求項17に記載のシステムにおいて、前記割り
    当てルーチンが、前記ラン・ルーチンが呼び出されるべ
    きことを表すために、前記スケジュール・ルーチンによ
    って呼び出され得るユーザ起動ルーチンを特定する引き
    数を付加的に取ることを特徴とするデジタル計算機シス
    テム。 19、請求項14に記載のシステムにおいて、前記スケ
    ジュール・ルーチンが、どのキューに通知ルーチンが置
    かれるべきかの前記表示と、前記キューに置かれるべき
    前記通知ルーチンへのポインタと、前記サービス・ルー
    チンに渡される複数の引き数とを、引き数として取るこ
    とを特徴とするデジタル計算機システム。 20、請求項7に記載のシステムにおいて、前記サービ
    ス・ルーチンが、各々のイベントに対応するイベント・
    サービス・ルーチンを含み、呼び出された前記イベント
    ・サービス・ルーチンの夫々は、前記対応するイベント
    が生じたときはいつでもジョブ・データを前記キュー上
    に置き、このジョブ・データは、生じたイベントを識別
    する通知ルーチンを識別することを特徴とするデジタル
    計算機システム。 21、請求項7に記載のシステムにおいて、前記サービ
    ス・ルーチンが、選択された時間間隔の経過に対応する
    少なくとも1つのタイマ・サービス・ルーチンを含み、
    該タイマ・サービス・ルーチンは、呼び出されたとき、
    前記時間間隔が経過したときはいつでもジョブ・データ
    を前記キュー上に置き、このジョブ・データは、経過し
    た時間間隔を識別する通知ルーチンを識別することを特
    徴とするデジタル計算機システム。 22、請求項14に記載のシステムにおいて、前記キュ
    ーは、 (a)次と前のキューへのポインタと、 (b)前記キューの優先順位レベルと、 (c)前記キューに対する識別子と、 (d)前記キュー上の最初と最後の通知ルーチンに対す
    る制御ブロックへのポインタとを含むデータ構造によっ
    て確立され、 各制御ブロックは、 (e)次と前の制御ブロックへのポインタと、 (f)前記サービス・ルーチンの完了時に呼び出される
    べき前記通知ルーチンへのポインタと、 (g)前記通知ルーチンへ渡されるべき引き数とを含む
    データ構造を有することを特徴とするデジタル計算機シ
    ステム。 23、請求項14に記載のシステムにおいて、前記キュ
    ーは、複数の異なるオウナーに割り当てられる組の中に
    あり、各オウナーは、その所有するキューに関する前記
    ラン・ルーチンを呼び出し得るのみであることを特徴と
    するデジタル計算機システム。 24、請求項22に記載のシステムにおいて、前記キュ
    ーは、複数の異なるオウナーに割り当てられる組の中に
    あり、各オウナーは、その所有するキューに関する前記
    ラン・ルーチンを呼び出し得るのみであり、前記データ
    構造が更に各オウナーに1つづつの、 (h)次と前のオウナー・アンカー構造へのポインタと
    、 (i)前記オウナーに対するスタック・ベースへのポイ
    ンタと、 (j)複数のステータス・ビットと、 (k)少なくともそのオウナーによって所有された前記
    最初のキューに対する、識別子へのポインタとを含む、
    複数のアンカー構造を含むことを特徴とするデジタル計
    算機システム。 25、請求項24に記載のシステムにおいて、前記ステ
    ータス・ビットが、少なくとも前記ラン・ルーチンが前
    記オウナーに対するジョブ・ルーチンをランさせている
    かどうかを表示するビットと、ジョブ・ルーチンが前記
    オウナーに対してキュー上にスケジュールされているこ
    とを表示するビットと、前記ラン・ルーチンがいつ起動
    ルーチンによって戻りを必要とされたかを表示する起動
    ビットとを含むことを特徴とするデジタル計算機システ
    ム。 26、少なくとも1つの転送するメッセージ及び受け取
    ったメッセージを処理するために動作可能な計算機手段
    を有する、ネットワーク通信システム用のゲートウエイ
    において、前記計算機手段は即座に戻る必要の無いサー
    ビス・ルーチンを含む複数のルーチンを実現し、前記計
    算機システムを操作する方法が、 (a)複数のルーチンを含む主処理タスクを実行し、 (b)前記主処理タスクの呼び出しルーチンの実行中に
    少なくとも1つのサービス・ルーチンを呼び出し、 (c)前記呼び出しルーチンを未処理にせずに前記主処
    理タスクにおける処理を更に継続し、 (d)前記サービス・ルーチンを終わらせて通知ルーチ
    ンを識別するジョブ・データを記憶し、 (e)実行されるべき記憶されたジョブ・データによっ
    て識別された通知ルーチンを生じるために、前記主タス
    ク内のラン・ルーチンを実行する、ステップからなる方
    法。 27、それぞれのアクセス装置に対して働く複数のゲー
    トウエイを含むネットワーク通信システムにおいて、前
    記ゲートウエイはメッセージ・ハンドリング・システム
    を介して相互に通信するように接続されており、 そのゲートウエイが働く前記アクセス装置に対するアク
    セスを提供するネットワーク・インターフェースと、 前記メッセージ・ハンドリング・システムとメッセージ
    をやり取りするメッセージ転送インターフェースと、 前記メッセージ転送インターフェースと前記ネットワー
    ク・インターフェース間での通信を提供し、少なくとも
    フォーマット変換をするために前記ゲートウエイを介し
    て処理データを渡す、ルーチンのライブラリを含むソウ
    トウエア・インターフェースとを含み、 前記ソウトウエア・インターフェース内の前記ルーチン
    が第1、第2及び第3のモジュール内のルーチンを含み
    、前記第1のモジュールはユーザ・ルーチンを含み、前
    記第2のモジュールはサービスを提供するサービス・ル
    ーチンを含み、前記第3のモジュールはインターフェー
    ス・ルーチンを含み、 前記ユーザ・ルーチンは、前記サービス・ルーチンから
    のサービスを要求するルーチンを含み、前記インターフ
    ェース・ルーチンは、ジョブ・データをジョブ・データ
    ・キューに置くために各サービス・ルーチンから呼び出
    し得るスケジュール・ルーチンと、前記キュー上のジョ
    ブ・データによって識別された通知ルーチンをランさせ
    るためにユーザ・ルーチンから呼び出し得るラン・ルー
    チンと、前記ルーチンの第1のモジュールに戻り結果を
    提供する前記サービス・ルーチンの少なくとも幾つかと
    を含み、 サービス・ルーチンの要求に続いて、サービス・ルーチ
    ンからの戻り結果を待つことなしに前記第1のモジュー
    ル内での処理を継続できることを特徴とするネットワー
    ク通信システム。 28、請求項27に記載のシステムにおいて、前記ラン
    ・ルーチンが、前記キュー上にジョブ・データが無いと
    き前記ラン・ルーチンを未決にするかしないかを指示す
    るフラグと共に呼び出し得ることを特徴とするネットワ
    ーク通信システム。 29、請求項28に記載のシステムにおいて、前記第3
    のモジュールが更に、前記ラン・ルーチンが未決にされ
    たとき、戻るべきことをそれに信号するようにユーザ・
    ルーチンによって呼び出し得る起動ルーチンを含むこと
    を特徴とするネットワーク通信システム。 30、請求項27に記載のシステムにおいて、各々前記
    通知ルーチンの1つを指示する引き数を取る前記サービ
    ス・ルーチンの少なくとも幾つかが、前記サービス・ル
    ーチンの完了時に前記キュー上にスケジュールされるべ
    き前記通知ルーチンの1つを選択するポインタを渡すた
    めに各ユーザ・ルーチンを可能化することを特徴とする
    ネットワーク通信システム。 31、請求項27に記載のシステムにおいて、複数の前
    記キューがあり、前記スケジュール・ルーチンが、通知
    ルーチンを識別するキュー・ジョブ・データのどれが置
    かれるべきかを識別する引き数を取ることを特徴とする
    ネットワーク通信システム。 32、請求項31に記載のシステムにおいて、前記キュ
    ーが異なる優先順位を持ち、前記ラン・ルーチンが、そ
    れらの優先順位に従って通知ルーチンをランさせること
    を特徴とするネットワーク通信システム。 33、請求項32に記載のシステムにおいて、前記ラン
    ・ルーチンが、前記スケジュール・ルーチンによって前
    記キュー上に置かれた順番で、該キュー内の通知ルーチ
    ンをランさせることを特徴とするネットワーク通信シス
    テム。 34、請求項31に記載のシステムにおいて、前記スケ
    ジュール・ルーチンが、どのキューに通知ルーチンが置
    かれるべきかの前記表示と、前記キューに置かれるべき
    前記通知ルーチンへのポインタと、前記サービス・ルー
    チンに渡される複数の引き数とを、引き数として取るこ
    とを特徴とするネットワーク通信システム。 35、それぞれのアクセス装置に対して働く複数のゲー
    トウエイを含むネットワーク通信システムにおいて、前
    記ゲートウエイはメッセージ・ハンドリング・システム
    を介して相互に通信するように接続されており、 前記複数のゲートウエイの内の少なくとも1つが、 そのゲートウエイが働く前記アクセス装置に対するアク
    セスを提供するネットワーク・インターフェースと、 前記メッセージ・ハンドリング・システムとメッセージ
    をやり取りするメッセージ転送インターフェースと、 前記メッセージ転送インターフェースに適合するソフト
    ウエア・インターフェースと、 少なくとも1つの転送すべきメッセージと受け取ったメ
    ッセージを処理するためのルーチンを実行する計算機手
    段と、 前記メッセージ転送インターフェースと前記ソフトウエ
    ア・インターフェースの間の通信を提供する前記複数の
    ルーチンと、前記ゲートウエイに固有であって前記ネッ
    トワーク・インターフェースと前記ソフトウエア・イン
    ターフェースの間の通信を提供する前記複数のルーチン
    の内の特定のものとを記憶する手段とを含み、 前記特定のルーチンはネットワーク・インターフェース
    のフォーマット及びプロトコルと前記ソフトウエア・イ
    ンターフェースのフォーマット及びプロトコルの間の変
    換をし、前記メッセージ・ハンドリング・システム上の
    前記ゲートウエイ間の通信はエンベロープ部とメッセー
    ジ部とを含むプロトコル・データ単位で実行され、前記
    エンベロープ部はメッセージ発信者を識別するデータと
    メッセージ受信者を識別するゲートウエイを特定しない
    データとを含み、 前記ルーチンはメッセージ・ハンドリングの間に必要な
    サービスを実現するサービス・ルーチンを含み、 前記計算機手段は、複数の前記ルーチンを含む主処理タ
    スクを実行するように動作可能であり、前記サービス・
    ルーチンの少なくとも1つを呼び出すための前記主処理
    タスクの呼び出しルーチンの実行中に、前記呼び出しル
    ーチンを未処理にせずに前記主処理タスクの実行を更に
    継続し、前記サービス・ルーチンを終わらせて通知ルー
    チンを識別するジョブ・データを記憶し、記憶されたジ
    ョブ・データによって識別された通知ルーチンを実行す
    るように前記主処理タスク内のラン・ルーチンを実行す
    ることを特徴とするネットワーク通信システム。 36、メッセージ処理用であって複数のメッセージの処
    理を並列に実行可能な計算機手段を含み、各メッセージ
    の処理が少なくとも1つのサービス・ルーチンの呼び出
    しを含み、前記サービス・ルーチンが該サービス・ルー
    チンの実行完了後に続いて呼び出されるべき通知ルーチ
    ンを識別する引き数を伴って呼び出さ、前記サービス・
    ルーチンは該サービス・ルーチンの実行完了時にジョブ
    ・データをキュー上にスケジュールし、複数のメッセー
    ジに対する通知ルーチンに適するジョブ・データが前記
    キュー上に置かれ、前記計算機手段が、それらのジョブ
    ・データが前記キュー上に置かれた順番で前記通知ルー
    チンが実行されるようにラン・ルーチンを実行する手段
    を含むことを特徴とするデジタル通信システム。 37、請求項36に記載のシステムにおいて、外部イベ
    ントが前記キュー上に置かれるべきデータに、生じたイ
    ベントを識別させ、前記ラン・ルーチンが更に前記キュ
    ー上に置かれた前記データに応答してイベント通知ルー
    チンを実行させることを特徴とするデジタル通信システ
    ム。 38、請求項36に記載のシステムにおいて、前記イベ
    ントが、外部イベントとタイマ・イベントを含むことを
    特徴とするデジタル通信システム。 39、それぞれのアクセス装置に対して働く複数のゲー
    トウエイを含むネットワーク通信システムにおいて、前
    記ゲートウエイはメッセージ・ハンドリング・システム
    を介して相互に通信するように接続されており、 前記複数のゲートウエイのそれぞれが、 そのゲートウエイが働く前記アクセス装置に対するアク
    セスを提供するネットワーク・インターフェースと、 前記メッセージ・ハンドリング・システムとメッセージ
    をやり取りするメッセージ転送インターフェースと、 前記メッセージ転送インターフェースに適合するソフト
    ウエア・インターフェースと、 少なくとも1つの転送すべきメッセージと受け取ったメ
    ッセージを処理するためのルーチンを実行する計算機手
    段と、 前記メッセージ転送インターフェースと前記ソフトウエ
    ア・インターフェースの間の通信を提供する前記複数の
    ルーチンの汎用のものと、前記ゲートウエイに固有であ
    って前記ネットワーク・インターフェースと前記ソフト
    ウエア・インターフェースの間の通信を提供する前記複
    数のルーチンの内の特定のものとを記憶する手段とを含
    み、前記特定のルーチンはネットワーク・インターフェ
    ースのフォーマット及びプロトコルと前記ソフトウエア
    ・インターフェースのフォーマット及びプロトコルの間
    の変換をし、前記メッセージ・ハンドリング・システム
    上の前記ゲートウエイ間の通信はエンベロープ部とメッ
    セージ部とを含むプロトコル・データ単位で実行され、
    前記エンベロープ部はメッセージ発信者を識別するデー
    タとメッセージ受信者を識別するゲートウエイを特定し
    ないデータとを含むことを特徴とするネットワーク通信
    システム。 40、請求項39に記載のシステムにおいて、前記メッ
    セージ・ハンドリング・システムがCCITT,X40
    0標準に従うことを特徴とするネットワーク通信システ
    ム。 41、請求項39に記載のシステムにおいて、前記メッ
    セージ・ハンドリング・システムがCCITT,X40
    0標準の1988年版に従うことを特徴とするネットワ
    ーク通信システム。 42、請求項41に記載のシステムにおいて、前記ゲー
    トウェイの1つがCCITT,X400標準の1984
    年版ユーザ・エージェントに対するネットワーク・イン
    ターフェースを含むことを特徴とするネットワーク通信
    システム。 43、請求項39に記載のシステムにおいて、前記各ゲ
    ートウエイによってアクセス可能な文書変換装置を含み
    、そのメッセージ部が少なくとも文書の部分からなる任
    意のプロトコル・データ単位の前記エンベロープ部が、
    文書フォーマットを識別する情報を含み、各ゲートウエ
    イの特定のルーチンの前記ライブラリが、受け取ったメ
    ッセージの前記文書フォーマットを識別する受け取った
    情報に応答して、前記文書フォーマットを識別する受け
    取った情報が、前記受け取ったゲートウエイによって提
    供される前記アクセス単位と非互換のフォーマットを識
    別するとき、前記メッセージ部分を自動的に前記文書変
    換装置に与えるルーチンを含み、それによってゲートウ
    エイが受信者が受け取り得る文書フォーマットについて
    考える事なく、任意の文書フォーマットを自由に転送す
    ることを特徴とするネットワーク通信システム。 44、請求項39に記載のシステムにおいて、各ゲート
    ウエイによってアクセス可能な少なくとも1つのディレ
    クトリを含み、前記ライブラリ・ルーチンが、メッセー
    ジの発信者及び受信者を識別するデータを発信者ゲート
    ウエイにおいて前記少なくとも1つのディレクトリに与
    えて前記メッセージ・ハンドリング・システムに従う標
    準形式でそのようなデータの前記エンベロープ部に含ま
    れることを決定するルーチンと、受け取ったプロトコル
    ・データ単位の前記エンベロープ部内の前記メッセージ
    の発信者及び受信者を識別するデータを受信者ゲートウ
    エイにおいて前記少なくとも1つのディレクトリに与え
    て前記受信者ゲートウエイの前記ネットワーク・インタ
    ーフェースによって要求される形式で少なくとも前記メ
    ッセージ受信者を決定するルーチンとを含むことを特徴
    とするネットワーク通信システム。 45、請求項44に記載のシステムにおいて、前記メッ
    セージ・ハンドリング・システム上の総ての前記ゲート
    ウエイによって直接アクセス可能なディレクトリを保持
    する主ディレクトリ装置を含むことを特徴とするネット
    ワーク通信システム。 46、請求項45に記載のシステムにおいて、前記主デ
    ィレクトリ装置が、CCITT,X500標準に従うデ
    ィレクトリであることを特徴とするネットワーク通信シ
    ステム。 47、請求項44に記載のシステムにおいて、少なくと
    も1つのゲートウエイが、前記他のゲートウエイによっ
    て前記メッセージ・ハンドリング・システム及び前記1
    つのゲートウエイを介して間接的にアクセス可能なディ
    レクトリを保持するディレクトリ装置を含むことを特徴
    とするネットワーク通信システム。 48、それぞれのアクセス装置に対して働く複数のゲー
    トウエイを含み、前記ゲートウエイがメッセージ・ハン
    ドリング・システムを介して相互に通信するように接続
    されているネットワーク通信システムにおいて、メッセ
    ージを取り扱う方法が、 (a)各ゲートウエイが働く前記アクセス装置に対する
    アクセスを提供するネットワーク・インターフェースを
    そのゲートウエイに提供し、 (b)前記標準メッセージ・ハンドリング・システムと
    メッセージをやり取りするためのメッセージ転送インタ
    ーフェースを各ゲートウエイに提供し、 (c)前記アクセス装置に適合する特定のルーチンのラ
    イブラリによって、前記ネットワーク・インターフェー
    スに入力されたメッセージを処理して、システム標準フ
    ォーマットで中間メッセージを提供し、 (d)エンベロープ部とメッセージ部とを含む少なくと
    も1つのプロトコル・データ単位に形成される、総ての
    ゲートウエイにおいて実質的に同一のコア・ルーチンの
    ライブラリによって前記中間メッセージを処理し、前記
    エンベロープ部はメッセージの発信者と受信者とを識別
    するデータを含むが前記メッセージ受信者のために働く
    前記ゲートウエイを特定するデータは含まず、前記特定
    のルーチンのライブラリは前記ネットワーク・インター
    フェースのフォーマット及びプロトコルと前記中間メッ
    セージのフォーマット及びプロトコルとの間で変換し、
    前記コア・ルーチンのライブラリは前記中間メッセージ
    のフォーマット及びプロトコルと前記メッセージ転送イ
    ンターフェースのフォーマット及びプロトコルとの間で
    変換し、 (e)前記メッセージ・ハンドリング・システム上の前
    記少なくとも1つのプロトコル・データを前記メッセー
    ジ転送インターフェースを介して転送する、 ステップからなるメッセージを取り扱う方法。 49、請求項48に記載の方法において、更に、 (f)前記メッセージ転送インターフェースを入力する
    プロトコル・データ単位を、中間メッセージを形成する
    ために、前記コア・ルーチンのライブラリによって処理
    し、 (g)前記中間メッセージを、局所メッセージを形成す
    るために、前記特定のルーチンのライブラリによって処
    理し、 (h)前記局所メッセージを前記ネットワーク・インタ
    ーフェースを介してアクセス装置に転送する、 ステップを含むメッセージを取り扱う方法。 50、請求項48に記載の方法において、前記メッセー
    ジ・ハンドリング・システムが、CCITT,X400
    標準の1988年版に従うことを特徴とするメッセージ
    を取り扱う方法。
JP2295194A 1990-10-26 1990-10-31 ネットワーク通信システム Pending JPH04167040A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US07/604,696 US5377191A (en) 1990-10-26 1990-10-26 Network communication system
EP90311828A EP0483421B1 (en) 1990-10-26 1990-10-29 Method of operating a digital computer system
CA002028918A CA2028918A1 (en) 1990-10-26 1990-10-30 Network communication system
AU65664/90A AU6566490A (en) 1990-10-26 1990-10-30 Network communication system
JP2295194A JPH04167040A (ja) 1990-10-26 1990-10-31 ネットワーク通信システム

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US07/604,696 US5377191A (en) 1990-10-26 1990-10-26 Network communication system
EP90311828A EP0483421B1 (en) 1990-10-26 1990-10-29 Method of operating a digital computer system
CA002028918A CA2028918A1 (en) 1990-10-26 1990-10-30 Network communication system
AU65664/90A AU6566490A (en) 1990-10-26 1990-10-30 Network communication system
JP2295194A JPH04167040A (ja) 1990-10-26 1990-10-31 ネットワーク通信システム

Publications (1)

Publication Number Publication Date
JPH04167040A true JPH04167040A (ja) 1992-06-15

Family

ID=27507165

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2295194A Pending JPH04167040A (ja) 1990-10-26 1990-10-31 ネットワーク通信システム

Country Status (5)

Country Link
US (1) US5377191A (ja)
EP (1) EP0483421B1 (ja)
JP (1) JPH04167040A (ja)
AU (1) AU6566490A (ja)
CA (1) CA2028918A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502233A (ja) * 2004-06-07 2008-01-24 ナインティー9.コム ピーティーワイ リミテッド 通信をルーティングする方法および装置

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2783617B2 (ja) * 1989-10-31 1998-08-06 キヤノン株式会社 カラー画像処理装置及び方法
JPH04176235A (ja) * 1990-11-08 1992-06-23 Nintendo Co Ltd ゲーム機用通信アダプタ
US5517636A (en) * 1992-01-07 1996-05-14 Unisys Corporation Platform independent data communication system and method
US20020131574A1 (en) * 1992-04-24 2002-09-19 Alleman James H. Interactive system for optimizing service economy
CA2097564C (en) * 1992-06-16 2004-05-25 David L. Phillips Method of coupling open systems to a proprietary network
US5577202A (en) * 1992-08-24 1996-11-19 Trw Inc. Message handling system for automated gateway between first and second handling systems wherein first envelope is added to a second envelope respectively without changing text
JPH06318945A (ja) * 1993-05-07 1994-11-15 Sharp Corp ネットワーク間相互接続装置
US5828836A (en) * 1993-10-08 1998-10-27 International Business Machines Corporation Networked information communication system
JP3448947B2 (ja) * 1994-04-11 2003-09-22 株式会社日立製作所 リモート印刷システムおよびそのリモート印刷方法
US5845072A (en) * 1994-11-10 1998-12-01 International Business Machines Corporation Method and apparatus for parallel and pipelining transference of data between integrated circuits using a common macro interface
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
US5706286A (en) * 1995-04-19 1998-01-06 Mci Communications Corporation SS7 gateway
US5742845A (en) 1995-06-22 1998-04-21 Datascape, Inc. System for extending present open network communication protocols to communicate with non-standard I/O devices directly coupled to an open network
US5706434A (en) * 1995-07-06 1998-01-06 Electric Classifieds, Inc. Integrated request-response system and method generating responses to request objects formatted according to various communication protocols
US5832506A (en) * 1996-03-29 1998-11-03 Intel Corporation Directory for network servers
US5940598A (en) * 1997-01-28 1999-08-17 Bell Atlantic Network Services, Inc. Telecommunications network to internetwork universal server
US6219692B1 (en) 1997-03-21 2001-04-17 Stiles Invention, L.L.C. Method and system for efficiently disbursing requests among a tiered hierarchy of service providers
US6330608B1 (en) 1997-03-31 2001-12-11 Stiles Inventions L.L.C. Method and system of a computer system for establishing communications between a service provider and a central service factory and registry in a computer system
US6072806A (en) * 1997-05-02 2000-06-06 Aspect Telecommunications Corporation Message-based communication system
US5974449A (en) * 1997-05-09 1999-10-26 Carmel Connection, Inc. Apparatus and method for providing multimedia messaging between disparate messaging platforms
US6381633B2 (en) 1997-05-09 2002-04-30 Carmel Connection, Inc. System and method for managing multimedia messaging platforms
US5987516A (en) * 1997-10-07 1999-11-16 Nortel Networks Corporation Method of gathering information pertaining to calls between nodes in a connection-oriented network
US7265853B1 (en) * 1997-10-17 2007-09-04 Stamps.Com, Inc. Postage server system and method
US6118864A (en) * 1997-12-31 2000-09-12 Carmel Connection, Inc. System and method for providing communication on a wide area network
US6122666A (en) * 1998-02-23 2000-09-19 International Business Machines Corporation Method for collaborative transformation and caching of web objects in a proxy network
US6072865A (en) * 1998-03-23 2000-06-06 Mci Communications Corporation Enhanced call forwarding with termination notification
US6205414B1 (en) * 1998-10-02 2001-03-20 International Business Machines Corporation Methodology for emulation of multi-threaded processes in a single-threaded operating system
US6400810B1 (en) * 1999-07-20 2002-06-04 Ameritech Corporation Method and system for selective notification of E-mail messages
ES2237022T3 (es) * 1999-12-02 2005-07-16 Sony International (Europe) Gmbh Mensajeria instantanea.
US6487278B1 (en) 2000-02-29 2002-11-26 Ameritech Corporation Method and system for interfacing systems unified messaging with legacy systems located behind corporate firewalls
US6498835B1 (en) * 2000-02-29 2002-12-24 Ameritech Corporation Method and system for providing visual notification in a unified messaging system
US6438215B1 (en) 2000-02-29 2002-08-20 Ameritech Corporation Method and system for filter based message processing in a unified messaging system
US8099501B1 (en) * 2000-06-15 2012-01-17 Unisys Corporation Adapter architecture
US7369648B1 (en) 2000-07-06 2008-05-06 Purplecomm, Inc. Apparatus and method for PBX-integrated unified messaging services on a switched backbone
FR2825217B1 (fr) * 2001-05-25 2005-09-23 Bruno Marie Robin Procede et dispositif d'acheminement de courrier avec conversion entre une forme physique et une forme electronique
US20030014516A1 (en) * 2001-07-13 2003-01-16 International Business Machines Corporation Recovery support for reliable messaging
US20030023775A1 (en) * 2001-07-13 2003-01-30 International Business Machines Corporation Efficient notification of multiple message completions in message passing multi-node data processing systems
US7426486B2 (en) * 2001-10-31 2008-09-16 Call-Tell Llc Multi-party reporting system and method
US7212301B2 (en) * 2001-10-31 2007-05-01 Call-Tell Llc System and method for centralized, automatic extraction of data from remotely transmitted forms
US8151003B2 (en) * 2002-02-05 2012-04-03 International Business Machines Corporation System and method for routing data by a server
GB2429371B (en) * 2004-04-26 2008-03-26 J P Morgan Chase Bank System and method for routing messages
US7698351B1 (en) * 2006-04-28 2010-04-13 Netapp, Inc. GUI architecture for namespace and storage management
US8755372B2 (en) * 2009-04-27 2014-06-17 Five9, Inc. Secure customer service proxy portal
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US9280541B2 (en) 2012-01-09 2016-03-08 Five9, Inc. QR data proxy and protocol gateway

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3676846A (en) * 1968-10-08 1972-07-11 Call A Computer Inc Message buffering communication system
US4475190A (en) * 1982-05-27 1984-10-02 At&T Bell Laboratories Method and apparatus for controlling ports in a digital conference arrangement
US4475189A (en) * 1982-05-27 1984-10-02 At&T Bell Laboratories Automatic interactive conference arrangement
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4562550A (en) * 1983-11-01 1985-12-31 General Electric Company Remote load control relay processor
US4620283A (en) * 1983-11-29 1986-10-28 Lehigh University Programmable load controller
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US4734931A (en) * 1986-03-21 1988-03-29 American Telephone And Telegraph Company And At&T Information Systems Inc. Integrated calling directory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502233A (ja) * 2004-06-07 2008-01-24 ナインティー9.コム ピーティーワイ リミテッド 通信をルーティングする方法および装置
JP4724717B2 (ja) * 2004-06-07 2011-07-13 ナインティー9.コム ピーティーワイ リミテッド 通信をルーティングする方法および装置

Also Published As

Publication number Publication date
EP0483421B1 (en) 1997-04-02
CA2028918A1 (en) 1992-05-01
AU6566490A (en) 1992-06-25
EP0483421A1 (en) 1992-05-06
US5377191A (en) 1994-12-27

Similar Documents

Publication Publication Date Title
JPH04167040A (ja) ネットワーク通信システム
US5566337A (en) Method and apparatus for distributing events in an operating system
EP0543512A2 (en) Multiprocessor system
US5513328A (en) Apparatus for inter-process/device communication for multiple systems of asynchronous devices
US20100153957A1 (en) System and method for managing thread use in a thread pool
EP0649545B1 (en) Virtual radio interface
US10303529B2 (en) Protocol for communication of data structures
US6532498B1 (en) Method and system for event notification between software application program objects
US5381346A (en) Virtual data source for a radio transceiver
US7076551B2 (en) Using remote procedure calls to manage co-processor resources
US5363315A (en) Method of communications between and within virtual radio interface standard layers
CN109558235A (zh) 一种处理器的调度方法、装置及计算机设备
EP1265148B1 (en) Using software interrupts to manage communication between data processors
US7496924B2 (en) Dispatching messages among registered software modules in telecommunications system including telephony internet server coupled between packet network and PBX
US20030147383A1 (en) Object communication services software development system and methods
DE69030382T2 (de) Verfahren zum Betreiben eines Digitalrechnersystems
CA1307854C (en) Local area print server
JP2861195B2 (ja) ダウンローディングシステム
JPH04270535A (ja) 通信制御方法
Thielmans et al. Implementation issues of TRANS-RTXc on the Transputer
JPH0546571A (ja) 分散処理システム
Goel et al. Asynchronous messaging using message-oriented-middleware
Baek et al. Interaction Contortion a Distributed Multiagent System
Choi et al. Message-based agent communications in a tightly coupled multiagent system
JP2000267960A (ja) プロセス間のパケット通信方法及びパケット通信装置