JPH07182174A - リモートプログラミングの実施方法 - Google Patents

リモートプログラミングの実施方法

Info

Publication number
JPH07182174A
JPH07182174A JP6179767A JP17976794A JPH07182174A JP H07182174 A JPH07182174 A JP H07182174A JP 6179767 A JP6179767 A JP 6179767A JP 17976794 A JP17976794 A JP 17976794A JP H07182174 A JPH07182174 A JP H07182174A
Authority
JP
Japan
Prior art keywords
agent
place
computer
class
computers
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
JP6179767A
Other languages
English (en)
Inventor
James E White
イー. ホワイト ジェイムス
Christopher S Helgeson
エス. ヘルゲッサン クリストファー
Douglas A Steedman
エイ. ステードマン ダグラス
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.)
General Magic Inc
Original Assignee
General Magic Inc
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 General Magic Inc filed Critical General Magic Inc
Publication of JPH07182174A publication Critical patent/JPH07182174A/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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/465Distributed object oriented systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【構成】 コンピュータネットワークにおけるリモート
プログラミングの実施方法は、エージェントクラス及び
プレイスクラスを含む複数のオブジェクト指向クラスを
定義し、オブジェクト指向クラス、オブジェクト指向ク
ラスのサブクラス及び go オペレーションを含む、コン
ピュータプロセスのためのインストラクションを形成
し、コンピュータネットワーク中のプロセッサによって
前記インストラクションをインタープリートし、 go オ
ペレーションに応答して、エージェントプロセスがプレ
イスプロセスに転送され、エージェントプロセスが、エ
ージェントクラスの1つのメンバであり、プレイスプロ
セスはプレイスクラスの1つのメンバである。 【効果】 本発明のインストラクションは、オペレーテ
ィングシステム及びハードウェアが異なるコンピュータ
システムにおいても、移動され実行できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、リモートプログラミン
グの実施方法に関し、特に分散型計算環境であって、オ
ブジェクト指向環境において複数のプロセスがつくり出
され、コンピュータネットワークを通じてそれ自身の運
動を差し向けるようにしたリモートプログラミングの実
施方法等に関する。
【0002】
【従来の技術】今日多くの異なった種類のコンピュータ
システムが利用されているが、これらのシステムの多く
は、図1に示すように、基本的なコンポーネントから構
成されている。典型的には、コンピュータシステム20
は中央処理ユニット装置(以下、CPUという)を備
え、このCPU10は、入力バス11を介して入力モジ
ュール12に接続されるとともに、出力バス13を経て
出力モジュール14に接続されている。また、CPU1
0は、データバス15、16を経てメモリユニット17
にも接続されている。
【0003】CPU10は、制御及び計算機能を有す
る。入力モジュール12及び出力モジュール14は、コ
ンピュータのユーザーとCPU10間の通信のために用
いられる。入力モジュール12は、情報をCPU10に
供給する。典型的な入力モジュールはキーボード及びマ
ウスである。出力モジュール14は、CPU10からの
情報を表示する。典型的な出力モジュールはビデオディ
スプレイモニタ、プリンタ、プロッタ及びその他の視覚
表示手段である。入力モジュール12及び出力モジュー
ル14は、ときには、インプット/アウトプット(I/
O)ユニットとも呼ばれる。
【0004】メモリユニット17は、典型的には2種の
一般的な形式の情報、すなわちインストラクション(命
令)とデータを収容している。コンピュータプログラム
は、ある特定の機能を実現するためにコンピュータによ
って実行される一連のインストラクションである。メモ
リユニット17のデータは、CPU10において実行さ
れているコンピュータプログラムからのインストラクシ
ョンに応答して、CPU10によって処理される。実行
中のコンピュータプログラムは、コンピュータプロセス
(computer process)と呼ばれる。
【0005】メモリユニット17は、典型的には、マス
メモリ17A(ときには二次メモリとも呼ばれる)と、
メインメモリ17Bとを備えている。メインメモリ17
Bは、CPU10によって現に実行されているプログラ
ムの少なくとも一部分と、そのプログラムによって必要
とされるデータを記憶するために(通常)用いられる。
マスメモリ17A、例えば磁気ディスクや磁気テープ
は、プログラム、データ、又はCPU10によって直ち
には必要とされないか若しくはメインメモリ17Bの大
きさの制限のためにメインメモリ17B中に収容するこ
とのできないプログラム又はデータの一部分を記憶する
ために用いられる。
【0006】コンピュータのオペレーティングシステム
は、CPU10、入力モジュール12、出力モジュール
14、マスメモリ17A、メインメモリ17Bを連動さ
せ、ユーザーアプリケーション(以下に定義する)とコ
ンピュータハードウェア間のインターフェイスを行なう
コンピュータプロセスである。ここで使用されているコ
ンピュータハードウェアという用語は、コンピュータシ
ステムの物理的なコンポーネントを意味する。コンピュ
ータシステムを正しく動作させるためにはオペレーティ
ングシステムが必要であるから、オペレーティングシス
テムは、コンピュータシステムのパワーアップ時にメイ
ンメモリ17Bにロードされ(ブーティングと呼ばれる
プロセス)、コンピュータシステムが最終的に不作動に
されるまでメインメモリ17Bに留められて実行され
る。
【0007】ユーザーアプリケーションは、一般に、オ
ペレーティングシステムとは別に実行され、オペレーテ
ィングシステムとは別のコンピュータプロセスである。
ユーザーアプリケーションは、ソースコードすなわち人
にわかりやすい形のコンピュータインストラクションと
して時間中のある時点に置いて実行される。このソース
コードは、コンピュータシステム20、特にCPU10
によって理解される形のオブジェクトコードに翻訳さ
れ、すなわちコンパイルされる。いくつかのオブジェク
トコードモジュールは、コンピュータシステム20のC
PU10によって実行可能な単一のイメージとなるよう
にリンクされる。プログラムは、この実行可能なイメー
ジをメインメモリ17Bにコピーし、この実行可能なイ
メージのインストラクションを1つずつ実行するように
CPU10に指示することにより、実行される。前述し
たように、このような実行状態にあるコピュータプログ
ラムは、プロセス(process )と呼ばれる。
【0008】コンピュータシステム20で実行されてい
るプロセスのインストラクションは、一般に、コンピュ
ータシステムのリソース(資源)を操作(マニュピュレ
ート)する。例えば、これらのインストラクションは、
マスメモリ17Aに記憶されているデータを操作し、入
力モジュール12からデータを受け入れ、又は出力モジ
ュール14にデータを表示することができる。第1のコ
ンピュータシステムにおいて実行されているあるプロセ
スは、第2のコンピュータシステムのリソースを操作す
ることができるコンピュータインストラクションを発生
させるように構成されている。
【0009】2以上のコンピュータシステム間でデータ
を転送することができるように、2以上のコンピュータ
システムを接続することは、(コンピュータ通信技術に
おいて、)周知である。このように接続された2以上の
コンピュータシステムはネットワークと呼ばれる。この
ネットワークにおいて、各々のコンピュータシステム
は、データの送受信を行なう入力/出力装置として(他
のコンピュータシステムを)取り扱う。
【0010】第1のコンピュータシステムにおいて実行
されている第1のプロセスは、第2のコンピュータシス
テムにおいて実行されている第2のプロセスにインスト
ラクションを送出することができる。その場合、第2の
プロセスは、第1のプロセスから受取ったインストラク
ションに従って第2のコンピュータシステムのリソース
を操作する。第2のプロセスは、クライアント(clien
t)プロセスと呼ばれる第1のプロセスにサービスを提
供するものであるため、サーバー(server)プロセスと
呼ばれる。この提供されるサービスは、第2のコンピュ
ータシステムのリソースのマニュプレーションである。
【0011】多くのコンピュータ通信システムでは、リ
モートプロシージャコーリング(remote procedure cal
ling)を実行する。リモートプロシージャコーリングに
おいては、クライアントプロセス(第1のコンピュータ
システムにおいて実行されており、第2のコンピュータ
システムのデータを操作することを求める)は、サーバ
ープロセス(第2のコンピュータシステムにおいて実行
され、クライアントプロセスからの要求に応答してデー
タを操作する)にアクションを要求する。サーバープロ
セスは、クライアントプロセスのために、不可避的に有
限なオペレーションリストのどれかを遂行する。クライ
アントプロセスによって要求された正確な機能が、サー
バープロセスによって遂行される特別な操作の中に含ま
れないことが(しばしば)ある。サーバープロセスの定
義されていない機能のを実行には、サーバープロセスへ
のいくつかの要求及びサーバープロセスからの応答を必
要とし、これは通信メディアの実質的な使用を必要と
し、それによってコスト及び時間が非常に増大する。
【0012】図2に示すフローチャート(ロジックフロ
ーダイアグラム)は、リモートプロシージャコーリング
の具体例を示している。このフローチャートは、図3に
示すネットワーク256を介して相互接続されたコンピ
ュータシステム20A、20Bのコンテキスト(contex
t) によって説明される。ある与えられたパターン例え
ば”TMP”に終わるファイル名に名前が一致し、少な
くても30日の間変更されなかったコピュータシステム
20B上の全てのファイルを、コンピュータシステム2
0A上のクライアントプロセス252が削除するものと
想定する。クライアントプロセス252は、コンピュー
タシステム20Bにおいて実行されているサーバープロ
セス254に、ステップ21において、全てのファイル
をリストする要求を送出する図2に示す。矢印260
(図3)はこの要求を表わしている。処理はステップ2
1(図2)からステップ22に進み、このステップ22
において、クライアントプロセス252(図3)は、矢
印262に示すように、サーバープロセス254からそ
のリストを受け取る。ステップ2122(図2)での処
理はネットワークの通信メディアを介しての2回の情報
転送(トランスファ)を含む。
【0013】図2において、2重の矩形は、ネットワー
ク256(図3)を横断する情報転送を表している。コ
ンピュータ20A又はコンピュータ20B内においての
インストラクションの実行には数ナノ秒ないし数マイク
ロ秒を必要とするのに対し、ネットワーク256を介し
ての情報転送には、ネットワーク256の形態及び情報
量に依存するが、一般に数秒から数分を必要とする。あ
るネットワークにおいては、大量のデータの転送に1時
間以上もかかることがある。
【0014】処理は、ステップ22(図2)からステッ
プ(FOR EACT FILENAME) 23に移行する。ステップ2
3とステップ(NEXT)23a、23b、23cは、ファ
イル名リスト中の各ファイル名がクライアントプレセス
によって処理されるループを形成している。リストの各
ファイル名に対する処理は、ステップ23から判定ステ
ップ24に進み、この判定ステップ24において、クラ
イアントプレセス252(図3)は、ファイル名をパタ
ーンと比較する。もしファイル名がパターンと一致しな
い場合には、処理は、判定ステップ24(図2)からス
テップ23aを介してステップ23に戻り、その次のフ
ァイル名が処理される。
【0015】逆に、ファイル名がパターンに一致してい
る場合には、処理は判定ステップ24からステップ25
に進む。ステップ25において、クライアントプロセス
252(図3)は、矢印264で示すように、そのファ
イル名が一致したファイルの最後に変更された日付を用
意する旨のインストラクションをサーバープロセス25
4に送出する。処理は、ステップ25(図2)からステ
ップ26に移行し、このステップ26において、クライ
アントプロセス252(図3)は、矢印266で示すよ
うに、要求した日付をサーバープロセス24から受取
る。ステップ25、26(図2)は、それぞれこのよう
な一致するファイル名についてのネットワークの通信メ
ディアを介する2以上の転送を含む。
【0016】処理は、ステップ26から判定ステップ2
7に進み、この判定ステップ27において、クライアン
トプロセス252(図3)は、受信された日付と現在の
日付から30日を引いた日付とを比較する。そして、フ
ァイルが前の30日以内に変更されていたときは、処理
は、判定ステップ27(図2)からステップ23bを介
してステップ23に戻り、このステップ23において、
次のファイル名が処理される。
【0017】逆に、30日以前にそのファイルが変更さ
れていなかったとき、処理は、判定ステップ27からス
テップ28に進む。
【0018】ステップ28において、クライアントプロ
セス252(図3)は、矢印268で示すように、コン
ピュータシステム20B内からファイルを削除するイン
ストラクションをサーバープロセス254に送出する。
処理は、ステップ28からステップ29(図2)に進
み、このステップ29において、クライアントプロセス
252(図3)は、矢印270で示すように、その削除
処理に対するアクノレジメント(acknowledgement) を
サーバープロセス254から受ける。このように、ステ
ップ28、29(図2)は、削除されるべき各ファイル
についてのネットワーク256(図3)を介する2つの
別の転送を含む。
【0019】処理は、ステップ29からステップ23c
を介してステップ23に戻る。そしてリスト中の全ての
ファイル名が処理されたならば、処理は、ステップ23
からステップ20dに進み、このステップ20bにおい
て処理が終了する。この図2に示すフローチャートのよ
うに処理には、ネットワーク256を介する多数の情報
転送を必要とする。このようにネットワークの通信メデ
ィアを過度に使用することは時間及びコストの浪費にな
る。
【0020】リモートプロシージャコーリングの別のア
プローチは、リモートプログラミング(remote program
ming)である。リモートプログラミングにおいて、クラ
イアントプロセスと呼ばれる第1のコンピュータシステ
ムにおいて実行されているプロセスは、第2のコンピュ
ータシステムにおいて実行されているサーバープロセス
に1つのインストラクションのリストを送出する。そし
て、これらのインストラクションは、サーバープロセス
によって実行され、クライアントプロセスの目的が達せ
られる。サーバープロセスが実行するようにされている
これらのインストラクションは、ある程度の普遍性をも
たねばならない。すなわち、これらのインストラクショ
ンはある程度の決定(デシジョンメイキング)能力を備
えなければならない。
【0021】図4に示すフローチャートは、リモートプ
ログラミングの具体例を示している。図2、図3におい
て説明した具体例をリモートプログラミング環境におい
て実現するには、クライアントプロセス352(図5)
は、ステップ31(図4)においては、このステップ3
1の詳細なフローチャートに示すインストラクションか
ら構成されてるプログラムを作成する。このステップ3
1の詳細について以下に説明する。
【0022】処理は、ステップ31からステップ32に
進み、ステップ32において、プログラムは、矢印35
8で示すように、ネットワーク356を介しコンピュー
タ30B(図5)に転送される。処理は、ステップ32
(図4)からステップ33に進みこのステップ33にお
いて、プログラムはコンピュータ30Bによって実行さ
れる。この実行の中にはプログラムはコンピュータ30
B上のプロセス352A(図5)となっている。そし
て、プロセス352Aにおいて、プログラムのインスト
ラクションは、ステップ31のフローチャートに従って
実行される。
【0023】ステップ31−B(図4)において、ファ
イル名のリストが作成される。処理は、ステップ31−
Bからステップ(FOR EACT FILENAME )31−Cに移行
する。ステップ31ーCとステップ(NEXT)31−H、
31−I、31ーJは、ファイル名リスト中の各ファイ
ル名を処理するループを形成している。各ファイル名に
ついて、ステップ31−Cから判定ステップ31−Dに
進み、この判定ステップ31−Dにおいて、ファイル名
がパターンと比較される。ファイル名がパターンと一致
しないときは、処理は判定ステップ31ーDからステッ
プ31ーCを介してステップ31−Cに戻る。逆に、フ
ァイル名がパターンに一致するときは、処理は、判定ス
テップ31−Dからステップ31−Eに移行する。
【0024】ステップ31−Eにおいて、プロセス35
2Aは、一致したファイル名を有するファイルの最後の
変更の日付けを検索する。処理は、ステップ31−Eか
ら判定ステップ31−Fに進み、このステップ31−F
において、日付が現在の日付から30日を引いたものと
比較される。
【0025】ファイルの最後の変更の日付は、サーバー
プロセス354(図5)から検索される。最後の変更の
日付が30日以前の日付よりも新しいときには、処理
は、判定ステップ31−F(図4)からステップ31−
Iを介してステップ31ーCに戻る。逆に、最後の変更
の日付が30日以前の日付よりも更に以前であったとき
には、処理は、判定ステップ31−Fからステップ31
−Gに進む。ステップ31−Gにおいて、サーバープロ
セス354(図5)に適切なインストラクションを送出
することによってファイルが削除される。処理はステッ
プ31−G(図4)からステップ31−Jを介してステ
ップ31−Cに戻る。リスト中の全てのファイル名が処
理されたならば、処理は、ステップ31−Cからステッ
プ31−Kに進み、ここでプロセス352Aが完了す
る。矢印360(図5)に示すように、プロセス352
Aとサーバープロセス354間の全ての相互作用は、ネ
ットワーク356を使用することなく、全てコンピュー
タ30B中において起る。
【0026】プログラムが成功のうちに終了した後、処
理は、ステップ33からステップ34(図4)に移行
し、このステップ34においてサーバープロセス354
(図5)は、矢印362によって示すようにプログラム
が成功のうちに終了したことをクライアントプロセス3
52に報告する。このリモートプログラミングプロシー
ジャがネットワーク通信メディアをただ2回しか使用し
ていないことに注意されたい。第1回の使用は、矢印3
58によって示すようにインストラクションリスト又は
プログラムをサーバープロセス354に送出する使用で
あり、第2の使用は、矢印362によって示すように、
プログラムが成功のうちに終了したことの通知をサーバ
ープロセス354から受ける使用である。サーバープロ
セス354の開発者によって明白に提供されていなかっ
たり、おそらくは予想さえもされていなかったオペレー
ションを、クライアントプロセス352がサーバープロ
セス354に要求しうることにも注意されたい。
【0027】しかしリモートプログラミングは、2以上
のコンピュータシステム上のデータの操作を連係化する
ことをコンピュータプレセスが求める場合に、リモート
プロシージャコーリングの場合と同様の非効率に遭遇す
る。一例としてコンピュータXのプロセスは、コンピュ
ータXのどれかのファイルと同一の名前、最後の変更の
日付及びサイズを有するコンピュータシステムY又はコ
ンピュータシステムZの全てのファイルの削除を求める
かもしれない。図4、図5について前述したサーバープ
ロセス354は、サーバープロセスが実行しているコン
ピュータシステムすなわちコンピュータシステムY上の
リソースを直接操作することができるので、サーバープ
ロセスは、遠隔プロセスコーリングに関連して前述した
非効率を生ずることなしには、1以上のコンピュータシ
ステムを横断するデータマネージメントを連係化するこ
とはできない。
【0028】遠隔プログラムに対する改良は、C. Danie
l Wolfson, et al., "IntelligentRouters", 9th Inter
national Conference on Distributed Computing Syste
msat pp. 371-375 (1989) に記載されている。Wolfson
等は、あるネットワーク内においてあるプロセスが1つ
のコンピュータシステムから別のコンピュータシステム
に移行することのできるシステムを開示している。この
プロセスは、実行されたときにプロセスの移動を生じる
インストラクションを送出することによってネットワー
クを通るそれ自身の運動を指示する。このインストラク
ションはそのプロセスが移動するべきコンピュータシス
テムを指定する。
【0029】しかしWolfson 等によって開示された形式
による解決では、機能性が制限される。プロセス(複
数)には、それぞれのプロセスが移動したコンピュータ
システムの特別の要求に適合した挙動を示すように構成
されることが要求される。プロセス相互が通信すること
はできない。その代わりにプロセスは、それぞれのプロ
セスが実行されているコンピュータシステムのマスメモ
リにデータを直接に記憶させたりこのマスメモリからデ
ータを直接検索したりする。あるプロセスが別のプロセ
スと相互作用をしうるのは、両方のプロセスがマスメモ
リ中においてメッセージを記憶させたり検索したりする
正確なロケーションを知っている場合に限られる。
【0030】Wolfson 等によって開示されたシステムは
いかなる安全性(セキュリティ)も与えない。すなわ
ち、Wolfson 等のシステムがある1つのプロセスを別の
プロセスと相互作用することを許容した限りにおいて、
悪意のあるプロセスが第2プロセスの実行を妨げるかも
しれない。更に、Wolfson 等などによって開示されたシ
ステムのプロセスに供給されるインストラクションのセ
ットは非常に限られている。単に文字別データと実数を
現す数値データとが供給されるに過ぎない。
【0031】Wolfson 等によって開示されたシステムと
同様の別のシステムは、C. Tsichritzis et al., "KNO
s:KNowledge Acquisition, Dissemination, and Maniqu
lation Objects", ACM Trans. on office Information
Systems, vol.5, no. 1, pp.96-112 (1987) に開示され
ている。Wolfson 等に記載されたこのシステムは、オブ
ジェクト指向プログラミングの一般性を、Wolfson 等に
よって記述されたシステムに付加したものである。
【0032】オブジェクト指向プログラミングは、デー
タ及びインストラクションをオブジェクトに組織化し、
ここでデータはオブジェクトの状態を現し、インストラ
クションはそのオブジェクトが遂行しうるタスク又はオ
ペレーションに分類される。オブジェクト指向プログラ
ミングは、コンピュータによって解決された問題がより
容易に一連のコンピュータインストラクションに帰着さ
れうるような非常に有用な概念的なフレームワークを現
している。
【0033】オブジェクト指向環境においてつくりださ
れたオブジェクトはクラスに分類される。ある1つのク
ラスのオブジェクトは同一の構造の状態を持ち、同一の
オペレーションを遂行する。 Tsichritzis等によって開
示されたシステムは、クラスの定義の可動性を与えない
ので、 Tsichritzis等によって記載された環境内におい
てつくりだされたある特定のクラスのオブジェクトは、
その特定のクラスがそれに対し定義されたコンピュータ
システムに向かって移動しうるにすぎない。又Tsichrit
zis等によって記述された環境内のオブジェクトは、そ
れらのオブジェクトがその内部において移動しうるネッ
トワークのコンピュータシステムが同質的であることを
要求する形態において表されている。
【0034】Tsichritzis等によってによって教示され
たシステムは、更に、第1のプロセスすなわちヘッドプ
ロセスがそれ自身のコピーをつくりだすことができるた
めのインストラクションを更に記述している。これらの
コピーはリム(手足)と呼ばれる。 Tsichritzis等は、
ヘッドプロセスの指令のもとにリムが遠隔のコンピュー
タシステムに送られることを教示する。しかしこれらの
リムは活性ではない。リムについてのコンピュータのイ
ンストラクションは、ヘッドプロセスの指示においての
み実行される。遠隔のコンピュータシステムに位置され
たリムのプロセスの活動性の指示には、ヘッドプロセス
がネットワーク通信メディアを横断してリムに指示を送
出することを要求するので、大きなネットワークの場
合、時間及びコストの浪費が大きくなる。
【0035】Tsichritzis等によってキョウジュされた
システムにおいての別の非効率は、小型のコンピュータ
例えばパーソナルコンピュータが大型のコンピュータ例
えば主フレームコンピュータを経て大きなネットワーク
に接続されている場合に見られる。一例として、ネット
ッワークのいろいろなコンピュータに多くのリムを送出
する場合、主コンピュータは、小型のコンピュータと大
型のコンピュータとの間に多くの同一のリムを送らなけ
ればばらない。ヘッドプロセスのコピーであるリムは、
非常に大きくなることがあり、このようなシステムにお
いての非効率は非常に大きくなることがある。
【0036】Tsichritzis等は、第2のプロセスに第1
のプロセスへの参照をあたえることによって第1のプロ
セスが第2のプロセスと通信するシステムを開示してい
る。参照は、あるオブジェクトを特定化しその特定化さ
れたオブジェクトへのアクセスを許容するデータであ
る。第2のプロセスは第1のプロセスへの参照を含んで
いるので、第2のプロセスは、第1のプロセスに含まれ
る特定のコンピュータインストラクションを第1のプロ
セスが実行することを要求することができる。しかし、
第1のプロセスが第2のプロセスへの参照を同時に取得
することなしに第1のプロセスへの参照を第2のプロセ
スに与えるので、第2のプロセスは第1のプロセスへの
参照を持ち、第1のプロセスは第2のプロセスへの交互
的なアクセスを持たない。このようなプロセスは悪意の
あるプロセス、すなわち悪意のあるプログラマによって
設計されたプロセス、あるいは、他のプロセスを損傷さ
せ、交互的なアクセスを許容することなく第2のプロセ
スへのアクセスを行うように、不注意に設計されたシス
テムを許容する。
【0037】
【発明が解決しようとする課題】したがって、オブジェ
クト及びプロセスの新しいクラスを作りだし、それらの
新しいクラスのためのクラス定義を含まないネットワー
ク内のコンピュータシステムに転送し処理するようなシ
ステムは、Wolfson 等及び Tsichritzis等による業績に
かかわらず、どちらにも開示されていないことになる。
更に、Wolfson 等も、 Tsichritzis等も、複雑で階層的
なセキュリティシステムを具体化するメカニズムは開示
していない。更に、Wolfson 等も、 Tsichritzis等も、
互いに相互作用は行うことができるが、相互的なアクセ
スを許容することなしに他のプロセスへのアクセスを得
ることができるコンピュータシステムは開示しうること
ができない。
【0038】又、あるプロセスのいくつかの事実的なク
ローンをつくりだしてそれらのクローンをそれぞれのコ
ンピュータシステムに送り込むことによっていくつかの
コンピュータシステムに同時に移行することのできるコ
ンピュータプロセスは、Wolfson 等にも Tsichritzis等
にも開示されていない。 Tsichritzis等によって教示さ
れたリムは、コンピュータプロセスが遠隔コンピュータ
システムにおいてリムの動作を制御するので、自律的で
はない。更に、Wolfson 等にも Tsichritzis等にも、コ
ンピュータ通信メディアを横断する冗長な情報の転送を
最小にするそれぞれのコンピュータシステムへのクロー
ンの効率的な転送を開示していない。
【0039】
【課題を解決するための手段】本発明は、エージェント
クラス及びプレイスクラスを含む複数のオブジェクト指
向クラスを定義し、前記オブジェクト指向クラス、該オ
ブジェクト指向クラスのサブクラス及び go オペレーシ
ョンを含む、コンピュータプロセスのためのインストラ
クションを形成し、該コンピュータネットワーク中のプ
ロセッサによって前記インストラクションをインタープ
リートし、前記 go オペレーションに応答して、エージ
ェントプロセスがプレイスプロセスに転送され、前記エ
ージェントプロセスが、前記エージェントクラスの1つ
のメンバであり、前記プレイスプロセスは前記プレイス
クラスの1つのメンバであることを特徴とする。
【0040】本発明は、前記エージェントプロセスにお
いて前記 go オペレーションを形成することを特徴とす
る。
【0041】本発明は、前記プレイスのサブプレイスを
形成し、前記サブプレイスは前記プレイスクラスの1つ
のメンバであり、前記プレイスは前記サブプレイスの1
つのスーパープレイスであることを特徴とする。
【0042】本発明は、前記エージェントプロセスをオ
ブジェクトのオーナーとして指定することを特徴とす
る。
【0043】本発明は、前記オブジェクト中にダイジェ
ストを形成することを特徴とする。
【0044】本発明は、前記オブジェクトの代わりに前
記プレイスプロセスにおいて第2のオブジェクトを相互
変換し、前記第2のオブジェクトは、前記ダイジェスト
と同等の第2のダイジェストを有し、前記第1のオブジ
ェクトは前記プレイスプロセスに転送されないことを特
徴とする。
【0045】本発明は、前記プレイスプロセスをチケッ
ト手段によって指定することを特徴とする。
【0046】本発明は、前記チケット手段を前記エージ
ェントプロセス内において形成することを特徴とする。
【0047】本発明は、前記チケット手段中において前
記プレイスプロセスのアドレスを形成することを特徴と
する。
【0048】本発明は、前記アドレスがテレアドレスで
あることを特徴とする。
【0049】本発明は、前記チケット手段中において前
記プレイスプロセスのネームを形成することを特徴とす
る。
【0050】本発明は、前記ネームがテレネームである
ことを特徴とする。
【0051】本発明は、クラスオブジェクトのクラスを
規定し、クラスオブジェクトを形成し、前記クラスオブ
ジェクトは、(i)クラスオブジェクトの前記クラスの
1つのメンバであり、(ii)前記オブジェクト指向ク
ラスの選択された1つのもののサブクラスである第1の
クラスを規定し、前記第1のクラスの1つのメンバであ
るオブジェクトを形成し、前記エージェントプロセス
は、前記オブジェクトを所有し、前記エージェントプロ
セスを前記プレイスプロセスに転送することが、前記オ
ブジェクト及び前記クラスオブジェクトを前記プレイス
プロセスに転送することを含むことを特徴とする。
【0052】本発明は、エージェントクラスとプレイス
クラスとを含む複数のオブジェクト指向クラスを定義
し、前記オブジェクト指向クラス、前記オブジェクト指
向クラスのサブクラス及び send オペレーションを含む
コンピュータプロセスのためのインストラクションを形
成し、前記コンピュータのネットワーク中のプロセッサ
において前記インストラクションをインタープリートす
る際に、前記 send オペレーションに応答してエージェ
ントプロセスの1つのクローンが1つのプレイスプロセ
スに転送され、前記クローン及び前記エージェントプロ
セスは、各々前記エージェントクラスの1つのメンバで
あり、前記プレイスプロセスは前記プレイスクラスの1
つのメンバであることを特徴とする。
【0053】本発明は、前記 send オペレーションを前
記エージェントプロセス中において形成することを特徴
とする。
【0054】本発明は、前記プレイスのサブプレイスを
形成し、前記サブプレイスは前記プレイスクラスの1つ
のメンバであり、前記プレイスは前記サブプレイスの1
つのスーパープレイスであることを特徴とする。
【0055】本発明は、前記エージェントプロセスをオ
ブジェクトのオーナーとして指定することを特徴とす
る。
【0056】本発明は、前記クローンの転送が前記プロ
ジェクトのコピーを前記プレイスプロセスに転送するこ
とを特徴とする。
【0057】本発明は、前記オブジェクト中にダイジェ
ストを形成することを特徴とする。
【0058】本発明は、前記オブジェクトと異なる第2
のオブジェクトを前記プレイスプロセスにおいて前記コ
ピーと相互変換し、前記プレイスプロセスにおいて前記
第2のオブジェクトは、前記ダイジェストと同等の第2
のダイジェストを持ち、前記コピーは前記プレイスプロ
セスに転送されないことを特徴とする。
【0059】本発明は、前記プレイスプロセスをチケッ
ト手段によって指定することを特徴とする。
【0060】本発明は、前記エージェントプロセス中に
おいて前記チケット手段を形成することを特徴とする。
【0061】本発明は、前記プレイスプロセスのアドレ
スを前記チケット手段中において形成することを特徴と
する。
【0062】本発明は、前記アドレスがテレアドレスで
あることを特徴とする。
【0063】本発明は、前記チケット手段中において前
記プレイスプロセスの1つのネームを形成することを特
徴とする。
【0064】本発明は、前記ネームがテレネームである
ことを特徴とする。
【0065】本発明は、前記 send オペレーションに応
答して前記エージェントプロセスの第2のクローンを第
2のプレイスプロセスに転送し、前記第2のクローン
は、前記クローンとは異なり、前記エージェントクラス
の1つのメンバであり、前記第2のプレイスプロセスは
前記プレイスプロセスの1つのメンバであることを特徴
とする。
【0066】本発明は、前記第1のクローンを前記第1
のプレイスプロセスに転送し、前記第2のクローンを前
記第2のプレイスプロセスに転送するためには、前記コ
ンピュータネットワークの複数のコンピュータの内の単
一のコンピュータに前記第1及び第2のクローンを転送
することを必要であることを定め、前記第1のクローン
を前記単一のコンピュータに転送し、前記単一のコンピ
ュータにおいて前記第1のクローンから前記第2のクロ
ーンを形成することを特徴とする。
【0067】本発明は、前記単一のコンピュータから前
記プレイスプロセスに前記第2のクローンを転送し、前
記単一のコンピュータから前記第2のプレイスプロセス
に前記第2のクローンを転送することを特徴とする。
【0068】本発明は、エージェントクラスを含む複数
のオブジェクト指向クラスを定義し、前記オブジェクト
指向クラス、前記オブジェクト指向クラスのサブクラス
及びmeet オペレーションを含むコンピュータプロセス
のためのインストラクションを形成し、前記コンピュー
タネットワーク中の1つのプロセッサにおいて前記イン
ストラクションをインタープリートし、ミーティングプ
レイスプロセスが前記meet オペレーションに応答し
て、第2のエージェントプロセスへの第1のエージェン
トプロセスのアクセスを供与し、前記第1のエージェン
トプロセスへの前記第2のエージェントプロセスのアク
セスも供与し、さらに、前記第1及び第2のエージェン
トプロセスが前記エージェントクラスのメンバであるこ
とを特徴とする。
【0069】本発明は、前記ミーティングプレイスプロ
セスが前記複数のオブジェクト指向クラス中のプレイス
クラスの1つのメンバであり、前記第1及び第2のエー
ジェントプロセスが前記ミーティングプレイスプロセス
を占有することを特徴とする。
【0070】本発明は、第2のプレイスプロセスを形成
し、第2のプレイスプロセスは前記プレイスクラスの1
つのメンバであり、前記第2のプレイスプロセスは前記
ミーティングプレイスプロセスの1つのサブプレイスで
あり、前記ミーティングプレイスは前記第2のプレイス
のスーパープレイスであることを特徴とする。
【0071】本発明は、エージェントクラス、プレイス
クラス及びチケットクラスを含む複数のオブジェクト指
向クラスを定義し、各々が前記プレイスクラスの1つの
メンバである、前記コンピュータネットワーク中の複数
のプレイスプロセスを形成し、前記エージェントクラス
の1つのメンバであって前記複数のプレイスプロセス中
の第1のプレイスプロセスを占有する、エージェントプ
ロセスを形成し、前記チケットクラスの1つのメンバで
あり、前記複数のプレイスプロセス中の前記第1のプレ
イスプロセスから第2のプレイスプロセスへの前記エー
ジェントプロセスの移動を含むトリップを定義するチケ
ットを形成することを特徴とする。
【0072】本発明は、プレイスプロセスとパーミット
クラスとを含む複数のオブジェクト指向クラスを定義
し、前記プレイスクラスの1つのメンバであるプロセス
を形成し、前記パーミットクラスの1つのメンバであっ
て前記プロセスの1以上の能力を指定するパーミットを
形成することを特徴とする。
【0073】本発明は、前記プロセスクラス中に go オ
ペレーションを定義し、前記プロセスが前記 go オペレ
ーションを遂行しうるか否かを前記パーミット中におい
て指定することを特徴とする。
【0074】本発明は、前記プロセスクラス中に send
オペレーションを定義し、前記プロセスが前記 send オ
ペレーションを遂行しうるか否かを前記パーミット中に
おいて指定することを特徴とする。
【0075】本発明は、前記プロセスクラス中において
charge オペレーションを定義し、前記プロセスが前記
charge オペレーションを遂行しうるか否かを前記パー
ミット中において指定することを特徴とする。
【0076】本発明は、前記プロセスクラス中に termi
nateオペレーションを定義し、前記プロセスが前記 ter
minateオペレーションを遂行しうるか否かを前記パーミ
ット中において指定することを特徴とする。
【0077】本発明は、 前記プロセスが前記プロセス
と異なった第2のプロセスを作り出すことができるか否
かを前記パーミット中において指定し、該第2のプロセ
スは前記プロセスクラスの1つのメンバであることを特
徴とする。
【0078】本発明は、オブジェクト指向プレイスクラ
スを定義し、前記パーミット中に前記プロセスが前記プ
レイスプロセスの複数のメンバを作り出すことができる
か否かを前記パーミット中において指定することを特徴
とする。
【0079】本発明は、前記プロセスが失敗した時に前
記プロセスが再スタートされるか否かを前記パーミット
中において指定することを特徴とする。
【0080】本発明は、前記プロセスに割り当てられた
処理量を前記パーミット中において指定することを特徴
とする。
【0081】本発明は、前記プロセスが終了する時間を
前記パーミット中において指定することを特徴とする。
【0082】本発明は、前記プロセスクラス中において
制限オペレーションを定義し、前記クラス、前記クラス
のサブクラス及び前記制限オペレーションを含むコンピ
ュータプロセスのためのインストラクションを形成し、
前記コンピュータネットワーク中のプロセッサにおいて
前記インストラクションをインタープリートし、前記パ
ーミットと異なる第2のパーミットが前記制限オペレー
ションに応答して形成され、前記第2のパーミットは前
記パーミットクラスの1つのメンバであり、前記プロセ
スの前記1以上の能力の1つのグループを指定し、前記
第2のパーミットによって指定された1以上の能力の前
記グループに前記プロセスを制限することを特徴とす
る。
【0083】本発明は、コンピュータにおいて、クラス
(複数)の1つのクラスとサイテーション(複数)の1
つのクラスを含む、複数のオブジェクト指向クラスを定
義し、前記複数のクラスの前記クラスのメンバである1
以上のクラスオブジェクトを形成し、前記第1のクラス
オブジェクトを指定するとともに、前記クラスオブジェ
クトの内のどれが前記第1のオブジェクトに対して後方
にコンパティブルであるかを指定するサイテーションを
前記クラスオブジェクト内の第1のものの中に形成する
ことを含む、インストラクションセットの種々のバージ
ョンのプロセス(複数)をインタープリートする。
【0084】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、各々がゼロ又はそれ
以上のエージェントプロセスのための前記コンピュータ
内の1つのもののある場所である複数のプレイスプロセ
スを前記コンピュータネットワーク中に用意し、前記複
数のプレイスプロセス中の目的点プレイスプロセスへの
エージェントプロセスのトリップをチケット手段によっ
て指定し、前記エージェントプロセス中の send オペレ
ーションに応答して前記エージェントプロセスの1つの
クローンを前記目的点プレイスプロセスに転送すること
を特徴とする。
【0085】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記複数のプレイス
プロセス中の第2の目的点プレイスプロセスへの前記第
2のエージェントプロセスの前記トリップと異なる第2
のトリップを第2のチケット手段によって指定すること
を特徴とする。
【0086】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記第1のトリップ
を行なう前記クローンと前記第2のトリップを行なう第
2のクローンとがどちらも前記コンピュータの内の単一
のコンピュータに転送されるべきことを定め、前記第1
のクローンを前記単一のコンピュータに移動させ、前記
単一のコンピュータ中に、前記第1のクローンと異なる
前記第2のクローンを形成することを特徴とする。
【0087】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記第1のクローン
を前記目的点プレイスプロセスに転送することを特徴と
する。
【0088】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記第2のクローン
を前記第2の目的点プレイスプロセスに転送することを
特徴とする。
【0089】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェントプ
ロセス中の go オペレーションに応答して、前記チケッ
ト手段によって指定される前記目的点プレイスプロセス
に前記エージェントプロセスを転送することを特徴とす
る。
【0090】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段中
のネームによって前記目的点プレイスプロセスを指定す
ることを特徴とする。
【0091】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記ネームがテレネ
ームであることを特徴とする。
【0092】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段中
のアドレスによって前記目的点プレイスプロセスを指定
することを特徴とする。
【0093】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記アドレスがテレ
アドレスであることを特徴とする。
【0094】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスがその1つのメンバであるクラスのサイテーシ
ョンによって前記目的点プレイスプロセスを前記チケッ
ト手段中において指定することを特徴とする。
【0095】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスのアドレス、前記目的点プレイスプロセスのネ
ーム及び前記目的点プレイスプロセスがその1つのメン
バであるクラスのサイテーションの任意の組み合わせに
よって前記目的点プレイスプロセスを前記チケット手段
中において指定することを特徴とする。
【0096】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記トリップの最大
の期間を前記チケット手段中に指定することを特徴とす
る。
【0097】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記トリップのため
の望ましい期間を前記チケット手段中に指定することを
特徴とする。
【0098】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、転送手段を前記チケ
ット手段中に指定し、該転送手段は前記クローンを転送
するためのコンピュータ間通信手段の形式を指定するこ
とを特徴とする。
【0099】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記エージェントプロセスのデッドラ
インを、前記チケット手段中に含まれる目的点パーミッ
トによって制御することを特徴とする。
【0100】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記エージェントプロセスが遂行する
ことが許可されたオペレーションを、前記チケット手段
に含まれる目的点パーミットによって制御することを特
徴とする。
【0101】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記エージェントプロセスが消費する
ことが許可されたリソースを、前記チケット手段に含ま
れる目的点パーミットによって制御することを特徴とす
る。
【0102】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいての他のプロセスに対する前記目的点プ
レイスプロセスにおいての前記エージェントプロセスの
相対的なプライオリティを、前記チケット手段に含まれ
る目的点パーミットによって指定することを特徴とす
る。
【0103】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、あるプロセスが持つ
ことを許可される能力をパーミット手段を介して制御す
ることを特徴とする。
【0104】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が固有のパーミットであることを特徴とする。
【0105】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
がローカルパーミットであることを特徴とする。
【0106】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が一時的なパーミットであることを特徴とする。
【0107】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が前記プロ
セスの消費しうるリソースからなることを特徴とする。
【0108】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、その後
ではプロセスが進行しえないデッドラインを含むことを
特徴とする。
【0109】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が他のプロ
セスに対する前記プロセスの相対的なプライオリティを
含むことを特徴とする。
【0110】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、前記プ
ロセスが選択されたオペレーションを遂行する許可を含
むことを特徴とする。
【0111】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェントプ
ロセスがオブジェクトを所有することを特徴とする。
【0112】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記オブジェクトが
ダイジェストを有することを特徴とする。
【0113】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェントプ
ロセスのクローンを転送する前記工程が前記オブジェク
トのコピーを転送することを含むことを特徴とする。
【0114】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記コピーを第2のオブジェクトに相
互変換し、該第2のオブジェクトは、最初に述べた前記
ダイジェストと同等のダイジェストを有し、前記コピー
は前記目的点プレイスプロセスには転送されないことを
特徴とする。
【0115】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記オブジェクトの代わりに、相互変
換されたオブジェクトを使用して、前記オブジェクトを
前記目的点プレイスプロセスに転送する必要を除くこと
を特徴とする。
【0116】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記転送工程が前記
目的点プレイスプロセスにエンタする工程を含むことを
特徴とする。
【0117】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記転送ステップが
前記ソースプレイスプロセスをエクシットする工程を含
むことを特徴とする。
【0118】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスがミーティングプレイスプロセスであり、前記
ミーティングプレイスはリクエスタエージェントプロセ
スとペティションドエージェントプロセスとの間のミー
ティングを取り計らうことを特徴とする。
【0119】本発明は、コンピュータにおいて、第1の
エージェントプロセスと第2のエージェントプロセスと
を用意し、ペティション手段によって、前記第1のエー
ジェントプロセスと第2のエージェントプロセスとの間
のミーティングを指定し、前記ペティション手段によっ
て定義された前記第1のエージェントプロセスと第2の
エージェントプロセスとの間の前記ミーティングを取り
計らうことを特徴とする。
【0120】本発明は、コンピュータにおいて、前記第
1のエージェントプロセス中に前記ペティション手段を
形成することを特徴とする。
【0121】本発明は、コンピュータにおいて、ミーテ
ィングを特定する前記工程は、前記ペティション手段中
において前記第2のエージェントプロセスを指定するこ
とを特徴とする。
【0122】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスを指定する前記工程が、前記
第2のエージェントをネームによって前記ペティッショ
ン手段中において指定することを特徴とする。
【0123】本発明は、コンピュータにおいて、前記ネ
ームがテレネームであることを特徴とする。
【0124】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスを指定する前記工程が、前記
第2のエージェントプロセスがその1つのメンバである
クラスを前記ペティッション手段中において指定するこ
とを特徴とする。
【0125】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスを指定する前記工程は、前記
第2のエージェントプロセスがその1つのメンバである
クラスのサイテーションを前記ペティッション手段中に
おいて指定することを特徴とする。
【0126】本発明は、 コンピュータにおいて、ミー
ティングを指定する前記工程が、前記ミーティングを取
り計らうための最大の期間を前記ペティション手段中に
おいて指定することを特徴とする。
【0127】本発明は、コンピュータにおいて、前記ミ
ーティングを取り計らう前記工程は、前記第2のエージ
ェントプロセスへのリファレンスを前記第1のエージェ
ントプロセスに供与することを特徴とする。
【0128】本発明は、コンピュータにおいて、前記ミ
ーティングを取り計らう前記工程が、前記第1のエージ
ェントプロセスへのリファレンスを前記第2のエージェ
ントプロセスに対して供与することを特徴とする。
【0129】本発明は、コンピュータにおいて、前記第
2のエージェントプロセス中のオペレーションの遂行を
前記第1のエージェントプロセス中においてインストラ
クションに応答して生じさせることを特徴とする。
【0130】本発明は、コンピュータにおいて、前記第
1のエージェントプロセスがオブジェクトを所有するこ
とを特徴とする。
【0131】本発明は、コンピュータにおいて、前記オ
ブジェクトへのリファレンスを前記第2のエージェント
プロセスに対して供与することを特徴とする。
【0132】本発明は、コンピュータにおいて、前記リ
ファレンスが保護されるリファレンスであることを特徴
とする。
【0133】本発明は、コンピュータにおいて、前記オ
ブジェクトのコピーへのリファレンスを前記第2のエー
ジェントプロセスに供与することを特徴とする。
【0134】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスがオブジェクトを所有するこ
とを特徴とする。
【0135】本発明は、コンピュータにおいて、前記オ
ブジェクトへのリファレンスを前記第1のエージェント
プロセスに対して供与することを特徴とする。
【0136】本発明は、コンピュータにおいて、前記リ
ファレンスがプロテクトされたリファレンスであること
を特徴とする。
【0137】本発明は、コンピュータにおいて、前記オ
ブジェクトのコピーへのリファレンスを前記第1のエー
ジェントプロセスに対して供与することを特徴とする。
【0138】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、チケット手段及び s
end オペレーションを有するエージェント手段と、前記
複数のコンピュータの1つにおいてその各々が動作する
複数のプレイス手段とを有し、前記エージェント手段は
前記複数のプレイス手段中の第1のプレイス手段であ
り、前記チケット手段は、前記複数のプレイス手段中の
目的点プレイス手段への前記エージェント手段のトリッ
プを指定し、前記 send オペレーションは、前記エージ
ェント手段の1つのクローンを前記目的点手段に転送す
ることを特徴とする。
【0139】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段が、前記エージェント手段のための第2の目的点プレ
イス手段への第2のトリップを指定する、前記チケット
手段と異なる第2のチケット手段を、含むことを特徴と
する。
【0140】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記 send オペレー
ションの遂行によって前記エージェント手段の第2のク
ローンが前記第2の目的点プレイス手段に転送されるこ
とを特徴とする。
【0141】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記トリップ及び前
記第2のトリップが、前記複数のコンピュータ中のある
単一のコンピュータへの転送を含み、前記クローンを前
記目的点プレイス手段に転送し、前記第2のクローンを
前記第2の目的点手段に転送する際に、前記 send オペ
レーションの遂行によって、(a)前記第1のクローン
が前記単一のコンピュータに転送され、(b)前記単一
のコンピュータ中において前記第1のクローンから前記
第2のクローンが形成されることを特徴とする。
【0142】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段が go オペレーションを含み、前記 go オペレーショ
ンは、第3のチケット手段によって指定された第3の目
的点プレイス手段に前記エージェント手段を転送するこ
とを特徴とする。
【0143】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記目的点プレイス手段を特定するネームを含むことを
特徴とする。
【0144】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記ネームがテレネ
ームであることを特徴とする。
【0145】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記目的点プレイス手段のためのアドレスを含むことを
特徴とする。
【0146】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記アドレスがテレ
アドレスであることを特徴とする。
【0147】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記目的点プレイス手段をその1つのメンバとするクラ
スを指定するサイテーション手段を含むことを特徴とす
る。
【0148】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段
が、前記目的点プレイス手段のアドレスと、前記目的点
プレイス手段のネームと、前記目的点プレイス手段をそ
の1つのメンバとするクラスを指定するサイテーション
手段とからなる群中より選ばれた任意の組合せを含むこ
とを特徴とする。
【0149】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記トリップのための最大の期間を指定する手段を含む
ことを特徴とする。
【0150】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記トリップのための望ましい期間を指定する手段を含
むことを特徴とする。
【0151】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段
が、前記トリップ手段を完成させるコンピュータ間通信
手段の形式を指定するウェイ手段を含むことを特徴とす
る。
【0152】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段
が、前記目的点プレイス手段においての前記エージェン
ト手段のためのデッドラインを制御するパーミット手段
を含むことを特徴とする。
【0153】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段が前記目的点プレイス手段において遂行することが許
可されているオペレーションを制御するためのパーミッ
ト手段を前記チケット手段を有することを特徴とする。
【0154】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
手段において前記エージェント手段が消費することが許
可されているリソースを制御するためのパーミット手段
を前記チケット手段が有することを特徴とする。
【0155】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
手段においての他のエージェント手段に対する前記目的
点プレイス手段においての前記エージェント手段の相対
的なプライオリティを指定するためのパーミット手段を
前記チケット手段が有することを特徴とする。
【0156】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、エージェント手段が
持つことが許可される能力を制御するためのパーミット
手段を有することを特徴とする。
【0157】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が固有のパーミットであることを特徴とする。
【0158】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
がローカルパーミットであることを特徴とする。
【0159】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が一時的なパーミットであることを特徴とする。
【0160】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が前記エー
ジェント手段の消費しうるリソースを含むことを特徴と
する。
【0161】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、前記エ
ージェント手段がそれから後進行することのできないデ
ッドラインを含むことを特徴とする。
【0162】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、他のエージェント手
段を含み、前記能力は、前記他のエージェント手段に対
する前記エージェント手段の相対的なプライオリティを
含むことを特徴とする。
【0163】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、前記エ
ージェント手段が選択されたオペレーションを遂行する
許可を含むことを特徴とする。
【0164】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段がオブジェクトを所有することを特徴とする。
【0165】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記オブジェクトが
ダイジェストを有することを特徴とする。
【0166】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記オブジェクトの
コピーが前記クローンとともに、前記 send オペレーシ
ョンの遂行によって転送されることを特徴とする。
【0167】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
手段において第2のオブジェクトは前記コピーに相互変
換され、前記第2のオブジェクトは、前記ダイジェスト
と同等のダイジェストを持つことによって前記コピーを
前記目的点プレイス手段に転送することを不要とするこ
とを特徴とする。
【0168】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記 send オペレー
ションが前記目的点プレイス手段においての前記コピー
の代わりに相互変換されたオブジェクトを使用すること
によって、前記オブジェクトの前記コピーを前記目的点
プレイス手段に転送する必要を除くことを特徴とする。
【0169】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記プレイス手段は
前記プレイス手段にエンタするための手段を有すること
を特徴とする。
【0170】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記プレイス手段が
前記プレイス手段をエグジットする手段を有することを
特徴とする。
【0171】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記プレイス手段が
ミーティングプレイス手段を含み、前記ミーティングプ
レイス手段はリクエスタエージェント手段とレスポンダ
エージェント手段との間のミーティングを取り計らうこ
とを特徴とする。
【0172】本発明は、コンピュータにおいて、 meet
オペレーションを有するミーティングプレイス手段を有
し、該ミーティングプレイスは、複数のエージェント手
段のための場所であり、更に、ペティッション手段と、
前記複数のエージェント手段の内の第1のエージェント
手段と、前記複数のエージェント手段の中の第2のエー
ジェント手段とを有し、前記第1のエージェント手段及
び第2のエージェント手段は前記複数のエージェント手
段の内のどれともミートでき、前記ペティッション手段
は前記第1のエージェント手段と第2のエージェント手
段との間のミーテングを指定し、前記ミーティング手段
は前記 meet オペレーションに応答して前記ミーティン
グを取り計らうことを特徴とする。
【0173】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記ペティッション手段を有す
ることを特徴とする。
【0174】本発明は、コンピュータにおいて、前記ペ
ティッション手段が前記第2のエージェントプロセスを
規定することによって前記ミーティングを指定すること
を特徴とする。
【0175】本発明は、コンピュータにおいて、前記ペ
ティッション手段が前記第2のエージェント手段を指定
するネームを含むことを特徴とする。
【0176】本発明は、コンピュータにおいて、前記ネ
ームがテレネームであることを特徴とする。
【0177】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスがその1つのメンバであるク
ラスを指定することによって前記ペティッション手段が
前記第2のエージェントを指定することを特徴とする。
【0178】本発明は、コンピュータにおいて、前記ペ
ティッション手段がサイテーションを含み、該サイテー
ションは、前記第2のエージェントプロセスがその1つ
のメンバであるクラスを指定することを特徴とする。
【0179】本発明は、コンピュータにおいて、前記ペ
ティッション手段が前記ミーティングを取り計らうため
の最大の期間を規定することを特徴とする。
【0180】本発明は、コンピュータにおいて、前記 m
eet オペレーションが前記第2のエージェント手段への
リファレンスを前記第1のエージェント手段に供与する
ことを特徴とする。
【0181】本発明は、コンピュータにおいて、前記 m
eet オペレーションが前記第1のエージェント手段への
リファレンスを前記第2のエージェント手段に供与する
ことを特徴とする。
【0182】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記第2のエージェント手段中
のオペレーションの遂行を生じさせることを特徴とす
る。
【0183】本発明は、コンピュータにおいて、前記第
1のエージェント手段がオブジェクトを所有することを
特徴とする。
【0184】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記オブジェクトへのリファレ
ンスを前記第2のエージェント手段に供与することを特
徴とする。
【0185】本発明は、コンピュータにおいて、前記リ
ファレンスがプロテクトされたリファレンスであること
を特徴とする。
【0186】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記オブジェクトのコピーへの
リファレンスを前記第2のエージェント手段に供与する
ことを特徴とする。
【0187】本発明は、コンピュータにおいて、前記第
2のエージェント手段がオブジェクトを所有することを
特徴とする。
【0188】本発明は、コンピュータにおいて、前記第
2のエージェント手段が前記オブジェクトへのリファレ
ンスを前記第1のエージェント手段に供与することを特
徴とする。
【0189】本発明は、コンピュータにおいて、前記リ
ファレンスがプロテクトされたリファレンスであること
を特徴とする。
【0190】本発明は、コンピュータにおいて、前記第
2のエージェント手段が前記オブジェクトのコピーへの
リファレンスを前記第1のエージェント手段に供与する
ことを特徴とする。
【0191】本発明は、1以上のコンピュータを有する
コンピュータネットワークにおいて、第1のエンジンプ
ロセスから第2のエンジンプロセスにデータを移送する
データ移送方法において、(a)前記第1のエンジンプ
ロセス及び第2のエンジンプロセスを含む1以上のエー
ジェントプロセスを実行するための実行手段を用意し、
各々の前記エージェントプロセスは、コンピュータイン
ストラクションセットからの複数のインストラクション
を含み、実行状態を持つものとし、(b)前記コンピュ
ータインストラクションセット中に go インストラクシ
ョンを用意し、該 go インストラクションは、前記第1
のエンジンプロセス中において実行される第1のエージ
ェントプロセスに含まれるものとし、前記 go インスト
ラクションの遂行によって、(i)前記第1のエンジン
プロセスによる前記第1のエージェントプロセスの実行
の中断と、(ii)前記第1のエージェントプロセスの
前記実行状態が保存されるような前記第1のエージェン
トプロセスの表現と、(iii)前記第1のエンジンプ
ロセスから第2のエンジンプロセスへの前記第1のエー
ジェントプロセスの前記表現の移送と、(iv)前記第
2のエンジンプロセスによる前記第1のエージェントプ
ロセスの実行の再開とを生じさせ、(c)前記第1のエ
ージェントプロセスによる前記エージェントプロセスの
実行を生じさせることによって前記 go インストラクシ
ョンの遂行を生じさせることを特徴とする。
【0192】本発明は、前記コンピュータインストラク
ションセットがオブジェクト指向であることを特徴とす
る。
【0193】本発明は、前記複数のエージェントプロセ
スが前記オブジェクト指向コンピュータインストラクシ
ョンセットのオブジェクトであることを特徴とする。
【0194】本発明は、前記 go インストラクションの
遂行を生じさせる前に前記第1のエージェントプロセス
にデータを付加し、前記第1のエージェントプロセスの
前記表現が前記データを含み、前記第2のエンジンプロ
セスへの前記第1のエージェントプロセスの前記表現の
移送が前記データを移送を含むことを特徴とする。
【0195】本発明は、前記第1のエージェントプロセ
スが、前記第1のエンジンプロセスから前記第2のエン
ジンプロセスに転送されるべきメッセージを表すデータ
を含み、前記 go インストラクションの実行によって生
ずる前記第1のエージェントプロセスの移送が前記第1
のエンジンプロセスから前記第2のエンジンプロセスへ
の前記データの移送を生じさせることを特徴とする。
【0196】本発明は、前記第1のエンジンプロセス
が、第1のコンピュータにおいて実行され、前記第2の
エンジンプロセスが第2のコンピュータによって実行さ
れ、前記第1及び第2のコンピュータが前記コンピュー
タネットワークの一部分であることを特徴とする。
【0197】本発明は、第1のエンジンプロセスから1
以上のエンジンプロセスにデータを移送するデータ移送
方法において、(a)コンピュータインストラクション
セットからのインストラクションを含む複数のエージェ
ントプロセスを実行するための手段を用意し、該エージ
ェントプロセスを実行する手段が、前記第1のエンジン
プロセス及び1以上のエンジンプロセスを含み、各々の
該エージェントプロセスは実行状態を含み、(b)前記
コンピュータインストラクションセット中にsendインス
トラクションを用意し、該sendインストラクションは、
前記複数のエージェントプロセス中の第1のエージェン
トプロセス中に含まれるようにし、前記sendインストラ
クションの実行は、(i)前記第1のエージェントプロ
セスの1以上のコピーを形成し、これらのコピーが、前
記第1のエージェントプロセスの前記実行状態を保存す
るとともにそれを含み、(ii)前記第1のエージェン
トプロセスのコピーの各々を前記第1のエンジンプロセ
スから前記1以上のエンジンプロセスのそれぞれに移送
し、(iii)前記第1のエージェントプロセスの前記
コピーの各々を前記1以上のエンジンプロセスのそれぞ
れの1つによって実行して前記第1のエージェントプロ
セスの再開された実行をシュミレートすることを特徴と
する。
【0198】本発明は、前記第1のエージェントプロセ
スの前記コピーの2以上が前記第1のエンジンプロセス
から単一の第2のエンジンプロセスに移送されるべき条
件のもとにおいて、前記第1のエージェントプロセスの
前記2以上のコピーの移送が、前記第1のエージェント
プロセスの単一のコピーを前記第2のエンジンプロセス
に移送する工程と、前記第2のエンジンプロセス中にお
いて前記単一のコピーから、前記第1のエージェントプ
ロセスの前記2以上のコピーを形成する工程とからなる
ことを特徴とする。
【0199】本発明は、あるコンピュータシステムにお
いて実行されている第1のエージェントプロセスから、
該コンピュータシステムによって実行されている第2の
エージェントプロセスにデータを転送する際に、前記第
1のエージェントプロセス及び第2のエージェントプロ
セスがあるプレイスプロセスの占有者であるようにして
データを転送するデータ転送方法において、前記第1の
エージェントプロセスが送出するミートインストラクシ
ョンに応答して、前記第2のエージェントプロセスによ
るプロシージャの実行を生じさせる工程を含み、前記プ
ロシージャは、前記第2のエージェントプロセスの一部
であり、前記第2のエージェントコンピュータプロセス
に含まれるコンピュータインストラクションのコレクシ
ョンを含み、前記第2のエージェントプロセスによって
送出される、前記プロジージャの一部である第2のイン
ストラクションに応答して、前記第2のエージェントプ
ロセスへのアクセス手段を前記第1のエージェントプロ
セスに供与する工程を含むことを特徴とする。
【0200】本発明は、前記第2のエージェントプロセ
スによるプロシージャの実行を生じさせる前記工程は、
前記第1のエージェントプロセスによって送出される前
記ミートインストラクションに応答して前記プレイスプ
ロセスによる第2のプロシージャの実行を生じさせるこ
とを含み、前記プレイスプロセスによる前記第2のプロ
シージャの実行が、前記プロシージャを前記第2のエー
ジェントプロセスによって実行させるインストラクショ
ンを送出することを特徴とする。
【0201】本発明は、前記第2のエージェントプロセ
スへのアクセス手段が前記プレイスプロセスによって前
記第1のエージェントプロセスに供与されることを特徴
とする。
【0202】本発明は、近似的に、前記プレイスプロセ
スが前記第2のエージェントプロセスへの前記アクセス
手段を前記第1のエージェントプロセスに供与する時点
において、前記プレイスプロセスが前記第1のエージェ
ントプロセスへのアクセス手段を前記第2のエージェン
トプロセスに供与することを特徴とする。
【0203】本発明は、第1のCPU及び第1のメモリ
を含む第1のコンピュータシステムから、第2のCPU
及び第2のメモリを含む第2のコンピュータシステムへ
第1のコンピュータプロセスを移送するプロセスの移送
方法において、ある実行状態を持つ前記第1のコンピュ
ータプロセスの実行を前記第1のCPUにおいて開始
し、前記第1のCPU内において前記第1のコンピュー
タプロセスの実行を中断し、前記第1のコンピュータプ
ロセスをデータとして前記第1のメモリ中に表現し、前
記データは前記第1のコンピュータプロセスの実行が中
断された時点においての前記第1のコンピュータプロセ
スの前記実行状態を含むものとし、前記データを前記第
1のメモリから前記第2のメモリに移送し、前記データ
中に表現された前記実行状態を有する第2のコンピュー
タプロセスを前記データから前記第2のコンピュータシ
ステム上に形成し、前記第2のコンピュータプロセスを
実行することによって前記第2のCPU内において前記
第1のコンピュータシステムの実行の再開を実効的にシ
ミュレートすることを特徴とする。
【0204】
【作用】本発明では、解釈されオブジェクト指向された
コンピュータインストラクションの一組が、分散型コン
ピュータシステムにおいて実行される新規なコンピュー
タプロセスを作りだすために用いられる。このコンピュ
ータインストラクションの一組を利用する特別なプロセ
スは、分散型コンピュータシステム中において作動する
エンジンによって活性にされる。エンジンは分散型コン
ピュータシステム内において特別なプロセスのインスト
ラクションを解釈し遂行する。
【0205】分散型コンピュータシステム中の各々のエ
ンジンは、あるプロセスを規定するインストラクション
を一様に解釈する。換言すれば、あるプロセスを含み、
第1のエンジンによって解釈される、インストラクショ
ンは、第1のエンジンがその内部において作動している
コンピュータシステムの特別の形態に依存しない。した
がってこれらのインストラクションは、第2のエンジン
によって、たとえ第1のエンジン及び第2のエンジンが
2つの別々のコンピュータシステムにおいて作動してお
り、これらのコンピュータシステムのオペレーティング
システム及びハードウェアがその他の点では、一般に互
いにコンパティビリティを持たないとしても、移動され
解釈される。解釈されるインストラクションは、エンジ
ンがその内部において作動しているコンピュータシステ
ムの通信、格納、計算及びその他のサブシステムへのイ
ンターフェースを用いて実現(インプリメント)され
る。
【0206】これらのインターフェースは、集合的に本
発明の一実施例の一部を構成するものであり、この開示
の一部とされて引用によって全体が本明細書に組み込ま
れるアペンディックスCに記載されている。
【0207】2つ以上のエンジンが1つのネットワーク
を構成するように相互接続される。ネットワークは本発
明のコンピュータプロセス(複数)がその内部において
移動する1つの宇宙である。一実施例によればネットワ
ークは、他のネットワークのクライアントと通常考えら
れ、その一部分ではないとされるコンピュータシステム
(複数)を網羅する。たとえば本発明の一実施例は、ネ
ットワークによって接続されたワークステーション(複
数)を網羅する。本明細書においてワークステーション
という用語は、他のコンピュータシステムへの情報の転
送と異なった目的のために使用されるコンピュータシス
テムを記述するために用いられている。本発明のエンジ
ン(複数)は、コンピュータプロセス(複数)をその間
において移動させることができるように相互接続されて
いる。
【0208】ある特別なコンピュータプロセスを転送す
るために、そのコンピュータシステムは、中断され、コ
ンピュータシステムの実行状態が保存される。コンピュ
ータプロセスのインストラクション、保存された実行状
態及びコンピュータプロセスによって所有されるオブジ
ェクトは、パッケージされ又はエンコード(符号化)さ
れる、データのストリングを生成する。このデータのス
トリングは、1つのネッワークを形成するために用いら
れるすべての標準的な通信手段によって転送することが
できる。一実施例によればデータストリングは、この明
細書の一部とされ、引用によって全体がこの明細書に組
み込まれるアペンディックスDに記載されたプロトコル
によって指定されるエンジンの間において転送される。
【0209】データストリングは、ネットワークの目的
点となるコンピュータシステムに転送されると、デコー
ドされ、目的点コンピュータシステム中において1つの
コンピュータプロセスを生じさせる。デコードされたコ
ンピュータプロセスは、前述したようにエンコードされ
たオブジェクトを含み、保存された実行状態を有してい
る。目的点のコンピュータシステムは、コンピュータプ
ロセスの実行を再開する。
【0210】コンピュータプロセスのインストラクショ
ンは、データオブジェクトの定義、生成及び操作と、目
的点のコンピュータシステムによって実行される他のコ
ンピュータシステムとの相互作用とを含む複雑なオペレ
ーションを遂行するために、目的点のコンピュータシス
テムによって実行される。コンピュータプロセスはネッ
トワーク全体を通じて一様に解釈され、コンピュータシ
ステムの間に転送されるようにエンコードされかつデコ
ードされるので、本発明のコンピュータプロセス(複
数)は、コンピュータ間の通信において新しいレベルの
機能性及び多様性を供与する。
【0211】一実施例によれば、本発明のコンピュータ
インストラクションのセットに組み込まれた2つのクラ
スは、エージェントクラスとプレイスクラスである。エ
ージェントクラスを用いて形成されたインストラクショ
ンは、エンジンによって解釈され、エージェントプロセ
ス(本明細書中において単にエージェント)と呼ばれる
こともある。エージェントは、エージェントが生成され
たときにエンジンがその実行を開始するという点でアク
ティブオブジェクトである。エージェントクラスは、エ
ージェントが(i)それ自身を検査して変更し、(i
i)ネットワーク中の以下にそれを詳細に説明する第1
のプレイスプロセスから同じネットワーク中の第2のプ
レイスプロセスまでそれ自身を転送し、(iii)第2
のプレイスプロセスに見出される他のエージェントと相
互作用することを可能にするインストラクション(複
数)を供与する。第1のプレイスプロセス及び第2のプ
レイスプロセスはネットワークの2つの別々のコンピュ
ータシステム内において実行される。したがってあるエ
ージェントは第1のコンピュータシステムから第2のコ
ンピュータシステムに移動することができる。
【0212】あるエージェントは、第1のプレイスプロ
セスから第2のプレイスプロセスにまでエージェントと
ともに運ばれる情報を有することができる。その他に、
以下にその詳細に説明されるコンピュータインストラク
ションのセットの拡張性、不変性及び機能性によって、
1つのエージェントを含むインストラクションにしたが
って、そのエージェント及びそれによって運ばれる情報
がどのようにそしてどの目的点に移動しているのかを定
める上の膨大な融通性及び制御可能性が提供される。
【0213】エージェントの力はパーミットによってバ
ランスされる。パーミットは、特別な場合に特別なエー
ジェントの特別な能力を制限する。エージェントのパー
ミットは、そのエージェントクラスについて定義された
いくつかのオペレーションのうちどのオペレーションが
エージェントによって遂行され得るかを指定する。さら
にパーミットは、エージェントが消費し得る処理依存数
及びエージェントが消滅する時間とを制限する。その上
に、パーミットは、他のエージェントに対するエージェ
ントの相対的な実行プライオリティを指定する。
【0214】プレイスクラスを用いて形成されたインス
トラクションは、エンジンによって解釈され、本明細書
において単にプレイスとも呼ばれるプレイスプロセスを
形成する。プレイスはまたアクティブオブジェクトであ
りプレイスクラスは、あるプレイスがそれ自身を検査し
て変更しエージェントのための場所とエージェントが相
互作用する際のコンテキストとして役立ち得るようにす
るインストラクションを供与する。エージェントは各々
のそれぞれ単一のプレイスを占有する。また各々のプレ
イスは単一の他のプレイスも占有することができる。
【0215】プレイスはエージェントのためのある度合
いのプライバシー及びセキュリティを供与する。一例と
して、他のエージェントとのコンタクトをさけるように
構成されたエージェントは、一般に他のエージェントに
は知られてないか又は他のエージェントの立ち入りを拒
絶するあるプレイスを占有することができる。逆に、あ
る大きな数のエージェントに公にサービスを供与するよ
うに構成されたエージェントは、他のエージェントに広
く知られていて他のエージェントの立ち入りを許容する
プレイスを占有することができる。
【0216】エージェントはある距離において相互作用
することはできない。すなわちいかなる2つのエージェ
ントもそれらが同一のプレイスを占有するまでないかぎ
り相互作用できない。第1のプレイスを占有している第
1のエージェントは、第2のプレイスを占有している第
2のエージェントと相互作用するためには、オペレース
オン”go”に関連して以下に詳細に説明するように第1
のエージェントを第2のプレイスに転送させるインスト
ラクションが、第1のプレイスを占有している第1のエ
ージェントによって送出される。第1及び第2のエージ
ェントの両者が第2のプレイスを占有している間に、第
1のエージェントは第2のエージェントと相互作用する
ことができる。
【0217】したがって、本発明のプロセスは、リモー
トプログラミングの新規なインプリメンテーションであ
り、より知られているリモートプロシージャコーリング
パラダイムのインプリメンテーションではない。リモー
トプログラミングは、(i)ネットワーク通信の媒体を
横切る通信を必要とせずにプロセス(複数)が相互作用
することを可能とし、(ii)ハイレイテンシィ(high
-latency)をもつことが多いネットワーク通信媒体を横
切る通信を除くことによってプロセス間の相互作用の性
能を改善することによって、リモートプロシージャコー
リングを改良する。
【0218】第1のコンピュータシステム中の第1のプ
レイスプロセスから、第1のコンピュータシステム又は
第2のコンピュータシステム中の第2のプレイスプロセ
スへのエージェントプロセスの移動はトリップと呼ばれ
る。エージェントは、エージェントクラス中において定
義されたオペレーション”go”を用いることによってト
リップを開始する。エージェントは、トリップを定義す
るチケットをオペレーション”go”に対するアーギュメ
ントとしてつくり出し委託することによってネットワー
クを通る移動又はコンピュータシステム内の移動を制御
する。一実施例によれば、チケットは、エージェントが
それにむかって移動するべきプレイス、エージェントが
それによって移動する”way” 、トリップが完了する時
間量及びトリップの緊急さの表示、すなわち同時にスケ
ジュールされていることのある他のエージェントによる
他のトリップに対するトリップの相対的なプライオリテ
ィの表示を指定している。
【0219】チケットは、エージェントがそれにむかっ
て移動しているプレイスのアドレス、ネーム、クラス又
はアドレス、ネーム、及びクラスの任意の組合せを指定
することによって、目的点プレイスを特定することがで
きる。トリップの目的点は、チケットによって許容され
た時間内のエージェントの立ち入りを許容する特定され
たアドレス、ネーム及び/又はクラスの任意のプレイス
である。
【0220】オペレーション”go”においてエージェン
トは第1のプレイスから第2のプレイスに移動するのは
次のようにして行われる。(i)エージェントは中断さ
れ、第1のエージェントの実行状態が保存される。(i
i)エージェントは標準形式ですなわちオクテットスト
リーム(エージェントの保存された実行状態の表現を含
む)によって表される。(iii)標準形式は第1のプ
レイスから第2のプレイスに転送される(これはポテン
シャルには、第1のコンピュータから第2のコンピュー
タへの標準形式の移送を含む)。
【0221】(iv)第2のプレイスにあるエージェン
トは、標準形式で表された実行状態を含めて標準形式か
ら形成される。(v)標準形式であらわされた実行状態
を最初にもっているエージェントの解釈が再開される。
【0222】前述したように、本発明のコンピュータイ
ンストラクションのセットは、オブジェクト指向であ
る。したがって本発明にしたがって形成されたすべての
オブジェクトはクラス(複数)に組織される。本発明の
すべてのクラスは、エージェントとともに移動すること
のできるデータオブジェクトによって表される。したが
って、あるプレイス内において定義されていないクラス
も、単にエージェントがクラスを定義し、対応するクラ
スオブジェクトをそのプレイスに転送することによっ
て、そのプレイスにむかって移動するエージェントによ
って使用することができる。
【0223】本発明の一実施例による各々のオブジェク
トは、プロセスすなわちエージェント又はプレイスによ
って所有される。あるエージェントが第1のプレイスか
ら第2のプレイスに移動する時に、そのエージェントに
よって所有されるすべてのオブジェクトは、実効的に、
エージェントとともに第2のプレイスに移動する。しか
し以下に説明するように、本発明の一実施例によれば、
第2のプレイスをすでに占有しているオブジェクトと同
等のオブジェクトは、転送されない。エージェントによ
って所有されるオブジェクトの他に、それらのオブジェ
クトがメンバであるクラスを定義するすべてのクラスオ
ブジェクトは、エージェントとともに第2のプレイスに
移動される。クラスオブジェクトは、オブジェクトの1
つのクラスを表す、以下及びアペンディックスAに説明
されるコンピュータインストラクションのセットにした
がって構成されたオブジェクトである。
【0224】したがって、第2のプレイスに移動するエ
ージェントによって所有されるオブジェクトが第2のプ
レイスにおいて定義されていないクラスのメンバであっ
た場合にも、そのオブジェクトは、エージェントととも
に移動することができる。
【0225】それは、エージェントが、オブジェクトを
1つのメンバとするクラスを定義するクラスオブジェク
トも第2のプレイスに運ぶからである。従来の技術によ
れば、第1のコンピュータから第2のコンピュータに移
動するプロセスは、第2のコンピュータ上において定義
されたクラスに所属するデータオブジェクトしか処理す
ることができなかった。クラスの定義は通常は従来技術
によれば移動するプロセスとともに転送されなかった。
第1のプレイスにおいて新しいクラスを形成することが
でき、これらの新しいクラスのメンバは、これらの新し
いクラスが定義されていない他のプレイスに自由に移動
するので、本発明は、従来技術にはみられない拡張性、
可動性及び不変性のレベルをエージェントに供与する。
【0226】本発明によれば、多数のオブジェクトクラ
スが多数のプレイスにおいて定義されるので、これらの
プレイスに移動させる必要はない。本発明の一実施例に
よれば、クラスオブジェクト(複数)及び多くの場所に
おいて見出されることがあり得る他のオブジェクト(複
数)は、相互変換可能とされている。
【0227】相互変換可能な(インターチェンジアブル
な)オブジェクトは各々のダイジェストを有している。
第1のプレイスから第2のプレイスに移動するエージェ
ントによって所有された相互変換可能なオブジェクト
は、エージェントとともに移動しない。そうではなく、
相互変換可能なオブジェクトのダイジェストがエージェ
ントとともに第2のプレイスに移動する。エージェント
が第2のプレイスに到達すると、第2のプレイスを含む
コンピュータシステムの相互変換可能なオブジェクト
(複数)は、これらの相互変換可能なオブジェクトのど
れかがエージェントとともに転送されてきたダイジェス
トと等しいダイジェストをもつか否かを定めるために検
査される。第2のプレイスを含むコンピュータシステム
においてそのような相互変換可能なオブジェクトが見出
された場合、その相互変換可能なオブジェクトは、第1
のプレイスに残された相互変換可能なオブジェクトと取
替えられる。
【0228】しかし、第2のプレイスにそのような相互
変換可能なオブジェクトが見出されなかった場合、第1
のプレイスに残されていた相互変換可能なオブジェクト
が第2のプレイスに移動される。
【0229】これにより、同等なオブジェクトが目的点
のプレイスに存在する場合において、ネットワーク通信
媒体を横切るオブジェクトの移動が避けられる。特に、
クラスオブジェクトが相互変換可能なため、第2のプレ
イスに移動するエージェントが、第2のプレイスにおい
て定義されていないクラスを定義するクラスオブジェク
トのみの第2のプレイスへの移動を生じさせる。ネット
ワークを通るクラスオブジェクト(複数)の必要な運動
を避けることによって、あるエージェントによって所有
されたオブジェクトが所属する1以上のクラスの定義を
含まないプレイスへのこれらのオブジェクトの移動が実
用的にされる。
【0230】本発明の一実施例によればクラスはサイテ
ーションによって特定される。異なったベンダ(供給
者)によって供給される多くのコンピュータシステムを
有するコンピュータネットワークにおいて、エージェン
トプロセスがそれにむかって、又はそれから移動するこ
とのできるいろいろのコンピュータシステム上に、ここ
に開示されたインストラクションセットの色々のバージ
ョンをインプリメントすることができる。サイテーショ
ンは、相互に対し前方向又は後ろ方向にコンパティブル
なクラス又はオブジェクトを特定するために用いられる
オブジェクトである。したがって第1のクラスのオブジ
ェクト又は第1のクラス自身の使用を必要とするあるイ
ンストラクションは、第2のクラスが第1のクラスに対
して後ろ方向にコンパティブルである場合、インストラ
クションの特別の要求に依存して、第2のクラスのオブ
ジェクト又は第2のクラス自身を使用することができ
る。
【0231】第1のプレイスを占有しているエージェン
トは、そのエージェントの1以上のクローンを作りだ
し、各々のクローンをそれぞれのプレイスに移動させる
こともできる。クローンは、現存のエージェントプロセ
スの複製の結果としてのエージェントプロセスである。
エージェントは、1以上のクローンの生成を開始し制御
し、さらに、オペレーション”send”の遂行によって各
々のクローンのそれぞれのプレイスプロセスへの移動を
開始し制御する。エージェントは生成させるべきクロー
ンの数を指定し、オペレーション”send”のアーギュメ
ントとして供給される1以上のチケットをつくり出すこ
とによって、対応するトリップを定義する。各々のチケ
ットは、エージェントの各々のクローンによってなされ
るトリップを定義する。エージェントによって供給され
るチケットの数は、作り出されたクローンの数を規定す
る。
【0232】エージェントのあるクローンが第2のプレ
イスに移動されると、そのクローンがつくり出された時
点においてのエージェントの実効状態を最初備えてい
る。したがってそのクローンが第2のプレイスに到達し
た時、クローンは、オペレーション”go”について前述
したように第2のプレイスへの前記エージェントへの移
動をシュミレイトするように実効を継続する。
【0233】従来の技術によれば、第1のプロセスすな
わちヘッド(頭)プロセスは、同一のインターフェース
を持った、すなわち、ヘッドプロセスと同一のオペレー
ションを一般に遂行することができたリム(手足)プロ
セスをつくり出した。リムプロセスは、ヘッドプロセス
によって指示された以外の働きはせず、単にヘッドプロ
セスの指示にしたがって、遠隔のコンピュータシステム
に移動することができる。
【0234】しかし、本発明によれば、クローンは自立
的であり、そのクローンをつくり出したエージェントに
よって制御されない。一例としてクローンは後述するミ
ーティングをとりはからうためのエージェントによるす
べての試みを無視するように設計することができ、それ
によりエージェントとクローンは相互作用することがで
きる。エージェントは後述するように他のエージェント
と相互作用することを試みるのと同じ仕方で、エージェ
ントのクローンと相互作用するように努めなければなら
ない。クローンは自立的であるから、第2のプレイスを
占有するクローンは、エージェントによってそのように
指示されることなく、またエージェントの同意さえなし
に、オペレーション”go”の遂行によって第3のプレイ
スに移動することができる。
【0235】従来の技術によるリムプロセスは、活性で
なく、ヘッドプロセスの指示によってのみ作業したの
で、ヘッドプロセスとの遠隔のリムプロセスとは必然的
にネットワークの通信媒体を横切って相互作用してい
た。したがってこの従来技術によるシステムへのパラダ
イムは、遠隔プロシージャコーリングに一層類縁であ
る。対照的に、本発明にしたがって形成されたエージェ
ントのクローンは、活性であり、自立的であり、エージ
ェントを形成するすべてのインストラクションを具現し
ている。
【0236】したがって、ネットワーク通信媒体を横切
るいかなる相互作用も必要ではない(実際にはいかなる
相互作用も許容されない)。したがって本発明のパラダ
イムはリモートプログラミングに一層類縁である。した
がって本発明は不変性において従来技術にくらべて顕著
な増大を表している。
【0237】本発明の一実施例による効率の増大は、あ
るエージェントのクローニングをできるだけ長く遅延さ
せることによるオペレーション”send”の遂行において
実現される。一例として、第1のクローンと第2のクロ
ーンとがそれぞれ第1のプレイスと第2のプレイスとに
送られるものとする。エージェントが第1のコンピュー
タシステムにおいて実行され、第1のプレイスが第2の
コンピュータシステムにおいて実行され、第2のプレイ
スが第3のコンピュータシステムにおいて実効されてい
るものと想定する。さらに、第1のプレイス及び第2の
プレイスに移動する際に第1及び第2のクローンが、第
4のコンピュータシステムにおいて作動しているエンジ
ンを通って移動しなければならないものと想定する。こ
のような場合、単一のクローンが形成され、第4のコン
ピュータシステム内において実行しているエンジンに転
送される。したがって元のエージェントを解釈している
エンジン内では単一のクローンがつくり出されるにすぎ
ないので、そのエンジン内においてスペースが節減さ
れ、ただ1つのクローンがネットワーク通信媒体を横切
って第4のコンピュータシステムに転送されるので、ク
ローンを第4のコンピュータシステムに転送する時間が
節減される。第4のコンピュータシステム内において実
行しているエンジンは、第1及び第2のクローンを前記
単一のクローンから形成し、これらの第1及び第2のク
ローンをそれぞれ第1及び第2のプレイスに転送する。
【0238】エンジンは、エージェントの大きさの主要
部分を占めるオブジェクトたとえば、デジタル化音声の
ファクシミリ伝送のようなラスター化されたグラフィッ
クイメージを所有することができるので、各々が個々の
クローンによって所有されている非常に大きなオブジェ
クトのいくつかのコピーを単一のエンジンに送ることを
避けることによって実質的な時間及び費用が節減され
る。
【0239】あるプレイスを占有している第1のエージ
ェントは、その第1のエージェントとその場所を占有し
ている第2のエージェントとの間のミーティングを開始
することができる。このミーティングの間に第1のエー
ジェントは、オブジェクトの形のデータを第2のエージ
ェントに対して移送させたり受けたりすることができ
る。そして第2のエージェントプロセスは、オブジェク
トの形のデータを第1のエージェントに対して移送した
り受けたりすることができる。
【0240】本発明は第1のプロセスによって仮想的な
ブレッチンボード上においてメッセージを郵送すること
を教示した従来技術のシステムに対する顕著な改良を表
している。メッセージは次に予定された受領プロセスに
よって読まれる。従来技術のシステムによれば、第1の
プロセスは、仮想的なブレッチンボード上においてリフ
ァレンスを郵送することによって第1のプロセスへのリ
ファレンスを第2のプロセスに与える。しかしリファレ
ンスを同時に交換するメカニズムは存在しないため、第
2のプロセスは、第2のプロセスへのリファレンスを第
1のプロセスに与える前に第1のプロセスにアクセスす
る。したがって、悪意のあるプロセスがそれ自身に対す
るアクセスを他のプロセスに許容することなく他のプロ
セスへのアクセスを取得することを妨げるメカニズムは
存在しない。
【0241】本発明は、第1のプロセスへのアクセスを
第2のプロセスに同時に許容することなしに第1のプロ
セスが第2のプロセスにアクセスすることができないよ
うに2つのプロセスの間のコンタクトを確立するための
改良された方法を表している。
【0242】本発明の一実施例によれば、2つのエージ
ェントは、両方のエージェントが同一のプレイスを占有
し、そのプレイスがミーティングプレイスである場合に
のみ相互作用することができる。ミーティングプレイス
は、プレイスクラスのサブクラスであるミーティングプ
レイスクラスの1つのメンバであるプレイスである。第
1のエージェントは、ミーティングプレイスがミーティ
ングを整えるように指示するインストラクションを送出
することによって、第1のエージェントと第2のエージ
ェントとの間のミーティングを取り決めるように指示す
る。送出されたインストラクションはオペレーション”
meet”と呼ばれ、第1のエージェントがこのインストラ
クションを送出することは、リクエスティングアミーテ
ィング(ミーティングの要求)と呼ばれる。
【0243】第1のエージェントは、インストラクショ
ンに対するアーギュメントとして、ミーティングを定義
するペティションを供給する。ペティションは、第2の
エージェントをペティションされるエージェントとして
指定することによってミーティングを定義する。第2の
エージェントは第2のエージェントのネーム及び/又は
クラスを指定することによって指定される。ペティショ
ンはさらに、ミーティングが取り計られたり放棄された
りする時間の量を指定することによってミーティングを
さらに定義する。
【0244】ミーティングを取り計らう際に、ミーティ
ングプレイスは、第1のエージェントのネーム及びクラ
スを第2のエージェントに供給するとともに、第2のエ
ージェントとそのミーティングを要求するインストラク
ションを第1のエージェントが送出したことを指示す
る。第2のエージェントは第1のエージェントのネーム
及びクラスを検査し、第1のエージェントとのミーティ
ングを受け入れるか拒絶するかをミーティングプレイス
に回答する。
【0245】ミーティングが拒絶された場合、第1のエ
ージェントは、第2のエージェントが利用可能でないこ
との通知を受ける。ミーティングが受け入れられない場
合、ミーティングプレイスは、第1のエージェントへの
リファレンスを第2のエージェントに与えるとともに、
第2のエージェントへのリファレンスを第1のエージェ
ントに与える。第1のエージェントは、第2のエージェ
エントへのリファレンスによって(i)オペレーション
を遂行するように第2のエージェントに指示し、(i
i)アーギュメントとしてのオブジェクトを第2のエー
ジェントに供給し、(iii)第2のエージェントから
結果としてのオブジェクトを受けることができる。第2
のエージェントは第1のエージェントへのリファレンス
をもつので、第2のエージェントは、第1のエージェン
トについて同様の能力を有する。
【0246】第1のエージェント又は第2のエージェン
トは、適切な指令を送出することによって両者の間のミ
ーティングを終了させることができる。ミーティングプ
レイスは、送出された指令に応答してオペレーション”
part”を実行することによって、第1のエージェントに
含まれる第2のエージェントへのリファレンスをボイド
(無効にする)し、さらに第2のエージェントに含まれ
る第1のエージェントへのリファレンスをボイドし、そ
れにより2つのエージェントの間の相互作用を終了させ
る。
【0247】本発明は、第2のエージェントが同意する
ことなしには、又は第2のエージェントに第1のエージ
ェントへのアクセスを許容することなしには、第1のエ
ージェントが第2のエージェントにアクセスすることが
できないため、従来技術にくらべて顕著な改良を表して
いる。さらに2つのエージェントは両者が同一のミーテ
ィングにプレイスを占有しない限り相互作用できないの
で、エージェントに対して中間レベルのセキュリティが
使用可能となる。たとえば、あるエージェントは他のエ
ージェントによってその位置が広くしられていないミー
ティングプレイスを占有することによって、他のエージ
ェントからそれ自身をプロテクトすることができる。そ
の逆に、高度に可視的であるように設計されるエージェ
ントは、周知のミーティングプレイスを占有することが
できる。このようなメカニズムは従来技術においては使
用することができない。
【0248】
【実施例】以下、本発明の実施例について図面を参照し
ながら説明する。
【0249】本発明は、エージェントクラス及びプレイ
スクラスを含む複数のオブジェクト指向クラスを定義
し、前記オブジェクト指向クラス、該オブジェクト指向
クラスのサブクラス及び go オペレーションを含む、コ
ンピュータプロセスのためのインストラクションを形成
し、該コンピュータネットワーク中のプロセッサによっ
て前記インストラクションをインタープリートし、前記
go オペレーションに応答して、エージェントプロセス
がプレイスプロセスに転送され、前記エージェントプロ
セスが、前記エージェントクラスの1つのメンバであ
り、前記プレイスプロセスは前記プレイスクラスの1つ
のメンバであることを特徴とする。
【0250】本発明は、前記エージェントプロセスにお
いて前記 go オペレーションを形成することを特徴とす
る。
【0251】本発明は、前記プレイスのサブプレイスを
形成し、前記サブプレイスは前記プレイスクラスの1つ
のメンバであり、前記プレイスは前記サブプレイスの1
つのスーパープレイスであることを特徴とする。
【0252】本発明は、前記エージェントプロセスをオ
ブジェクトのオーナーとして指定することを特徴とす
る。
【0253】本発明は、前記オブジェクト中にダイジェ
ストを形成することを特徴とする。
【0254】本発明は、前記オブジェクトの代わりに前
記プレイスプロセスにおいて第2のオブジェクトを相互
変換し、前記第2のオブジェクトは、前記ダイジェスト
と同等の第2のダイジェストを有し、前記第1のオブジ
ェクトは前記プレイスプロセスに転送されないことを特
徴とする。
【0255】本発明は、前記プレイスプロセスをチケッ
ト手段によって指定することを特徴とする。
【0256】本発明は、前記チケット手段を前記エージ
ェントプロセス内において形成することを特徴とする。
【0257】本発明は、前記チケット手段中において前
記プレイスプロセスのアドレスを形成することを特徴と
する。
【0258】本発明は、前記アドレスがテレアドレスで
あることを特徴とする。
【0259】本発明は、前記チケット手段中において前
記プレイスプロセスのネームを形成することを特徴とす
る。
【0260】本発明は、前記ネームがテレネームである
ことを特徴とする。
【0261】本発明は、クラスオブジェクトのクラスを
規定し、クラスオブジェクトを形成し、前記クラスオブ
ジェクトは、(i)クラスオブジェクトの前記クラスの
1つのメンバであり、(ii)前記オブジェクト指向ク
ラスの選択された1つのもののサブクラスである第1の
クラスを規定し、前記第1のクラスの1つのメンバであ
るオブジェクトを形成し、前記エージェントプロセス
は、前記オブジェクトを所有し、前記エージェントプロ
セスを前記プレイスプロセスに転送することが、前記オ
ブジェクト及び前記クラスオブジェクトを前記プレイス
プロセスに転送することを含むことを特徴とする。
【0262】本発明は、エージェントクラスとプレイス
クラスとを含む複数のオブジェクト指向クラスを定義
し、前記オブジェクト指向クラス、前記オブジェクト指
向クラスのサブクラス及び send オペレーションを含む
コンピュータプロセスのためのインストラクションを形
成し、前記コンピュータのネットワーク中のプロセッサ
において前記インストラクションをインタープリートす
る際に、前記 send オペレーションに応答してエージェ
ントプロセスの1つのクローンが1つのプレイスプロセ
スに転送され、前記クローン及び前記エージェントプロ
セスは、各々前記エージェントクラスの1つのメンバで
あり、前記プレイスプロセスは前記プレイスクラスの1
つのメンバであることを特徴とする。
【0263】本発明は、前記 send オペレーションを前
記エージェントプロセス中において形成することを特徴
とする。
【0264】本発明は、前記プレイスのサブプレイスを
形成し、前記サブプレイスは前記プレイスクラスの1つ
のメンバであり、前記プレイスは前記サブプレイスの1
つのスーパープレイスであることを特徴とする。
【0265】本発明は、前記エージェントプロセスをオ
ブジェクトのオーナーとして指定することを特徴とす
る。
【0266】本発明は、前記クローンの転送が前記プロ
ジェクトのコピーを前記プレイスプロセスに転送するこ
とを特徴とする。
【0267】本発明は、前記オブジェクト中にダイジェ
ストを形成することを特徴とする。
【0268】本発明は、前記オブジェクトと異なる第2
のオブジェクトを前記プレイスプロセスにおいて前記コ
ピーと相互変換し、前記プレイスプロセスにおいて前記
第2のオブジェクトは、前記ダイジェストと同等の第2
のダイジェストを持ち、前記コピーは前記プレイスプロ
セスに転送されないことを特徴とする。
【0269】本発明は、前記プレイスプロセスをチケッ
ト手段によって指定することを特徴とする。
【0270】本発明は、前記エージェントプロセス中に
おいて前記チケット手段を形成することを特徴とする。
【0271】本発明は、前記プレイスプロセスのアドレ
スを前記チケット手段中において形成することを特徴と
する。
【0272】本発明は、前記アドレスがテレアドレスで
あることを特徴とする。
【0273】本発明は、前記チケット手段中において前
記プレイスプロセスの1つのネームを形成することを特
徴とする。
【0274】本発明は、前記ネームがテレネームである
ことを特徴とする。
【0275】本発明は、前記 send オペレーションに応
答して前記エージェントプロセスの第2のクローンを第
2のプレイスプロセスに転送し、前記第2のクローン
は、前記クローンとは異なり、前記エージェントクラス
の1つのメンバであり、前記第2のプレイスプロセスは
前記プレイスプロセスの1つのメンバであることを特徴
とする。
【0276】本発明は、前記第1のクローンを前記第1
のプレイスプロセスに転送し、前記第2のクローンを前
記第2のプレイスプロセスに転送するためには、前記コ
ンピュータネットワークの複数のコンピュータの内の単
一のコンピュータに前記第1及び第2のクローンを転送
することを必要であることを定め、前記第1のクローン
を前記単一のコンピュータに転送し、前記単一のコンピ
ュータにおいて前記第1のクローンから前記第2のクロ
ーンを形成することを特徴とする。
【0277】本発明は、前記単一のコンピュータから前
記プレイスプロセスに前記第2のクローンを転送し、前
記単一のコンピュータから前記第2のプレイスプロセス
に前記第2のクローンを転送することを特徴とする。
【0278】本発明は、エージェントクラスを含む複数
のオブジェクト指向クラスを定義し、前記オブジェクト
指向クラス、前記オブジェクト指向クラスのサブクラス
及びmeet オペレーションを含むコンピュータプロセス
のためのインストラクションを形成し、前記コンピュー
タネットワーク中の1つのプロセッサにおいて前記イン
ストラクションをインタープリートし、ミーティングプ
レイスプロセスが前記meet オペレーションに応答し
て、第2のエージェントプロセスへの第1のエージェン
トプロセスのアクセスを供与し、前記第1のエージェン
トプロセスへの前記第2のエージェントプロセスのアク
セスも供与し、さらに、前記第1及び第2のエージェン
トプロセスが前記エージェントクラスのメンバであるこ
とを特徴とする。
【0279】本発明は、前記ミーティングプレイスプロ
セスが前記複数のオブジェクト指向クラス中のプレイス
クラスの1つのメンバであり、前記第1及び第2のエー
ジェントプロセスが前記ミーティングプレイスプロセス
を占有することを特徴とする。
【0280】本発明は、第2のプレイスプロセスを形成
し、第2のプレイスプロセスは前記プレイスクラスの1
つのメンバであり、前記第2のプレイスプロセスは前記
ミーティングプレイスプロセスの1つのサブプレイスで
あり、前記ミーティングプレイスは前記第2のプレイス
のスーパープレイスであることを特徴とする。
【0281】本発明は、エージェントクラス、プレイス
クラス及びチケットクラスを含む複数のオブジェクト指
向クラスを定義し、各々が前記プレイスクラスの1つの
メンバである、前記コンピュータネットワーク中の複数
のプレイスプロセスを形成し、前記エージェントクラス
の1つのメンバであって前記複数のプレイスプロセス中
の第1のプレイスプロセスを占有する、エージェントプ
ロセスを形成し、前記チケットクラスの1つのメンバで
あり、前記複数のプレイスプロセス中の前記第1のプレ
イスプロセスから第2のプレイスプロセスへの前記エー
ジェントプロセスの移動を含むトリップを定義するチケ
ットを形成することを特徴とする。
【0282】本発明は、プレイスプロセスとパーミット
クラスとを含む複数のオブジェクト指向クラスを定義
し、前記プレイスクラスの1つのメンバであるプロセス
を形成し、前記パーミットクラスの1つのメンバであっ
て前記プロセスの1以上の能力を指定するパーミットを
形成することを特徴とする。
【0283】本発明は、前記プロセスクラス中に go オ
ペレーションを定義し、前記プロセスが前記 go オペレ
ーションを遂行しうるか否かを前記パーミット中におい
て指定することを特徴とする。
【0284】本発明は、前記プロセスクラス中に send
オペレーションを定義し、前記プロセスが前記 send オ
ペレーションを遂行しうるか否かを前記パーミット中に
おいて指定することを特徴とする。
【0285】本発明は、前記プロセスクラス中において
charge オペレーションを定義し、前記プロセスが前記
charge オペレーションを遂行しうるか否かを前記パー
ミット中において指定することを特徴とする。
【0286】本発明は、前記プロセスクラス中に termi
nateオペレーションを定義し、前記プロセスが前記 ter
minateオペレーションを遂行しうるか否かを前記パーミ
ット中において指定することを特徴とする。
【0287】本発明は、 前記プロセスが前記プロセス
と異なった第2のプロセスを作り出すことができるか否
かを前記パーミット中において指定し、該第2のプロセ
スは前記プロセスクラスの1つのメンバであることを特
徴とする。
【0288】本発明は、オブジェクト指向プレイスクラ
スを定義し、前記パーミット中に前記プロセスが前記プ
レイスプロセスの複数のメンバを作り出すことができる
か否かを前記パーミット中において指定することを特徴
とする。
【0289】本発明は、前記プロセスが失敗した時に前
記プロセスが再スタートされるか否かを前記パーミット
中において指定することを特徴とする。
【0290】本発明は、前記プロセスに割り当てられた
処理量を前記パーミット中において指定することを特徴
とする。
【0291】本発明は、前記プロセスが終了する時間を
前記パーミット中において指定することを特徴とする。
【0292】本発明は、前記プロセスクラス中において
制限オペレーションを定義し、前記クラス、前記クラス
のサブクラス及び前記制限オペレーションを含むコンピ
ュータプロセスのためのインストラクションを形成し、
前記コンピュータネットワーク中のプロセッサにおいて
前記インストラクションをインタープリートし、前記パ
ーミットと異なる第2のパーミットが前記制限オペレー
ションに応答して形成され、前記第2のパーミットは前
記パーミットクラスの1つのメンバであり、前記プロセ
スの前記1以上の能力の1つのグループを指定し、前記
第2のパーミットによって指定された1以上の能力の前
記グループに前記プロセスを制限することを特徴とす
る。
【0293】本発明は、コンピュータにおいて、クラス
(複数)の1つのクラスとサイテーション(複数)の1
つのクラスを含む、複数のオブジェクト指向クラスを定
義し、前記複数のクラスの前記クラスのメンバである1
以上のクラスオブジェクトを形成し、前記第1のクラス
オブジェクトを指定するとともに、前記クラスオブジェ
クトの内のどれが前記第1のオブジェクトに対して後方
にコンパティブルであるかを指定するサイテーションを
前記クラスオブジェクト内の第1のものの中に形成する
ことを含む、インストラクションセットの種々のバージ
ョンのプロセス(複数)をインタープリートする。
【0294】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、各々がゼロ又はそれ
以上のエージェントプロセスのための前記コンピュータ
内の1つのもののある場所である複数のプレイスプロセ
スを前記コンピュータネットワーク中に用意し、前記複
数のプレイスプロセス中の目的点プレイスプロセスへの
エージェントプロセスのトリップをチケット手段によっ
て指定し、前記エージェントプロセス中の send オペレ
ーションに応答して前記エージェントプロセスの1つの
クローンを前記目的点プレイスプロセスに転送すること
を特徴とする。
【0295】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記複数のプレイス
プロセス中の第2の目的点プレイスプロセスへの前記第
2のエージェントプロセスの前記トリップと異なる第2
のトリップを第2のチケット手段によって指定すること
を特徴とする。
【0296】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記第1のトリップ
を行なう前記クローンと前記第2のトリップを行なう第
2のクローンとがどちらも前記コンピュータの内の単一
のコンピュータに転送されるべきことを定め、前記第1
のクローンを前記単一のコンピュータに移動させ、前記
単一のコンピュータ中に、前記第1のクローンと異なる
前記第2のクローンを形成することを特徴とする。
【0297】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記第1のクローン
を前記目的点プレイスプロセスに転送することを特徴と
する。
【0298】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記第2のクローン
を前記第2の目的点プレイスプロセスに転送することを
特徴とする。
【0299】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェントプ
ロセス中の go オペレーションに応答して、前記チケッ
ト手段によって指定される前記目的点プレイスプロセス
に前記エージェントプロセスを転送することを特徴とす
る。
【0300】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段中
のネームによって前記目的点プレイスプロセスを指定す
ることを特徴とする。
【0301】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記ネームがテレネ
ームであることを特徴とする。
【0302】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段中
のアドレスによって前記目的点プレイスプロセスを指定
することを特徴とする。
【0303】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記アドレスがテレ
アドレスであることを特徴とする。
【0304】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスがその1つのメンバであるクラスのサイテーシ
ョンによって前記目的点プレイスプロセスを前記チケッ
ト手段中において指定することを特徴とする。
【0305】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスのアドレス、前記目的点プレイスプロセスのネ
ーム及び前記目的点プレイスプロセスがその1つのメン
バであるクラスのサイテーションの任意の組み合わせに
よって前記目的点プレイスプロセスを前記チケット手段
中において指定することを特徴とする。
【0306】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記トリップの最大
の期間を前記チケット手段中に指定することを特徴とす
る。
【0307】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記トリップのため
の望ましい期間を前記チケット手段中に指定することを
特徴とする。
【0308】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、転送手段を前記チケ
ット手段中に指定し、該転送手段は前記クローンを転送
するためのコンピュータ間通信手段の形式を指定するこ
とを特徴とする。
【0309】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記エージェントプロセスのデッドラ
インを、前記チケット手段中に含まれる目的点パーミッ
トによって制御することを特徴とする。
【0310】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記エージェントプロセスが遂行する
ことが許可されたオペレーションを、前記チケット手段
に含まれる目的点パーミットによって制御することを特
徴とする。
【0311】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記エージェントプロセスが消費する
ことが許可されたリソースを、前記チケット手段に含ま
れる目的点パーミットによって制御することを特徴とす
る。
【0312】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいての他のプロセスに対する前記目的点プ
レイスプロセスにおいての前記エージェントプロセスの
相対的なプライオリティを、前記チケット手段に含まれ
る目的点パーミットによって指定することを特徴とす
る。
【0313】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、あるプロセスが持つ
ことを許可される能力をパーミット手段を介して制御す
ることを特徴とする。
【0314】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が固有のパーミットであることを特徴とする。
【0315】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
がローカルパーミットであることを特徴とする。
【0316】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が一時的なパーミットであることを特徴とする。
【0317】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が前記プロ
セスの消費しうるリソースからなることを特徴とする。
【0318】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、その後
ではプロセスが進行しえないデッドラインを含むことを
特徴とする。
【0319】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が他のプロ
セスに対する前記プロセスの相対的なプライオリティを
含むことを特徴とする。
【0320】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、前記プ
ロセスが選択されたオペレーションを遂行する許可を含
むことを特徴とする。
【0321】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェントプ
ロセスがオブジェクトを所有することを特徴とする。
【0322】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記オブジェクトが
ダイジェストを有することを特徴とする。
【0323】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェントプ
ロセスのクローンを転送する前記工程が前記オブジェク
トのコピーを転送することを含むことを特徴とする。
【0324】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記コピーを第2のオブジェクトに相
互変換し、該第2のオブジェクトは、最初に述べた前記
ダイジェストと同等のダイジェストを有し、前記コピー
は前記目的点プレイスプロセスには転送されないことを
特徴とする。
【0325】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスにおいて前記オブジェクトの代わりに、相互変
換されたオブジェクトを使用して、前記オブジェクトを
前記目的点プレイスプロセスに転送する必要を除くこと
を特徴とする。
【0326】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記転送工程が前記
目的点プレイスプロセスにエンタする工程を含むことを
特徴とする。
【0327】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記転送ステップが
前記ソースプレイスプロセスをエクシットする工程を含
むことを特徴とする。
【0328】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
プロセスがミーティングプレイスプロセスであり、前記
ミーティングプレイスはリクエスタエージェントプロセ
スとペティションドエージェントプロセスとの間のミー
ティングを取り計らうことを特徴とする。
【0329】本発明は、コンピュータにおいて、第1の
エージェントプロセスと第2のエージェントプロセスと
を用意し、ペティション手段によって、前記第1のエー
ジェントプロセスと第2のエージェントプロセスとの間
のミーティングを指定し、前記ペティション手段によっ
て定義された前記第1のエージェントプロセスと第2の
エージェントプロセスとの間の前記ミーティングを取り
計らうことを特徴とする。
【0330】本発明は、コンピュータにおいて、前記第
1のエージェントプロセス中に前記ペティション手段を
形成することを特徴とする。
【0331】本発明は、コンピュータにおいて、ミーテ
ィングを特定する前記工程は、前記ペティション手段中
において前記第2のエージェントプロセスを指定するこ
とを特徴とする。
【0332】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスを指定する前記工程が、前記
第2のエージェントをネームによって前記ペティッショ
ン手段中において指定することを特徴とする。
【0333】本発明は、コンピュータにおいて、前記ネ
ームがテレネームであることを特徴とする。
【0334】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスを指定する前記工程が、前記
第2のエージェントプロセスがその1つのメンバである
クラスを前記ペティッション手段中において指定するこ
とを特徴とする。
【0335】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスを指定する前記工程は、前記
第2のエージェントプロセスがその1つのメンバである
クラスのサイテーションを前記ペティッション手段中に
おいて指定することを特徴とする。
【0336】本発明は、 コンピュータにおいて、ミー
ティングを指定する前記工程が、前記ミーティングを取
り計らうための最大の期間を前記ペティション手段中に
おいて指定することを特徴とする。
【0337】本発明は、コンピュータにおいて、前記ミ
ーティングを取り計らう前記工程は、前記第2のエージ
ェントプロセスへのリファレンスを前記第1のエージェ
ントプロセスに供与することを特徴とする。
【0338】本発明は、コンピュータにおいて、前記ミ
ーティングを取り計らう前記工程が、前記第1のエージ
ェントプロセスへのリファレンスを前記第2のエージェ
ントプロセスに対して供与することを特徴とする。
【0339】本発明は、コンピュータにおいて、前記第
2のエージェントプロセス中のオペレーションの遂行を
前記第1のエージェントプロセス中においてインストラ
クションに応答して生じさせることを特徴とする。
【0340】本発明は、コンピュータにおいて、前記第
1のエージェントプロセスがオブジェクトを所有するこ
とを特徴とする。
【0341】本発明は、コンピュータにおいて、前記オ
ブジェクトへのリファレンスを前記第2のエージェント
プロセスに対して供与することを特徴とする。
【0342】本発明は、コンピュータにおいて、前記リ
ファレンスが保護されるリファレンスであることを特徴
とする。
【0343】本発明は、コンピュータにおいて、前記オ
ブジェクトのコピーへのリファレンスを前記第2のエー
ジェントプロセスに供与することを特徴とする。
【0344】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスがオブジェクトを所有するこ
とを特徴とする。
【0345】本発明は、コンピュータにおいて、前記オ
ブジェクトへのリファレンスを前記第1のエージェント
プロセスに対して供与することを特徴とする。
【0346】本発明は、コンピュータにおいて、前記リ
ファレンスがプロテクトされたリファレンスであること
を特徴とする。
【0347】本発明は、コンピュータにおいて、前記オ
ブジェクトのコピーへのリファレンスを前記第1のエー
ジェントプロセスに対して供与することを特徴とする。
【0348】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、チケット手段及び s
end オペレーションを有するエージェント手段と、前記
複数のコンピュータの1つにおいてその各々が動作する
複数のプレイス手段とを有し、前記エージェント手段は
前記複数のプレイス手段中の第1のプレイス手段であ
り、前記チケット手段は、前記複数のプレイス手段中の
目的点プレイス手段への前記エージェント手段のトリッ
プを指定し、前記 send オペレーションは、前記エージ
ェント手段の1つのクローンを前記目的点手段に転送す
ることを特徴とする。
【0349】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段が、前記エージェント手段のための第2の目的点プレ
イス手段への第2のトリップを指定する、前記チケット
手段と異なる第2のチケット手段を、含むことを特徴と
する。
【0350】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記 send オペレー
ションの遂行によって前記エージェント手段の第2のク
ローンが前記第2の目的点プレイス手段に転送されるこ
とを特徴とする。
【0351】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記トリップ及び前
記第2のトリップが、前記複数のコンピュータ中のある
単一のコンピュータへの転送を含み、前記クローンを前
記目的点プレイス手段に転送し、前記第2のクローンを
前記第2の目的点手段に転送する際に、前記 send オペ
レーションの遂行によって、(a)前記第1のクローン
が前記単一のコンピュータに転送され、(b)前記単一
のコンピュータ中において前記第1のクローンから前記
第2のクローンが形成されることを特徴とする。
【0352】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段が go オペレーションを含み、前記 go オペレーショ
ンは、第3のチケット手段によって指定された第3の目
的点プレイス手段に前記エージェント手段を転送するこ
とを特徴とする。
【0353】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記目的点プレイス手段を特定するネームを含むことを
特徴とする。
【0354】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記ネームがテレネ
ームであることを特徴とする。
【0355】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記目的点プレイス手段のためのアドレスを含むことを
特徴とする。
【0356】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記アドレスがテレ
アドレスであることを特徴とする。
【0357】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記目的点プレイス手段をその1つのメンバとするクラ
スを指定するサイテーション手段を含むことを特徴とす
る。
【0358】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段
が、前記目的点プレイス手段のアドレスと、前記目的点
プレイス手段のネームと、前記目的点プレイス手段をそ
の1つのメンバとするクラスを指定するサイテーション
手段とからなる群中より選ばれた任意の組合せを含むこ
とを特徴とする。
【0359】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記トリップのための最大の期間を指定する手段を含む
ことを特徴とする。
【0360】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段が
前記トリップのための望ましい期間を指定する手段を含
むことを特徴とする。
【0361】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段
が、前記トリップ手段を完成させるコンピュータ間通信
手段の形式を指定するウェイ手段を含むことを特徴とす
る。
【0362】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記チケット手段
が、前記目的点プレイス手段においての前記エージェン
ト手段のためのデッドラインを制御するパーミット手段
を含むことを特徴とする。
【0363】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段が前記目的点プレイス手段において遂行することが許
可されているオペレーションを制御するためのパーミッ
ト手段を前記チケット手段を有することを特徴とする。
【0364】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
手段において前記エージェント手段が消費することが許
可されているリソースを制御するためのパーミット手段
を前記チケット手段が有することを特徴とする。
【0365】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
手段においての他のエージェント手段に対する前記目的
点プレイス手段においての前記エージェント手段の相対
的なプライオリティを指定するためのパーミット手段を
前記チケット手段が有することを特徴とする。
【0366】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、エージェント手段が
持つことが許可される能力を制御するためのパーミット
手段を有することを特徴とする。
【0367】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が固有のパーミットであることを特徴とする。
【0368】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
がローカルパーミットであることを特徴とする。
【0369】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記パーミット手段
が一時的なパーミットであることを特徴とする。
【0370】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が前記エー
ジェント手段の消費しうるリソースを含むことを特徴と
する。
【0371】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、前記エ
ージェント手段がそれから後進行することのできないデ
ッドラインを含むことを特徴とする。
【0372】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、他のエージェント手
段を含み、前記能力は、前記他のエージェント手段に対
する前記エージェント手段の相対的なプライオリティを
含むことを特徴とする。
【0373】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記能力が、前記エ
ージェント手段が選択されたオペレーションを遂行する
許可を含むことを特徴とする。
【0374】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記エージェント手
段がオブジェクトを所有することを特徴とする。
【0375】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記オブジェクトが
ダイジェストを有することを特徴とする。
【0376】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記オブジェクトの
コピーが前記クローンとともに、前記 send オペレーシ
ョンの遂行によって転送されることを特徴とする。
【0377】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記目的点プレイス
手段において第2のオブジェクトは前記コピーに相互変
換され、前記第2のオブジェクトは、前記ダイジェスト
と同等のダイジェストを持つことによって前記コピーを
前記目的点プレイス手段に転送することを不要とするこ
とを特徴とする。
【0378】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記 send オペレー
ションが前記目的点プレイス手段においての前記コピー
の代わりに相互変換されたオブジェクトを使用すること
によって、前記オブジェクトの前記コピーを前記目的点
プレイス手段に転送する必要を除くことを特徴とする。
【0379】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記プレイス手段は
前記プレイス手段にエンタするための手段を有すること
を特徴とする。
【0380】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記プレイス手段が
前記プレイス手段をエグジットする手段を有することを
特徴とする。
【0381】本発明は、複数のコンピュータを有するコ
ンピュータネットワークにおいて、前記プレイス手段が
ミーティングプレイス手段を含み、前記ミーティングプ
レイス手段はリクエスタエージェント手段とレスポンダ
エージェント手段との間のミーティングを取り計らうこ
とを特徴とする。
【0382】本発明は、コンピュータにおいて、 meet
オペレーションを有するミーティングプレイス手段を有
し、該ミーティングプレイスは、複数のエージェント手
段のための場所であり、更に、ペティッション手段と、
前記複数のエージェント手段の内の第1のエージェント
手段と、前記複数のエージェント手段の中の第2のエー
ジェント手段とを有し、前記第1のエージェント手段及
び第2のエージェント手段は前記複数のエージェント手
段の内のどれともミートでき、前記ペティッション手段
は前記第1のエージェント手段と第2のエージェント手
段との間のミーテングを指定し、前記ミーティング手段
は前記 meet オペレーションに応答して前記ミーティン
グを取り計らうことを特徴とする。
【0383】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記ペティッション手段を有す
ることを特徴とする。
【0384】本発明は、コンピュータにおいて、前記ペ
ティッション手段が前記第2のエージェントプロセスを
規定することによって前記ミーティングを指定すること
を特徴とする。
【0385】本発明は、コンピュータにおいて、前記ペ
ティッション手段が前記第2のエージェント手段を指定
するネームを含むことを特徴とする。
【0386】本発明は、コンピュータにおいて、前記ネ
ームがテレネームであることを特徴とする。
【0387】本発明は、コンピュータにおいて、前記第
2のエージェントプロセスがその1つのメンバであるク
ラスを指定することによって前記ペティッション手段が
前記第2のエージェントを指定することを特徴とする。
【0388】本発明は、コンピュータにおいて、前記ペ
ティッション手段がサイテーションを含み、該サイテー
ションは、前記第2のエージェントプロセスがその1つ
のメンバであるクラスを指定することを特徴とする。
【0389】本発明は、コンピュータにおいて、前記ペ
ティッション手段が前記ミーティングを取り計らうため
の最大の期間を規定することを特徴とする。
【0390】本発明は、コンピュータにおいて、前記 m
eet オペレーションが前記第2のエージェント手段への
リファレンスを前記第1のエージェント手段に供与する
ことを特徴とする。
【0391】本発明は、コンピュータにおいて、前記 m
eet オペレーションが前記第1のエージェント手段への
リファレンスを前記第2のエージェント手段に供与する
ことを特徴とする。
【0392】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記第2のエージェント手段中
のオペレーションの遂行を生じさせることを特徴とす
る。
【0393】本発明は、コンピュータにおいて、前記第
1のエージェント手段がオブジェクトを所有することを
特徴とする。
【0394】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記オブジェクトへのリファレ
ンスを前記第2のエージェント手段に供与することを特
徴とする。
【0395】本発明は、コンピュータにおいて、前記リ
ファレンスがプロテクトされたリファレンスであること
を特徴とする。
【0396】本発明は、コンピュータにおいて、前記第
1のエージェント手段が前記オブジェクトのコピーへの
リファレンスを前記第2のエージェント手段に供与する
ことを特徴とする。
【0397】本発明は、コンピュータにおいて、前記第
2のエージェント手段がオブジェクトを所有することを
特徴とする。
【0398】本発明は、コンピュータにおいて、前記第
2のエージェント手段が前記オブジェクトへのリファレ
ンスを前記第1のエージェント手段に供与することを特
徴とする。
【0399】本発明は、コンピュータにおいて、前記リ
ファレンスがプロテクトされたリファレンスであること
を特徴とする。
【0400】本発明は、コンピュータにおいて、前記第
2のエージェント手段が前記オブジェクトのコピーへの
リファレンスを前記第1のエージェント手段に供与する
ことを特徴とする。
【0401】本発明は、1以上のコンピュータを有する
コンピュータネットワークにおいて、第1のエンジンプ
ロセスから第2のエンジンプロセスにデータを移送する
データ移送方法において、(a)前記第1のエンジンプ
ロセス及び第2のエンジンプロセスを含む1以上のエー
ジェントプロセスを実行するための実行手段を用意し、
各々の前記エージェントプロセスは、コンピュータイン
ストラクションセットからの複数のインストラクション
を含み、実行状態を持つものとし、(b)前記コンピュ
ータインストラクションセット中に go インストラクシ
ョンを用意し、該 go インストラクションは、前記第1
のエンジンプロセス中において実行される第1のエージ
ェントプロセスに含まれるものとし、前記 go インスト
ラクションの遂行によって、(i)前記第1のエンジン
プロセスによる前記第1のエージェントプロセスの実行
の中断と、(ii)前記第1のエージェントプロセスの
前記実行状態が保存されるような前記第1のエージェン
トプロセスの表現と、(iii)前記第1のエンジンプ
ロセスから第2のエンジンプロセスへの前記第1のエー
ジェントプロセスの前記表現の移送と、(iv)前記第
2のエンジンプロセスによる前記第1のエージェントプ
ロセスの実行の再開とを生じさせ、(c)前記第1のエ
ージェントプロセスによる前記エージェントプロセスの
実行を生じさせることによって前記 go インストラクシ
ョンの遂行を生じさせることを特徴とする。
【0402】本発明は、前記コンピュータインストラク
ションセットがオブジェクト指向であることを特徴とす
る。
【0403】本発明は、前記複数のエージェントプロセ
スが前記オブジェクト指向コンピュータインストラクシ
ョンセットのオブジェクトであることを特徴とする。
【0404】本発明は、前記 go インストラクションの
遂行を生じさせる前に前記第1のエージェントプロセス
にデータを付加し、前記第1のエージェントプロセスの
前記表現が前記データを含み、前記第2のエンジンプロ
セスへの前記第1のエージェントプロセスの前記表現の
移送が前記データを移送を含むことを特徴とする。
【0405】本発明は、前記第1のエージェントプロセ
スが、前記第1のエンジンプロセスから前記第2のエン
ジンプロセスに転送されるべきメッセージを表すデータ
を含み、前記 go インストラクションの実行によって生
ずる前記第1のエージェントプロセスの移送が前記第1
のエンジンプロセスから前記第2のエンジンプロセスへ
の前記データの移送を生じさせることを特徴とする。
【0406】本発明は、前記第1のエンジンプロセス
が、第1のコンピュータにおいて実行され、前記第2の
エンジンプロセスが第2のコンピュータによって実行さ
れ、前記第1及び第2のコンピュータが前記コンピュー
タネットワークの一部分であることを特徴とする。
【0407】本発明は、第1のエンジンプロセスから1
以上のエンジンプロセスにデータを移送するデータ移送
方法において、(a)コンピュータインストラクション
セットからのインストラクションを含む複数のエージェ
ントプロセスを実行するための手段を用意し、該エージ
ェントプロセスを実行する手段が、前記第1のエンジン
プロセス及び1以上のエンジンプロセスを含み、各々の
該エージェントプロセスは実行状態を含み、(b)前記
コンピュータインストラクションセット中にsendインス
トラクションを用意し、該sendインストラクションは、
前記複数のエージェントプロセス中の第1のエージェン
トプロセス中に含まれるようにし、前記sendインストラ
クションの実行は、(i)前記第1のエージェントプロ
セスの1以上のコピーを形成し、これらのコピーが、前
記第1のエージェントプロセスの前記実行状態を保存す
るとともにそれを含み、(ii)前記第1のエージェン
トプロセスのコピーの各々を前記第1のエンジンプロセ
スから前記1以上のエンジンプロセスのそれぞれに移送
し、(iii)前記第1のエージェントプロセスの前記
コピーの各々を前記1以上のエンジンプロセスのそれぞ
れの1つによって実行して前記第1のエージェントプロ
セスの再開された実行をシュミレートすることを特徴と
する。
【0408】本発明は、前記第1のエージェントプロセ
スの前記コピーの2以上が前記第1のエンジンプロセス
から単一の第2のエンジンプロセスに移送されるべき条
件のもとにおいて、前記第1のエージェントプロセスの
前記2以上のコピーの移送が、前記第1のエージェント
プロセスの単一のコピーを前記第2のエンジンプロセス
に移送する工程と、前記第2のエンジンプロセス中にお
いて前記単一のコピーから、前記第1のエージェントプ
ロセスの前記2以上のコピーを形成する工程とからなる
ことを特徴とする。
【0409】本発明は、あるコンピュータシステムにお
いて実行されている第1のエージェントプロセスから、
該コンピュータシステムによって実行されている第2の
エージェントプロセスにデータを転送する際に、前記第
1のエージェントプロセス及び第2のエージェントプロ
セスがあるプレイスプロセスの占有者であるようにして
データを転送するデータ転送方法において、前記第1の
エージェントプロセスが送出するミートインストラクシ
ョンに応答して、前記第2のエージェントプロセスによ
るプロシージャの実行を生じさせる工程を含み、前記プ
ロシージャは、前記第2のエージェントプロセスの一部
であり、前記第2のエージェントコンピュータプロセス
に含まれるコンピュータインストラクションのコレクシ
ョンを含み、前記第2のエージェントプロセスによって
送出される、前記プロジージャの一部である第2のイン
ストラクションに応答して、前記第2のエージェントプ
ロセスへのアクセス手段を前記第1のエージェントプロ
セスに供与する工程を含むことを特徴とする。
【0410】本発明は、前記第2のエージェントプロセ
スによるプロシージャの実行を生じさせる前記工程は、
前記第1のエージェントプロセスによって送出される前
記ミートインストラクションに応答して前記プレイスプ
ロセスによる第2のプロシージャの実行を生じさせるこ
とを含み、前記プレイスプロセスによる前記第2のプロ
シージャの実行が、前記プロシージャを前記第2のエー
ジェントプロセスによって実行させるインストラクショ
ンを送出することを特徴とする。
【0411】本発明は、前記第2のエージェントプロセ
スへのアクセス手段が前記プレイスプロセスによって前
記第1のエージェントプロセスに供与されることを特徴
とする。
【0412】本発明は、近似的に、前記プレイスプロセ
スが前記第2のエージェントプロセスへの前記アクセス
手段を前記第1のエージェントプロセスに供与する時点
において、前記プレイスプロセスが前記第1のエージェ
ントプロセスへのアクセス手段を前記第2のエージェン
トプロセスに供与することを特徴とする。
【0413】本発明は、第1のCPU及び第1のメモリ
を含む第1のコンピュータシステムから、第2のCPU
及び第2のメモリを含む第2のコンピュータシステムへ
第1のコンピュータプロセスを移送するプロセスの移送
方法において、ある実行状態を持つ前記第1のコンピュ
ータプロセスの実行を前記第1のCPUにおいて開始
し、前記第1のCPU内において前記第1のコンピュー
タプロセスの実行を中断し、前記第1のコンピュータプ
ロセスをデータとして前記第1のメモリ中に表現し、前
記データは前記第1のコンピュータプロセスの実行が中
断された時点においての前記第1のコンピュータプロセ
スの前記実行状態を含むものとし、前記データを前記第
1のメモリから前記第2のメモリに移送し、前記データ
中に表現された前記実行状態を有する第2のコンピュー
タプロセスを前記データから前記第2のコンピュータシ
ステム上に形成し、前記第2のコンピュータプロセスを
実行することによって前記第2のCPU内において前記
第1のコンピュータシステムの実行の再開を実効的にシ
ミュレートすることを特徴とする。
【0414】ここで、この実施例において使用する用語
について説明する。
【0415】アブストラクトクラス(abstract clas
s):抽象的で例(インスタンス)を持たないクラス。
アブストラクトクラスは、サブクラスを持つことがで
き、アブストラクトクラスは、アブストラクトクラスの
サブクラスによって引き継がれたフィーチャ(featur
e)、方法及びプロパティ(property)を定義すること
ができる。
【0416】エージェント(agent): エージェント
は、あるプレイスをしめ、可動である、すなわち第1の
プレイスから第2のプレイスに移動することのできるプ
ロセスである。
【0417】アーギュメント(arguments): アーギュ
メントは、入力データとしてのあるオペレーションの遂
行によって”消費”されるオブジェクトである。換言す
れば、アーギュメントは、リクエスタの要求によりレス
ポンダにおいてオペレーションが遂行される直前におい
てリクエスタからレスポンダに転送されるオブジェクト
である。
【0418】属性(attribute):属性は、あるオブジ
ェクトの内部状態に関する情報を検索し又はセットする
フィーチャである。通常情報はオブジェクト自身に所属
するが、時には、情報は、属性を呼び出す際にオブジェ
クトを特定化するためのリフエランス(参照)に関す
る。属性は一対のオペレーションであり、一方のオペレ
ーションはレスポンダの内部状態に関する情報をセット
し他のオペレーションは、レスポンダの内部状態に関す
る情報を検索する。
【0419】オーソリティ(authority):オーソリテ
ィは、ネットワークの種々のリソースを所有し管理する
エンティティである。オーソリティの一例はネットワー
クのユーザーである。オーソリティはアドミニストラテ
イブに作りだされ、プログラムによっては作り出されな
い(すなわちプロセスの要求によっては作り出されな
い)。
【0420】クラス(class):クラスは(i)クラス
のメンバの内部状態を規定するゼロ又はそれ以上のプロ
パティ、(ii)クラスのメンバの内部挙動を規定する
ゼロ又はそれ以上の方法、及び(iii)クラスのメン
バの外部的な挙動を規定するゼロ又はそれ以上のフィー
チャ、を定義する。
【0421】コンクリートクラス(concrete class):
コンクリート(具体的)であり例を有しうるクラス。
【0422】エンジンプレイス(engine place):各々
のエンジンは、エンジン自身を表わす正確に1つのエン
ジンプレイスを収容する。
【0423】エンジン(engine):エンジンは、オブジ
ェクト、第一にはプロセス、を管理しインストラクショ
ン(命令)を実行するコンピュータシステム内のマシン
である。エンジンは、典型的には、オペレーティングシ
ステム及び種々のユーザーアプリケーションの他に、コ
ンピュータシステム内において実行されるコンピュータ
プロセスである。1以上のエンジンは、ネットワークの
各々のコンピュータシステム内において実行することが
できる。各々のエンジンは少なくとも1のプレイスを処
理する。
【0424】エクセプション(exception):エクセプ
ション(例外)は、あるフィーチャが完全に、又は成功
のうちに実行されることができなかった場合にそのフィ
ーチャの遂行によって”投出(スロー)”されるオブジ
ェクトである。ここに使用される用語としてのエクセプ
ションは、別途には、このようなオブジェクトを放出さ
せる状態である。エクセプションはあるオペレーション
の失敗によって生じ従って成功したオペレーションによ
って生じた結果とは異なっているため、レスポンダは、
エクセプションを”生産”するのではなくエクセプショ
ンを”投出”すると言われる。ある結果の生産と例外の
放出との区別は、アペンディックスAにおいて一層詳細
に説明される。このアペンディックスAは参照によって
全体としてこの明細書の一部とされる。
【0425】フィーチャ(feature):フィーチャはあ
るオブジェクトが遂行するように指示されることのでき
るタスクである。タスクは、一組のコンピュータインス
トラクションを含む方法によって遂行される。あるフィ
ーチャの遂行は、そのフィーチャの方法のコンピュータ
指令の実行によって達成される。あるフィーチャは、あ
る特定のオブジェクトのクラスと関係があり、あるフィ
ーチャの遂行は、そのフィーチャを遂行するオブジェク
トの特定的な内部状態と共に変化しうる。フィーチャ
は、概念的には、次の2つのカテゴリすなわち(i)属
性及び(ii)オペレーションに分類される。
【0426】フレーム(frame):フレームは、フィー
チャの遂行の間そのフィーチャを具体化(インプリメン
ト)する方法の動的状態を記録するオブジェクトであ
る。フレームは、エンジンが実行している方法に関する
情報(現に実行されている特別のインストラクション及
び前記方法によって具体化されるフィーチャを遂行する
オブジェクトを特定化する情報を含む)を保持するため
にエンジンによって使用される。
【0427】識別子(identifier):識別子(アイデン
ティファイ)は、第2のオブジェクトを参照しうるオブ
ジェクトである。識別子の”テキスト”は、ある特別の
範囲内において他の識別子から識別子を区別するストリ
ング(文字列)である。識別子のいろいろの範囲はアペ
ンディックスAに詳細に説明されている。
【0428】インプリメンテーション(implementatio
n):インプリメンテーションは、ある特別のフィーチ
ャの遂行において実行されるコンピュータステップのセ
ットである。インプリメンテーションオブジェクト(im
plementation object)は、あるクラスのいろいろのフ
ィーチャのいろいろのインプリメンテーションを定義す
るオブジェクトである。
【0429】インスタンス(instance):オブジェクト
は、オブジェクトがあるクラスのメンバであり、そのク
ラスのいかなるサブクラスのメンバでもない場合にその
クラスのインスタンス(例)である。
【0430】インターフェイス(interface):インタ
ーフェイスは、特別の属性又は、消費された特別のアー
ギュメントと、ある特別のオペレーションの遂行によっ
て生じた結果とを定義する。インターフェイスオブジェ
クト(interface object)は、あるクラスの種々のフィ
ーチャの種々のインターフェイスを定義するオブジェク
トである。
【0431】メンバ(member):あるオブジェクトは、
それが1つのインスタンスであるクラスのメンバであ
り、又そのクラスのいかなるスーパークラスのメンバで
もある。
【0432】方法(method):方法は、ある特別のフィ
ーチャの遂行をその実行が構成するところのコンピュー
タインストラクションの1セットである。”方法オブジ
ェクト”は、1つの方法を規定するオブジェクトであ
る。ある方法は、その方法の実行の間すなわちその方法
のインストラクションの実行の間、ある動的な状態をも
つ。ある方法の動的な状態はフレームによって表わされ
る。
【0433】ネットワーク(network):全てのエンジ
ンプレイス、それらのエンジンプレイスが実行されるコ
ンピュータシステム、及びこれらのコンピュータスステ
ムを接続する通信装置は、全体として集合的に1つのネ
ットワークを形成する。
【0434】オブジェクト(object):オブジェクト
は、コンピュータシステム内のコンピュータ環境内の1
つのエレメントである。オブジェクトは、ゼロ又は1以
上のセイジョウによって規定される内部状態、ゼロ又は
1以上の方法によって規定される内部挙動及びゼロ又は
それ以上のフィーチャによって規定される外部挙動を有
する。
【0435】オペレーション(operation):オペレー
ションは、インターフェイス及びインターインプリメン
テイションが規定された1つのフィーチャである。
【0436】プレイス(place):プレイスは、ゼロ又
はそれ以上の方法の場所(locale)であるプロセスであ
る。あるプレイスは第2のプレイスを占有しうる。初め
に述べたプレイスは、第2のプレイスのサブプレイスで
あり、第2のプレイスは第1のプレイスのスーパープレ
イスである。
【0437】プリミティブ(primitive):プリミティ
ブは、プロシージャ又は方法の形成において使用しうる
オブジェクトすなわちインストラクションとして用いら
れるオブジェクトである。
【0438】プロセス(process):プロセスは、自律
的な計算を構成するオブジェクトである。プロセスは別
のオブジェクトによってそのように要求されえることな
しに方法を遂行するので、自律的である。あるプロセス
は、そのプロセスの創設と共に中央方法の遂行を開始
し、中央方法の完成と共にそのプロセスは破壊される。
各々のオブジェクトは正確に1つの方法によって所有さ
れる。各々のプロセスはそれ自身によって所有される。
この明細書で使用する”コンピュータプロセス”と言う
用語は、より一般的な周知の定義である、コンピュータ
システムによって遂行される一連のインストラクション
を意味する。
【0439】プロパティ(property):プロパティは、
第2のオブジェクトの内部状態の一部を表わすオブジェ
クトである。
【0440】リファレンス(reference):リファレン
ス(参照)は、特別のオブジェクトを特定化するデータ
構造である。あるフィーチャを遂行するように指示され
たオブジェクトは、フィーチャのリクエスタによって供
給されたオブジェクトへの参照によって特定化される。
参照はプロテクトされていることもありプロテクトされ
ていないこともある。オブジェクトは、それを特定化す
るために、プロテクトされた参照を用いて、変更され、
又は改変されることができる。
【0441】リージョン(region):リージョン(領
域)は、単一のオーソリティによって管理されるネット
ワーク内の1以上のエンジンプレイスである。領域は、
その領域のエンジンプレイス(複数)を支持するコンピ
ュータシステムの厳密な連係化及び管理によって一般に
識別される。従ってある領域内のエージェントの移送
は、複数の領域の間のエージェントの移送に比べて一般
に速やかであり又コストも低廉になる。ある領域は、一
例として、広い領域のネットワークに接続された局所的
な領域のネットワークでありうる。
【0442】リクエスタ(requester):リクエスタ
(要求者)は、別のオブジェクトすなわちレスポンダ
(回答者)にあるフィーチャを遂行するように指示する
オブジェクトである。リクエスタは要求されたフィーチ
ャのレスポンダに入力データとしてゼロ又はそれ以上の
オブジェクトを供給し、そのフィーチャのレスポンダか
ら出力データとしてゼロ又は1つのオブジェクトを受け
る。あるフィーチャを遂行するようにあるオブジェクト
に指示することは別途には、そのフィーチャを遂行する
ようにオブジェクトに”リクエスト”(要求)するとも
呼ばれる。
【0443】レスポンダ(responder):レスポンダ
(回答者)は、別のオブジェクトすなわちリクエスタの
指示に従ってあるフィーチャを実行するオブジェクトで
ある。レスポンダは入力データとしてゼロ又は1つのオ
ブジェクトを受け、そのフィーチャの遂行にあたってゼ
ロ又は1つのオブジェクトを出力データとして供給す
る。レスポンダは別途には、”レスポンドする”オブジ
ェクトとも呼ばれる。
【0444】結果(result):結果は、出力データとし
ての、あるオペレーションの遂行によって”生成”した
オブジェクトである。換言すれば結果は、リクエスタの
リクエストによってレスポンダによってあるオペレーシ
ョンが遂行された直後にレスポンダからリクエスタに転
送されるオブジェクトである。
【0445】サブクラス(subclass):サブクラスは、
1以上のクラスからの方法、特性及び又はフィーチャの
定義を受け継ぐ。サブクラスは、他のクラスから受け継
がなかった1以上のプロパティ、メソッド及び又はフィ
ーチャを定義することが出来、そのフィーチャの新しい
インプリメーテンションの定義によって、他のクラスか
ら受け継がなかったフィーチャを再インプリメントする
ことができる。
【0446】スーパークラス(superclass):あるサブ
クラスがそれからプロパティ、メソッド及び又はフィー
チャを受け継いだクラスはそのサブクラスのスーパーク
ラスである。
【0447】仮想的なプレイス(virtual place):エ
ンジンプレイスでないどんな場所も仮想的なプレイスで
ある。
【0448】本発明の原理によれば、複数の相互接続さ
れたコンピュータシステムに含まれるる選定されたコン
ピュータシステムにある特別なコンピュータプロセスを
ルーティングし、その選定されたコンピュータシステム
において特定のコンピュータプロセスを実行するために
用いられる。本発明のコンピュータプロセス(複数)
は、一実施例によれば、オブジェクト指向コンピュータ
プロセスとして定義される。本発明のコンピュータプロ
セスは、(i)プロセス中に、色々な操作を定義するイ
ンストラクションセットと(ii)コンピュータプロセ
スの遂行においてインストラクションセットを解釈し、
中央処理ユニット(CPU)の作動を制御するエンジン
を含む。
【0449】以下に、詳述するように、特定のコンピュ
ータプロセスは、ネットワーク内の目的コンピュータシ
ステムを特定化し、特別なコンピュータシステムがそこ
に移送されることを指示するインストラクションを実行
することによって、コンピュータネットワークを通るそ
れ自身の運動すなわち転送を指示する。特別なコンピュ
ータプロセスは、目的コンピュータシステム内において
実行されている間に、ネットワークの他箇所では使用可
能とならない情報にアクセスすることができる。特別な
コンピュータシステムはこの情報にアクセスして、他の
どのコンピュータシステムに移行すべきかを定めるため
にその情報を使用することができる。以下に、詳述する
ように、本発明は、従来技術には見られない可動度レベ
ル、拡張性及び一般性をコンピュータプロセスに供与す
る。
【0450】従来技術に典型的に見られるリモートプロ
グラミングパラダイム(remote programming paradigm
s)において、コンピュータプロセスは、その自身の運
動を差し向けず、目的コンピュータシステムにおいて実
行されるようにソースコンピュータシステムから送られ
る。コンピュータプロセスがそれ自身の運動をネットワ
ークを通して差し向けない場合には、コンピュータプロ
セスは、目的コンピュータシステムにおいてコンピュー
タプロセスによって得られる情報に基づいて移行するべ
き別の目的コンピュータシステムを選出することができ
ない。すなわちこのコンピュータシステムは、第2の目
的コンピュータシステムに送られる前に、得られた情報
とともに、ソースコンピュータシステムに戻らなければ
ならない。本発明のコンピュータプロセスは、ネットワ
ークを通してそれ自身の運動を差し向けることができる
ので、本発明のコンピュータプロセスは、伝統的なリモ
ートプログラミングパラダイムの実質的な延長を意味し
ている。コンピュータネットワークを通してそれ自身の
運動を差し向けるプロセスを提供する従来のリモートプ
ログラミングシステムは、一般性と拡張性に欠けてい
る。これらのシステムは、(i)同質的なコンピュータ
ネットワークに限定されるか、又は(ii)異質的なネ
ットワークにおいて移行するプロセスが現在プロセスを
実行しているどんなコンピュータシステムにも、すなわ
ち移行中のプロセスがそれに向かっているコンピュータ
システムにも特定的に適応するインストラクションを有
することを要求するため、一般性に欠けている。本発明
によればあるプロセスは異質的なコンピュータネットワ
ークを経て移動し、プロセスのインストラクションの実
行は、そのプロセスが実行されている特別なコンピュー
タシステムすなわちプロセスがそれに向かって移行して
いる特別なコンピュータシステムとは関わりはない。い
かに、詳述するように、以下に開示されるコンピュータ
インストラクションは、異質的なネットワークのどのコ
ンピュータシステムによっても一様に具体化される。す
なわち本発明に従って形成されるプロセスは、異質的な
コンピュータネットワークのどのコンピュータシステム
に移行して、そのコンピュータシステムの性質に関する
特定な情報もなしにそこで実行されることができる。
【0451】従来技術のリモートプログラミングシステ
ムは、プロセスがデータオブジェクトの、ある1つのク
ラスを作り出して、プロセスが後にそれに向かって移動
するコンピュータシステム内においてそのクラスのデー
タオブジェクトを利用することが出来ないため、典型的
に拡張性に欠けている。多くの今日のコンピュータシス
テムは”オブジェクト指向”型である。用語集で既に規
定したように、1つのオブジェトは、(i)ある数のプ
ロパティによって限定された内部的状態と、(ii)あ
る数のメソッドによって規定された内部的な挙動と、
(iii)ある数のフィーチャによって規定された外部
的な挙動とを有する。同様のプロパティ、メソッド及び
フィーチャを有するある数のオブジェクトのグループの
これらのプロパティ、メソッド及びフィーチャは、1つ
のクラスによって規定される。従来技術のシステムによ
れば、あるクラスを規定するプロセスは、そのプロセス
が後に移行するコンピュータシステム内において実行さ
れている間にそのクラスのオブジェクトを使用すること
はできない。移行するプロセスと共にクラス定義を移動
させることは、クラス定義が標準化されていないこと
と、クラス定義が一般に非常に大きく複雑であること
と、単一のプロセスが一般に多くのクラスのオブジェク
トを使用することによって、従来技術のシステムによっ
て実行できないか、又は実用的ではない。
【0452】クラス定義は、従来技術のシステムが典型
的には可動のプロセスを考慮して設計されたものではな
い現存のプログラミング言語に基づいているため、”標
準化”されていない。従ってこれらの現存のプログラミ
ング言語の1つを用いて形成されたプロセス中のクラス
定義は、典型的には、プロセスがその内部において作り
出されたコンピュータシステムに特異の情報に依存して
いる。これらの情報の例はクラス定義の一部の特定的な
メモリアドレスである。特別なコンピュータシステムに
特異のこれたの情報に依存するため、従来技術のシステ
ムのクラス定義をリモートコンピュータシステムに転送
することが非常に困難になっている。
【0453】本発明によればクラスは、開示されたコン
ピュータインストラクションセットの一部であるクラス
オブジェクトによって表される。本発明に従って形成さ
れたプロセスは、1つのコンピュータシステムから別の
コンピュータシステムに移行している時のクラスオブジ
ェクトを含む。従ってあるプロセスは第1のコンピュー
タシステムにおいてオブジェクトクラスを定義し、第2
のコンピュータシステムに移行しそしてその第2のコン
ピュータシステムにおいてそのクラスのオブジェクトク
ラスを利用することができる。移動するプロセスによっ
て利用される全てのクラスの転送に必要とされない遅延
及びコストは、プロセスがそれに向かって移動するコン
ピュータシステムにおいて定義されていないクラスのみ
を転送することによって除かれる。
【0454】また、本発明は、いくつかの目的コンピュ
ータシステムにある1つのプロセスのいくつかのクロー
ンを同時に転送をする際に、従来技術に効率性を供与す
る。以下に詳細に説明するように、プロセスの1つのク
ローンの移送経路が他のクローンの移送経路と合致して
いる限り、1以上のクローンの生成を遅延させることに
よって、実質的な効率性が実現される。クローン及び発
明のこの局面においては以下に詳細に説明する。
【0455】遠隔プグラミングシステムにおいて2つの
プロセスは、第1のプロセスへのアクセスを第2のプロ
セスに与える第1のプロセスによって、情報を共有す
る。第1のプロセスは、第2のプロセスへのアクセスを
同時に得ることなしに第1のプロセスへのアクセスを第
2のプロセスに与える。この状況において第2のプロセ
スは、第2のプロセスの安全性(セキュリティ)を犠牲
にすることなしに、第1のプロセスの実行に自由に干渉
することができる。本発明によれば、第1のプロセス
は、第2のプロセスへのアクセスを得ると同時に、第3
のプロセスの共同及び連係間によって第1のプロセスへ
のアクセスを第2のプロセスに同時に与える。第2のプ
ロセスが形態に従って第1のプロセスとのこのような交
換を受け入れるか、又は拒絶することによって、別のセ
キュリティが与えられる。第3のプロセスは、(i)第
2のプロセスがこのような交換に同意すること、及び
(ii)各々のプロセスが他のプロセスにへのアクセス
を同時に取得し、それによってどのプロセスも他のプロ
セスに同様の機会を与えることなしには他のプロセスの
実行に干渉することが出来ないことを確実にする。
【0456】本発明の新規なコンピュータプロセスは、
エージェントプロセスである。エージントプロセスは、
アペンディクスA(この開示の一部であり、参照によっ
て全体として本明細書の一部とされる)に開示さている
コンピュータインストラクションによって形成されたコ
ンピュータプロセスである。エージェントプロセスは、
本発明の別な新規のコンピュータプロセスすなわちエン
ジンによって各々解釈され、それによって、以下に、及
びアペンディクスAに、開示されるコンピュータインス
トラクションを実行する。”解釈する”と言う用語はこ
の明細書においてはこの技術に理解されているとおりに
用いられてる。すなわち一連のコンピュータインストラ
クションの中の1つのコンピュータインストラクション
がエンジンによって読まれそして実行された後に、一連
のインストラクションの中で次のコンピュータインスト
ラクションが読み出される。
【0457】ここに開示されたインストラクションセッ
トのインストラクションをコンパイルするのではなく解
釈することによって、より大きな一般性が供与される。
第1のエージェントは第1のコンピュターシステムから
第2のコンピュターシステムに移行し、そこで第1のエ
ージェントにプロシージャを与える。第2のエージェン
トと会合することができる。第1のエージェントは次に
第1のエージェントが本来実行するように設計されてい
なかったプロシージャを次に実行されることができる。
【0458】本発明の更に別の新規なコンピュータシス
テムは、プレイスプロセスである。プレイスプロセスは
コンピュータネットワークを通じて分布されている。本
来のエージェントプロセスは、それぞれのプレイスプロ
セスを”占有”している。すなわち、プレイスプロセス
は、エージェントプロセスの内部状態の一部であり、従
ってエージェントプロセスが実行されるためのコンテキ
ストを与える。各々のエージェントプロセスは、第1の
プレイスプロセスから、第2のプレイスプロセスへのエ
ージェントプレイスへの移送を開始し制御することがで
きる。”エージェント”及び”プレイス”は本明細書に
使用されている限りにおいて、”エージェントプレイ
ス”及び”プレイスプロセス”のそれぞれの略記であ
る。
【0459】図6は、通信リンク102ABによって接
続されたコンピュータシステム120A及び120Bを
含むコンピュータネットワーク100を示している。コ
ンピュータシステム120Aはプレイス220A及びエ
ージェント150Aを実行する。エージェント150A
は図6に示すようにプレイス220Aを占有している。
コンピュータシステム120Bはプレイス120Bを実
行している。以下において、あるエージェント又はプレ
イスが特定のプレイスを占有しているという表現は、そ
のエージェント又はプレイスがその特定のプレイスを含
むコンピュターシステム内において実行されているとい
う表現も含むように解釈とされるものとする。
【0460】エージェント150Aは、コンピュータシ
ステム120Aにインストラクションを送出する。エー
ジェント150Aは、このインストラクションに応答し
て、プレイス例えばプレイス220B(インストラクシ
ョン中において特定されている)に移送される。このイ
ンストラクションはオペレーション”go”と呼ばれ、エ
ージェント150Aによるインストラクションの送出
は、ここではエージェント150Aによるオペレーショ
ン”go”の遂行と呼ばれる。エージェント150Aによ
ってオペレーション”go”が遂行されると(i)エージ
ェント150Aの実行は中止され、(ii)エージェン
ト150Aは、その実行状態を保存する標準化形態に符
号化され、(iii)エージェント150Aの標準化形
態はコンピュータシステム120Bに移送され、(i
v)保存された実行状態を含むエージェント150Aは
標準化形態から(デコード)され、(v)コンピュータ
システム120B内においてエージェント150Aの実
行が再開される。エージェント150Aによってオペレ
ーション”go”が遂行されたのちに、エージェント15
0Aは、もはやプレイス220Aを占有してなく、コン
ピュータシステム120Aにおいて実行されていない。
その代りにエージェント150Aは、プレイス220B
を占有し、コンピュータシステム120B(図7)内に
おいて実行されている。エージェントの実行の最中に遠
隔のコンピュータシステムにエージェントが移行し得る
ことによって、そのエージェントはそれが、アクセスす
るように構成されているデータに向かって自由に移動す
ることができる。
【0461】標準化された形式とは、エージェントが1
つのコンピュータシステムから別のコンピュータシステ
ムに転送されるようにエージェントが符号化される形態
である。標準化形態は、符号化されたエージェントの実
行状態を保存しているので、そのエージェントは、目的
コンピュータシステムにおいてデコードされることがで
き、エージェントの実行は、オペレーション”go”に順
次後続するエージェントのインストラクションを実行す
ることによって再開されることができる。本発明のネッ
トワークの各々のコンピュータシステムは、エージェン
トに含まれるコンピュータインストラクションの実行に
適したどんな形式においてもエージェントを保存するこ
とができる。しかし、1のコンピュータシステムから次
のコンピュータシステムにエージェントを転送する場合
に、ネットワークの各々のコンピュータシステムは転送
の間あるエージェントの標準化形式を使用しなければな
らない。これは、単一の言語のシンタックス及び語彙に
互いに交信するために同意しなければならないことと全
く同様である。標準化形式の性質は、本明細の一部分と
され、全体として参照によって本明細書に組み込まれる
アペンディックスB、C、D、E及びFに一層詳細に説
明されている。
【0462】あるエージェントはそれ自身の運動をネッ
トワークを通じて差し向けることすなわち転送すること
ができるので、第1のコンピュータシステムから第2の
コンピュータシステムへのトリップ(旅行)のある数の
パラメータを特定するための手段を設けなければならな
い。この旅行の第1のパラメータは、エージェントがそ
れに向かって移送されるプレイスすなわち旅行の目的地
である。一実施例によれば、トリップの目的値は、ネー
ム、クラス又はアドレスによって指定することができ
る。アドレスは一例としてローカルエリアネットワーク
内のある番地(ロケーション)である。
【0463】2以上のパスウェイ(通路)が第1のコン
ピュータシステムと第2のコンピュータシステムの間に
存在していることがしばしばある。一方のパスウエイは
迅速で、高価、他のパスウエイは、時間を費やすが安価
であることがある。このシステムにおいては、いかなる
単一のパスウェイも、あるエージェントの転送において
常に好ましくない。従ってトリップの第2のパラメータ
は、エージェントの移送のための”way”及び”means”
である。
【0464】又、近くのコンピュータシステムへのトリ
ップのためにエージェントを構成する場合のエラーによ
って、そのエージェントがエージェントの作成者にとっ
て非常に大きなコストで、遠隔のコンピュータシステム
に誤って転送されることがある。そのため、トリップの
重要な一つのパラメータは、トリップがアボートされる
前に、エージェントを転送するために費やされる時間又
はリソースの量である。
【0465】一つのネットワークを通ってエージェント
を転送することを制御する上の別の重要な考慮事項は、
セキュリティである。一例として、ある特別のコンピュ
ータシステムに向かって移動している全てのエージェン
トがイングレス(Ingress)、すなわち入ることを許可
された場合、その特別のコンピュータシステムは、実質
的な処理を必要とする多くのプロセスによって過負荷さ
れた状態になり、それによって特別のコンピュータシス
テムのスループットが低下することがある。従って、ト
リップの別のパラメータは、目的プレイスにおいて必要
とされるエージェントのリソースの量である。従って、
エージェントによって要求されるリソースが、そのプレ
イスが供与する意志、能力又は意図を持つ以上である場
合には、エージェントは、そのプレイスへのイングレス
を拒絶されることがありうる。
【0466】一実施例によれば、チケット1306(図
6)は、エージェント150Aの転送を制御し、目的プ
レイスとしてのプレイス220Bを特定する。図6に示
す様に、エージェント150Aは、チケット1306を
含む。チケット1306は、プレイス220Aからプレ
イス220Bへのエージェント150Aのトリップを規
定する。一実施例によれば、チケット1306は、
(i)そのトリップの目的プレイス、(ii)目的プレ
イスに向かうためにエージェント150Aが取るべき”
way”又はパスウェイ及び”means”、(iii)トリッ
プがアボードされる前に、トリップを完成させている必
要のある最大量の時間、及び(iv)目的プレイスにお
いて、エージェント150Aが使用することを求めるリ
ソースの量、を特定化する。プレイス220Bは、プレ
イス220Bにおいてエージェント150Aが使用する
ことを許可されているリソースの量を特定することによ
って、プレイス220Bが供与する様に設計されてい
る、より多くのリソースを、エージェント150Aが必
要とするか否かを定めることができる。この状態では、
プレイス220Bは、エージェント150Aに対してイ
ングレス(進入)を拒絶することができる。すなわち、
以下に一層詳細に説明するチケットを使用することによ
って、エージェントは、第1のプレイスと第2のプレイ
スとの間の継続中のトリップを完全に規定することがで
きる。
【0467】前述した様に、本発明者が知る従来技術に
よるプロセスは、以前に占有されていたコンピュータシ
ステムにおいて規定されたクラスのオブジェクトしか操
作することができない。換言すれば、従来技術によるプ
ロセスがオブジェクトクラスを規定した後に、別の目的
コンピュータシステムに移行した場合には、そのプロセ
スは、目的コンピュータシステムが、同一のクラスの定
義を含むか、又はそのプロセスが目的コンピュータシス
テム内の同一クラスを規定している場合を除いて、その
クラスのオブジェクトを操作することができない。以下
に詳細に述べるように、一つのプレイスから次のプレイ
スに移動する本発明のエージェントは、目的プレイスに
おいては規定されていないクラスの定義を転送する。す
なわち、本発明によるエージェントは、第1のコンピュ
ータシステム内のクラスを定義し、第2のコンピュータ
システムに移動し、第2のコンピュータシステムにおい
て実行される間に、そのクラスのオブジェクトを操作す
ることができる。従って本発明によるエージェントは、
従来の知られたプロセスに比べて著しい改良を表してい
る。
【0468】従来の技術において一般に欠如しているの
は、その他に、コンピュータプロセスがその内部におい
て移動するコンピュータネットワーク中の複雑でマルチ
レベルのセキュリティシステムを具体化するための手段
である。本発明によって提供され、従来技術においては
示唆されていない一つのセキュリティ形式は、プレイス
によって提供されるセキュリティである。以下に詳述す
る様に、プレイスは、色々なエージェントへのイングレ
スを許可したり拒絶したりすることによって、色々なレ
ベルのセキュリティを提供し、幾つかのプレイスは、マ
ルチレベルの階層形セキュリティを提供するように構成
することができる。
【0469】本発明の色々な局面及び実施例を理解しそ
して知覚化することを助けるために、色々の代表的な及
び相対的なコンベンションが図面において用いられてい
る。本説明中に用いられている例示的及び相関的なコン
ベンションは、図8、図9及び図10に明示されてい
る。コンピュータシステム120A(図8)はプレイス
220A、プレイス220X、プレイス220Y、エー
ジェント150A、エージェント150X及びエージェ
ント150Yを実行する。コンピュータシステム120
Aは、又、オブジェクト140A、140B及び140
Xをメモリ例えばコンピュータシステムのマスメモリ又
はメインメモリ(どちらも図示しない)中に備えてい
る。エージェント150A、150Xは、プレイス22
0Aを占有し、プレイス220Yは、プレイス220X
を占有し、エージェント150Yはプレイス220Yを
占有している。エージェント150Aは、オブジェクト
140A及び140Bを所有し、エージェント150X
はオブジェクト140Xを所有している。占有及び所有
の相互関係については、以下に一層詳細に説明する。簡
単に説明すると、プレイスの占有は、セキュリティの色
々のレベル及び形式を供与し、所有は、オペレーショ
ン”go”を実行するエージェントと共にどのオブジェク
トが移動するかを定める。
【0470】図9は、図8に示され、かつ図8について
説明された色々の相互関係の別途の、また同等の、表現
形式を表している。図8は、エージェント150Xがプ
レイス220Aを占めること、及びオブジェクト140
Xを収容していることを正確に表しているが、図8の形
式は、より複雑な相互関係を表すには適してはいない。
従って、図9のトリー構造は、本発明の色々な実施例の
色々なコンピュータインストラクションを表す際に、よ
り複雑な相互関係を表すために図面において用いられて
いる。
【0471】図9のトリー構造は、図10に部分的に示
したクラスハイエラキートリーと混同されるべきではな
い。図10は、図8、図9に示した色々のアイテムのク
ラス関係を表している。オブジェクト140A、140
B及び140Xは、クラスオブジェクト520により表
されないクラス”object”のメンバである。クラスのメ
ンバシップは、前述の用語表に詳細に説明されており、
クラスとそのクラスのメンバであるオブジェクトとの間
の鎖線によって表されている。クラスオブジェクト52
2は、クラス”object”のサブクラスであるクラス”Pr
ocess”を表している。プレイス220X、220Y及
び220Aは、クラス”Place”のメンバであり、この
クラス”Place”は、クラス”Plocess”のサブクラスで
あり、クラスオブジェクト524によって表されてい
る。エージェント150A、150X及び150Yは、
クラス”Agent”のメンバであり、このクラス”Agent”
は、クラス”Process”のサブクラスであり、クラスオ
ブジェクト526によって表されている。従ってプレイ
ス220X、220Y及び20A及びエージェント15
0A、150X及び150Yは、全てクラス”Proces
s”のメンバであり、従ってコンピュータプロセスであ
る。オブジェクト140A、140B及び140Xは、
クラス”Process”のメンバではなく、従ってコンピュ
ータプロセスではない。
【0472】あるエージェントがあるプレイスから別の
プレイスに転送される間に、エージェントによって所有
されたオブジェクトは、一つのプレイスから次のプレイ
スへとエージェントと共に転送される。しかし、あるオ
ブジェクトの転送は、そのオブジェクトが大きい場合に
相当多くのリソースを消費する。一般に、第1のコンピ
ュータシステムにおいて実行されている第1のプレイス
から第2のコンピュータシステムにおいて実行されてい
る第2のプレイスにオブジェクトを含むエージェントを
転送するための時間は、既に第2のプレイスに存在して
いるオブジェクトの転送を除去することによって実質的
に減少する。これは簡単な例を考察することによって容
易に示される。エージェント150A(図11)は、コ
ンピュータシステム120Aにおいて実行されており、
やはりコンピュータシステム120Aにおいて実行され
ているプレイス220Aを占有している。エージェント
150Aはオブジェクト140A、140B及び140
Cを所有している。この実施例では、オブジェクト14
0Bはダイジェスト622を有する。ダイジェスト62
2は、オブジェクト140Bが相互変換可能であり、ダ
イジェストは622に等しいダイジェストをもついかな
るオブジェクトもオブジェクト140Bに代えることが
できることを示している。
【0473】プレイス220Bは、オブジェクト624
及び626を所有し、従って収容している。オブジェク
ト624はダイジェスト628を有する。あるプロセス
は、そのプロセスによって所有される全てのオブジェク
ト、及び、クラス(プロセス及びそのプロセスによって
所有されるオブジェクトをメンバとする)を収容してい
る。
【0474】前述した様にオペレーション”go”を遂行
する場合に、エージェント150A及びエージェント1
50Aによって収容された全てのオブジェクトは、標準
化形式において表わされる。しかしオブジェクト140
Bは、エージェント150Aの標準化形式には含まれな
い。その代わりに、ダイジェスト622のコピーすなわ
ちダイジェスト622−C(図12)がエージェント1
50Aの標準化形式に含まれている。エージェント15
0A、オブジェクト140A及び140C、ダイジェス
ト622−Cは、矢印Aの方向に通信リンク102AB
を経てコンピュータシステム120Bに転送される。オ
ブジェクト140Bは、少なくともコンピュータシステ
ム120B内において同等の相互変換可能なオブジェク
トが見出されたことが定められるまでは、コンピュータ
システム120A内に保持されている。
【0475】コンピュータシステム120B(図1
3)、エージェント150A、オブジェクト140A、
140C及びダイジェスト622−Cは、デコードされ
る。エージェント150Aをデコードする際に、コンピ
ュータシステム120Bは、ダイジェスト622−Cを
認識し、同等のダイジェストを持ったオブジェクトがプ
レイス220Bを占有しているかどうかを定める。プレ
イス220Bを占有するオブジェクト624は、ダイジ
ェスト622に等しく、従ってダイジェスト622−C
に等しいダイジェスト628を有する。ダイジェスト6
28はダイジェスト622に等しいので、オブジェクト
140B、624は相互変換可能である。従って、エー
ジェント150Aをデコードする際に、コピー、例えば
オブジェクト624−Cが、オブジェクト624につい
て作成され、エージェント150A内において相互変換
可能なオブジェクト140Bに代えられる。従ってエー
ジェント150Aは、オブジェクト140Bの代わり
に、オブジェクト624のコピーであるオブジェクト6
24−Cを所有する。従ってプレイス220Bへのオブ
ジェクト140Bの転送は割愛される。同等の相互変換
可能なオブジェクトがコンピュータシステム120B内
に見出されるので、コンピュータシステム120Aから
オブジェクト140Bを削除することができる。勿論、
相互変換可能な同等なオブジェクトがコンピュータシス
テム140Bに見出されない場合もある。この様な場合
にはオブジェクト140B(図12)は以下に詳細に説
明するようにしてコンピュータ120Aから検索され
る。
【0476】第1のプレイスを占有するエージェント
は、エージェントの1以上のクローンプロセスを作成し
て、各々のクローンプロセスをそれぞれのプレイスに転
送することができる。従って実際には、あるエージェン
トは、幾つかのプレイスに移動して、そのプレイスを同
時に占有することができる。勿論同時に移動するのは単
一のエージェントではなく、そのエージェントの複数の
クローンである。
【0477】あるエージェントは、幾つかのプレイスに
同時に移行し占有するために、あるインストラクション
を送出する。このインストラクションは、エージェント
の複数のクローンを作成し、各々のクローンをそれぞれ
のプレイスに移行させるインストラクションである。各
々のクローンは一つのエージェントであり、クローンの
作成の際において、クローンは、元のエージェントと同
一であるため、元のエージェントのものと同一の実行状
態を備えている。
【0478】一例として、コンピュータ120Aのプレ
イス220Aを占めるエージェント150A(図14)
は、一以上のプレイスを占有するために、エージェント
150Aのクローンを作成して、そのクローンを転送す
るインストラクションを、コンピュータシステム120
Aに送出する。これらのプレイスは、例えば、送出され
たインストラクションに特定化されている、コンピュー
タシステム120Bのプレイス220B及びコンピュー
タシステム120Cのプレイス220Cである。このイ
ンストラクションはオペレーション”send”と呼ばれ、
エージェント150Aによるこのインストラクションの
送出は、ここでは、エージェント150Aによるオペレ
ーション”send”の遂行と呼ばれる。図14、図15、
図16及び図17に示したエージェント150Aによる
オペレーション”send”の遂行は、この実施例では、エ
ージェント150A内の二つのチケット(図示しない)
によって管理される。これらの二つのチケットは、それ
ぞれのクローンの転送を制御すると共に、エージェント
150Aのそれぞれのクローンが向けられるプレイスと
してのプレイス220Bと220Cを特定化する。
【0479】エージェント150A−1、150A−2
(図15)は、エージェント150Aから形成されたク
ローンであり、エージェント150A−1、150A−
2がプレイス220Aを占有しないことを除いては、エ
ージェント150Aと同一である。前述したように、エ
ージェント150A−1、150A−2の実行状態も、
最初は、エージェント150Aの実行状態と同一であ
る。エージェント150A−1、150A−2は、以下
に詳細に説明する様に、インターコンピュータ通信リン
ク120ABC(図16)に沿って、それぞれのプレイ
ス220B、220Cに向かって移動する。
【0480】エージェント150Aによるオペレーショ
ン”send”の実行後(図17)に、エージェント150
Aは、プレイス220Aの占有を継続する。エージェン
ト150A−1は、プレイス220Bを占有し、エージ
ェント150A−2は、プレイス220Cを占有する。
【0481】コンピュータシステム120A中のスペー
スとエージェント150Aのクローンの転送に要する時
間とは、あるクローンの走行経路が別のクローンの走行
経路と合致する限り、すなわち二つのクローンが共延の
走行初部分を多少有する限り、エージェント150Aの
完全なクローニングを遅らせることによって節減され
る。例えば図18において、エージェント150Aの両
方のクローンは、それぞれの目的プレイス220B、2
20Cに到達するためにコンピュータシステム120D
を通過しなければならない。従ってエージェント150
Aの単一のクローン、すなわちエージェント150A−
1のみが、コンピュータシステム120Dに転送され
る。エージェント150Aの第2のクローン、すなわち
エージェント150A−2はエージェント150A−1
からコンピュータシステム120Dにおいて作成され
る。エージェント150A−1、150−A2は、次に
それぞれの目的プレイス220B、220Cに転送され
る。従って、エージェント150Aの単一のクローンの
みがコンピュータシステム120Aによって形成され、
単一のクローンのみがコンピュータシステム120Dに
転送されるので、コンピュータシステム120Aのスペ
ースが節減されると共に、エージェント150A−1、
150A−2をそれぞれの目的地に転送するための時間
も節減される。
【0482】二つのエージェントは、これらの二つのエ
ージェントの間のミーティングに参加することによって
情報を交換する。このミーティングにおいて、各々のエ
ージェントには、他のエージェントに対する参照が供与
される。以下に説明する様に、第2のエージェントへの
参照を有する第1のエージェントは、(i)第2のエー
ジェントに含まれる指示に従って特定の措置を取る様に
第2のエージェントに指示し、(ii)第2のエージェ
ントに対してデータを送受信することができる。本発明
の一局面によれば、エージェントは、第2のエージェン
トが最初に述べたエージェントへの参照を与えられてい
ない限り、第2のエージェントへの参照をいかなるエー
ジェントにも与えないことによって、他のエージェント
との干渉が防止される様にする。これにより、相互アク
セスを許容することなしに、いかなるエージェントも第
2のエージェントにアクセスすることができなくなる。
【0483】あるプレイスを占有する第1のエージェン
トは、そのプレイスを占有する第2のエージェントとの
ミーティングを開始することができる。このミーティン
グにおいて、第1のエージェントは、第2のエージェン
トにオブジェクトを転送したり第2のエージェントから
オブジェクトを受け取ったりすることができ、また第2
のエージェントは、第1のエージェントにオブジェクト
を転送したり、第1のエージェントからオブジェクトを
受取ったりすることができる。
【0484】クラス”Place”(図10)のサブクラス
は、”ミーティングプレイス”クラス(図示しない)で
ある。図19〜図24の例示的な実施例によれば、プレ
イス220Bは、クラス”ミーティングプレイス”の1
つのメンバであるため、ミーティングプレイスである。
したがってプレイス220Bは、この明細書において時
に”ミーティングプレイス220B”と称される。コン
ピュータシステム120Bにおいて実行されているミー
ティングプレイス220B(図19)は、ミーティング
プレイス220Bを占有しているエージェント150
A、150Bに、矢印A、Bによって示すように1つの
ミーティングにおいて情報を交換し分け合うための手段
を提供する。エージェント150A中のペティション3
106は、エージェント150A、150Bの間のミー
ティングを規定し管理する。
【0485】エージェント150A、150Bの間のミ
ーティングは、図20〜図24に示すように構成され
る。エージェント150A(図20)は、エージェント
150A、150Bの間のミーティングを準備するよう
にミーティングプレイス220Bに指示するための、矢
印851によって表された第1のコンピュータインスト
ラクションを送出する。第1のインストラクションは、
ミーティングを管理し、エージェント150Aがエージ
ェント150Bとミーティングすることを望んでいるこ
とを特定するペティション3106を含む。エンジン
は、矢印852によって示された第2のコンピュータ指
令をミーティングプレイス220B(図21)のために
発生する。このインストラクションは、エージェント1
50Aが第1のコンピュータインストラクションを送出
したことをエージェント150Bに通知するとともに、
エージェント150A、150Bの間のミーティングが
承認可能か否かを定めるためのある数のコンピュータ指
令をエージェント150B中において実行させるインス
トラクションである。
【0486】エージェント150A、150Bの間のミ
ーティングが、承認可能であることが定められたら(図
22)、エージェント150Bは、矢印853によって
表される回答を第2のコンピュータ指令に対して送出す
る。これによってエンジンは、エージェント150A、
150Bの間のミーティングを準備するようにミーティ
ングプレイス220Bのためにエンジンに指示する。エ
ンジンは、ミーティングプレイス220B(図23)の
ために、エージェント150Bへの参照をエージェント
150Aに送出する(この送出は矢印854Aによって
示される)。またエンジンはエージェント150Aへの
参照を150Bに送出する(この送出は矢印854Bに
よって示される)。エージェント150A(図24)
は、エージェント150Bへの参照を用いて、エージェ
ント150Bと相互作用する。この参照は、矢印855
Aによって示される。さらにエージェント150Bは、
エージェント150Aへの参照を用いて、エージェント
150Aと相互作用を行う。この参照は矢印855Bに
よって示される。
【0487】2つのエージェントは、これら2つのエー
ジェントは同一のプレイスを占めない限りミーティング
において一緒に参加することはできない。プレイスのハ
イエラキーは、可変のレベル及び形式のアクセス及びセ
キュリティをいろいろなエージェントに与えるためのメ
カニズムを本発明のユーザに供与する。アクセス及びセ
キュリティのいろいろなレベル及び形式の利点は、図2
5〜図29の例示的な実施例によって示される。
【0488】図25は、フロア902−1、902−
2、902−3、902−4、902−5を有する建物
902を示している。フロア902−3は建物902の
プレイス内の1つのプレイスでありしたがって建物90
2のサブプレイスである。図26はルーム、902−3
−1、902−3−2、902−3−3、902−3−
4を有するフロア902−3を示している。ルーム90
2−3−2はフロア902−3のプレイス内のプレイス
でありしたがってフロア902−3のサブプレイスであ
る。
【0489】建物902の組織はハイエラキー的なセキ
ュリティにとって有利である。一例として建物902
は、第1のセキュリティレベルの人々たとえば陸軍関係
者のみが入ることを許可されるように制限されることが
できる。フロア902−3は、第2のレベル(より高い
レベル)のセキュリティレベルの人々たとえば海軍関係
者のみが入り得るようにさらに制限することができる。
ルーム902−3−2は、第3の(より高いレベル)セ
キュリティレベルの人々たとえば海軍将校のみが入り得
るようにさらに制限されることができる。フロア902
−4は、フロア902−3と無関係にたとえば空軍関係
者のみが入り得るようにさらに制限することができる。
【0490】コンピュータシステム120X(図27)
中のエンジンは、プレイス220X1、220X2を実
行する。プレイス220X1は、一例として建物902
を表すことができる。プレイス220X1−1、プレイ
ス220X1−2(一例としてフロア902−4、90
2−3を表す)は、プレイス220X1(図28)を占
有し、したがってプレイス220X1のサブプレイスで
ある。逆にプレイス220X1はプレイス220X1−
1、220X1−2のサブプレイスである。たとえばル
ーム902−3−1を表すプレイス220X1−2−1
は、プレイス220X1−2(図29)を占有する。プ
レイス220X1−2−1はしたがってプレイス220
X1−2のサブプレイスでありプレイス220X1−2
はプレイス220X1−2−1のスーパープレイスであ
る。
【0491】本発明の一実施例によれば、2つのエージ
ェントは、”対面のみ”ですなわち2つのエージェント
が同一のプレイスを占める場合にのみミーティングする
ことができる。ここで本明細書で使用される限り、ある
エージェントはただ1つのプレイスのみを占め、そのプ
レイスのサブプレイス又はスーパープレイスを同時に占
有することはない。一例としてプレイス220X1−2
を占有するエージェントはプレイス220X1又はプレ
イス220X1−2−1を同時に占有することはない。
建物902(図25)にいる1番目の人が、その人がフ
ロア902−3にもいない限りフロア902−3の2番
目の人と対面で交信することができないのと同様に、プ
レイス220X1(図28)を占有するエージェント
は、プレイス220X1−2を占有するエージェントと
は交信できない。フロア902−3(図26)にいる1
番目の人は、ルーム902−3−2にもいない限り、ル
ーム902−3−2にいる2番目の人と対面で交信でき
ないのと同様に、プレイス220X1−2(図29)を
占有するエージェントは、プレイス220X1−2−1
を占有するエージェントとは交信できない。
【0492】このプレイスハイエラキーは、本発明のユ
ーザがプレイス220X1へのアクセスを制限し、プレ
イス220X1−2へのアクセスをさらに制限し、プレ
イス220X1−2−1へのアクセスをさらに制限する
ことを可能にする。さらにここに具体化されたセキュリ
ティハイエラキーは、具体化されたプレイスハイエラキ
ーに必ずしも直接に関連しているのではない。一例とし
てプレイス220X1−2へのアクセスは、プレイス2
20X1−2のサブプレイスたとえばプレイス220X
1−2−1へのアクセスよりもさらに制限的とすること
ができる。あるプレイスへのアクセスの制限は以下に詳
細に説明されている。このようにプレイスハイエラキー
は、いろいろなエージェントにあるプレイス、これらの
プレイスのサブプレイス及びこれらのサブプレイスのス
ーパープレイスを占めている他のエージェントへのいろ
いろなアクセスレベルが与えられるような複雑なセキュ
リティハイエラキーを本発明のユーザが構成することを
可能にする。
【0493】以上に説明した新規なプロセスの詳細をさ
らに記述するためには、以上に説明したコンピュータシ
ステムの構造のよりよき理解が必要とされる。図30に
示した実施例において、三つのコンピュータシステムは
コンピュータネットワーク100を形成するように接続
されている。コンピュータシステム120Aは、CPU
110A、ネットワーク通信ハードウエア104A及び
メモリ117Aを含む。図1の入力モジュール12及び
出力モジュール14に対応する入力モジュール及び出力
モジュールはわかりやすさのために割愛されている。さ
らに、図1のマスメモリ17A及びメインメモリ17B
は、メモリ117Aを形成するように組み合わされてい
る。ネットワーク通信ハードウエア104Aは、CPU
110Aがネットワークを横断して信号を伝搬させたり
ネットワークから信号を受けて解釈したりすることを可
能にするどんな装置でもよい。
【0494】メモリ117Aには、CPU110A内に
おいて同時に動作するある数のコンピュータプロセスが
存在する。ネットワークマネージャ130Aは、コンピ
ュータネットワークのいろいろのコンピュータシステム
の間のデータ伝送を連係化するコンピュータプロセスで
ある。オペレーティングシステム131Aは、いろいろ
のコンポーネントの動作及びコンピュータシステム12
0Aのリソースを連係化するコンピュータプロセスであ
る。一例としてオペレーティングシステム131Aは、
CPU110A、メモリ117A及び入力/出力モジュ
ール(図30には示さない、図1参照)使用を連係化す
る。エンジン132Aは、本発明のオブジェクト指向コ
ンピュータインストラクションセットのコンピュータイ
ンストラクションを解釈し、そのオブジェクト指向コン
ピュータインストラクションセット中に規定されたオブ
ジェクトの形の情報を処理するコンピュータプロセスで
ある。一例としてエンジン132Aは、プレイス220
A(図6)とエージェント150A(これら2つは、本
発明のオブジェクト指向コンピュータインストラクショ
ンセットから構成されたプロセスである)の同時実行を
行う。エンジン132Aは、図6には示されてはいな
い。
【0495】コンピュータシステム120Aのメモリ1
17A(図30)内において実行されるこれらのプロセ
スの他に、典型的には1以上のプロセス(たとえばユー
ザアプリケーション133Aである)が存在する。ユー
ザアプリケーション133Aは、エンジン132Aによ
って解釈されるオブジェクト指向インストラクションセ
ット内において規定されたオブジェクトの生成及び/又
はマニピュレーションをエンジン132Aに要求するこ
とができる。
【0496】コンピュータシステム120B、120C
は、コンピュータシステム120Aと同様に構成されて
いる。しかし、コンピュータシステム120A、120
B、120Cの一般的な構造は同様であるが、コンピュ
ータシステム120A、120B、120Cはその他の
点では異質的である。
【0497】コンピュータネットワーク100のコンピ
ュータシステムは、1つのコンピュータシステムから別
のコンピュータシステムにエージェントプロセスが転送
され得るように接続されている。コンピュータシステム
120A、120B、120Cは、通信リンク102A
B、102BC、102ACによってそれぞれのネット
ワーク通信ハードウエア104A、104B、104C
を結合することによってコンピュータネットワークを形
成するように接続されている。通信リンク102AB、
102BC、102ACは、1つのネットワーク通信ハ
ードウエアたとえばネットワーク通信ハードウエア10
4Aから別のネットワーク通信ハードウエア、たとえば
ネットワーク通信ハードウエア104Bにデータを転送
することができるどんな手段でもよい。一例として、ネ
ットワーク通信リンク102ABは、公共に対して交換
される電話ネットワークでよい。この場合ネットワーク
通信ハードウエア104A、104Bはモデムであり、
ネットワークマネージャ130A、130Bは、通信リ
ンク102ABを介した通信すなわち公共に対して交換
される電話ネットワークを設立し利用するために、ネッ
トワーク通信ハードウエア104A、104Bにインス
トラクションを送出することができる。
【0498】オブジェクト指向コンピュータインストラ
クションセットから成るオブジェクトは、エンジンたと
えばエンジン132A(図31)によって実行される。
エンジン132Aは、通信下部構造132A−CI、プ
ログラム部分132A−P及びデータ部分132A−D
を有する。エンジン132Aによって実行されるオブジ
ェクト、たとえばオブジェクト140Aの状態を表すデ
ータは、エンジン132Aのデータ部分132A−Dに
記憶されている。エンジン132Aのデータ部分132
A−Dは、エンジン132Aのワークスペースとして保
留されたメモリ117Aのメモリスペース(図30)で
あり、コンピュータシステム120A上の他のプロセス
たとえばオペレーティングシステム131A及びユーザ
アプリケーション133Aの見地から一般にはアクセス
することはできない。
【0499】前述したようにエンジンはプロセス及びオ
ブジェクトを実行する。エンジン132Aのプログラム
部分132A−P(図31)は、データ部分132A−
Dにおいて表されるオブジェクトを実行する。プログラ
ム部分132A−Pを形成するように組み合わされるコ
ンピュータインストラクションは既知のコンピュータ言
語のものとすることができる。一例としてマイクロフィ
ルムアペンディクスGとして添付したコンピュータソフ
トウエアは、本発明の原理にしたがって構成されたエン
ジンのプログラム部分であり、C++プログラミング言
語にしたがって構成されている。
【0500】エンジン132Aの通信下部構造132A
−CIは、ネットワーク100を通じて分散されたエン
ジンの間にデータを転送するためのコンピュータインス
トラクションを含む。
【0501】マイクロフィルムアペンディクスHとして
添付されたコンピュータソフトウエア(この明細書の一
部であり、全体として引照されることによって本明細書
の一部分となる)は、本発明の原理にしたがって構成さ
れたエンジンの通信下部構造である。エンジンの通信下
部構造の多くの様相は、この明細書の一部となり、引照
によって全体として本明細書に組み込まれるアペンディ
クスDに一層詳細に説明されている。
【0502】図32は、図31の、コンピュータネット
ワークの代替となる同等の表現形態である。
【0503】図31に示すように、コンピュータシステ
ム120Bのエンジン132Bは、エンジン132Aの
形態と直接類似する仕方で構成されている。
【0504】ネットワーク中のオブジェクト 以下に一層詳細に説明するように、プレイス220A、
220B(図6)、エージェント150A、チケット1
306などは、本発明の原理にしたがって”オブジェク
ト”を用いて規定されている。前述したようにオブジェ
クト(エンジン132A、132Bによって解釈される
コンピュータインストラクションセットにしたがって形
成され、エンジン132Aによって解釈される)は、デ
ータ部分132A−D(図31)中に記憶されている。
一例として、データ132A−D中のオブジェクト14
0Aは、エンジン132A、132Bによって解釈され
るコンピュータインストラクションセットにしたがって
形成され、エンジン132Aによって解釈される。
【0505】本発明のコンピュータインストラクション
セットの概略 本発明の新規なプロセスの各々及びこれらのプロセスを
限定し指示するために必要ないろいろなフィーチャは、
本発明のエンジンによって解釈されるコンピュータイン
ストラクションのセットによって限定される。本発明の
コンピュータインストラクションは、オブジェクト指向
である。したがって本発明のデータたとえばエージェン
ト150Aを表すデータは、各々内部状態と外部挙動と
を有するオブジェクトに組織化される。あるオブジェク
トのプロパティは、そのオブジェクトの内部状態を規定
し、そのオブジェクトのフィーチャは、そのオブジェク
トの外部挙動を規定する(前記の用語表参照)。各々の
オブジェクトはある数のクラスの内の1つのクラスの1
つの例(インスタンス)である。
【0506】本発明の原理によれば、以下に記述される
ミックスインクラスを除いたコンピュータインストラク
ションセットに規定されたすべてのクラスは、アペンデ
ィクスAに一層詳細に説明されるクラス”Object”のサ
ブクラスである。したがって、ここに記述されるミック
スインクラスでない各々のクラスは、クラス”Object”
のフィーチャ及びプロパティを受け継いでいる。
【0507】制限された多重の引継ぎは、一実施例によ
れば、ミックスインクラスを用いて具体化される。”Mi
x-ins”又は”Mix-in classes”は、クラス”Object”
のサブクラスでないクラスである。以下に記述されまた
アペンディクスAにも記述されるミックスインクラスの
例は、ミックスインクラス”Executed””Named”及び
”Referencd”を含む。”flavor”又は”flavor clas
s”とも呼ばれる非ミックスインクラスは、多くとも一
つのフレーバのイミディエートサブクラスで有り得る
が、0又は1以上のミックスインクラスのイミディエー
トサブクラスで有り得る。ミックスインクラスは、ノー
クラス又は別のミックスインクラスのイミーディエイト
サブクラスで有り得る。他に指定しない限り、クラスは
フレーバである。クラスハイエラキーにおいてサイクル
は許容されないすなわち別のクラスのサブクラスであり
又スーパークラスでもあることはクラスには許されな
い。
【0508】**59頁** ミックスインクラスを使用すると、フィーチャ及びプロ
パティが一度限定されそして広い範囲のクラスにわたっ
て使用される。例えばミックスインクラス”Orderd”
は、二つのオブジェクトの相対的な順序を定める為のオ
ペレーションを規定する。フレーバクラス”Associatio
n”、”Citation”、”List”、”Identifire”、”Pat
tern”、”Permit”、”Bit”、”Boolean”、”Charac
ter”、”Number”、”Octet”及び”Time”は、ミック
スインクラス”Orderd”から引き継がれる。従って関
連、サイテーション、リスト、識別子、パターン、許
可、ビット、ブーリアン、キャラクタ、数、オクテッ
ト、及び時間は同一のクラスの他のメンバに対してある
順序を持っている。一例として数値の場合、数2は、数
1の”後”であり数3の”前”である。
【0509】本発明においてオブジェクトの主要なクラ
スは、プロセスのクラスである。前述したようにプロセ
スは、(i)他のプロセスによって占有されるプレイ
ス、又は(ii)(a)第1のプレイスからそれ自身を
転送し第1のプレイスの占有を終了し第2のプレイスを
占有することのできるエージェント及び(b)同一のプ
レイスを占有する他のエージェントと相互作用をし得る
エージェント、のどちらかである。
【0510】エージェント150A(図31)は、エン
ジン132によって実行される本発明のコンピュータイ
ンストラクションセットに従って形成されたプロセスで
ある。エージェント150Aは、(i)それ自身を検査
して変形し、(ii)ネットワーク100中の第1のプ
レイス(図30)から第2のプレイスにそれ自身を転送
し、(iii)第2のプレイスを占有する他のエージェ
ントと相互作用することができる。
【0511】本明細書においてプロセスは、アーギュメ
ントを消費し0又は1つの結果を発生させるオペレーシ
ョンを行なうものとして記述される。しかしプロセスそ
れ自体は、以下に一層詳細に説明するインストラクショ
ンの中から選定されたインストラクションの集合を含む
オブジェクトであり、このインストラクションはCPU
110A内において動作しているエンジン例えばエンジ
ン132Aによって解釈される。あるプロセスによる動
作の遂行又は開示されたインストラクションセットの他
のオブジェクトの遂行は、実際には、プロセス又はオブ
ジェクトに含まれる特別のインストラクション群の選定
及びその解釈である。エンジンによるプロセスのインス
トラクションの解釈は、ここでは、”プロセスの解釈”
とも呼ばれる。すなわち、エージェント150Aがある
オペレーションを実行する場合、エージェント150A
は、エンジン132Aにインストラクションを供給し、
エンジン132Aは、そのインストラクションを解釈
し、エージェント150Aによるオペレーションの遂行
を行なう適当なタスクを実行するようにCPU110A
に指示する。プロセスとエンジンとの間の相互作用は以
下に一層詳細に説明する。
【0512】本発明の重要な様相は、以下に一層詳細に
説明するコンピュータインストラクションセットがネッ
トワーク100(図30)のそれぞれのコンピュータシ
ステムによって一様に具体化されていることである。コ
ンピュータシステム120A、120B、120Cは、
完全に異なって且つ整合性のないデータ構造メモリ形態
CPU及びオペレーティングシステムを使用することが
できる。しかしエージェントはコンピュータシステム1
20A、120B、120Cのどれに対してもそれ自身
を転送することができるので、各々のコンピュータシス
テムが標準化された形態で本発明のコンピュータインス
トラクションセットを具体化していることが大切であ
る。コンピュータインストラクションが一様に具体化さ
れている限り、コンピュータシステム120A120
B、120Cが他の点で不整合であることは有り得る。
従ってエージェントは均質なコンピュータネットワーク
だけでなく異質なコンピュータネットワークのコンピュ
ータシステムの間にも自由に移動することができる。
【0513】典型的には、従来技術のシステムは、プロ
セスが均質なネットワーク内を移動すること、又はプロ
セスが実行中のコンピュータシステムと整合性のあるコ
ンピュータインストラクションを特異的に実行するよう
にプロセスが構成されていることを必要としていた。後
者のケースにおいては、プロセスは、そのプロセスの実
行が開始されたコンピュータシステムの特別のシステム
要求及びそのプロセスが移行しようとしている何れかの
コンピュータシステムの特別のシステム要求に対して構
成されていた。従って本発明のエージェントのコンピュ
ータインストラクションは、異質なネットワークのいか
なるコンピュータシステムに対しても実行され得るの
で、本発明は従来技術に対する実質的な改良を表してい
る。
【0514】エージェント 前述したようにエージェントの挙動は部分的にはそのエ
ージェントの内部状態に依存する。従ってネットワーク
中のあるエージェント外部挙動を検討する前に、エージ
ェントの内部状態のいくつかの様相について簡単に説明
する。各々のエージェントはクラス”Agent”のメンバ
である。
【0515】クラス”Agent”は抽象的であるから、い
かなるエージェントもクラス”Agent”の例(インスタ
ンス)ではないことに注意すべきである。クラス”Agen
t”は、オペレーション”live”のいかなるインプリメ
ンテーションもクラス”Agent”によって規定されたり
受け継がれたりしていないので、抽象的である。以下に
またアペンディクスAに一層詳細に説明するように、オ
ペレーション”live”は、プロセスの生成時にそのプロ
セスすなわちエージェント又はプレイスによって実行さ
れるステップを規定する。これらのステップは集合的に
プロセスの”中央プロシージャ”と呼ばれる。エージェ
ント及びプレイスが各々のユーザの特定のニーズに適合
する中心プロシージャを本発明のユーザが設計し供与す
るので、エージェント及びプレイスの為の中心プロシー
ジャは提供されない。従って、本発明のユーザは、クラ
ス”Agent”の具体的なサブクラスを生成させ、オペレ
ーション”live”の為のインプリメンテーションを供給
する。
【0516】クラス”Agent”は、クラス”Process”
(図5)のサブクラスである。クラス”Process”は、
クラス”Object”のサブクラスであり、ミックスインク
ラス”Named”からも受け継いでいる。クラス”Objec
t”は、ミックスインクラス”Referencd”からも受け継
いでいる。あるエージェントは次の属性を所有してい
る。これらの属性は(i)スーパークラス”Object”か
ら受け継がれたアトリビュート(属性)”class”及
び”size”、(ii)ミックスインクラス”Referenc
d”から受け継がれたアトリビュート”isProtected”、
(iii)ミックスインクラス”Named”から受け継が
れたアトリビュート”name”、及び(iv)スーパーク
ラス”Process”から受け継がれたアトリビュート”bra
nd”、”Permit”及び”privateClasses”である。クラ
ス”Agent”はいかなる属性も規定しない。前述した各
々の属性及びクラスは、アペンディクスAにおいて一層
詳細に説明される。
【0517】ダイアグラム1270(図33)は、エー
ジェント150Aがメンバであるクラス(複数)のクラ
ス関係を表している。エージェント150Aは、クラ
ス”Agent”を表すドメイン1272に含まれるように
図示されているので、クラス”Agent”のメンバであ
る。
【0518】クラス”Agent”は抽象的であるから、エ
ージェント150Aは、クラス”Agent”の1以上のサ
ブクラス(図示しない)のメンバでもある。
【0519】ドメイン1272は、クラス”Process”
を表すドメイン1274中に完全に収容されている。従
ってエージェント150Aは、クラス”Process”によ
って規定されたアトリビュート”brand”、”Permit”
及び”privateClasses”を受け継ぐ。さらにクラス”Ag
ent”のすべてのメンバは、クラス”Process”のメンバ
でもある。従って前述したようにクラス”Agent”はク
ラス”Process”のサブクラスである。
【0520】ドメイン1274は、クラス”Object”を
表すドメイン1276中に完全に収容されている。従っ
てエージェント150Aは、アトリビュート”class”
及び”size”(クラス”Object”によって規定される)
を受け継いでいる。さらに、クラス”Agent”のメンバ
を含むクラス”Process”のすべてのメンバは、クラ
ス”Object”のメンバでもある。従って前述したよう
に、クラス”Process”は、クラス”Object”のサブク
ラスである。
【0521】クラス”Process”を表すドメイン127
4は、クラス”Named”を表すドメイン1278中に収
容されている。コネクション1278Aは、ドメイン1
274がドメイン1278に収容されていることを示す
と共に、クラス”Object”を表すドメイン1276がド
メイン1278中には収容されてなく、ドメイン127
8がドメイン1276に収容されていないことを明瞭に
表している。
【0522】ドメイン1278によって表されたクラ
ス”Named”はミックスインクラスである。ドメイン1
274はドメイン1278に含まれているので、エージ
ェント150Aは、ドメイン1278に含まれ従ってミ
ックスインクラス”Named”のメンバである。ミックス
インクラス”Named”は、エージェント150Aに含ま
れないアトリビュート”name”を規定している。
【0523】ミックスインクラス”Referencd”を表す
ドメイン1280は、ドメイン1276を含み、このド
メイン1276は、コネクション1280Aによって示
すように、クラス”Object”を表している。ドメイン1
276はドメイン1280に含まれるので、エージェン
ト150Aは、ドメイン1280に含まれ、従ってミッ
クスインクラス”Referencd”のメンバである。ミック
スインクラス”Referencd”は、エージェント150A
に含まれるアトリビュート”isProtected”を規定す
る。
【0524】本発明の開示された実施例の各々のフレー
バは、クラス”Object”のサブクラスであるので、各々
のフレーバはミックスインクラス”Referencd”のサブ
クラスでもある。従って、クラス”Object”の特徴から
クラス”Referencd”の特徴を分離する必要はない。し
かしミックスインクラス”Referencd”の特徴は、本発
明の概念形成及び理解を助ける為に、クラス”Object”
の特徴から分離されている。
【0525】用語表において述べたように、オブジェク
トは、参照によって設定された開示されたコンピュータ
インストラクションの範囲内において特定化される。
以下に詳述するように、オブジェクトにある操作を行な
うように指示する場合、オブジェクトは、参照によって
特定化される。ミックスインクラス”Referencd”によ
って定義された特徴は、オブジェクトを特定化する参照
に基づいて動作する。一例としてアトリビュート”isPr
otected”は、オブジェクト自身でなくオブジェクトへ
の参照が保護されるか否かを定める。クラス”Object”
によって定義された特徴は、参照によって特定化された
オブジェクトに対して動作する。一例としてアトリビュ
ート”class”はそのオブジェクトがどのクラスの例
(インスタンス)であるかを定める。
【0526】エージェント150A(図33)によって
占有されたプレイスに関する情報を供与する属性が定義
されていないことに注意されたい。しかしエージェント
150Aによって占有されたプレイスは、エージェント
150Aの一つの特性として保存される。エージェント
150Aは、”here(ヒア)”セレクタの実行によって
どのプレイスをエージェント150Aが占有するかを定
めることができる。セレクタ特に”ヒア”セレクタの実
行は、アペンディクスAに詳述されている。エージェン
ト150Aによって占有されているプレイスである特性
は、クラス”Process”によって定義される。従ってい
かなるプロセスも、すなわちプレイス又はエージェント
は、プロセスによって占有されているプレイスである特
性を含んでいる。
【0527】ミックスインクラス”Named”のイミーデ
ィエートサブクラスである本明細書及びアペンディクス
Aに開示されたクラスのみがクラス”Process”である
が、クラス”Process”のサブクラスでないミックスイ
ンクラス”Named”のサブクラス(複数)は、本明細書
及びアペンディクスAに開示されたインストラクション
を用いて本発明のユーザによって定義される。従ってク
ラス”Named”はミックスインクラスである。
【0528】プロセスとしてのエージェント 各々のプロセス(エージェント及びプロセス)には、前
述したプロセスの一義的な挙動を規定する中心プロシー
ジャが組み合わされている。あるプロセスの中心プロシ
ージャは、プロセスによって遂行されるオペレーショ
ン”live”を具体化する方法である。エンジンはそのプ
ロセスにオペレーション”live”を遂行させ、それによ
りプロセスの中心プロシージャを実行させることによっ
てプロセスの処理を開始する。プロセスの方法の供給に
ついては以下に詳述する。あるプロセスがオペレーショ
ン”live”の実行を成功のうちにか、又は他の形で終了
させた場合、プロセスは終了する。プロセスの終了はア
ペンディクスAのセクション2.4.11に説明されて
おり、この説明は引用によって本明細書の一部とされ
る。
【0529】エージェントの可動度オペレーション”g
o” 前述したように、オブジェクトはオペレーション”go”
の遂行によって1つのプレイスから次のプレイスへと移
動する。オペレーション”go”は図34、図41、図5
0、図51、図53の例示的な例のコンテキストにおい
て説明される。プレイス220Aからプレイス220B
に移動する為に、エージェント150A(図34)は、
オペレーション”go”を遂行する。図34は、エージェ
ント150Aによるオペレーション”go”の遂行の前の
ネットワーク1500の状態を示している。
【0530】エージェント150Aはオブジェクト14
0A、140Bを所有し、エンジン132A中のプレイ
ス220Aを占有している。従ってエージェント150
A及びプレイス220Aは、エンジン132Aによって
同時に解釈されるプロセスである。換言すれば、プレイ
ス220A、エージェント150Aは、オペレーショ
ン”live”を同時に遂行する。エンジン132Bは、プ
レイス220B及びエージェント150Bを解釈する。
エージェント150Bはプレイス220Bを占有してい
る。
【0531】エンジン132Aの通信下部構造132A
ーCIは、通信リンク102AZによって、エンジン1
32Zの通信下部構造132ZーCIに接続されてい
る。エンジン132Zはプレイス220Zを解釈する。
通信下部構造132ZーCIは、通信リンク102ZB
によって、エンジン132Bの通信下部構造132Bー
CIにも接続されている。この実施例ではネットワーク
1500中に3つのコンピュータシステムが示されてい
るにすぎないが、ネットワーク1500のコンピュータ
システムの数は任意の数とすることができる。従って図
34に示したコンピュータシステムは本発明の原理を例
示するものにすぎず、図示した特別のネットワークによ
って本発明を限定するものではない。
【0532】この実施例においてエージェント150A
によるオペレーション”go”の遂行は、エンジン132
Zを経てエンジン132Aからエンジン132Bにエー
ジェント150Aを転送することを必要とする。従っ
て、オペレーション”go”にはエンジン132Aすなわ
ちソースエンジン、エンジン132Zすなわち移送エン
ジン及びエンジン132Bすなわち目的地エンジンの側
の処置を必要としている。
【0533】ソースプレイスを処理するエンジンによっ
て遂行されるオペレーション”go” 図35は、エージェント150Aによるオペレーショ”
go”の遂行の直前のエージェント150Aの実行状態の
一部を含む内部状態の一部を示している。あるプロセス
の実行状態については以下に詳細に説明する。スタック
1304は、エージェント150Aの実行状態の一部で
ある。スタック1304は上部”T”にチケット130
6を備えている。チケット1306については以下に詳
細に説明する。オペレーション”go”の遂行によって消
費されたアーギュメントは、スタック1304から復元
(ポップ)されるので、スタック1304はオペレーシ
ョン”go”のコンテキストにおいて”現在のスタック”
である。プレイス220Aはエージェント150Aの一
つのプロパティであり、これはエージェント150Aが
プレイス220Aを占めていることを示している。
【0534】図36は、エージェント150Aによるオ
ペレーション”go”の遂行の直後においてのエージェン
ト150Aの実行状態の一部を含む内部状態の一部を示
している。図36については以下に詳述する。
【0535】図37に示すフローチャート(ロジックフ
ローダイアグラム)1400は、エンジン132A(図
34)によって実行されるオペレーション”go”を示し
ている。エンジン132Aは、オペレーション”go”の
遂行が開始された時にエンジン132A内において実行
されているので、ソースエンジンである。図37に示す
フローチャートのそれぞれのステップについては、プレ
イス220A(図34)からプレイス220Bへの、エ
ージェント150Aによるトリップのコンテクストにお
いて説明される。
【0536】エージェント150Aによるオペレーショ
ン”go”の遂行において、エンジン132A(図34)
は、アクセステストステップ1402(図37)におい
てオペレーション”go”の遂行を要求しているエージェ
ントがエージェント150Aであるかどうかを定める。
オペレーション”go”がエージェント150A(図3
4)以外のオブジェクトによってリクエストされたもの
であれば、処理はアクセスステップ1402(図37)
から終了ステップ1404に移行しこの終了ステップで
は、クラスの例外”Process not Current (プロセスは
現在のものではない)”が放出され、オペレーション”
go”を失敗に終わらせる。しかしオペレーション”go”
がエージェント150A(図34)によってリクエスト
されたものであれば、処理はアクセステストステップ1
402(図37)から”canGo”テストステップ140
6に移行する。
【0537】”canGo”テストステップ1406におい
てエンジン132A(図34)はエージェント150A
がオペレーション”go”を遂行してもよいのか否かを定
める。”canGo”テストステップ1406においてエン
ジン132A(図34)はエージェント150Aのアト
リビュート”Permit”に対して質疑する。前述したアト
リビュート”Permit”はエージェント150Aの複数の
属性の一つである。エージェント150Aの色々の特性
についてはクラス”Process”に関連してアペンディク
スAに詳述されている。エージェント150Aのアトリ
ビュート”Permit”の質疑によってエージェント150
Aのプロパティ”Permit”が生成される。特定的にはパ
ーミット(許可)1612(図38)はエージェント1
50Aの特性”Permit”であり従ってエージェント15
0Aのアトリビュート”Permit”を質疑することによっ
て生成される。この実施例において特性”Permit”はエ
ージェント150Aの複数のプロパティの中の一つであ
る。
【0538】パーミット1612(図39)は、アペン
ディクスAに詳細に説明されている幾つかのプロパティ
の中に、プロパティ”charge”、”canGo”、及び”ag
e”(其々整数1702、ブーリアン1704及び整数
1706である)を含んでいる。ブーリアンは、只二つ
の可能な値”true”又は”false”の内の一つを有する
オブジェクトである。 ”canGo”テストステップ14
06(図37)においてエンジン132A(図34)
は、パーミット1612(図39)のアトリビュート”
canGo”に対して質疑する、それによりパーミット16
12のプロパティ”canGo”であるブーリアン1704
を生成させ、ブーリアン1704を”true”と比較す
る。
【0539】ブーリアン1704が”false”の値を持
っていたら、処理は”canGo”テストステップ1406
(図37)から終了ステップ1408に移行する。エー
ジェント150Aは、オペレーション”go”の遂行によ
って移行することが許されず、オペレーションは失敗に
終わり、終了ステップ1408においてクラス”Permit
Violated”の1メンバである例外を投出する。例外及び
その分類はアペンディクスAに一層詳細に説明されてい
る。
【0540】またブーリアン1704(図39)が”tr
ue”の値を有していたら、処理は”canGo”テストステ
ップ1406(図37)からエフェクチュエイト ムー
ブステップ1410に移行する。エフェクチュエイト
ムーブステップ1410については図40を参照として
以下に詳細に説明する。処理はエフェクチュエイトムー
ブステップ1410(図37)から終了ステップ141
2に移行しそこでオペレーション”go”は、エンジン1
32Aに関する限り成功の内に終了する。
【0541】前述したようにエンジン132A(図3
4)によって遂行されるエフェクチュエイト ムーブス
テップ1410は、フローチャート1410(図40)
によって示されている。フローチャート1410の第1
のステップ、すなわちルートエージェントステップ14
14において、エンジン132A(図34)は、エージ
ェント150Aをトリップの目的点すなわち”移送の目
的点”まで転送する為に使用されるエンジンを選出す
る。ここに使用される移送目的点という用語は、トリッ
プに使用する次のエンジンであり、トリップの目的点と
混同するべきではない。チケット1306(図35)
は、トリップの目的点としての1つのプレイスを定義す
るので、”トリップ目的点”は1つのプレイスである。
チケット1306(図35)によって規定されたトリ
ップの行程において、エージェント150(図34)は
1つのエンジンから次のエンジンへと移送される。従っ
て、”移送目的点”は1つのエンジンである。一般にト
リップには、エージェントがトリップ目的点を含むエン
ジンに到達するまでにエージェントの何回かの転送を必
要とすることが有り得る。
【0542】ステップ1414(図40)において、ウ
エイオブジェクトすなわちクラス”ウエイ”の1つのメ
ンバ(移送の目的点を規定する)が生成される。移送目
的点は一例として(i)現にエージェント150Aを含
むエンジン、すなわちエンジン132A(この場合エー
ジェント150Aは転送されない)、(ii)エンジン
132Aを含む領域内の別のエンジン、又は(iii)
別の領域のエンジンで有り得る。前記(ii)又は(i
ii)のどちらの可能性においても、エージェント15
0Aは後述するように移送目的点に向かって転送され
る。
【0543】”領域”という用語は用語集に規定されて
いる。エンジンを複数の領域に分類するのはエージェン
トのルーティング(移動)において顕著である。それは
典型的には各々のエンジンが他の領域内のエンジンに比
べて同一の領域内のエンジンについてより多くの詳細な
情報を有しているからである。これは単一の領域のエン
ジンが単一の人又は組織によって構成されてからであ
り、この人又は組織はその為領域の”供給者”と呼ばれ
る。従ってある領域の各々のエンジンには、その領域の
他のエンジンについての詳細な情報が与えられることが
できる。それはこうした全てのエンジンが単一の供給者
によって供給されているからである。
【0544】エンジンを領域に分類することは、大型の
複雑なネーットワークにおいてエージェントをルーティ
ングする上に有用である。あるエージェントが複数の領
域の間を移動する場合、移送目的エンジンについての情
報をソースエンジンが有していることは不可欠ではな
い。どの領域にエージェントが移動しているかをソース
エンジンが定めることができ、そしてそのエージェント
をその領域内のあるエンジンに向かって移送させること
ができれば十分である。トリップの目的点であるプレイ
スを含む領域にエンジンが移送されたら、エージェント
は一層容易にそのプリスを含むエンジンに向かってルー
ティングさせることができる。
【0545】フローチャート1414(図43)は、ル
ートエージェントステップ1414(図40)において
実行される各ステップを示し、以下に一層詳細に説明さ
れる。
【0546】処理はルートエージェントステップ141
4からアイソレート エージェントステップ1416に
移行し、そこでエージェント150A(図34)が単離
される。プロセスの単離についてはアペンディクスAに
詳細に説明されており、その説明は引用によって本明細
書の一部分となる。簡単に説明するとエージェント15
0Aは、(i)エージェント150A内の全ての参照を
他のプロセス及びこれらの他のプロセスによって所有さ
れているオブジェクトに対してボイドし、 (ii)他
の全てのプロセス内においてエージェント150A及び
エージェント150Aによって所有されるオブジェクト
に対する参照をボイドすることによって単離される。処
理は単離エージェントステップ1416(図40)から
エクシットステップ1418に移行する。
【0547】エクシットステップ1418において、プ
レイス220A(図34)は、エンジン132Aのリク
エストによってオペレーション”exiting”を遂行する
ことによって、エージェント150Aが離去したことを
知る。オペレーション”exiting”については以下に詳
細に説明する。処理はエクシットステップ1418から
NEXT HOP IS HEREテストステップ1420に移行する。
【0548】NEXT HOP IS HEREテストステップ1420
においてエンジン132A(図34)は、ルートエージ
ェントステップ1414(図40)において定められた
移送目的点を現在のエンジンすなわちエンジン132A
(図34)と比較する。移送目的点が現在のエンジンす
なわちエンジン132Aであった場合、処理は NEXTHOP
IS HERE テストステップ1420(図40)からエー
ジェント配送ステップ1422に移行する。図34、図
41、図50、図51、図53の例の場合、エージェン
ト150Aは、以下に説明するようにエンジン132Z
に移送される。従って移送目的点は現在のエンジンすな
わちエンジン132Aではなく、処理はエージェント配
送ステップ1422(図40)には移行しない。しかし
エージェント配送ステップ1422及び後続する各ステ
ップについても以下に完全性を意図して説明する。
【0549】エージェント配送ステップ1422におい
て、エージェント150A(図34)はチケット130
6(図35)を満足するエンジン132A内のプレイス
に配送される。エージェント配送ステップ1422(図
40)は、フローチャート1422(図49)によって
示され、以下に詳細に説明される。処理はエージェント
配送ステップ1422(図40)から第1の例外テスト
ステップ1424に移行し、ここでエンジン132A
(図34)は、エージェント150Aの配送が例外を投
出するか否かを定める。エージェント配送ステップ14
22(図40)において例外が投出されない場合、処理
は第1の例外テストステップ1424から終了ステップ
1428に移行する。終了ステップ1428はムーブス
テップ1410を完全にするので、処理は、前述した終
了ステップ1412(図37)に移行する。
【0550】エージェント配送ステップ1422(図4
0)において例外が投出された場合には、処理は第1の
例外テストステップ1424からステップ1426に移
行し、ここでエージェン150Aは、フローチャート1
422(図49)に従ってパーガトリーに配送される。
パーガトリーは各々のエンジン内の一つのプレイスであ
りプロセスへのイングレス(進入)を拒絶しない。パー
ガトリーに入る際、エージェント150Aのローカル許
可は著しく制限することができる。例えば、ローカル許
可のプロパティ”canGo”は”true”にセットされ、”c
anCharge”、”canCreate”、”canDeny”、”canGran
t”、”canRestart”、”canSend”、及び”canTermina
te”の各プロパティは”false”にセットされる。プロ
パティ”charges”及び”age”は、エージェント150
Aをパーガトリーに送った例外をエージェントが検出し
分析することができそしてオペレーション”go”の遂行
によって別のプレイスに移動することができる程度に大
きな値に設定する。許可に関するプロパティは、アペン
ディックスAに詳細に説明されている。
【0551】処理はステップ1426から終了ステップ
1428に移行して、ムーブ移行し、さらにエフェクチ
ェートムーブステップ1410(図37)に移行し、前
述したように成功のうちに終了する。
【0552】前述したように、ルートエージェントステ
ップ1414(図40)において定めた移送目的点が現
在のエンジンすなわちエンジン132Aであった場合に
は、処理はnext hop is here テストステップ1420
(図40)からエージェント配送ステップ1422に移
行する。逆に移送目的点が現在のエンジンでなかった場
合、処理は、next hop is here ステップ1420から
目的点形成ステップ1430に移行する。目的点形成ス
テップ1430において、移送目的点を特定する目的
点、オブジェクトが形成される。処理は目的点形成ステ
ップ1430からエージェント符号化ステップ1432
に移行する。
【0553】エージェント符号化ステップ1432にお
いて、エンジン132A(図34)は、アペンディック
スBに含まれるテレスクリプト符号化規則の規則にした
がってエージェント150Aを符号化する。アペンディ
クスBは本明細書の一部分であり、引用によって全体と
して本明細書と一体化される。エージェント150Aの
符号化によって、(i)エージェント150A、(i
i)オブジェクト140A、140Bを含むエージェン
ト150Aが所有するすべてのオブジェクト、及び(i
ii)エージェント150A及びエージェント150A
の所有する全てのオブジェクトがそのメンバとなってい
る複数のクラスが標準化バイナリ形態において符号化さ
れたエージェント150A−E(図41)として表され
る。目的点形成ステップ1430(図40)において形
成された目的点オブジェクトすなわち目的点オブジェク
ト150A−E−D(図42)は符号化されたエージェ
ント150A−Eに含まれ、以下に詳細に説明される。
図41に示すように、符号化されたエージェント150
A−Eは、エンジン132Aの通信下部構造132A−
CIに記憶される。エージェント150A(図34)
は、以下に詳細に説明されるように符号化されたエージ
ェント150A−Eの移送が完了するまでエンジン13
2Aによって保持される。
【0554】処理はエージェント符号化ステップからト
ランスファアウトステップ1434に移行する。トラン
スファアウトステップ1434では、エンジン132A
(図41)は、目的点形成ステップ1430(図40)
において形成された目的点オブジェクトに従って、符号
化されたエージェント150A−Eの移送を開始する。
この例では目的点オブジェクトは、符号化されたエージ
ェント150A−Eの移送目的点としてエンジン132
Z(図41)を特定する。符号化されたエージェント1
50A−Eが、通信下部構造132AC−CIから通信
リンク100AZを経てエンジン132Zの通信下部構
造132Z、CIに通常の2進データとして移送され
る。通信下部構造132A−CIと132Z−CIとの
間のデータの転送は、アペンディクスC、Fに詳細に記
述されている。これらのアペンディクスは本明細書の一
部であり、全体として引用によって本明細書の一部とさ
れている。前述したように符号化されたエージェント1
50A−Eの移送は、トランスファエージェントアウト
ステップ1434において開始される。このフローチャ
ート1410(図40)による、エンジン132Aのプ
ログラム部分132A−Pによる処理には通信下部構造
132A−CIと132Z−CIとの間の符号化された
エージェント150A−Eの移送が続けられる限り継続
される。
【0555】処理はトランスファアウトステップ143
4から第2の例外テストステップ1436に移行し、こ
こでエンジン132Aは、トランスファアウトステップ
1434が例外を投出したか否かすなわち符号化された
エージェント150A−Eの移送の開始が失敗したかど
うかを定める。トランスファアウトステップ1434が
失敗した場合、処理は、エージェント150Aが前述し
たようにパーガトリに要求された第2の例外テストステ
ップから移行する。逆にトランスファアウトステップ1
434が成功した場合、処理は第2の例外テストステッ
プ1436からステップ1438に移行する。
【0556】ステップ1438においてエンジン132
A(図41)が、継続中のトランスファのリストにエー
ジェント150Aを付加する。エージェント132A
は、エージェント150Aの移送トランスファの間継続
中のトランスファのリストに保持されている。トランス
ファ(移送)が終了したら、エージェント150Aは、
継続中のトランスファのリストから除かれ、エンジンに
よって廃棄される。エージェント150Aがなお継続中
のトランスファのリストにある間にエージェント150
Aの許可が終了した場合、すなわち、エージェント15
0Aの実際のエイジがエージェント150Aの有効許可
のプロパティ”age”に到着した場合には、符号化エー
ジェント150A−Eのトランスファはアボートされ
る。エージェント150Aは継続中のトランスファのリ
ストから除かれ、エージェント150Aは、クラス”Pe
rmit Expired”の例外を投出することによって、オペレ
ーション”go”を成功のうちに遂行することは失敗に終
わる。プロセスの”有効許可”はアペンディクスに詳細
に説明されている。処理はステップ1438から終了ス
テップ1428に移行し、そこでフローチャート141
0(図40)、したがってエフェクチエートムーブステ
ップ1410(図37)が終了する。
【0557】前述したようにエンジン132A(図3
4)は、ルートエージェントステップ1414におい
て、エージェント150Aの移送目的点を定める。フロ
ーチャート1414(図43)は、ルートエージェント
ステップ1414(図40)において実行されるステッ
プを示している。
【0558】フローチャート1414(図43、図4
4)の以下の説明は、(図34、図50)の例の範囲を
越えた状況を考慮している。したがってフローチャート
1414(図43、図44)は、図34、図41、図5
0、図51、図53の例とは無関係に説明される。しか
し説明のための枠組みを与えるために、フローチャート
1414(図43、図44)はエージェント150A
(図34)のコンテキストによって説明される。このエ
ージェント150Aは、エンジン132A内のプレイス
220Aに発したトリップを行うためにオペレーショ
ン”go”を遂行する。フローチャート1414(図4
3、図44)の説明は、(i)エージェント150Aが
エンジン132A(図34)以外のエンジンに移送され
るステップ又は(ii)エージェント150Aがあるネ
ットワーク(エンジン132A、132Z、132Bが
同一の領域であるネットワーク)に移送されるトリップ
には限定されない。さらに、以下の説明は、エージェン
ト150A(図34)のトリップを規定するチケット1
306(図35)を、ウェイ、手段、テレネーム又は供
給者の指定を含むか、又は含まないように制限するもの
でもない。チケット1306(図35)は、フローチャ
ート1414(図43、図44)のコンテキストにおい
て、エンジン132A(図34)内のあるプレイス、
(ii)エンジン132Aと同一の領域内のエンジン内
のあるプレイス、又は(iii)エンジン132Aを含
む領域と異なったある領域内のあるエンジン内のあるプ
レイスへのトリップを規定することができる。
【0559】オペレーション”go”についてチケット1
306(オペレーション”go”のアーギュメントとして
消費されている)がトリップの目的点及びその他の特徴
を特定化するものであることを想起されたい。フローチ
ャート1414においてエンジン132A(図34)
は、テストステップ1440において、チケット130
6(図13、図45A)のアトリビュート”way”を質
疑することによって、チケット1306のプロパティ”
way”を生成させる。チケット1306の特性”way”
は、ウェイ1820(図45A)である。チケット13
06のプロパティ”way”はオプションであり、したが
って0(図示せず)とすることもできる。
【0560】チケット1306のプロパティ”way”が
0であった場合、処理はテストステップ1440から、
ticket has provider テストステップ1460に移行
する。このステップ1460については、以下に詳細に
説明する。逆にチケット1306のプロパティ”way”
が一つのウェイを持つ場合すなわち0でない場合、処理
はテストステップ1440からステップ1442に移行
しこのステップにおいてエンジン132A(図34)は
ウェイ1820(図45A)アトリビュート”name”を
質疑することによって、ウェイ1820のプロパティ”
name”であるテレネームを生成させる。またステップ1
442(図43)においてエンジン132A(図34)
は、そのテレネームのプロパティ”authority”を生成
させ、コピーする。アペンディクスAに説明されるよう
にオクテットストリングによって表される、結果とした
オーソリティは、後述するように、移送目的点を定める
ために用いられる。
【0561】処理はステップ1442からway has mean
s テストステップ1442(図43)に移行し、この
ステップ1444でウェイ1820(図46)のアトリ
ビュート”means”が質疑されることによって、手段オ
ブジェクト1822であるウェイ1820のプロパテ
ィ”means”が生成される。プロパティ”means”はオプ
ションであるため、0(図示しないとしてもよい。)手
段オブジェクトすなわちクラス”Means”のメンバは、
(i)コンピュータ間通信媒体及び(ii)この媒体を
経て特定のエンジンに到達すべき移送インストラクショ
ンを特定することによってエンジンを特定するオブジェ
クトである。一例として手段オブジェクトは、公共の交
換される電話ネットワーク(PSTN)を特定し、エー
ジェントを目的点エンジンに移送するための特定のモデ
ムの電話番号を含むモデムインストラクションを特定す
ることができる。手段オブジェクトは目的点エンジンに
エージェント150Aをルーティングするのに必要なす
べての情報を含むため、チケット1306の他のプロパ
ティはチケット1306が手段オブジェクトを含む場合
には無視される。
【0562】したがってウェイ1820のプロパティ”
means”が0でない場合、すなわち手段オブジェクト1
822(図46)である場合、処理は way has means
テストステップ1444(図43)からステップ14
46に移行する。ステップ1446においてウェイ18
22は移送目的点を規定するウェイであるとして指定さ
れる。なお手段オブジェクト1822は、最初のホップ
の目的点すなわちエージェント150Aの最初のトラン
スファの目的点(図34)であるエンジンを規定するも
のであり、必然的にエンジンではなく一つのプレイスで
ありチケット1306(図45A)によって規定される
トリップの目的点であるエンジンを規定するのではな
い。処理はステップ1446から終了ステップ1448
に移行し、ここでフローチャート1414すなわちルー
トエージェントステップ1414(図40)の処理は成
功の内に終了する。
【0563】逆にウェイ1820(図46)のプロパテ
ィ”means”が0である場合、ウェイ1820は手段オ
ブジェクトを含まず、処理は way has means テストス
テップ1444(図43)からticket has name テス
トステップ1450に移行する。ticket has name テ
ストステップ1452においてエンジン132A(図3
4)がテレネーム1818である、チケット1306
(図45A)のプロパティ”destinationName”を発生
させ、テレネーム1818を0と比較する。チケット1
366のプロパティ”destinationName”はオプション
であるので、チケット1306のプロパティ”destinat
ionName”は0(図示しない)とすることができる。
【0564】チケット1306のプロパティ”destinat
ionName”が0である場合、処理はticket has means テ
ストステップ1450から ticket has provider テス
トステップ1460に移行する。このテストステップ1
460については以下に説明する。その逆に、チケット
1306のプロパティ”destinationName”がテレネー
ム1818である場合には処理はticket has name テス
トステップ1450からステップ1452に移行する。
ステップ1452においてエンジン132A(図34)
はトランスファ目的点へのエージェント150Aの移送
通路を規定するウェイオブジェクトを発生させる。エン
ジン132Aは、以下に詳細に説明するファインダと相
談し、ステップ1442(図43)において発生されコ
ピーされたオーソリティーに関連された領域へのウェイ
オブジェクトと、その名前がテレネーム1818(図4
5A)に等しいオーソリティー内のプレイスを発生させ
る。ファインダの使用によってこのようなウェイオブジ
ェクトを発生させることについては以下に詳細に説明す
る。
【0565】処理はステップ1452から”way out is
here”テストステップ1454に移行し、このテスト
ステップ1454においてエンジン132A(図34)
は、ステップ1452(図43)において発生させたウ
ェイオブジェクトがエンジン132A(図34)へのト
ランスファを規定するか否かを定める。生成させたウェ
イオブジェクトがエンジン132Aへのトランスファを
規定していない場合、処理は”way out is here”テス
トステップ1454から終了ステップ1456に移行
し、この終了ステップにおいてフローチャート1414
のすなわちルートエージェントステップ1414(図4
0)の処理は成功の内に終了する。
【0566】その逆に生成させたウェイオブジェクトが
エンジン132A(図34)へのトランスファを規定し
ている場合、処理は、”way out is here” テストステ
ップ1454から1458に移行し、このステップ14
58においてエンジン132Aは、エージェント150
Aがエンジン132Aに移送されるべきことを示すフラ
グを立てる。処理はステップ1458から、以下に詳細
に説明する。第2のticket has name テストステップ
1480に移行する。
【0567】前述したようにチケット1306のプロパ
ティ”way”が0である場合には、処理は、ticket has
name テストステップ1440からticket has provide
rテストステップ1460に移行する。ticket has prov
ider テストステップ1460においてエンジン132
Aは、テレアドレス1814(図45A)である。チケ
ット1306のプロパティ”destinationAddress”を発
生させ、テレアドレス1814のプロパティ”provide
r”を発生させる。チケット1306のプロパティ”des
tinationAddress”又はテレアドレス1814のプロパ
ティ”provider”のどちらかが0であった場合、処理は
ticket has provider テストステップ1460から、以
下に詳細に説明する第2のticket has name テストステ
ップ1480に移行する。その逆に、チケット1306
(図45A)のプロパティ”destinationAddress”及び
テレアドレス1814のプロパティ”provider”が0で
ない場合には、チケット1306は、テレップの目的点
を含む領域を指定し、処理はticket has provider テス
トステップ1460からステップ1462に移行する。
【0568】ステップ1462においてエンジン132
A(図34)は、以下に詳細に説明するように、ファイ
ンダと相談し、チケット1306のプロパティ”destin
ationAddress”のプロパティ”provider”によって示さ
れた領域のエンジンへのトランスファを規定するウェイ
オブジェクトを発生させる。処理はステップ1462
(図43)からfirst found テストステップ1464に
移行し、このステップ1464においてエンジン132
A(図34)は、ステップ1462においてウェイオブ
ジェクトが成功の内に生成されたかいなかを定める。ス
テップ1462においてウェイオブジェクトが生成され
た場合、処理はfirst found テストステップ1464か
ら第2の”way out is here”ステップ1472(以下
に詳細に説明する)に移行する。逆にステップ1462
において、ウェイオブジェクトが生成されなかった場合
には、処理は、first found テストステップからステッ
プ1466に移行する。
【0569】ステップ1466において、エンジン13
2A(図34)は、以下により詳細に説明するように、
ファインダと相談し、チケット1306のプロパティ”
destinationAddress”であるテレアドレスのプロパテ
ィ”routingAdvice”の一つのアイテムによって示され
るある領域へのトランスファを規定するウェイオブジェ
クトを発生させる。テレアドレスの特にプロパティ”pr
ovider”及び”routingAdvice”の各プロパティはアペ
ンディクスAに一層詳細に説明されており、この説明は
引用によって本明細書の一部とされる。簡単に説明する
と、テレアドレスのプロパティ”routingAdvice”のア
イテムは、チケット1306(図45A)によって規定
されるトリップの目的点にエージェント150Aを移送
させることができるとテレアドレスの作成者によって信
じられている1以上の領域の供給者(プロバイダ)を指
示する。処理はステップ1466(図43)から、第2
のfound テストステップ1468に移行し、このテスト
ステップ1468において、エンジン132A(図3
4)は、ウェイオブジェクトがステップ1466におい
て成功の内に生成されたか否かを定める。ステップ14
66においてウェイオブジェクトが生成されなかった
ら、処理は第2のfound テストステップ1468から終
了ステップ1470に移行し、この終了ステップにおい
てクラス”目的点使用不可能”の例外が投出される。そ
の逆にステップ1466においてウェイオブジェクトが
生成された場合には、処理は第2の foundテストステッ
プ1468から第2の”way out is here”テストステ
ップ1472に移行する。
【0570】第2の”way out is here”テストステッ
プ1472において、エンジン132A(図34)は、
ステップ1462又はステップ1466(図43)にお
いて発生させたウェイオブジェクトが、エンジン132
A(図34)へのトランスファーを規定しているか否か
を定める。生成されたウェイオブジェクトがエンジン1
32Aへのトランスファを規定していない場合には、処
理は、第2の”way out is here” テストステップ14
72から終了ステップ1470に移行し、この終了ステ
ップにおいて論理フローダイヤグラム1414すなわち
ルートエージェントステップ1414(図40)の処理
は成功の内に終了する。
【0571】その逆に生成したウェイオブジェクトがエ
ンジン132A(図34)へのトランスファを規定して
いる場合には、処理は、第2の”way out is here”テ
ストステップ1472からステップ1476に移行し、
このステップ1476においてエンジン132A(図3
4)は、チケット1306によって規定されるトリップ
の目的点を特定化するテレネームを、チケット1306
のプロパティ”destinationAddress”であるテレアドレ
スのプロパティ"location”から導くことになる。
【0572】エンジン132Aは、便利で効率的ないか
なる方法によってテレネームを導いてもよい。一例とし
てエンジン132Aは、キーがオクテットストリング例
えばオクテットストリング2000K1であり値がテレ
ネーム例えばテレネーム2000V1であるディクショ
ナリィ2000(図47)のようなテーブルを使用して
も良い。一例として、テレアドレス1814(図45
A)のプロパティ”location”がオクテットストリング
2000K1(図47)に等しい場合には、テレネーム
2000V1は、チケット1306(図45A)によっ
て規定されたトリップの目的点であるプレイスを特定化
するテレネームとしてエンジン132Aによって生成さ
れる。
【0573】アドレスは、ある領域内の番地に、その領
域のエンジンのデザイナ及びインプリメンタによってデ
ザインされインプリメントされたアドレッシングスキー
ムに従って割り当てられている。開示されたインストラ
クションセットは、特定のアドレッシングスキームを指
定しない。各々の領域は、その特別の領域のもっとも効
率的で便利なアドレス指定スキームを自由にインプリメ
ントすることができる。従って世界の各々の主権国家が
その自身のアドレス指定スキームをその郵便サービスを
提供する際にデザインしインプリメントするのと同様
に、各々の領域は、その領域のための独特のアドレス指
定スキームを自由にインプリメントすることができる。
勿論2以上の領域内において使用されるアドレス指定ス
キームは単一でなくても良い。
【0574】アドレス指定スキームをインプリメントす
る際に、ある領域のエンジン(複数)は、1以上のプレ
イスを含むロケーションにテレアドレスを割り当てる。
テレアドレスを割り当てる際にエンジンはそのテレアド
レスによって特定されたロケーション内の1以上のプレ
イスを特定するテレネームを発生させそして記録する。
換言すれば、テレアドレスを割り当てるエンジン
は、それぞれのテレアドレスが割り当てられたプレイス
のテレネームにテレアドレスを連係させる情報を保持し
ている。このようにしてエンジン例えばエンジン132
A(図34)は、特定化されたテレアドレスを有するプ
レイスのテレネームを発生させることができる。このよ
うなテレネームを記録しそして発生させる特定のメカニ
ズムは、ある与えられた領域のエンジンをデザインしイ
ンプリメントする個人又は組織に一任される。
【0575】処理はステップ1476からステップ14
78に移行し、このステップ1478においてエンジン
132A(図8)は、エンジン132Aを含む領域内の
あるエンジンにエージェント150Aが移送されるべき
事を示すフラグをたてる。処理はステップ1478(図
43)から第2のticket has name テストステップ14
80(図43)に移行する。さらに処理は、ステップ1
458(図43)及びticket has provider テストステ
ップ1460(これらのステップはどちらもすでに詳細
に説明されたものである)から第2のticket has name
テストステップ1480に移行する。
【0576】第2のticket has name テストステップ1
480(図44)において、エンジン132A(図3
4)は、チケット1306(図45A)のプロパティ”
destinationName”が0か、又はテレネーム1818で
あるかを定める。チケット1306のプロパティ”dest
inationName”がテレネーム1818である場合には処
理は、第2のticket has name テストステップ1480
(図44)からステップ1482に移行し、このステッ
プ1482においてエンジン132A(図34)はテレ
ネーム1818(図45A)のコピーを生成させ、その
コピーは、移送目的点のテレネームとして、ステップ1
476(図43)において導出されたテレネームに変わ
る。処理はステップ1482(図44)からステップ1
483に移行する。また、チケット1306のプロパテ
ィ”destinationName”が0である場合には、処理は第
2のticket has name テストステップ1480から14
83に直接に移行する。
【0577】エンジン132A(図34)は、ステップ
1483において、以下に詳細に説明するように、ファ
インダと相談し、前述したようにステップ1476(図
43)又はステップ1482(図44)のどちらかで生
成させたテレネームによって指示されるプレイスへのト
ランスファを規定するウェイオブジェクトを発生させ
る。処理はステップ1483からテストステップ148
4に移行し、このテストステップにおいてエンジン13
2A(図34)は、ステップ1458(図43)がトラ
ンスファの目的点がエンジン132A(図34)である
ことを示すフラグを立てる。フラグが立てられていない
場合、処理はテストステップ1484から、後述するテ
ストステップ1490に移行する。その逆に、フラグが
立てられていた場合、エージェント150A(図11
5)は、エンジン132A内のあるプレイスにトランス
ファさせる必要があり、処理はテストステップ1480
(図44)から第3の”way out is here” テストステ
ップ1486に移行する。
【0578】第3の”way out is here” テストステッ
プ1486においてエンジン132A(図34)は、ス
テップ1483(図44)によって発生させたウェイオ
ブジェクトがエンジン132A(図34)へのトランス
ファを規定しているか否かを定める。生成させたウェイ
オブジェクトはエンジン132Aのトランスファを規定
していない場合には、処理は第3の”way out is her
e” テストステップ1486(図44)から終了ステッ
プ1488に移行し、この終了ステップにおいて、クラ
ス”目的点使用不可能”の例外が投出され、論理フロー
ダイヤグラム1414(図43、図44、)すなわちル
ートエージェントステップ1414(図40)の処理が
終了する。その逆に、生成されたウェイオブジェクトが
エンジン132A(図34)内のあるプレイスへのトラ
ンスファを規定しているならば、処理はテストステップ
1486(図44)からテストステップ1492に移行
する。
【0579】テストステップ1490においてエンジン
132A(図34)は、トランスファの目的点がエンジ
ン132A(図34)を含む領域であることを指示する
フラグを立てる。このフラグが立てられていない場合、
処理はテストステップ1490から終了ステップ149
6に移行し、この終了ステップにおいて、論理フローダ
イヤグラム1414(図43、図44)すなわち、ルー
トエージェントステップ1414(図40)による処理
が成功の内に終了する。その逆にフラグが立てられてい
ない場合、エージェント150A(図34)は、エンジ
ン132Aを含む領域内のあるプレイスに移行させる必
要があり、処理はテストステップ1490(図44)か
ら way out is this region テストステップ1492に
移行する。エンジン132A(図34)は、 way out i
s this region テストステップ1492において、ステ
ップ1483において発生させたウェイオブジェクト
(図44)がエンジン132A(図34)を含む領域内
のあるプレイスへのトランスファを規定しているか否か
を定める。発生させたウェイオブジェクトがエンジン1
32Aを含む領域内のあるプレイスへのトランスファを
規定していない場合には 、処理は、 way out is this
region テストステップ1492(図44)から終了ス
テップ1494に移行する。この終了ステップにおいて
はクラス”目的点使用不可能”の例外が投出され、論理
フローダイヤグラム1414(図43、図44)すなわ
ちルートエージェントステップ1414(図40)によ
る処理が終了する。
【0580】エンジン132A(図132)は、ステッ
プ1452、1462、1466及び1483(図4
3)について以上に説明したように、チケット1306
(図35)によって規定されたトリップの目的点へのト
ランスファにエージェント150Aを差し向けるため
に、ファインダを使用する。ファインダはエージェント
のトランスファの目的点を定めるために使用される。一
例としてチケット1306(図35)は、トリップの目
的点として、エンジン132B内のプレイス220B
(図34)を規定する。しかしエージェント150A
は、エンジン132Bに到達するためには、最初にエン
ジン132Zに移送されなければならないので、エンジ
ン132Zはトランスファの目的点となる。ファインダ
2050(図48)は、第2のテレネームによって特定
化されるプレイスに向かうトランスファの目的点である
エンジンのテレネームを発生させるために用いられる。
指示指令によれば、生成されたテレネームは、エンジン
がエンジンによって処理されるエンジンプレイスを特定
することによってエンジンを特定する。第2のテレネー
ムは、特定のプレイス又はオーソリティを特定化しそれ
によって特定化されたオーソリティの全てのプレイスを
特定化する。テレネームはアペンディックスAに一層詳
細に説明されている。
【0581】ステップ1452(図43)のコンテキス
トにおいて、第2のテレネームは、テレネーム1818
(図45A)であり、このテレネームは、チケット13
06のプロパティ”destinationName”である。ファイ
ンダ2050(図48)がテレネーム1818に関する
情報を含まない場合、ステップ1452(図43)コン
テキストにおいて第2のテレネームは、前述したように
ステップ1442において発生されコピーされるオーソ
リティを特定化するテレネームである。第2のテレネー
ムは、ステップ1462のコンテキストにおいてチケッ
ト1306のテレアドレス1814(図45A)のプロ
パティ”provider”において特定されたオーソリティを
特定化する。第2のテレネームは、ステップ1466
(図43)のコンテキストにおいて、チケット1306
のテレネーム1814(図45A)のプロパティ”rout
ingAdvice”であるリストの一つのアイテムにおいて特
定化されたオーソリティを特定化する。ステップ148
3(図44)のコンテキストにおいて、第2のテレネー
ムは、チケット1306のプロパティ”destinationNam
e”が0でない場合、チケット1306のテレネーム1
818(図45A)であるか、又はその他の場合におい
て、ステップ1476(図43)において生成したテレ
ネームである。ファインダ2050(図48)は、第2
のテレネームがチケット1306のテレネーム1818
(図45A)であるステップ1483(図14)のコン
テキストにおいて以下に説明される。
【0582】ステップ1452(図43)、1462、
1466及び1483(図44)の各々において、ファ
インダ2050(図48)の使用によって生成させたテ
レネームは、生成させたテレネームによって特定化させ
られるエンジンへのトランスファを規定するウェイオブ
ジェクトを形成するために用いられる。
【0583】エンジン132Aは、ファインダ2050
(図48)の使用によって、エージェント150Aを転
送すべきエンジン、すなわち”移送目的点”を定める。
ファインダ2050は、トリップの目的点からトリップ
の目的点に向かってエージェント150Aを移動させる
トランスファ目的点をエンジン132Aによって定める
ことを可能とするものであれば、どんな構造であっても
よい。一実施例によれば、ファインダ2050は、キー
がテレネームであり、値がやはりテレネームであるディ
クショナリである。キー例えばテレネーム2050K1
−2050K6は、オーソリティを特定化する。値、例
えばテレネーム2050V1−2050V6は、各々の
対応するオーソリティによって特定されたプレイスに到
達する際に経過するエンジン(複数)を特定する。ファ
インダ2050のテレネーム2050K1(図48)が
テレネーム1818のものと同一のオーソリティを持つ
場合には、テレネーム2050V1は、トランスファ目
的点として、エンジン132Zを特定化する。
【0584】本発明の一実施例によれば、ファインダ2
050のキーは、テレネーム2050V7に組み合わさ
れたニル(零)2050K7を含む。
【0585】テレネーム2050V7は、ネットワーク
1500(図34)及びネットワーク1500が直接又
は間接に接続され得る複数のネットワークの実質的な部
分に関する情報を含むエンジンを特定化する。したがっ
て、テレネーム2050V7によって特定化されたエン
ジンは、チケット1306(図45A)を満足するトリ
ップ目的点に向かってエージェント150Aをルーティ
ングする際に最も成功する確率の高いエンジンである。
ファインダ2050(図48)のキーであるテレネーム
がテレネーム1818と同一のオーソリティのものでな
い場合、ニル2050K7に組み合わされたテレネーム
2050V7(図48)は、トランスファの目的点を特
定化する。次の例は例示的である。
【0586】小型のパーソナルコンピュータシステム内
においてエンジン132Aが実行され、従って、エンジ
ン132Aがただ一つのオーソリティのプレイス(複
数)を解釈するものと想定する。さらに、エンジン13
2Z(図34)が大型のマルチユーザメインフレームコ
ンピュータシステム内において稼働し、このコンピュー
タシステムが多くの別々のオーソリティのプレイス(複
数)を解釈し、このコンピュータシステムに多くの異な
ったオーソリティの多くのエージェントが移動するもの
と想定する。このような場合、エンジン132Aのファ
インダは、非常に小型になり、特別のオーソリティのプ
レイスへのエージェントの転送についてほとんど情報を
もたらさないであろう。しかし、エンジン132Zのフ
ァインダは、より広範で包括的であると思われるので、
特別のオーソリティのプレイスに向かって特別なエージ
ェントをルーティングすることについて情報を提供する
可能性がより多く存在する。このような場合、エンジン
132Aのファインダは、トリップの目的点プレイスの
オーソリティに関する情報をエンジン132Aのファイ
ンダが含まない場合にエンジン132Zをトランスファ
の目的点として特定化するテレネームをニルと組み合わ
せる。
【0587】ファインダ2050(図48)との相談に
よってトランスファの目的点を定めることが成功しなか
った場合、エンジンは、エンジンの供給者によって選定
されたインクリメンテーションに従って、次のポリシー
又はその他のポリシーのどれかをインクリメントするこ
とができる。
【0588】チケット1306(図45A)がサイテイ
ション1816を含む場合、エンジン132A(図3
4)は、エージェント150Aの現在のプレイスにある
テレネームを発生させ、以下に説明するステップに従っ
て、引用されたクラスのプレイスを見い出すように努め
るか、又は(ii)例外を投出してテレネームを発生さ
せないことによってチケット1306(図45A)をあ
いまいであるとして拒絶し又は(iii)あいまいに特
定化されたトリップの目的点として指定されたプレイス
のテレネームを生成させることができる。同様に、チケ
ット1306がサイテーションを持たない場合、エンジ
ン132A(図34)は、(i)例外を投出しテレネー
ムを発生させないことによって、チケット1306(図
45A)をあいまいとして拒絶し又は(ii)あいまい
に特定化されたトリップの目的点として指定されたプレ
イスのテレネームを発生させることができる。
【0589】図34、図41、図50、図51、図53
の例では、エンジン132A(図34)は、ファインダ
2050(図47)に相談し、エンジン132Bのプレ
イス220B(図34)に到達するためにはエージェン
ト150Aはエンジン132Zに移送させるべきことを
定める。従って、エンジン132Zのエンジンプレイス
は、エージェント150Aの移送目的点であり、エンジ
ン132Zへのエンジン150Aの移送を規定するウェ
イオブジェクトが生成される。
【0590】このようにフローチャート1414(図4
3、図44)に従った処理によって、チケット1306
によって規定されたトリップの目的点に向かってエージ
ェント150Aを移動させるためのエージェント150
A(図34)のトランスファを規定するウェイオブジェ
クトが生成される。
【0591】フローチャート1410(図40)のコン
テキストにおいて前述したように、エージェント150
A(図34)は、place in deliver agentステップ14
22(図40)中のあるプレイスに配送される。図3
4、図41、図50、図51、図53の実施例において
エージェント150Aは、エンジン132A内のいかな
るプレイスにも配送されないことを想起されたい。しか
し、記述を完全にするために、エンジン132A内のプ
レイスへのエージェント150Aの配送について説明す
る。エージェント150A(図34)は、エンジン13
2A内のプレイスに、このプレイスがチケット1306
(図35)によってトリップの目的点として規定される
場合に配送される。あるプレイスへのエージェントの配
送は、(i)そのエージェントを配送するべき特別なプ
レイスを選定すること、(ii)そのエージェントをそ
のプレイスの占有者とすること、及び(iii)オペレ
ーション”go”をそのエージェントについて継続させる
こと、を含む。エージェント配送ステップ1422は、
フローチャート1422(図49)によって示されてい
る。
【0592】フローチャート1422(図49)による
処理は、for all current placesステップ1422Aに
おいて開始される。for all current placesステップ1
422A及び次のステップ1422Cは、現在のエンジ
ン、すなわちエンジン132A(図34)によって現に
処理されているプレイスの各々がステップ1422B、
1422D及び1422E(図49)に従って処理され
る処理ループを規定する。フローチャート1422の以
下の説明のコンテキストにおいて”サブジェクトプレイ
ス”は、for all current placesステップ1422A及
び次のステップ1422Cによって規定されるループの
ある特別の反復において処理されるプレイスである。こ
のループの各々の繰り返し(反復)すなわちエンジン1
32A(図34)の各々の現在のプレイスについて、処
理は、for all current placesステップ1422Aか
ら、place satisfies ticketテストステップ1422B
に移行する。
【0593】現在のエンジンは、place satisfies tick
etテストステップ1422Bにおいて、サブジェクトプ
レイスがチケット1306を満足するか否かを定める。
【0594】サブジェクトプレイスがチケット1306
を満足しない場合、(i)処理は、place satisfies ti
cket テストステップ1422B(図49)から次のス
テップ1422Cを経てfor all current placesステッ
プ1422A(ここで、ループの別の反復が開始され
る)に移行するか、または、(ii)処理は、以下に示
す説明する終了ステップ1422Iに移行する。逆に、
サブジェクトプレイスがチケット1306を満足する場
合、処理は、place satisfies ticket テストステップ
1422Bからエンタリングステップ1422Dに移行
する。
【0595】以下に詳細に説明するように、あるプレイ
スは、オペレーション”entering”を成功の内に遂行す
ることによってあるプロセス例えばあるエージェントへ
のイングレスを許容し、オペレーション”entering”の
実行の間に例外を投出することによってプロセスへのイ
ングレスを拒絶する。オペレーション”entering”の遂
行については以下に一層詳細に説明する。
【0596】処理は、エンタリングステップ1422D
(図49)から例外テストステップ1422Eに移行
し、テストステップ1422Eにおいて、現在のエンジ
ンは、サブジェクトプレイスによるオペレーション”en
tering”の遂行が例外を投出したか否かを定める。サブ
ジェクトプレイスによるオペレーション”entering”の
遂行が例外を投出し、それによりサブジェクトプレイス
へのエージェント150Aのイングレスを拒絶した場
合、処理は、エンタリングステップ1422Eから次の
ステップ1422Cを経てfor all current placesステ
ップ1422Aに移行し、for all current placesステ
ップ1422A及び次のステップ1422Cによって規
定されたループの別の反復が開始されるようにする。ま
たは、処理は、以下に説明する終了ステップに移行す
る。
【0597】その反対にサブジェクトプレイスによって
オペレーション”entering”が成功の内に遂行され、サ
ブジェクトプレイスへのイングレスをエージェント15
0A(図34)に対して許容した場合、処理は例外テス
トステップ1422E(図49)からステップ1422
Fに移行する。エージェント150A(図15)は、ス
テップ1422Fにおいて、サブジェクトプレイスの占
有者にされる。さらに、エージェント150Aがサブジ
ェクトプレイスの占有者であることを示すために、エー
ジェント150Aのある制御がセットされる。
【0598】処理は、ステップ1422Fから1422
Gに移行し、このステップ1422Gにおいてエージェ
ント150Aによって遂行されるオペレーション”go”
が成功する。エージェント150Aは、前述したよう
に、図34、図41、図50、図51、図53の例で
は、エンジン132Aのプレイスには配送されない。従
って、エージェント150Aのためのオペレーション”
go”は、以下に説明するようにエンジン132B(図5
0)のプレイス220Bにエージェント150A(図3
4)が配送されるまでは成功しない。処理は、ステップ
1422G(図49)から終了ステップ1422Hに移
行し、この終了ステップにおいて、フローチャート14
22に従って、エージェント配送ステップ1422(図
40)に従った処理が成功の内に終了する。
【0599】for all current places ステップ142
2A(図49)及び次のステップ1422Cによって規
定されるループに従って、エンジン132A(図15)
中に存在するすべてのプレイスが処理され、終了ステッ
プ1422Hには到達していない場合、すなわちエンジ
ン132A(図34)中に存在する如何なるプレイスも
チケット1306を満足させず、またオペレーション”
entering”の成功した遂行を介してエージェント150
Aの占有を許容しない場合、処理は、for allcurrent p
lacesステップ1422A(図49)から終了ステップ
1422Iに移行する。終了ステップ1422Iにおい
ては、クラス”目的点使用不可能”の例外が投出され、
フローチャート1422、従ってエージェント配送ステ
ップ1422(図40)は終了する。このように、エー
ジェント配送ステップ1422は、トリップの目的点と
してチケット1306(図35)によって特定されたプ
レイスにエージェント150A(図34)がエージェン
ト配送ステップ1422によって配送されるかまたはク
ラス”目的点使用不可能”の例外が投出される。
【0600】前述したように、図34、図41、図5
0、図51、図53の実施例においては、エンジン13
2Zは、トランスファ目的点である。従って、エージェ
ント150Aは、ステップ1432(図40)において
符号化されたエージェント150A−2(図41)を形
成するように符号化される。符号化されたエージェント
は、トランスファアウトステップ1434(図40)に
おいて、エンジン132Z(図51)に移送される。
【0601】中間エンジンの視点から見たオペレーショ
ン”go” 前述したように”通信下部構造132A−CIから通信
リンク102AZを経て通信下部構造132Z−CI
(図51)に至る符号化エージェント150A−2(図
41)のトランスファは、トランスファアウトステップ
1434(図40)において開始される。それぞれテレ
ネーム2102、テレアドレス2104及びオクテット
ストリング2106であるプロパティ”name”、”addr
ess”、及び”data”を含む目的点150A−E−D
は、符号化されたエージェント150A−E(図42)
に付加されている。テレネーム2102及びテレアドレ
ス2104は、符号化エージェント150A−Eのトラ
ンスファ目的点を規定する。目的点150A−E−D
(図42)によって規定されたトランスファ目的点は、
132Z(図41)でもエンジン132Bでもよい。
【0602】本発明の一実施例によれば、目的点形成ス
テップ1430(図40)において形成された目的点1
50A−E−D(図42)は、符号化エージェント15
0A−Eのトランスファ目的点として、エンジン132
Z(図41)を規定する。この場合において、通信下部
構造132A−CIは、符号化エージェント150A−
Eを132Zの通信下部構造132Z−CIに直接転送
する。本発明の他の実施例によれば、目的点150A−
E−D(図42)は、符号化エージェント150A−E
のトランスファ目的点としてエンジン132B(図4
1)を規定する。後者の場合に、通信下部構造132A
−CIは、目的点150A−E−D(図42)に従っ
て、エンジン132Bに対して設定された符号化エージ
ェント150A−Eを通信下部構造132Z−CI(図
41)又は132Z−CIを介してトランスファさせる
ための情報及びロジックを収納している。
【0603】前述したどちらの実施例においても、エン
ジン132Z(図51)が符号化エージェント150A
−Eを受けると、エンジン132Zは、フローチャート
1400−I(図52)に示されたルートエージェント
ステップ1414”トランスファイン”において定めら
れたシステムオペレーションを遂行する。エンジン13
2Z(図51)は、ステップ1402−I(図52)に
おいて目的点150A−E−D(図42)へのトランス
ファを規定するウェイオブジェクトを発生させることに
よって、システムオペレーション”transferIn”の遂行
を開始する。エンジン132Zは、ファインダ2050
(図48)について前述したように、エンジン132Z
(図51)内のファインダと相談することによって、ス
テップ1402−I(図52)においてウェイオブジェ
クトを発生させる。
【0604】処理はステップ1402−I(図52)か
ら第4の ”way out is here”テストステップ1404
−Iに移行し、ここでエンジン132Z(図51)は、
ステップ1402−I(図52)において発生させたウ
ェイオブジェクトがエンジン132Z(図51)へのト
ランスファーを規定しているか否かを定める。発生させ
たウェイオブジェクトがエンジン132Z(図51)を
トランスファー目的点として特定していない場合、すな
わち目的点150A−E−D(図42)がエンジン13
2B(図41)をトランスファー目的点として規定して
いる場合、処理は第4の ”way out is here”テストス
テップ1404−I(図52)から第2のトランスファ
ーアウトステップ1406−Iに移行する。第2のトラ
ンスファーアウトステップ1406−Iにおいてエンジ
ン132Z(図51)は、トランスファーアウトステッ
プ1434(図40)について以上に説明した仕方と直
接類似した仕方で、目的点150A−E−D(図42)
に従って符号化エージェント150A−Eの転送を開始
する。
【0605】処理は第2のトランスファーアウトステッ
プ1406−Iからステップ1408−Iに移行する。
ステップ1408−Iにおいて、エンジン132Z(図
51)は、ステップ1438(図40)について前述し
たように継続中のトランスファーのリストに符号化エー
ジェント150A‐Eを付加する。処理はステップ14
08−I(図52)から終了ステップ1410−Iに移
行し、ここでシステムオペレーション”transferIn”は
成功のうちに終了する。
【0606】ステップ1402−Iにおいて生成したウ
ェイオブジェクトが、エンジン132B(図51)への
トランスファーを規定している場合、符号化データ15
0A−Eは、生成されたウェイオブジェクトに従って転
送される。生成されたウェイオブジェクトがエンジン1
32Zへの転送を規定している場合、処理は第4の”wa
y out is here” テストステップ1404−I(図5
2)からステップ1412−Iに移行する。ステップ1
412−Iにおいてエンジン132Z(図51)は、符
号化されたエージェント150A−Eからチケット13
06(図35、図45A)を抽出し、チケット1306
のコピーを形成する。処理はステップ1412−Iから
ステップ1414−Iに移行し、ここでチケットコピー
のプロパティ”way”がクリアーされる(帰零され
る)。処理はステップ1414−Iから第2のルートエ
ージェントステップ1416−Iに移行し、ここでエン
ジン132Zは、符号化エージェント150A−Eのト
ランスファーを規定するウェイオブジェクトを発生させ
る。ステップ1416−Iにおいて遂行されたプロセス
は、フローチャート1414(図43、図44)によっ
て表わされたプロセスと同一である。第2のルートエー
ジェントステップ1416−Iのコンテキストにおい
て、フローチャート1414の上述した説明において使
用されたチケット1306は、ステップ1412−Iに
おいて作成したチケットコピーによって代えられ、フロ
ーチャートは、そのチケットコピーを用いて前述したよ
うに処理される。ステップ1416−Iが終了すると、
処理は第5の”way out is here” テストステップ14
18−Iに移行する。
【0607】第5の ”way out is here”テストステッ
プ1418−Iにおいて、エンジン132Z(図51)
は、ステップ1416−I(図52)において発生させ
たウェイオブジェクトがエンジン132Z(図51)へ
のトランスファーを規定しているか否かを定める。発生
させたウェイオブジェクトが、エンジン132Zへのト
ランスファーを規定している場合、処理は第5の ”way
out is here”テストステップ1418−I(図52)
から、以下に詳細に説明するエージェント解号ステップ
1428−Iに移行する。その反対に、生成させたウェ
イオブジェクトがエンジン132Z(図51)へのトラ
ンスファーを規定していない場合、処理は第5の ”way
out is here”テストステップ1418−I(図52)
から第2の目的点形成ステップ1420−Iに移行す
る。図34、図41、図50、図51、図53の実施例
において、符号化エージェント150A−Eから抽出さ
れコピーされたチケット1306(図35)は、エンジ
ン132Bのプレイス220Bへのトリップを規定する
(図51)。従って処理は第2の目的点形成ステップ1
420−Iに移行する。
【0608】目的点形成ステップ1420−Iにおい
て、エンジン132Z(図51)は、目的点形成ステッ
プ1430(図40)について前述した仕方と直接類似
した仕方で、目的点150A−E−D(図42)を形成
し、すなわち代替する。処理は第2の目的点形成ステッ
プ1420−I(図52)から第3のトランスファーア
ウトステップ1422‐Iに移行する。第3のトランス
ファーアウトステップ1422‐Iにおいて、符号化さ
れたエージェント150A−E(図51)は、第2のト
ランスファーアウトステップ1406−I(図52)に
ついて前述したように、目的点150A−E−D(図4
2)に従って転送される。
【0609】処理は第3のトランスファーアウトステッ
プ1422−Iからステップ1424−Iに移行する。
ステップ1424−Iにおいてエンジン132Z(図5
1)は、ステップ1438(図40)について前述した
ように、継続中のトランスファーのリストに符号化され
たエージェント150A−Eを付加する。処理は142
4−I(図52)から終了ステップ1426−Iに移行
し、ここでシステムオペレーション”transferIn”は成
功のうちに終了する。図34、図41、図50、図5
1、図53の実施例において、符号化エージェント15
0A−Eは、前述したようにエンジン132Aから13
2Zへの符号化エージェント150A−Eのトランスフ
ァーと直接類似した仕方で、エンジン132Zからエン
ジン132B(図53)に移行する。
【0610】目的別エンジンの視野から見たオペレーシ
ョン”go” エンジン132Bが通信下部構造132A−CI(図5
3)中の符号化されたエージェント150A−Eを受け
た時、エンジン132Bは、エンジン132Zについて
前述した仕方と同様の仕方で、システムオペレーショ
ン”transferIn”を遂行する。エンジン132Bは、ス
テップ1402−I(図52)において目的点150A
−E−D(図42)に従ってトランスファーを規定する
ウェイオブジェクトを発生させ、発生させたウェイオブ
ジェクトが、第4の”way out is here ”テストステッ
プ1404−I(図52)中のエンジン132B(図5
3)へのトランスファーを規定しているか否かを定め
る。エンジン132B(図53)は、チケット1306
(図35)によって規定されたトリップの目的点である
プレイス220Bを処理するので、生成されたウェイオ
ブジェクトは、エンジン132B(図53)へのトラン
スファーを規定している。従ってエンジン132Bによ
る処理は、第4の”way out is here”テストステップ
1404−I(図52)からステップ1412−Iに移
行する。
【0611】ステップ1412−I、1414−I及び
1416−Iにおいて、エンジン132Bは、符号化エ
ージェント150A−Eからチケット1306(図3
5)を抽出してコピーし、チケットコピーのプロパテ
ィ”way”をクリアーし、チケットコピーが今や以上の
説明においてチケット1306の代りに使用されている
ことを除いてフローチャート1414(図43、図4
4)に従って符号化エージェント150A−Eを転送
(ルーティング)する。第5の”way out is here”テ
ストステップ1418−I(図52)において、エンジ
ン132B(図53)は、第2のルートエージェントス
テップ1416−I(図52)において生成させたウェ
イオブジェクトがエンジン132B(図53)へのトラ
ンスファーを規定しているか否かを定める。エンジン1
32B(図53)はプレイス220Bを処理するので、
生成されたウェイオブジェクトは、エンジン132B
(図53)へのトランスファーを規定する。従ってエン
ジン132Bによる処理は、第5の”way out is her
e”テストステップ1418−I(図52)からエージ
ェント解号ステップ1428−Iに移行する。
【0612】エージェント解号ステップ1428‐Iに
おいて、エンジン132Bは、アペンディックスBに説
明した符号化規則の逆の適用によって、通信下部構造1
32B−CI中の符号化エージェント150A‐E(図
53)からエージェント150Aを解号し、データ部分
132B‐D(図50)中にエージェント150Aを格
納する。ネットワーク1500は異質でありうるため、
エンジン132A(図34)内のエージェント150A
の形式は、エンジン132B(図50)内のエージェン
ト150Aを表わすには不具合であることがありうる。
エンジン132Aと132Bとの間にエージェント15
0Aを移送させるために標準化形式の符号化エージェン
ト150A−Eを使用している限りにおいて、エンジン
132Bは、エージェント150Aを移送させていない
場合、エンジン132Bにとって最も好都合な任意の形
態においてエージェント150Aを表現することができ
る。
【0613】エンジン132Bによる処理は、エージェ
ント解号ステップ1428−I(図52)からエージェ
ント配送ステップ1430−Iに移行する。エージェン
ト配送ステップ1430−Iにおいて、エージェント1
50Aは、エージェント配送ステップ1422(図4
0)について前述したようにフローチャート1422
(図49)に従って配送される。エージェント配送ステ
ップ1430−Iのコンテキストにおいて、チケット
は、今や実際のチケット1306(図35)であり、仮
定されたチケットではない。エージェント配送ステップ
1430−I(図52)において、エージェント150
A(図50)は、プレイス220Bにおける占有が許容
されており、エージェント150Aによって遂行される
オペレーション”go”は成功のうちに終了する。
【0614】処理はエージェント配送ステップ1430
−I(図52)から終了ステップ1426−Iに移行
し、このステップにおいて、フローチャート1400−
I(図52)に従った処理、すなわちエンジン132B
によるシステムオペレーション”transferIn”の遂行が
成功のうちに終了する。
【0615】フローチャート1400‐I(図52)の
各ステップを遂行する間に投出された例外は、フローチ
ャート1450−I(図54)のステップの遂行を生じ
させる。エージェント150Aは、ステップ1452−
I(図52)において符号化エージェント150A−E
(図53)から解号される。エージェント150Aはエ
ンジン132B(図53)に到着しているので、エージ
ェント150Aは、エンジン132Aによって前述した
ように継続中のトランスファーのリスト中には保持され
ていない。
【0616】従って、エージェント150Aの実行を継
続するためには、エージェント150Aを解号すること
が必要になる。処理はステップ1452−I(図54)
からエージェント配送ステップ1454‐Iに移行し、
このステップにおいてエージェント150Aは、ステッ
プ1426(図40)について前述したように、パーガ
トリーに配送される。処理はエージェント配送ステップ
1454−I(図54)から終了ステップ1456‐I
に移行し、ここでフローチャート1450−Iによる処
理が終了する。エージェント配送ステップ1454−I
の結果としてパーガトリーを占有しているエージェント
150Aは、例外を投出し、それによってフローチャー
ト1450‐Iが遂行されるため、エージェント150
Aによって遂行されたオペレーション”go”は失敗とな
る。
【0617】従ってエージェント150A(図34、図
41、図50、図51、図53)は、オペレーション”
go”を遂行することによって、エージェント150Aと
エージェント150Aによって所有されるオブジェクト
例えばオブジェクト140A、140Bのネットワーク
1500を通る移動すなわち転送を指示する。オペレー
ション”go”の遂行後に、このオペレーション”go”の
直後のエージェント150A内の指令によって150A
の解釈が続けられる。
【0618】図36はエージェント150Aによるオペ
レーション”go”の遂行の直後のエージェント150A
の内部状態の実行状態の一部を示している。オペレーシ
ョン”go”の遂行による結果であるチケットスタブ13
08はスタック1304の上部にある。プレイス220
Bはエージェント150Aが占有するプレイスを特定化
するエージェント150Aのプロパティであり、それに
よってエージェント150Aがプレイス220Bを占有
することを指示する。
【0619】イングレス(Ingre ss)及びエグレス(Egr
ess): オペレーション”entering”及びオペレーシ
ョン”exiting” 前述したようにプレイス220Bは、オペレーション”
entering”の遂行によってエージェント150Aへのイ
ングレスを許容したり拒絶したりする。
【0620】プレイスをプレイス220Bが遂行するこ
とをリクエストする前に、符号化されたエージェント1
50A−E(図34、図41、図50、図51、図5
3)をエンジン132Bに配送する。本発明の別の実施
例によれば、プレイス220Bは、エージェント150
Aが通信リンク102AZを横切って通信下部構造13
2Z−CIを経て、更に通信リンク102ZBを横切っ
てエンジン132Bに転送される前に、オペレーショ
ン”entering”を遂行するように指示される。
【0621】プレイス220Bは、オペレーション”en
tering”を遂行することによって、プレイス220Bを
占有する許可をエージェント150Aに与えたり拒絶し
たりする。しかし、本発明は高度の潜在力とともに、広
い領域のネットワークにおいて使用されるものと想定さ
れている。
【0622】”待ち時間”(latency )という用語は、
この明細書では、この技術で通常使用されているよう
に、情報の送出者によって情報が最初に送出された時点
と情報の受領者によって情報が最初に受領された時点と
の間の時間量を表すように用いられている。高度の待ち
時間を持ったネットワークの場合、短いメッセージで
も、目的点に到達するまでに実質的な量の時間を必要と
することがある。この場合プレイス220B(図34)
がオペレーション”entering”を遂行することをリクエ
ストして結果を待つことは、オペレーション”enterin
g”を遂行することのリクエストを通信リンク102A
Zを横切って、通信下部構造132Z−CIを通り、通
信リンク102ZBを横切り、さらにエンジン132B
を経てプレイス220Bに送出し、逆の経路を経てオペ
レーション”entering”によって生じた結果の受領を待
つことを包含する。エンジン132Bにエージェント1
50Aを転送する前にこの動作を行うと、エンジン13
2A、132Bの間の待ち時間の2倍にほぼ等しい時間
量だけエージェント150Aをエンジン132Bに転送
する時間が遅延される。従って本発明の性能を実質的に
向上させるためには、エージェント150Aをエンジン
132Bに転送するまでプレイス220Bによるオペレ
ーション”entering”の遂行を遅延させる。
【0623】エージェント150A(図50)がオペレ
ーション”go”の結果として、プレイス220Bにエン
タリングするコンテキストにおいて、オペレーション”
entering”を以上に説明したが、オペレーション”ente
ring”は、プレイス220B中においてプロセスが作り
だされることの結果としてプロセス(エージェント又は
プレイス)がプレイス220Bにエンタリングする結果
としても実行される。プロセスの生成についてはアペン
ディクスAに詳細に説明されている。
【0624】図56は、オペレーション”entering”の
遂行の直前のエージェント150Aの実行状態を表して
いる。プロセス例えばエージェント150Aの実行状態
を以下に詳細に説明する。オペレーション”entering”
は、エンジン132Bのリクエストによって遂行され、
オペレーション”entering”の遂行は、エージェント1
50A(図50)の実行状態中に記録される。エージェ
ント150A又はプレイス220B、好ましくはプレイ
ス220Bの許可は、オペレーション”entering”の遂
行によって受け入れられ得る。
【0625】フレーム2200は、エージェント150
Aの実行状態の一部分であり、プレイス220Bによっ
て遂行されるオペレーション”entering”の動的な状態
を記録する。フレーム2200は、現在のスタックであ
るスタック2202を含む。スタック2202は頂部か
ら低部にかけて、接点2208、パーミット2206及
びチケット2204を含む。
【0626】接点2208は、プレイス220Bに入ろ
うとするプロセスとしてエージェント150Aを特定化
する。以下に、及びアペンディクスAに、詳細に説明す
るように、接点は、そのプロパティの中に、プロパテ
ィ”subjectName”及びプロパティ”subject”を有す
る。接点2208(通常はエージェント150Aのリフ
ァレンスである)のプロパティ”subject”は、オペレ
ーション”entering”においては0であるため、プレイ
ス220Bがエージェント150Aにイングレスを許可
する前は、プレイス220Bにはエージェント150A
の参照(リファレンス)が与えられない。接点2208
のプロパティ”subjectName”は、プレイス220Bへ
のイングレスをリクエストするエージェントとしてエー
ジェント150Aを特定化するテレネームである。
【0627】パーミット2206は、プレイス220B
にエンター、すなわち入ろうとするエージェントの提案
されたローカル許可である。パーミット2206は、”
byProtectedRef”を通過しており、従ってオペレーショ
ン”entering”の遂行によっては変更されない。アーギ
ュメント及び結果の通過、特に保護されたリファレンス
例えば”byProtectedRef”による通過は以下に詳細に説
明されている。エージェントのローカル許可は、与えら
れたプレイスにある間エージェントの能力を規定する。
一例としてエージェント150Aは、能力及びアローワ
ンスのサブセットを規定するパーミット2206をプレ
イス220Bに供給することによって、プレイス220
Bにある間に、そのネイティブパラミット(許可)の能
力及びアローワンスのサブセットにそれ自身を制限す
る。
【0628】チケット2204は、”byProtectedRef”
を通過し、回答するプレイス220Bに移動するために
使用されるチケットと同等であり、エージェント150
Aが別のプレイスからエンタリングしようとしているこ
とを回答するプレイス220Bに通報する。チケット2
204が0である場合、プロセスは、回答するプレイス
220B内においてプロセスが生成されることによって
回答プレイス22000Bにエンタリングするように努
める。
【0629】あるプレイスを容認するか否かを定める方
法、すなわちクラス”Place”によって規定されたオペ
レーション”entering”をインプリメントする方法は、
クラス”占有拒絶”のメンバである例外を常に導出する
ことによって、回答プレイスへのプロセスのイングレス
を拒絶する。しかし、本発明のユーザーは、特定の条件
のもとにプロセスへのエンタリングを許可するクラス”
Place”のサブクラスを規定する。エージェントが1の
プレイスから別のプレイスへ移動するためにはこれは実
際上必要なことである。
【0630】オペレーション”entering”(1つのプレ
イスによって実行される)のインプリメンテイション
は、そのプレイスが1つのインスタンス(例)であるク
ラスによって供給されるか、又は受け継がれる特別な方
法によって規定されているので、各々のプレイスは、ネ
ットワーク中の他のプレイスと異なった仕方で、オペレ
ーション”entering”をインプリメントすることができ
る。論理フローダイヤグラム2260(図55)は、オ
ペレーション”entering”のインプリメンテイションの
一例として、従って、ステップ1448(図40)に入
る際のオペレーション”entering”の遂行においてプレ
イス220Bによって取られる各ステップのインプリメ
ンテイションの一例として役立つ。
【0631】接点2208、パーミット2206及びチ
ケット2204は、それぞれステップ2262、226
4及び2266において、スタッグ2202から復元
(ポップ)される(図55)。処理は次にチケットテス
トステップ2272に移行し、ここでチケット2204
が0と比較される。チケット2204が0であると、エ
ージェント150Aは局地的に作りだされ、処理は終了
ステップ2274に移行し、ここでオペレーション”en
tering”は成功のうち終了する。しかし、ある状態のも
とにオペレーション”entering”が失敗し、プレイス内
のプロセスの生成が阻止されるように、プレイスを規定
することができることは、以上の説明の視点及び以下の
説明から明らかである。
【0632】チケット2204が0でない場合、処理は
チケットテストステップ2272からアローワンステス
トステップ2276に移行する。アローワンステストス
テップ2276においては、パーミット2206のプロ
パティ”charge”が、パーミット2206のアトリビュ
ート”charge”を質疑することによって生成され、パー
ミット2206のプロパティ”charge”は1000と比
較される。パーミット2206のプロパティ”charge”
が1000より多い場合、序理はアロウアエンステスト
ステップ2276から終了ステップ2278に移行し、
そこでクラス”占有拒絶”の例外が投出され、回答プレ
イスへのエージェントのイングレスが拒絶される。パー
ミット2206のプロパティ”charge”が1000に等
しいかそれよりも小さい場合、処理はアロウアエンステ
ストステップ2276から終了ステップ2270に移行
し、そこでオペレーション”entering”は成功のうちに
終了し、エージェントは回答プレイスにイングレスする
ことが許可される。図55の実施例において最大の許可
可能なチャージアロウアエンスとしての正確な数値10
00は、説明の目的のために任意に選ばれたものにすぎ
ない。
【0633】論理フローダイヤグラム2260の方法
は、リソースが限定されているパーソナルコンピュータ
システム内おいて動作するエンジンによって処理される
プレイスのためのオペレーション”entering”の適切な
インプリメンテイションの例示を示している。以下に、
またアペンディクスAに説明するように、許可のプロパ
ティ”charge”は、処理の許可である。従ってその提案
されたローカルパーミットにおいて大きなチャージアロ
ワンスによって大量の計算及びそのリソースの必要を指
示するエージェントは、論理フローダイヤグラム226
0によってイングレスが拒絶される。従って小型のパー
ソナルコンピュータシステムのオーナーは、ローカルに
作りだされたプロセス及び他の場所で作りだされたエー
ジェントによる比較的廉価な訪問に対してそのパーソナ
ルコンピュータシステムを制限することができる。
【0634】プレイス220B(図57)によるオペレ
ーション”entering”の遂行直後には、オペレーショ
ン”entering”がいかなる結果も生じなかったので、ス
タック2200にはエンプティ(空)である。
【0635】前述したように、あるプレイスは、離去を
ノートする。すなわちオペレーション”exiting”の実
行によるプロセスの占有の終了をノートする。論理フロ
ーダイヤグラム1400(図37、図40)のコンテキ
ストにおいて、プレイス220Aは、エージェントすな
わちエージェント150Aがオペレーション”exitin
g”の結果としてプレイス220Aを離去することの結
果として、オペレーション”go”を実行している。オペ
レーション”exiting”は、あるプロセス(エージェン
ト又はエージェント)がプロセスの破壊の結果としても
はやプレイス220Aを占有していない場合にも、プロ
セス220Aによって遂行される。プロセスの破壊はア
ペンディクスAにより詳細に説明されている。クラス”
Place”によって規定されたオペレーション”exiting”
のインタフェイスは、図58及び図59に示されてい
る。
【0636】オペレーション”exiting”は、エンジン
132A(図34)のリクエストによって遂行されるの
で、オペレーション”exiting”の動的状態を記録して
いるフレーム2300(図58)は、プレイス220A
(図34)の実行状態の一部でもなければ、エージェン
ト150Aの実行状態の一部でもない。実際にプレイス
220Aがオペレーション”exiting”を遂行している
時点においては、エージェント150Aはもはやプレイ
ス220Aを占有しない。エンジン132Aは、”エン
ジンプロセス”の一部として新しい実行状態を作りだ
す。エンジンプロセスは、オペレーション”exiting”
又はオペレーション”parting”の遂行の目的のために
エンジンによって作りだされたプロセスである。オペレ
ーション”parting”は、以下及びアペンディクスAに
詳細に説明されている。
【0637】図58は、オペレーション”exiting”の
遂行の直前のフレーム2300を示している。フレーム
2300は現在のスタックである、スタック2302を
含む。スタック2302は、上部から下部にかけて、オ
ペレーション”exiting”のアーギュメントとして、接
点2308、パーミット1306及びチケット2304
を備えている。
【0638】接点2308は、プレイス220Aをエク
シトするプロセスとして、エージェント150A(図3
4)を特定する。以下にまたアペンディクスに詳細に説
明するように、コンタクトは、そのプロパティの中に、
プロパティ”subjectName”及びプロパティ”subject”
を有している。接点2308(図58)のプロパティ”
subjectName”は、エージェント150A(図34)、
接点2308(図58)のプロパティ”subjectName”
は、エージェント150A(図34)を特定化する。通
常エージェント150A(図34)への参照であるコン
タクト230(図58)のプロパティ”subject”は、
オペレーション”exiting”においてボイドされるの
で、プレイス220Aはエクシトするエージェント15
0Aへの参照とともに残されない。
【0639】パーミット2306(図58)は回答プレ
イス220A(図34)すなわちエージェント150A
をエクシトする現在のローカルパーミットである。プロ
セスのローカルパーミットは、ある与えられたプレイス
を占有している間のプロセスの能力を限定する。ローカ
ルパーミットはアペンディクスAに詳細に説明されてい
る。パーミット2306(図58)は、”バイプロテク
ディットレフ”を通過しているので、オペレーション”
exiting”を遂行する際に、プレイス220A(図3
4)によって変更されることはできない。
【0640】エクシットするプロセスのローカルパーミ
ットすなわちパーミット2306(図58)は、プレイ
ス220Aの占有の間エクシットプロセスによって使用
されていたリソースの形式及び量を定めるために、回答
プレイス220A(図34)の解釈をするエンジンによ
って使用される。そのため、エクシットするプロセスの
オーソリティーは、それに含まれるリソース及びプレイ
ス220Aについて使用するためにビル(BILL)するこ
とができる。使用されるリソースの形式及び量は、パー
ミット2306(図58)とエクシットするプロセスへ
のイングレスを許可する際に、オペレーション”enteri
ng”においてアーギュメントとして使用された許可との
比較によって定められる。オペレーション”entering”
は、以上にまたアペンディクスAに詳細に説明されてい
る。
【0641】一例としてプレイス220A(図34)
は、オペレーション”entering”を遂行する際に、オペ
レーション”exiting”の遂行において消費されたパー
ミット2306(図58)と後に比較するために、提案
されたローカル許可、例えばパーミット2206(図5
6)を格納しておくことができる。以下にまたアペンデ
ィクスAに詳細に説明されるように、接点例えば接点2
308は、プロパティ”subjectノーツ”を有する。一
実施例によれば、プレイス220Aは、コンタクト22
08(図56)のプロパティ”サブジェクトノーツ”内
に、オペレーション”entering”を遂行する際のパーミ
ット2206を格納している。オペレーション”exitin
g”を遂行する際に、プレイス220A(図34)は、
接点258のプロパティ”サブジェクトノーツ”中に格
納された比較2206(図56)をオペレーション”ex
iting”の遂行において消費されたパーミット2308
(図58)比較することによって、プレイス220Aを
占有している間にエージェント150Aが消費するリソ
ースの量を定める。
【0642】チケット2304(図58)は、通過し
た”byProtectedRef”であり、チケット1306(図3
5)に等しい。このチケットは、オペレーション”go”
を遂行する結果としてエージェント150Aが回答プレ
イス(リスポンディングプレイス)220Aを離去して
いることを回答プレイス220Aに通知する。チケット
2304(図58)が0である場合、エージェント15
0A(図34)は、エージェント150Aの破壊の結果
として回答プレイス220Aをエクシットする。
【0643】フレーム2300(図59)は、プレイス
220A(図34)によるオペレーション”exiting”
の遂行の直後に示される。スタッグ2302(図58)
は、オペレーション”exiting”がいかなる結果も生じ
なかったので、エンプティである。フレーム2300
(図59)は、プレイス220A(図34)又はエージ
ェント150Aの実行状態の一部分ではなくその代わり
にエンジンプロセスの実行状態の一部であるので、オペ
レーション”exiting”の遂行によって投出されたいか
なる例外も、プレイス220A又はエージェント150
Aによって経験されず、従ってプレイス220A又はエ
ージェント150Aにいかなる影響も持たない。プレイ
ス220Aは、オペレーション”exiting”を遂行する
際に、エージェント150A及び、エージェント150
Aによって所有されるオブジェクト140A、140B
の離去をノート(検知)する。
【0644】オブジェクトインタジェンジ1つのプレイ
スから別のプレイスへエージェントを転送するために必
要とされる時間は、エージェントに含まれるオブジェク
トの転送を目的プレイスに同等のオブジェクトと思われ
るオブジェクトのみに制限することによって、実質的に
減少する。エンジン132Aから132Zに移動するエ
ージェント150Aが、エージェント150A及びエー
ジェント150Aの所有するオブジェクトがメンバとな
っているクラスを表すクラスオブジェクトを含むため、
これらのオブジェクトの転送の制限は特に重要である。
クラスオブジェクトは通常は非常に大きく、そして1つ
のエージェント及びそのエージェントが所有するオブジ
ェクトがメンバとなってクラスは典型的には非常に多数
あるので、これらの全てのクラスオブジェクトを転送す
ることは実用的でない。従って、エンジン132Aから
132B(図34)にエージェント150Aを転送する
際に、エンジン132B中のクラスオブジェクトによっ
て表されないクラスを表すクラスオブジェクトのみをエ
ージェント150Aと共にエンジン132Bに転送する
ことが望ましい。
【0645】ネットワーク1500(図34、図41、
図50、図51、図53)中の多くのプレイスにおいて
同等のオブジェクトを持つと思われるオブジェクトは、
ニックスインクラウス”インタチェンジド”のメンバで
あり、従って、プロパティ”ダイジェスト”を有する。
ミックス−インクラス”インタチェンジド”のメンバ
は、”インタチェンジドオブジェクト”と呼ばれる。イ
ンタチェンジされたオブジェクトのプロパティ”ダイジ
ェスト”であるオブジェクトは、インタチェンジされた
オブジェクトの”ダイジェスト”とも呼ばれる。
【0646】インタチェンジされたオブジェクトは、エ
ンジン例えばエンジン132A又は132B(図34)
が、インタチェンジされたオブジェクトのダイジェスト
に等しいダイジェストを持つインタチェンジされたオブ
ジェクトのクラスの他の任意のインスタンスと同等であ
るとみなしたオブジェクトである。ダイジェストは、全
ての他のものから第1のインタチェンジドオブジェクト
を区別する目的に適したオブジェクトである。一例とし
て、インタチェンジされたオブジェクトの標準的な2進
表示の数学的ハッシュは、インタチェンジドされたオブ
ジェクトの多くのクラスに適している。クラスオブジェ
クトすなわちクラス”class”のオブジェクトは、以下
に、及びアペンディクスAに、詳細に説明するように、
作り付けられたクラス、及びユーザーによって規定され
たクラスを規定し、コンピュータネットワーク1500
内のエンジン132A間において変動しない。そのため
クラスオブジェトクトは、インタチェンジされたオブジ
ェクトである。
【0647】移送されるデータの量、従ってエージェン
トの転送に要する時間、及び1つのプレイスから次のプ
レイスにそのエージェントによって所有されるオブジェ
クトを転送するための時間を減少させるダイジェストを
使用することは、論理フローダイヤグラム2400及び
2450(図60及び図61)に示されている。
【0648】論理フローダイヤグラム2400(図6
0)は、インタチェンジ(相互変換)されたオブジェク
トを検討する場合に、エージェント150A(図34)
及びエージェント150Aが所有するオブジェクトをソ
ースエンジン132Aから目的エンジン132Bに転送
するプロセスを表している。あるエージェントは、その
エージェントによって所有される全てのオブジェクト、
そのエージェントがメンバとなっている各々のクラス、
及びそのエージェントが所有するオブジェクトがメンバ
となっている各々のクラスを”包含”する。前述したよ
うに、エージェント150A及びエージェント150A
によって包含される全てのオブジェクトは、シッピング
ボックスにパッケージされ、符号化され、エンジン13
2Bに転送される。エージェント150A及びそれに包
含されるオブジェクトをパッケージにする場合、そのエ
ンジン132Aは、ステップ2402(図60)におい
てエージェント150Aが包含する全てのオブジェクト
を収納している。処理はステップ242からwherein ea
ch objectステップ2404に移行する。このステップ
2404は、次のステップ1412とともに、ステップ
2402において収納された各々のオブジェクトが検討
される1つのループを規定する。処理はfor each objec
tステップ2404からダイジェストテストステップ2
406に移行し、そのステップ2406において、エー
ジェント150Aが包含する各々のオブジェクトのクラ
スのメンバ構成がチェックされ、それによって各々のオ
ブジェクトがダイジェストを持つか否かが定められる。
【0649】前述したようにまたアペンディクスA及び
Eに一層詳細に示すように、ミックス−インクラス”イ
ンタチェンジド”のメンバは、ダイジェストを含むこと
ができる。従って、オブジェクトがダイジェストを有す
る場合、そのオブジェクトはインタチェンジされたオブ
ジェクトである。インタチェンジされたオブジェクトが
ダイジェストを持たない場合すなわちインタチェンジさ
れたオブジェクトのアトリビュート”ダイジェスト”が
0である場合、そのインタチェンジされたオブジェクト
は、インタチェンジされているのではなくて、その代わ
りに、インタチェンジされていないオブジェクトとして
取り扱われる。
【0650】オブジェクトがダイジェストを持たない場
合には、そのオブジェクトがインタチェンジされたオブ
ジェクトであっても、処理はダイジェストテストステッ
プ2406からステップ2410に移行し、このステッ
プ2410において、オブジェクトが、アペンディクス
Bの符号化規則にしたがって符号化され、シッピングボ
ックスに収納される。さもなければ、そのオブジェクト
がダイジェストを有する場合、処理はダイジェスト24
06からステップ2408に移行し、このステップ24
08において、そのオブジェクトのダイジェストとその
オブジェクトが1つのインスタンスであるそのクラスの
サイテイションとが、アペンディクスBの符号化規則に
よって符号化され、部品ボックスに収納され、その部品
ボックスがシッピングボックスに収納される。
【0651】処理はステップ2408又は2410か
ら、次のステップ2412に移行し、次のステップ24
12において、for each object ステップ2404に移
行する。エンジン132Aは、for each object ステッ
プ2404と次のステップ2412とに規定されるルー
プにおいて、エージェント150Aに包含される各々の
オブジェクトについて、ステップ2406、2408、
2410のプロセスを反復する。ステップ2402にお
いて収納された全てのオブジェクトが、for eachobject
ステップ2404及び次のオブジェクトステップ24
12のループにしたがって処理されたならば、処理はfo
r each objectステップ2404からtransfer out enco
ded agent ステップ2414に移行する。
【0652】transfer out encoded agent ステップ2
414において、シッピングボックスは符号化され、ソ
ースエンジン132Aによって目的エンジン132B
に、前述したように転送される。従って、目的エンジン
に転送される符号化されたエージェントは、ダイジェス
トを持たないエージェントによって包含される全てのオ
ブジェクト、及びエージェントによって包含される相互
変換可能でダイジェストを有する全てのオブジェクトの
ダイジェストを包含している。transfer out encoded a
gent ステップ2414は、ネットワークを横断するエ
ンジン間の相互作用を示すために、二重ボックスによっ
て表されている。エンジン間のエンジンデータのこのよ
うな交換は、以上の説明した通りであり、またアペンデ
ィクスC及びFに記載されている。
【0653】論理フローダイヤグラム2450(図6
1)は、目的エンジン132Bのパースペクティブから
の符号化されたエージェント150Aのトランスファを
示している。目的エンジン132Bは、transfer out e
ncoded agent ステップ2452において、ソースエン
ジン132Aから2進データとして符号化エージェント
を受ける。図34、図41、図50、図51、図53の
コンテキストにおいて前述したように、符号化されたエ
ージェントは、エンジン132Aからエンジン132B
に至る途中の、1以上の中間のエンジン例えばエンジン
132Bを通過することができる。
【0654】処理はトランスファーアウトエンコーディ
ッドエージェントステップ2452からステップ245
4に移行し、このステップ2454において、符号化エ
ージェントは復号され、それにより、そのエージェント
によって包含されるエージェントオブジェクトを内容物
とするシッピングボックスが再構成される。ダイジェス
トを持たず、エージェントによって包含される各々のオ
ブジェクトと、ダイジェストを有するエージェントによ
って包含されるインタチェンジされたオブジェクトのダ
イジェストとは、for each object ステップ2456及
び次のステップ2462によって形成されるループにし
たがって、目的エンジン132Bによって消費される。
このループの各々の反復は、ステップ2454において
改号されたオブジェクトの一つを処理する。
【0655】処理はfor each object ステップ2454
からダイジェストテストステップ2464に移行する。
ダイジェストテストステップ2464において目的エン
ジン132Bは、あるオブジェクトがダイジェストであ
るか否かを定める。そのオブジェクトがダイジェストで
ない場合、処理はダイジェストテストステップ2464
から直接に、次のオブジェクトステップ2462に移行
する。逆にそのオブジェクトがダイジェストであれば、
処理はダイジェストテストステップ2464からテスト
ステップ2466に移行し、そのオブジェクトは、”サ
ブジェクトダイジェスト”と呼ばれる。テストステップ
2466において、目的エンジン132Bは、サブジェ
クトダイジェストがエンジン132Bに存在するインタ
チェンジされたオブジェクトと同等であるか否かを定め
る。このような決定がなされる方法については、以下に
詳細に説明する。
【0656】同等のダイジェストを有するインタチェン
ジされたオブジェクトがステップ2466において見出
されると、処理は、テストステップ2466から代替ス
テップ2468に移行する。代替ステップ2468にお
いて、インタチェンジされたオブジェクトは、見出され
たインタチェンジされたオブジェクトに関してサブジェ
クトダイジェストによって表されるインタチェンジされ
たオブジェクトに、ステップ2454において復号され
るオブジェクト内の全てのリファレンス(参照)を代替
することによって、サブジェクトダイジェストに代替さ
れる。処理は代替ステップ2468から次のオブジェク
トステップ2462に移行する。
【0657】同等のダイジェストを有するインタチェン
ジされたオブジェクトがテストステップ2466におい
て見出されなかった場合、処理はテストステップ246
6からステップ2470に移行する。ステップ2470
では、サブジェクトダイジェストがダイジェストのリス
トに付加される。新しいリストが存在しない場合には新
しいリストが作りだされる。処理はステップ2470か
ら次のステップ2462に移行する。
【0658】処理は、次のステップ2462からfor ea
ch object ステップ2456に移行する。ステップ24
54において復号された全てのオブジェクトがfor each
object ステップ2456と次のステップ2462との
ループにしたがって処理された場合には、処理は for e
ach objectステップ2456から、以下に説明するリス
トテストステップ2476に移行する。
【0659】エンジンはステップ2466において次の
ようにして相互変換可能な(インタチェンジ可能な)オ
ブジェクトをサーチする。これらのエンジンは、同等の
インタチェンジ可能なオブジェクトを交換することので
きる1以上のプレイスを備えている。各々のこのような
プレイスは、そのプレイス内に存在するインタチェンジ
可能なオブジェクトの”デポジトリ”を備えている。デ
ィクショナリ2490(図62)はプレイス220B
(図53)のデポジトリである。ディクショナリ249
0(図62)のキーは、クラス、すなわちクラス240
0K1、2400K2、2400K3及び2490K4
である。各々のクラスにはディクショナリが組み合わさ
れている。例えばクラス2490K1−2490K4に
は、ディクショナリ2490A、2490B、2490
C及び2490Dがそれぞれ組み合わされている。
【0660】各々のディクショナリ2490A−249
0Dは、同一の一般的な組織を有している。ディクショ
ナリ2490Aは例示的である。ディクショナリ249
0Aのキーはダイジェスト、すなわちダイジェスト24
90AK1、2490AK2及び2490AK3であ
る。各々のダイジェストには、ダイジェストが組み合わ
されたダイジェストであるインタチェンジされたオブジ
ェクトが組み合わされている。一例として、ダイジェス
ト2490AK1−2490AK3には、インタチェン
ジされたオブジェクト2490AV1、2490AV2
及び2490AV3がそれぞれ組み合わされている。
【0661】インタチェンジされたオブジェクトは、2
ステップによってディクショナリ2490から検索され
る。前述したようにダイジェストとあるプラスのサイテ
イションとは、インタチェンジされたオブジェクトを表
すために、部品ボックスによって使用される。第1のス
テップにおいて、サイテイションを使用して、そのサイ
テイションによって参照されたクラスに組み合わされた
ディクショナリ2490A−2490Dの内の1つのデ
ィクショナリを検索する。一例として、サイテイション
がクラス2490K1を参照した場合、ディクショナリ
2490は検索される。
【0662】第2のステップでは、部品ボックスに含ま
れるダイジェストと同等のダイジェストとインタチェン
ジされたオブジェクトとの間の関連について、検索され
たディクショナリがサーチされる。その関連が乱された
ら、インタチェンジされたオブジェクトは検索される。
関連が乱されなかった場合、そのプレイスは、部品ボッ
クス中のダイジェスト及びサイテイションによって表さ
れたインタチェンジされたオブジェクトと同等のインタ
チェンジされたオブジェクトを備えていない。従って、
ディクショナリ2490(図62)のようなデポジトリ
は、同等の相互変換(インタチェンジされたオブジェク
ト)をあるプレイスが含むか否かを定め、そのようなオ
ブジェクトを検索するたに用いられる。
【0663】前述したように、処理はfor each object
ステップ2456からリストテストステップ2476に
移行する。リストテストステップ2476においては、
目的エンジン例えばエンジン132Bは、ダイジェスト
のリストがステップ2470において作り出されたか否
かを定め、作り出された場合には、リストがエンプティ
であるかどうかを定める。ダイジェストのリストが存在
しないかまたはエンプティである場合、処理はリストテ
ストステップ2476から、activatetrav
eling agentステップ2478に移行し、こ
のステップ2478においては、エンジン132Bに
は、エージェント150Aを実行についてスケジューリ
ングすることによって、移動中のエージェント150A
を活性化する。処理は、activate trave
ling agentステップ2478から、終了ステ
ップ2479に移行し、この終了ステップにおいて、エ
ンジン132Bによってなされたエージェント150A
のトランスファーが成功のうちに終了する。
【0664】もし、ステップ2470においてリストが
作り出され、そのリストが少なくとも1つのダイジェス
トを含んでいた場合、目的エンジン132Bには、少な
くとも1つのインターチェンジ(相互変換)されたオブ
ジェクトのための同等のオブジェクトが見い出されず、
処理は、リストテストステップ2476から、hold
traveling agentステップ2471に
移行する。holdtraveling agentス
テップ2471において、移動中のエージェント150
Aは、中断された状態において、エンジン132B内の
保持列中に保持される。処理は、hold trave
ling agentステップ2471からステップ2
472に移行する。
【0665】ステップ2472において、目的エンジン
例えばエンジン132Bは、オブジェクト開始エージェ
ントすなわち”ORA”を作り出す。ORAは、ソース
エンジン例えばエンジン132Aから、フローチャート
2480(図63)に従って、インターチェンジされた
オブジェクトを検索する。処理はステップ2472から
ステップ2474に移行し、そこでORAは、オペレー
ション”live”を遂行するように指示され、それにより
ORAの解釈が開始される。以下に詳細に説明するよう
に、ORAの中心活動性は、フローチャート2480
(図63)によって示される。処理はステップ2474
から終了ステップ2479に移行し、ここでエージェン
ト150Aのトランスファー(エンジン132Bによっ
て行なわれる)が成功のうちに終了する。尚、移行中の
エージェント150Aは、活性化されず、シッピングボ
ックスの形状にある。エージェント150Aは、シッピ
ングボックスから再構成され、以下に説明するように、
ORAによって再活性化される。
【0666】フローチャート2480(図63)は、O
RAの中心プロシィージャを表している。ステップ24
82において、ORAは、ソースエンジン例えばエンジ
ン132Aに、オペレーション”go”の遂行によって移
動する。処理は、ステップ2482からステップ248
4に移行し、このステップ2484において、ORA
は、エンジン132A中のオブジェクトレポジトリ例え
ばディレクショナリ2490(図62)から、ダイジェ
ストのリストに含まれるダイジェストと同等のダイジェ
ストを有する各々のオブジェクトのコピーを収集する。
処理はステップ2484からステップ2485に移行す
る。
【0667】ステップ2485において、ORAは、目
的エンジン例えばエンジン132Bに、オペレーショ
ン”go”の遂行によって移動する。ORAは、ダイジェ
ストのリストにそのダイジェストが含まれないオブジェ
クトのコピー、すなわち、目的エンジン中に同等のオブ
ジェクトが存在しないオブジェクトのコピーを、目的エ
ンジンに持参する。処理はステップ2485からステッ
プ2486に移行する。ステップ2486において、O
RAは、収集されたオブジェクトを、以下に説明するよ
うに、エージェント150A内のダイジェストと代替す
る。処理はステップ2486からactivate t
raveling agentステップ2487に移行
し、このステップ2487においてエージェント150
Aは、シッピングボックスから再構成され、前述したよ
うにして活性化される。エージェント及びそのエージェ
ントに包含されるオブジェクトをシッピングボックスか
ら再構成することは、アペンディックスDに詳細に説明
されている。処理はステップ2487から終了ステップ
2488に移行し、この終了ステップにおいてORAの
中心プロシージャが成功のうちに終了する。
【0668】このように、目的エンジン中のインターチ
ェンジされたオブジェクトと同等でないそのインターチ
ェンジされたオブジェクトのみを、ネットワーク通信メ
ディアを横切って転送することによって効率化が達成さ
れる。
【0669】オペレーション”sen d” あるエージェントは、オペレーション”send”を遂行す
ることによって同時にいくつかのプレイスに移行するこ
とができる。図64は、エージェント150Aによるオ
ペレーション”send”の遂行前のネットワーク2500
の状態を示している。図64の例において、エンジン1
32Aのデータ部分132A−D中のエージェント15
0Aは、エンジン132Bのデータ部分132B−D中
のプレイス220にそれ自身のクローンを転送しまたそ
れと同時にエンジン132Cのデータ部分132C−D
中のプレイス220Cにそれ自身のクローンをそれぞれ
転送するように構成されている。換言すれば、エージェ
ント150Aは、エージェント150Aのクローンのた
めの目的プレイスとしてのプレイス220B、220C
を特定化する2つのチケットのリストをオペレーショ
ン”send”へのアーギュメントとして供給して、オペレ
ーション”send”を遂行する。エージェント150Aの
クローンは、エージェント150Aのコピーであり、こ
のコピーは、エージェント150Aの実行状態を含めて
エージェント150Aを複製してコピーを作成すること
によって形成され、そのコピーに新しい名前と識別子と
を割り当ててエンジンによる実行のためにそのコピーを
スケジューリングすることによって”活性化”されたも
のである。クローンについてはアペンディックスAにお
いて一層詳細に説明する。
【0670】オペレーション”send”のインタフェース
は、図65、図66及び図67に示されている。図65
はフレーム2602を示し、このフレーム2602は、
エージェント150Aによって実行されたオペレーショ
ン”send”の動的状態を記録し、オペレーション”sen
d”の遂行の直前のエージェント150Aの実行状態の
一部分である。エージェントを含めたプロセスの実行状
態は以下にまたアペンディックスA及びBに詳細に説明
されている。
【0671】スタック2604はフレーム2602に含
まれている。スタック2604は、アーギュメントがそ
れから復元(ポップ)され、オペレーション”send”の
遂行の間に結果がプッシュ(保存)されるスタックであ
る。”現在のスタック”は、以下にそしてアペンディッ
クスA、Bに一層詳細に規定され説明される。
【0672】大文字”T”によって示されたスタック2
604の上部には、チケット2608及び2610をア
イテムとするリスト2606がある。リスト2606の
チケット2608及び2610の各々は、エージェント
150Aの対応するクローンが行なうトリップを各々定
義している。オブジェクト2618及び2620は、そ
れぞれチケット2608、2610のプロパティ”tr
avelNote”である。オブジェクト2618、2
620は、オペレーション”send”の遂行によって作り
出されたそれぞれのクローンを識別可能とするためのメ
カニズムを提供する。一例として、チケット2608、
2610を形成する場合に、エージェント150Aは、
それぞれのテキストが”Able”及び”Baker”
であるストリングをオブジェクト2618及び2620
中に格納することができる。このような場合に、チケッ
ト2608に対応するエージェント150Aのクローン
は、チケット2608のプロパティ”travelNo
te”からストリング”Able”を検索する。同様
に、チケット2610に対応するエージェント150A
のクローンは、チケット2610の”travelNo
te”からstring ”Baker”を検索する。
【0673】それぞれのクローンが識別される特別のイ
ンプリメンテーションは、最終的には、本発明のユーザ
ーの責任である。以下は別の例である。オブジェクト2
618中には、その値が1である整数があり、それによ
って、リスト2606中の対応のチケット2608の位
置を表している。同様に、オブジェクト2620中に
は、その値が2である整数が格納されており、それによ
ってリスト260中の対応するチケット2610の位置
を表している。
【0674】パーミット2622、2624は、それぞ
れチケット2608、2610のプロパティ”destinat
ionPermit”である。インテジャー2626、2628
は、それぞれパーミット2622、2624のプロパテ
ィ”charges”である。
【0675】パーミット2612は、エージェント15
0Aのプロパティ”permit”であり、従って、エージェ
ント150Aの内部状態の一部を表している。以上に説
明しまたアペンディックスAに説明するように、パーミ
ット2612は、エージェント150Aの実行を制限す
る。ブーリアン2614はパーミット2612のプロパ
ティ”canSend”である。ブーリアン2614の値が”f
alse”であれば、オペレーション”send”は失敗し、ク
ラス”Permit Violated”の例外を投出する。パーミッ
ト2612のプロパティ”charges”は整数2616で
ある。アペンディックスAに一層詳細に説明するよう
に、整数2616は、エージェント150Aのパーミッ
ト処理のアローワンスを表している。
【0676】図64の例において、その現在のロケーシ
ョンがプレイス220Aであるエージェント150A
は、エージェント150Aのそれぞれのクローンをプレ
イス220B、220Cに転送するように形成されてい
る。エージェント150は、リスト2606(図65)
のチケットによって規定された各々の目的プレイスにそ
れ自身のクローンを送出するので、オペレーション”se
nd”の遂行は、時には、リスト2606中のチケットの
数と同数のエージェント150Aのクローンを作り出
す。図68、図69は、オペレーション”send”の簡単
な実施例を表し、ここにエンジン132A(図68)
は、リスト2606(図65)中のチケットと同数のエ
ージェント150Aのクローンをデータ部分132A−
D中に作り出す。この例では、リスト2606(図6
5)は、2つのチケット、すなわちチケット2608、
2610を備えている。従って、エンジン132Aは、
エージェント150A(図69)の2つのクローンすな
わちエージェント150A−1、エージェント150A
−2を作り出す。応答エージェントのクローニングが延
期されるより効率的な実施例については以下に説明す
る。エージェント150Aのクローンを形成する場合、
パーミット2622、2624は、作り出されたクロー
ンのプロパティ”permit”とされる。換言すれば、パー
ミット2622は、エージェント150A−1のプロパ
ティ”permit”であり、パーミット2624は、エージ
ェント150A−2のプロパティ”permit”である。エ
ージェント150A−1、エージェント150A−2を
作り出す際に、エージェント150Aすなわちクローン
されているエージェントのパーミット2612の対応す
るアローワンスからパーミット2622、2624のア
ローワンスが差し引かれる。換言すれば、エージェント
150A−1、150A−2が作り出された時にエージ
ェント150Aのチャージのアローワンス、すなわちエ
ージェント150Aのパーミットのプロパティ”charge
s”である整数2616から整数2626、2628の
値が引算される。整数2616が整数2626、262
8の合計よりも大きくないか、又はこれに等しい場合に
は、オペレーション”send”は失敗し、クラス”Permit
Violated”の例外が投出される。その理由は、エージ
ェント150Aのチャージアローワンスがエージェント
150Aから作り出されたクローンのチャージアローワ
ンスの合計よりも小さいからである。
【0677】従って、オペレーション”send”のアーギ
ュメントとして供給されたチケットの一部分であるパー
ミットは、オペレーション”send”の遂行によりて作り
出されたクローンのネーティブパーミットを形成する。
チケット2608、2610は、エージェント150A
のそれぞれのクローンが行なうトリップを規定し、パー
ミット2622、2624は、それぞれチケット260
8、2610のプロパティ”permit”であり、従って応
答(レスポンディング)エージェント150Aのそれぞ
れのクローンのローカルパーミットである。
【0678】本発明の第2の実施例によれば、オペレー
ション”send”は、リスト2606に追加されるアーギ
ュメントとして、整数(図示しない)を消費する。応答
エージェント150Aのクローンを作り出す際に、それ
ぞれのネーティブパーミットは、前述したように作り出
されるが、各々のネーティブパーミットのプロパティ”
charges”は最初は、消費される整数に等しい。
【0679】本発明の第3の実施例は、第2の実施例と
同様であるが、例外として、整数のリストが単一の整数
の代わりに消費される。さらに、リスト2606(図6
5)中のチケットのプロパティ”permit”から投出され
た各々のネーティブパーミットのプロパティ”charge
s”は、ネーティブパーミットがそれから導かれたチケ
ットのリスト2606中の位置に等しい消費された整数
リスト中の位置にある整数に最初は等しい。一例とし
て、リスト260中の位置1にあるチケット2608に
対応するクローンのネーティブパーミットのプロパテ
ィ”charges”は、消費された整数リスト(図示しな
い)中の1にある整数に最初は等しい。同様に、リスト
2606中の位置2にあるチケット2610に対応する
クローンのネーティブパーミットのプロパティ”charge
s”は、消費された整数のリスト中の位置2にある整数
に最初は等しい。
【0680】本発明第4の実施例によれば、オペレーシ
ョン”send”は、リスト2606に追加されるアーギュ
メントとして、パーミット(図示しない)を消費する。
応答エージェント150Aのクローンを作り出す際に、
各々のネーティブパーミットは、消費されるパーミット
のコピーである。本発明の第5の実施例は前述した第4
の実施例と同様であるが、パーミットのリストが単一の
パーミットの代わりに消費される点で異なっている。さ
らに、リスト2606(図65)中のチケットに対応す
るそれぞれのクローンの各々のネーティブパーミット
は、クローンが対応するチケットのリスト2606中の
位置に等しいパーミットの消費されたリスト中の位置に
あるパーミットに最初は等しい。一例として、リスト2
60中の1にあるチケット2608に対応するクローン
のネーティブパーミットは、消費されたパーミットのリ
スト(図示しない)中の位置1にあるパーミットに最初
は等しい。同様に、リスト260中の位置2にあるチケ
ット2610に対応するクローンのネーティブパーミッ
トは、消費されたパーミットのリスト中の位置2にある
パーミットに最初は等しい。
【0681】各々の前述した実施例において、応答エー
ジェント150Aのパーミットであるパーミット261
2のプロパティ”charges”はオペレーション”send”
の遂行において作り出されたエージェントのクローンの
ネーティブパーミットのそれぞれのプロパティ”charge
s”の合計分だけ減少する。
【0682】エージェント150Aの各々のクローン
は、目的プレイスとしての対応するチケットによって特
定化されたプレイスに転送される。一例として、チケッ
ト2608は、エージェント150A−1の目的点とし
てプレイス220Bを特定化し、チケット2610は、
エージェント150A−2の目的点としてプレイス22
0Cを特定化する。各々のクローンは対応する目的エン
ジン例えばエンジン132B又はエンジン132Cとの
ソースエンジン132Aの共働によってそれぞれの目的
プレイスに移動する。オペレーション”send”を遂行す
るにあたってエージェントクローン例えばエージェント
150A−1又はエージェント150A−2を1つのプ
レイスから次のプレイスに移送させることは、オペレー
ション”go”について以上に詳細に説明した通りであ
る。
【0683】オペレーション”send”の遂行においてエ
ージェント150Aがエージェント150A−1、15
0A−2を成功のうちに作り出した場合には、エージェ
ントクローンのどれか1つ又は全部の転送が失敗したと
しても、エージェント150Aによるオペレーション”
send”の遂行は成功する。あるエージェントクローンの
トリップが失敗した場合、最初にオペレーション”sen
d”を遂行したエージェントではなく、エージェントク
ローンによって、トリップの例外が投出される。
【0684】エージェント150Aによるオペレーショ
ン”send”の遂行の直後のエージェント150Aの実行
状態の一部は図66に示されている。前述した現在のス
タックであるスタック2604は、ゼロオブジェクト2
630を収容している。ゼロオブジェクトはもとのエー
ジェントについて結果として生じ、それによってオペレ
ーション”send”の遂行において作り出されたエージェ
ントクローンからもとのエージェントを識別する。
【0685】図67は、エージェント150Aによるオ
ペレーション”send”の遂行後のエージェント150A
−1の実行状態の一部を示している。エージェント15
0Aによるオペレーション”send”の遂行後のエージェ
ント150A−2の実行状態は、以下に説明するよう
に、エージェント150A−1の実行状態に直接類似し
ている。
【0686】パーミット2622は、エージェント15
0A−1のプロパティ”permit”である。スタック26
04−1は、エージェント150A−1の生成において
作り出されたスタック2604のコピーである。スタッ
ク2604−1はエージェント150A−1の現在のス
タックである。スタック2604−1の上部にはチケッ
トスタブ2632がある。チケットスタブ2632はオ
ペレーション”send”の遂行によって作り出されたエー
ジェントクローンのオペレーション”send”によって生
じた結果である。チケットスタブ2632はチケット2
608から導かれる。
【0687】チケットスタブ2632はクラス”チケッ
トスタブ”のメンバである。チケットスタブ2632は
他のプロパティの中でも、プロパティ”way ”及び”tr
avelNote”を有する。チケット2608はクラス”チケ
ット”のメンバである。クラス”チケット”はクラス”
チケットスタブ”のサブクラスであるため、チケット2
608は、スーパークラス”チケットスタブ”から定義
が引き継がれたプロパティ”way” 及び”travel
Note”を他のプロパティの中に備えている。チケッ
トスタブ2632はチケット2608から導かれ、チケ
ットスタブ2632のプロパティ”way” 及び”rav
elNote”はそれぞれチケット2608のプロパテ
ィ”way” 及び”travelNote”に等しい。前
述したように、チケット2608(図65)のプロパテ
ィ”travelNote”はエージェント150A−
2からエージェント150A−1を区別するために使用
することができる。同様にエージェント150A−2の
現在のスタック(図示しない)は、そのプロパティ”t
ravelNote”がオブジェクト2620であるチ
ケットスタブ(図示しない)を備えている。
【0688】図70はオペレーション”send”がエージ
ェント150Aによって遂行された後のコンピュータネ
ットワーク2500を示している。エージェント150
Aはコンピュータプロセスエンジン132Aのデータ部
分132−Dに残留している。エージェント150A−
1はエンジン132Bのデータ部分132B−D中のプ
レイス220Bを占めている。同様にエージェント15
0A−2は、エンジン132Cのデータ部分132C−
Dによって実行されるプレイス220Cを占有してい
る。
【0689】オペレーション”send”のアクセスは”プ
ライベート”であり、応答者(レスポンダー)のみがオ
ペレーションを要求することをアローワンスする。以下
に詳細に説明しまたアペンディックスAに説明するよう
に、本発明の各々のフィーチャーは、どんな条件のもと
にフィーチャーのリクエストがなされうるかを特定する
アクセスを備えている。オペレーション”send”のアク
セスはプライベートであるから、エージェント150A
のみがエージェント150Aによるオペレーション”se
nd”の遂行を回避することができる。エンジン132A
でさえも、エージェント150Aによるオペレーショ
ン”send”の遂行を開始することはできない。
【0690】ディファードクローニング オペレーション”send”を遂行するのに必要な時間の量
及びオペレーション”send”の遂行の間に作り出される
エージェントのクローンによって占有されるスペースの
実質的な節減は、”ディファードクローニング”によっ
て実現される。オペレーション”send”の遂行を行なっ
ているエンジンが、同一のエージェントの2以上のクロ
ーンが単一の目的エンジンに移送されるべきことを定め
た場合に、ディファードクローニングが生ずる。このよ
うな場合に単一のクローンが目的エンジンに移送され、
余分のクローンは目的エンジンにおいて単一のクローン
から導かれる。図71、図74、図75、図76、図7
7は例示的である。
【0691】エージェント150A(図71)はエンジ
ン132A中のプレイス220Aを占有している。エン
ジン132Aはコンピュータシステム110A(図示し
ない)内において行なわれるコンピュータプロセスであ
る。エージェント150Aは、オペレーション”send”
を遂行しており、エージェント150Aのクローンのた
めの目的プレイスとしてプレイス220B、220C及
び220Dを特定する3つのチケット(図示しない)の
リストをオペレーションへのアーギュメントとして供給
している。エンジン132Aは通信リンク102AEを
横切ってエンジン132Eと通信する。通信リンク10
2AEはオペレーション”go”に関連して通信リンク1
02AZ(図34)について説明した通りである。エン
ジン132Eはエンジン132Aに加えて、中心リンク
102FBFを横切ってエンジン132B、132Fと
通信している。さらにエンジン132Fは通信リンク1
02FCDを横切ってエンジン132C、132Dと通
信している。プレイス220B、220C及び220D
は、それぞれエンジン132B、132C及び132D
によって解釈されるプロセスである。従ってエージェン
ト150Aのクローンがプレイス220B、220C、
220Dに到達するためには、各々のクローンには最初
にエンジン132Eに移送されねばならない。
【0692】エンジン132A中においては、単一のク
ローンすなわちエージェント150Aのエージェント1
50A−1が作り出される。エージェント150A−1
の実行状態は、エージェント150A−1がオペレーシ
ョン”send”を遂行している時に、センドフレーム29
02を含む。エージェントの実行状態は以下に及びアペ
ンディックスAに詳細に説明されている。センドフレー
ムはアペンディックスBに詳細に説明されている。セン
ドフレーム2902(図72)は、チケット2904の
リストを含み、このリストは、チケット2904B、2
904C及び2904Dを含み、これらのチケットは、
目的プレイスとして、それぞれプレイス220B、22
0C及び220Dを特定する。従ってエージェント15
0Aの単一のクローンであるエージェント150A−1
(図71)はそれぞれプレイス220B、220C、2
20Dに移行するべき別々の3つのエージェントクロー
ンを表している。
【0693】符号化されたエージェント150A−1−
E(図73)はアペンディックスBの符号化規則に従っ
てエージェント150A−1(図71)を符号化した結
果である。符号化エージェント150A−1−E(図7
3)には、目的点、150A−1−E−D1、150A
−1−E−D2及び150A−1−E−D3があり、こ
れらは、エージェント150A(図71)の3つのクロ
ーンのそれぞれのトランスファー目的点を規定する。エ
ージェント150Aの3つの全てのクローンがエンジン
132Eに転送されるので、目的点150A−1−E−
D1、150A−1−E−D2、及び150A−1−E
−D3(図73)は、エージェント150A(図71)
のそれぞれのクローンのトランスファー目的点としての
エンジン132Eを全て規定している。エンジン132
Aは、目的点150A−1−E−D1、150A−1−
E−D2及び150A−1−E−D3(図73)が各々
トランスファー目的点としてのエンジンを規定している
ことと、エージェント150A(図71)の単一のクロ
ーンすなわち符号化されたエージェント150A−1−
E(図73)をエンジン132E(図74)に移送させ
ることを定める。
【0694】従って、3つの別々のクローンをエンジン
132Aからエンジン132Eに転送するのではなく、
単一のクローンが、エンジン132Eに転送され、それ
によってエージェント150Aのクローンによって占有
されたエンジン132A中のスペースの量、及びクロー
ンをエンジン132Eに転送するために必要とされる時
間の量が比例的に減少される。
【0695】エージェント150A−1は、オペレーシ
ョン”go”について前述したように、符号化され、エン
ジン132E(図74)に転送される。エンジン132
Eは、エージェント150A−1のセンドフレーム29
02のリスト2904を検索する。符号化されたエージ
ェントの構造は、アペンディックスBに示すように標準
化されているので、エンジン例えばエンジン132E
は、符号化されたエージェント150A−1をデコード
することなく、リスト2904を検索することができ
る。エンジン132Eは、センドフレーム2902のチ
ケット2904Bに対応する1つのクローンがエンジン
132Bに転送されるべきことと、チケット2904
C、2904Dに対応する2つのクローンがエンジン1
32Fを経てそれぞれエンジン132C、132Dに転
送されるべきこと、を定める。そのため第2のクロー
ン、エージェント150A−2(図75)が、エンジン
132Eによってエージェント150A−1から作り出
される。エージェント150A−1が動かされる時に、
エージェント150A−1のコピーであるエージェント
150A−2も同様に符号化される。エージェント15
0A−2は、センドフレーム2902−2を含む、セン
ドフレーム2902−2はチケットリスト2904−2
を有する。チケットリスト2904−2は、エージェン
ト150A−1のセンドフレーム2902のチケットリ
スト2904から除去された単一のチケット2904B
を有する。
【0696】エージェント150A−2はエンジン13
2Bに移送され、エージェント150A−1はエンジン
132F(図76)に移送される。チケット2904B
はトリップの目的点としてプレイス220Bを特定し、
チケット2904Bはセンドフレーム2902−2のた
だ1つのチケットであるから、プレイス220Bはエー
ジェント150A−2の目的点であり、エージェント1
50Aのいかなる他のクローンもエージェント150A
−2から作り出されない。エージェント150A−2は
エンジン132Bによってデコードされる。エージェン
ト150A−2は、前述したようにプレイス220Bに
よりオペレーション”entering”の遂行によってプレイ
ス220Bの占有がパーミットされ、エージェント15
0A−2についてのオペレーション”send”のオペレー
ションは完了する。
【0697】センドフレーム2902Bは、そのためエ
ージェント150A−2の実行状態から、実行モデルの
コンテキストにおいて以下に説明されるように除去され
る。エージェント150A−1はエンジン132Fに移
送される。エージェント150A−1の実行状態の一部
分であるセンドフレーム2902には、チケット290
2C、2904Dを含むチケットリスト2904が含ま
れる。従ってエージェント150A−1はそれぞれプレ
イス220C、220Dに向かって移動しているエージ
ェント150Aの2つのクローンを表している。従って
単一のクローンすなわちエージェント150A−1をエ
ンジン132Eからエンジン132Fに移送することに
よって、前述したように、エンジン132Eとエンジン
132Fの間でデータを転送するのに必要な時間とエン
ジン132Eに格納するスペースとが実質的に節減され
る。
【0698】前述したように、エンジン132Fにおい
ては、(i)エージェント150Aの第3のクローンす
なわちエージェント150A−3がエージェント150
A−1から形成され、(i)チケット2904Cを含む
エージェント150A−3には、センドフレーム(図示
しない)が含まれる。エージェント150A−3がそれ
からコピーされたエージェント150A−1は、符号化
され、エージェント150A−3も符号化される。チケ
ット2904Cはエージェント150A−1のセンドフ
レーム2902から除去される。エージェント150A
−3は、エンジン132Cに移送され、エージェント1
50A−1は、エンジン132D(図77)に移送され
る。
【0699】エンジン132Cは、チケット2904C
によって規定されるエージェント150A−3のトリッ
プの目的点であるプレイス220Cを含み、エンジン1
32Dは、チケット2904Dによって規定されるエー
ジェント150A−1のトリップ目的点であるプレイス
220Dを含む。前述したように、(i)エンジン13
2Cは、エージェント150A−3をデコードし、エー
ジェント150A−3には、オペレーション”enterin
g”の実行によってプレイス220Cの占有がパーミッ
トされ、(ii)エンジン132Dはエージェント15
0A−1をデコードし、エージェント150A−1に
は、オペレーション”entering”の遂行によってプレイ
ス220Dの占有がパーミットされる。センドフレーム
2902(図示しない)は、目的点としてプレイス22
0Dを特定化する単一のチケットを有しているので、オ
ペレーション”send”はエージェント150A−1につ
いて終了する。同様に、エージェント150A−3は、
単一のプレイスすなわち、エージェント150A−3に
よって占有されるプレイスであるプレイス220Cをト
リップの目的点として特定するセンドフレームを含むの
で、エージェント150A−3についてもオペレーショ
ン”send”は同様に終了する。改行エージェント150
A−1、150A−2及び150A−3の各々は、それ
ぞれのエージェントクローンが行なうトリップを規定す
る単一のチケットを含むセンドフレームを含む実行状態
を有するオペレーション”send”の遂行を完了する。そ
れぞれの単一のチケットは、それぞれのエージェントに
よるオペレーション”send”の遂行の結果として生じた
チケットスタブを導くために前述したように使用され
る。
【0700】従って、それぞれの目的プレイスにいくつ
かのクローンを転送する際にクローニングをできるだけ
長い間遅らせることによって、オペレーション”send”
の遂行において実質的な量のコンピュータの格納スペー
ス及び時間が節減される。
【0701】センドフレーム2902の、エージェント
150A−1の転送中の構造を、図30に示す。クラ
ス”センドフレーム”は、プロパティ”チケット”を規
定する。センドフレーム2902のプロパティ”チケッ
ト”は、チケット2904B、2904C及び2904
Dをアイテムとするリスト2904である。チケット2
904B、2904C及び2904Dは、応答エージェ
ント150Aのそれぞれのクローンが行なうそれぞれの
トリップを規定する。
【0702】前述したように、エージェント150Aが
オペレーション”send”を遂行することによって、一以
上のエージェントクローンが作り出され、各々のエージ
ェントクローンは、エージェント150Aの一以上のク
ローンを表している。各々のエージェントクローン例え
ばエージェント150A−1(図71)を形成する場合
には、そのエージェントクローンにセンドフレーム29
02のコピーが含まれる。センドフレームコピーのプロ
パティ”チケット”は、エージェントクローンによって
表されるクローンに対応するチケットのみを包含するよ
うに変更される。一例としてエージェント150A−2
(図75)は、センドフレーム2902−2を含み、こ
のセンドフレーム2902−2は、チケット2904B
を含み、エージェント150A−1は、センドフレーム
2902を含み、センドフレーム2902は、チケット
2904C及び2904Dを含む。
【0703】従ってエージェント150A−2は、チケ
ット2904Bによって指定されたプレイスすなわちプ
レイス220Bに向かって移動しているエージェント1
50Aの単一のクローンを表している。同様に、エージ
ェント150A−1は、チケット2904C、2904
Dによって特定されたプレイスに向かって移動している
エージェント150Aの2つのクローンをそれぞれ表し
ている。
【0704】各々のクローンがそれぞれの目的点に到達
したら、センドフレーム2902のプロパティ”チケッ
ト”(図30)は、正確に1つのチケットのリストとな
る。一例としてエージェント150A−1、150A−
2、150A−3(図77)は、フレーム2902、2
902−2、2902−3をそれぞれ含み、これらのフ
レームは各々単一のチケットすなわちそれぞれのチケッ
ト2904D、2904B、2904Cを各々含む。従
って各々のセンドフレームは、対応するエージェントク
ローンが行なうトリップを規定する単一のチケットを有
している。この単一のチケットは、それぞれのエージェ
ントクローンによるオペレーション”send”の遂行の結
果として生成されるチケットスタブを形成するために前
述したように使用される。
【0705】従って2以上のエージェントクローンが部
分的に同延であるトリップを行なう限り、オペレーショ
ン”send”を遂行するエージェントのクローニングを延
期(ディファー)することによって、コンピュータの格
納スペース及びデータ転送時間が実質的に節減される。
オペレーション”go”のコンテキストによって前述した
ように、あるエージェントによるオペレーション”go”
の遂行の間に例外が投出された場合には、そのエージェ
ントはパーガトリーに置くことができる。同様にエージ
ェントクローンによるオペレーション”send”の遂行の
間に例外が投出された場合にはそのエージェントクロー
ンはパーガトリーに置くことができる。また単一の符号
化されたエージェント例えばエージェント150A−1
(図74)によって表されるエージェントの複数のクロ
ーンの転送が失敗した場合、その場合、符号化されたエ
ージェントによって表されるこの各々のクローンは、前
述したように、デコードされ、活性化され、パーガトリ
ーに置かれる。
【0706】エージェント間の相互作用: オペレーシ
ョン”Meet” 同一のプレイスを占有する2つのエージェントは、一方
のエージェントが他方のエージェントにあるオペレーシ
ョンを行ない又はある属性を設定又は質疑することを求
めることによって、互いに相互作用することができる。
リクエストされたオペレーションのアーギュメント及び
結果又は設定又は質疑された属性を介して2つのエージ
ェントの間に情報の交換が行なわれる。一例としてエー
ジェント150A、150Bは、エンジン132B(図
50)内において実行されているプレイス220Bを占
有している。従ってエージェント150A、150B
は、(i)エージェントBがあるフィーチャーを遂行す
ることをエージェント150Aがリクエストするか、ま
たは(ii)エージェントAがフィーチャーを遂行する
ことをエージェント150Bがリクエストすることによ
って、相互作用することができる。
【0707】エージェント150Aは、エージェント1
50Aがエージェント150Bに対するリファレンス
(参照)を持つ場合にのみエージェント150Bがフィ
ーチャーを遂行することをリクエストすることができ
る。同様にエージェント150Bは、エージェント15
0Bがエージェント150Aへのリファレンスを含む場
合にのみエージェントAがフィーチャーを遂行すること
をリクエストすることができる。エージェント150A
は、エージェント150A、150Bが占有者であるミ
ーティングプレイスによってオペレーション”meet”を
遂行することをリクエストすることによって、エージェ
ント150Bに対するリファレンスを取得する。ここま
ではプレイス220Bは、エージェント150A、15
0Bによって占有されるプレイスとしてのみ記述されて
いる。以下の説明の目的のためには、プレイス220B
は、ミーティングプレイス、すなわちクラス”ミーティ
ングプレイス”の1メンバである。ミーティングプレイ
スについてはアペンディックスAにおいて一層詳細に説
明する。
【0708】図78、図79は、オペレーション”mee
t”のインタフェースを表している。フレーム3100
はエージェント150Aの実行状態の一部分である。フ
レームの3100はミーティングプレイス220Bによ
るオペレーション”meet”の遂行状態を記録する。ミー
ティングプレイス220Bは、オペレーション”meet”
のレスポンダーとしてのエージェント150Aの実行状
態内において特定される。
【0709】フレームの3100は、現在のスタックで
あるスタック3102を含む。スタック3102は、オ
ペレーション”meet”(図78)の遂行の直前に、ペテ
ィション3160をその上部に備えている。ペティショ
ン3160は、オペレーション”meet”の遂行によって
消費されたアーギュメントである。
【0710】ペティションすなわちクラス”Petition”
のメンバについては以下に、及びアペンディックスA
に、一層詳細に説明する。
【0711】フローチャート3200(図80)は、ミ
ーティングプレイス220Bによって遂行されるオペレ
ーション”meet”のインプリメンテーションを示してい
る。エンジン132B(図50)は、ミーティングプレ
イス220Bによって遂行されるオペレーション”mee
t”を遂行する際に、ペティション3106(図78)
を分析することによって、ペティションの対象であるエ
ージェントを定める。ペティション3106はペティシ
ョンの対象であるエージェントをネーム、クラス又はそ
の両方によって特定する。ペティションの対象であるエ
ージェントは、ミーティングをリクエストしたエージェ
ントがミーティングを行なうようになっているエージェ
ントとして、ペティションによって特定されたエージェ
ントである。
【0712】エンジン132Bは、ポップペティション
ステップ3202(図80)において現在のスタックか
らペティション3106をポップする。処理はポップペ
ティションステップ3202からステップ3204に移
行する。ステップ3204においてエンジン132B
は、新しいエンプティなテレネームリストを作り出す。
ステップ3204において作り出されたリストのテレネ
ームは、リクエストしたエージェントとのミーティング
を拒絶したペティションの対象であるエージェントのテ
レネームである。最初はペティションの対象であるいか
なるエージェントもリクエストしたエージェントとのミ
ーディングを拒絶していないので、このリクエストは最
初はエンプティである。
【0713】処理はステップ3204から、ファインド
ペティションドエージェントステップ3206に移行
し、このステップ3206において、オペレーション”
meet”を遂行しているエンジンがペティションの対象で
あるエージェントを、すなわち、ステップ3204(図
80)によって作り出されたテレネームのリストのアイ
テムにそのテレネームが含まれない、ペティション31
06(図78)を満たすエージェントを見出す。あるエ
ージェントは次のようにしてペティション3106(図
78)を満たす。
【0714】アペンディクスA2に詳細に説明するよう
に、ペティション3106は、プロパティ”agentNam
e”及びプロパティ”agentClass”(どちらも図示しな
い)を含む。プロパティ”agentName”及び”agentClas
s”はオプションであり、従ってどちらもゼロであって
もよい。ペティション3106のプロパティ”agentNam
e”がテレネームであり、プロパティ”agentClass”が
ゼロである場合、ペティションの対象であるエージェン
トは、ペティション3106のプロパティ”agentNam
e”であるテレネームによってそのテレネームが指定さ
れたエージェントである。
【0715】プロパティ”agentClass”がサイテイショ
ンであり、プロパティ”agentName”がゼロである場
合、ペティションの対象であるエージェントは、ペティ
ション3106のプロパティ3106のプロパティ”ag
entClass”であるサイテイションによって特定されたク
ラスのメンバであるエージェントである。どちらのプロ
パティもゼロでない場合ペティションの対象であるエー
ジェントは、両方の基準を満たすエージェントである。
どちらのプロパティもゼロである場合、クラス”ミーテ
ィング不適切”の例外が投出され、オペレーション”me
et”を失敗に終わらせる。
【0716】処理がファインドペティションドエージェ
ントステップ3206からテストステップ3208に移
行し、このテストステップにおいて、エンジン132B
は、ペティションの対象であるエージェントがファイン
ドペティションドエージェントステップ3206におい
て見出されるか否かを定める。ペティションの対象であ
るエージェントがファインドペティションドエージェン
トステップ3206で見出されなかったら、処理がテス
トステップ3208から、後述するウェイトステップ3
222に移行する。逆にペティションに対象であるエー
ジェントがファインドペティションドエージェントステ
ップ3206において見出されたら、処理はテストステ
ップ3208からミーティングステップ3210に移行
する。
【0717】ミーティングステップ3210において、
ペティションの対象であるエージェントには、ミーティ
ングプレイス220Bを解釈しているエンジン132B
によってオペレーション”meeting”を遂行することが
求められる。オペレーション”meeting”を遂行する際
に、ペティションの対象であるエージェントは、エージ
ェント150Aとのミーティングに参加することに同意
するか、又はこれを拒絶する。オペレーション”meetin
g”については、以下又はアペンディクスAに詳細に説
明されている。
【0718】ペティションの対象であるエージェントに
よるオペレーション”meeting”の遂行後に処理はミー
ティングステップ3210からテストステップ3212
に移行する。テストステップ3212においてエンジン
132Bは、オペレーション”meeting”が成功のうち
に終了し、ペティションの対象であるエージェントがミ
ーティングに同意したことを示すか否かを定める。ペテ
ィションの対象であるエージェントはミーティングを拒
絶した場合、すなわち処理はテストステップ3212か
ら、以下に説明する第1のフリクオリファイドテストス
テップ3234に移行する。その逆に、ペティションの
対象であるエージェントがミーティングに同意した場
合、すなわちオペレーション”meeting”が成功のうち
に終了した場合、処理はテストステップ3212からビ
ルドコンタクトステップ3216に移行する。
【0719】ビルドコンタクトステップ3216におい
て、ペティションの対象であるエージェントをサブジェ
クトするコンタクト3108(図79)が作り出され
る。処理はビルドコンタクトステップ3216(図8
0)からプッシュコンタクトステップ3218に移行
し、このステップ3218において、コンタクト310
8(図79)がスタック3102に保存されることによ
って、コンタクト3108を生成する。処理はプッシュ
コンタクトステップ3218から終了ステップ3220
に移行しこのステップ3220においてオペレーショ
ン”meet”は成功のうちに終了する。
【0720】しかし前述したようにペティションの対象
であるエージェントが、オペレーション”meeting”の
遂行において反対を表明し、それによってエージェント
150Aとのミーティングを拒絶した場合には、処理は
テストステップ3212から第1のフリクオリファイド
テストステップ3234に移行する。第1のフリクオリ
ファイドテストステップ3234では、エンジン132
Bは、ペティション3106(図78)が十分に有資格
であるか否かを定める。ペティション3106は、ペテ
ィション3106のプロパティ”agentName”であるテ
レネームが十分に有資格である場合に有資格とされる。
テレネームは、プロパティ”authority”とプロパテ
ィ”identity”とをともに有する。テレネームについて
はアペンディクスAに一層詳細に説明されている。テレ
ネームのプロパティ”identity”はオプションであり、
すなわちゼロとすることができる。テレネームのプロパ
ティ”identity”がゼロである場合、そのテレネームは
部分的に有資格であり、テレネームのプロパティ”auth
ority”であるオーソリティのすべてのネームのあるオ
ブジェクトを意味する。他方では、テレネームのプロパ
ティ”identity”がゼロでない場合、そのテレネームは
十分に有資格であり、正確にゼロ又は1つの面のあるオ
ブジェクトを意味する。
【0721】第1のフリクオリファイドテストステップ
3234(図80)において、エンジン132Bは、ペ
ティション3106(図78)が十分に有資格であるか
否かを定める。ペティション3106(図78)が十分
に有資格であれば、処理は第1のフリクオリファイドテ
ストステップ3234から終了ステップ3236に移行
し、この終了ステップにおいて、クラス”ミーティング
拒絶の”反対が表明され、オペレーション”meeting”
を失敗に終わらせる。したがって、ペティション310
6(図78)が十分に有資格であり、ペティション31
06を満たす1つのエージェントがミーティングを拒絶
した場合、オペレーション”meet”は失敗に終わる。他
方では、ペティション3106を十分に有資格でない場
合には、処理は第1のフリクオリファイドテストステッ
プ3234からアッドエージェントツウリストステップ
3214に移行する。
【0722】アッドエージェントツウリストステップ3
214において、ファインドペティションドエージェン
トステップ3206において見出された、ペティション
の対象であるエージェントが、ステップ3204におい
て作り出されたテレネームリストに付加される。処理は
アッドエージェントツウリストステップ3214からフ
ァインドペティションドエージェントステップ3206
に移行する。
【0723】前述したように、ペティションの対象であ
るエージェントがファインドペティションドエージェン
トステップ3206において見出されなかった場合に
は、処理にはテストステップ3208からウェイトステ
ップ3222に移行する。ウェイトステップ3222に
おいては、エージェント150Aの解釈は、ペティショ
ン3106(図78)が終了するか、又はエージェント
がミーティングプレイス220Bに入るまで、すなわち
ミーティング220Bが成功のうちにオペレーション”
entering”を遂行するまで中断される。ペティション3
106は、アペンディクスAに一層詳細に説明されるよ
うに、オペレーション”meet”が成功のうちに、又はそ
れ以外の仕方で終了するまで、オペレーション”meet”
の遂行の開始から経過した時間の最大量を規定するプロ
パティ”maximumWait”を有する。ペティション310
6は、オペレーション”wait”の遂行の開始からプロパ
ティ”maximumWait”に特定された時間量が経過し終わ
った時に終了する。
【0724】ペティション3106が、終了するか、又
はエージェントがミーティングプレイス220Bに入っ
た時に、エージェント150Aの解釈が再開され、処理
がミートステップ3222(図80)からタイムアウト
テストステップ3224に移行する。タイムアウトテス
トステップ3224では、エンジン132B(図50)
が、エージェント150A(図78)の解釈の再開がペ
ティション3106の終了の結果であるか否かを定め
る。エージェント150Aの解釈がペティション310
6(図78)の終了の結果として再開された場合には、
処理はタイムアウトテストステップ3224(図80)
から終了ステップ3226に移行し、このステップ32
26において、クラス”Petition Expired”の例外が表
明され、オペレーション”meet”を失敗に終わらせる。
【0725】他方では、エージェント150A(図7
8)の解釈が、エージェントがプレイス220Bに入っ
たことの結果として再開された場合には、処理はタイム
アウトステップ3224からテストステップ3228に
移行する。テストステップ3228では、エンジン13
2B(図50)は、プレイス220Bに入ったエージェ
ント(図示しない)がペティションの対象であるか否
か、すなわちペティション3106(図78)を満た
し、ステップ3204(図80)において作り出された
テレネームのリストにないか否を定める。エンタしたエ
ージェントがペティション3106(図78)を満たさ
ないか、又はエンタしたエージェントのテレネームがス
テップ3204(図80)において作り出されたテレネ
ームのリストのアイテムである場合には、処理はテスト
ステップ3228からウェイトステップ3222に移行
する。
【0726】他方では、エンタしたエージェントがペテ
ィション3106(図78)を満たし、エンタしたエー
ジェントのテレネームが、ステップ3204(図80)
で作り出されたテレネームのリストのアイテムでない場
合、処理はテストステップ3228から第2のミーティ
ングステップ3230に移行する。第2のミーティング
ステップ3230では、エンタしたエージェントは、オ
ペレーション”meeting”を遂行するように指示され
る。処理は第2のミーティングステップ3230からテ
ストステップ3232に移行し、このテストステップ3
232においてエンジン132B(図50)は、エンタ
したエージェントによるオペレーション”meet”の遂行
が成功し、エンタしたエージェントがそれによってエー
ジェント150Aとミートを受け入れたか、又はオペレ
ーション”meeting”の遂行が失敗し、エンタしたエー
ジェントがそれによってエージェント150Aとミーテ
ィングを拒絶したか否かを定める。
【0727】エンタしたパーティによるオペレーショ
ン”meeting”の遂行が成功した場合、処理はテストス
テップ3232からビルドコンタクトステップ3216
に移行する。前述したように、ビルドコンタクトステッ
プ3216及び後続するステップにおいて、ペティショ
ンの対象であるエージェントすなわちエンタしたエージ
ェントとコンタクトが作り出され、そのコンタクトが現
在のスタックに保存され、オペレーション”meeting”
は成功のうちに終了する。他方では、エンタしたエージ
ェントによるオペレーション”meeting”の遂行に対し
て例外が表明された場合には処理は、テストステップ3
232から第2のフリクオリファイドテストステップ3
238に移行する。
【0728】第2のフリクオリファイドテストステップ
3238において、エンジン132B(図50)は、ペ
ティション3106(図78)が十分に有資格であるか
否かを定める。ペティション3106が十分有資格であ
る場合、処理は第2のフリクオリファイドテストステッ
プ3238(図80)から終了ステップ3240に移行
し、この終了ステップにおいて、クラス”ミーティング
拒絶”の例外が表明され、ミーティングプレイス220
Bによって行われるオペレーション”meeting”を失敗
に終わらせる。
【0729】その逆に、ペティション3106(図7
8)が十分に有資格でない場合、処理は第2のフリクオ
リファイドテストステップ3238から第2のアッドエ
ージェントツウリストステップ3242に移行する。第
2のアッドエージェントツウリストステップ3242で
は、ペティションの対象であるエージェントすなわちエ
ンタしたエージェントのテレネームが、ステップ320
4において作り出されたテレネームのリストに付加され
る。処理は第2のアッドエージェントツウリストステッ
プ3242から、前述したステップ3222に移行す
る。
【0730】このようにしてエージェント150Aとペ
ティションの対象であるエージェントとの間のミーティ
ングが取り決められる。このペティションの対象である
エージェントは、(i)ペティション3106において
特定されたネーム及びクラスを用いて(ii)応答する
ミーティングプレイスを占有し、(iii)ペティショ
ン3106において特定された最大の時間内においてミ
ーティングを行うことに同意したエージェントである。
この最後に述べた条件は、第1のエージェントによって
占有されるミーティングプレイスを占有していないが、
ある時間内にそのミーティングに到着することが期待さ
れている第2のエージェントとのミーティングを第1の
エージェントがリクエストすることを許容する。
【0731】オペレーション”meeting”(図79)の
遂行の直後に、スタック3102は、その上部に、前述
したコンタクト3108を有している。コンタクト31
08は、エージェント150B(図50)へのリファン
スであるプロパティ”subject”を備えている。コンタ
クト3108(図79)のプロパティ”subject”はコ
ンタクト3108のアトリビュート”subject”を指示
することによって生成される。コンタクトのアトリビュ
ート”subject”についてはアペンディクスAに詳細に
説明されている。したがって、エージェント150A
は、エージェント150B(図50)への参照を取得
し、したがってエージェント150Bがフィーチャを遂
行することをリクエストすることができる。
【0732】オペレーション”meeting”のコンテキス
トにおいて以下に説明するように、エージェント150
Bは、ミーティングをリクエストするエージェントとし
てエージェント150Aを特定化するコンタクトを、オ
ペレーション”meeting”の遂行においてのアーギュメ
ントとして消費する。ミーティングプレイス220Bに
よるオペレーション”meeting”の遂行の後に、エージ
ェント150Bによって消費されたコンタクトは、エー
ジェント150Aに対するリファレンス(参照)である
プロパティ”subject”も備えている。したがってエー
ジェント150Bは、エージェント150Aのリファレ
ンスを取得し、エージェント150Aがフィーチャを遂
行することをリクエストすることができる。
【0733】コンタクトされるエージェントは、ミック
スインクラス”コンタクテッド”が受け継がれたクラス
のメンバである。以下にアペンディクスAに詳細に説明
するように、ミックスインクラス”コンタクテッド”
は、プロパティ”contacts”へのアクセスを提供するア
トリビュート”contacts”を規定する。プロパティ”co
ntacts”は、コンタクト(複数)のセットである。エー
ジェント150B(図81)は、コンタクトされたエー
ジェントであり、したがってセット3320であるプロ
パティ”contacts”を備えている。前述したようにミー
ティングプレイス220Bによるオペレーション”meet
ing”が遂行された後は、エージェント150Bによる
オペレーション”meeting”の遂行において消費された
コンタクトであるコンタクト3404は、エンジン13
2Bによってセット3302に付加される。
【0734】ペティションの対象であるエージェントの
同意: オペレーション”Meeting” 前述したように、ペティションの対象であるエージェン
トによるオペレーション”meeting”遂行によるミーテ
ィングをリクエストしたエージェントとミーティングに
同意したり拒絶したりする。オペレーション”meetin
g”にはクラス”Agent”によって規定されても受け継が
れてもいない。その代わりに、オペレーション”meetin
g”は、ミックスインクラス”Petitioned”によって規
定されている。クラス”Agent”は、ミックスインクラ
ス”Petitionド”のサブクラスではなく、本発明のユー
ザーによって後に規定されるクラス”Agent”のサブク
ラスは、ミックスインクラス”Petitioned”のサブクラ
スであることができる。したがって、このようなユーザ
ーによって規定されるサブクラスのメンバであるエージ
ェントのみが、オペレーション”meeting”を遂行する
ことができ、したがって他のエージェントとのミーティ
ングに参加することができる。
【0735】図82は、エージェント150Bによるオ
ペレーション”meeting”の遂行の直前においてのエー
ジェント150Aの実行状態を示している。クレーム3
400は、エージェント150Aの実行状態の一部分で
あり、エージェント150Bが実行するオペレーショ
ン”meeting”の動的状態を記録する。オペレーショ
ン”meeting”が、エンジン132Bによってリクエス
トされる。オペレーション”meeting”の遂行は、エー
ジェント150Aの実行状態において記憶される。エー
ジェント150A又は好ましくはエージェント150B
のパーミットは、オペレーション”meeting”の遂行に
よって喪失され得る。エージェント150B(図50)
は、オペレーション”meeting”のレスポンダとして、
エンジン132B中において特定化される。
【0736】スタック3402は、フレイム3400の
プロパティ”stack”であり、現在のスタックである。
オペレーション”meeting”の遂行の直前に、スタック
3402は、上部から下部にかけて、コンタクト340
4及びをペティション3406を有している。
【0737】コンタクト3404は、ミーティングをリ
クエストするエージェントとしてエージェント150A
を特定化する。コンタクト3404のプロパティ”subj
ectName”(図示しない)は、エージェント150Aの
テレネームと同等のテレネームであり、それによってエ
ージェント150Aをリクエストするエージェントとし
て特定化する。コンタクト3404のプロパティ”subj
ectClass”(図示しない)はエージェント150Aが1
つのインスタンスであるクラスを特定化するサイテイシ
ョンである。通常エージェント150Aのリファレンス
であるコンタクト3404のプロパティ”subject”
(図示しない)は、エンジン132Bによって0にされ
る。したがってエージェント150Bは、オペレーショ
ン”meeting”の遂行においてコンタクト3404を消
費することによって、ミーティングをリクエストするエ
ージェントとしてエージェント150Aを適切に特定化
する上に必要なすべての情報をもつが、エージェント1
50Aへのリファレンスは持たず、したがってエージェ
ント150Aと相互作用する方策を持たない。このよう
に、どちらのエージェントも、他のエージェントと、両
者がミーティングに同意するまでは、相互作用すること
ができない。
【0738】ペティション3406は、ミーティングを
リクエストする際にエージェント150A(図50)に
よって供給されるペティション3106(図78)のコ
ピーである。それはこのアーギュメントが”バイコピ
ー”をパスするからである。それはこのアーギュメント
がパスした”バイコピー”だからである。アーギュメン
ト”バイコピー”の通過については以下にまたアペンデ
ィクスAに詳細に説明する。
【0739】エージェント150Bは、オペレーショ
ン”meeting”を成功のうちに遂行することによって、
コンタクト3404によって特定化されたエージェント
とペティション3406(図82)によって規定された
ミーティングを行うことに同意する。このミーティング
は、例外を表明することにより、拒絶され、それによっ
てオペレーション”meeting”は失敗に終わる。ミック
スインクラス”Petitioned”によって否定されたオペレ
ーション”meeting”の方法は決して成功せず、常にク
ラス”ミーティング拒絶”の例外を常に表明する。しか
し、ミックスインクラス”Petitioned”から受け継がれ
たクラス”Agent”の後に規定されたサブクラスは、あ
る事情の元においては成功するように、オペレーショ
ン”meeting”のインプレメンテイションを再定義する
ことができる。
【0740】エージェントは広い範囲のニーズに応え、
広い範囲のサービスを遂行するようにするものであるこ
とが予想されるので、クラス”Agent”のサブクラス及
びオペレーション”meeting”の方法の変形の数は非常
に大きい。一例として、論理フローダイヤグラム350
0(図83)はオペレーション”meeting”のための1
つのそのような方法を示している。ステップ3502に
おいて、コンタクト3404(図82)及びペティショ
ン3406はスタック3402からポップ(復元)され
る。処理はステップ3502(図83)からステップ3
504に移行し、このステップ3504において、コン
タクト3404(図82)のアトリビュート”subjectC
lass”が質疑されることによって、コンタクト3404
のプロパティ”subjectClass”が生成する。処理はステ
ップ3504(図82)及びペティション3406はス
タック3402からポップされる。処理はステップ35
02(図83)からステップ3504に移行しこのステ
ップ3504においてコンタクト3404(図82)の
アトリビュート”subjectClass”が質疑されることによ
ってコンタクト3404のプロパティ”subjectClass”
が発生する。処理はステップ3504(図83)からテ
ストステップ3506に移行し、このテストステップに
おいてコンタクト3404(図82)のプロパティ”su
bjectClass”が、特定のクラスのサイテイションと比較
される。コンタクト3404のプロパティ”subjectCla
ss”がサイテイションに等しい場合、処理はテストステ
ップ3506(図83)から終了ステップ3508に移
行する。終了ステップ3508においてオペレーショ
ン”meeting”は成功のうちに終了し、それによってミ
ーティングに対する同意が得られる。さもないときは、
コンタクト3404(図34)のプロパティ”subjectC
lass”がサイテイションに等しくない場合、処理はテス
トステップ3506(図83)から終了ステップ351
0に移行し、この終了ステップ3510においてクラ
ス”ミーティング拒絶”の例外が表明されることによっ
て、オペレーション”meeting”が失敗に終わりそれに
よって、コンタクト3404(図82)によって特定化
されたエージェントとのミーティングが拒絶される。
【0741】前述したように、オペレーション”meetin
g”の実行のリクエストにおいてアーギュメントとして
エージェント150B(図50)に供給された、エージ
ェント150Aを特定化するコンタクト3404は、エ
ージェント150Aへのリファレンスを含まない。その
代わりに、コンタクト3404(図82)のプロパテ
ィ”subject”は0である。前述したように、ミーティ
ングプレイス220B(図50)によるオペレーショ
ン”meeting”の遂行によって、ミーティングが成功の
うちに取り計らわれると、エンジン132Bは、コンタ
クト3404(図82)のプロパティ”subject”をエ
ージェント150Aへのリファレンスとなるように変更
する。
【0742】このように、どんな事情のもとでどのエー
ジェントとともに、特定のエージェントがミーティング
に同意するように構成されているかを定めるために、実
質的な量のデータを処理する複雑なロジックを適用する
ために、アペンディクスAに述べたコンピュータインス
トラクションセットの十分な一般性及びデータ処理能力
を使用することができる。
【0743】図84は、エージェント150B(図5
0)によるオペレーション”meeting”の遂行の直後の
フレーム3400の状態を示している。スタック340
2(図84)は、オペレーション”meeting”がいかな
る欠陥をもたらさなかったのでエンプティである。オペ
レーション”meeting”のアクセスは”システム”であ
り、ある1つのエンジンのみがオペレーション”meetin
g”をリクエストすることができる。なお、ミックスイ
ンクラス”Petitioned”に規定されたオペレーション”
meeting”は、以上に説明しまたアペンディクスAに説
明されるクラス”ミーティングプレイス”に規定された
オペレーション”meeting”とは別個のものである。
【0744】エージェント間の相互作用の停止: オペ
レーション”Part” 前述したように、2つのエージェントは、それらの間の
ミーティングの間に、どちらかの間に、相互及びどちら
かのエージェントによって所有されるオブジェクトへの
リファレンスを交換する。2つのエージェントの間の相
互作用を停止するにはどちらのエージェントも他のエー
ジェントへのリファレンスも他のエージェントが所有す
るオブジェクトへのリファレンスも持たないことを確実
にすることが必要とされる。
【0745】あるミーティングプレイスを占有する2つ
のエージェントの間のミーティングに参加するどのエー
ジェントも、ミーティングプレイスによるオペレーショ
ン”part”の遂行の要求によってそのミーティングを終
了させることができる。
【0746】ミーティングプレイス220Bによるオペ
レーション”meeting”の成功した遂行によってエージ
ェント150Aは、エージェント150Bへのリファレ
ンス150A−R1を取得しており、またエージェント
150Bは、エージェント150Aへのリファレンス1
50B−R1を取得している。オブジェクト3602は
エージェント150Aによって所有されている。同様に
オブジェクト3604は、エージェント150Bによっ
て所有されている。図85は、エージェント150A、
150Bが、相互作用しオブジェクト3602、360
4へのリファレンスを交換した後の、エージェント15
0A、150Bの状態を示している。エージェント15
0Aは、オブジェクト3602へのリファレンスをエー
ジェント150Bに与えることによって、オブジェクト
3602へのアクセスをエージェント150Bに許容す
る。リファレンス150B−R1、150B−R2によ
るこのようなアクセスによって、エージェント150B
は、エンジン132Bに命令を送出するこができ、それ
によってエージェント150A、オブジェクト3602
は、送出された命令に従って処置をそれぞれとることが
できるようになる。同様にエージェント150Bは、オ
ブジェクト3604へのリファレンス150A−R2を
エージェント150Aに与えることによって、オブジェ
クト3604への同様なサクセスをエージェント150
Aに許可する。
【0747】エージェント150Aは、それぞれエージ
ェント150B、オブジェクト3604、オブジェクト
3602へのリファレンス150A−R1、150A−
R2及び150A−R3を有している。リファレンス1
50A−R1、150A−R2及び150A−R3は、
(i)スタック中に含まれているか、又は、エージェン
ト150Aの実行状態の一部分であるフレーム(図示し
ない)の変数リスト(やはり図示しない)内に収容され
ているか、又は(i)エージェント150Aのプロパテ
ィ又はプロパティの一成分として格納されている。エー
ジェントの実行状態については以下に説明する。エージ
ェント150Bは、同様に、エージェント150A、オ
ブジェクト3602及びオブジェクト3604へのそれ
ぞれのリファレンス150B−R1、150B−R2及
び150B−R3を有している。エージェント150B
は、オブジェクト3604へのリファレンス150A−
R2をエージェント150Aに与えることによって、エ
ージェント150Bは、(i)オブジェクト3604に
あるオペレーションを遂行することをリクエストした
り、(i)オブジェクト3604の一部又は全部をコピ
ーしたりすることをエージェント150Aに許容する。
【0748】エージェント150A又は150Bは、ミ
ーティングプレイス220Bがオペレーション”part”
を行うことをリクエストすることによって、エージェン
ト150A、150Bの間の相互作用を終了させること
ができる。説明の目的のために、エージェント150A
は、ミーティングプレイス220Bがオペレーション”
part”を行うことを求めるエージェントである。図8
6、図87は、それぞれミーティングプレイス220B
によるオペレーション”part”の遂行の直前及び直後の
エージェント150Aの状態を示している。フレーム3
702は、エージェント150Aの実行状態の一部分で
あり、ミーティングプレイス220Bによって遂行され
るオペレーション”part”の状態を記録する。ミーティ
ングプレイス220Bは、フレーム3702のプロパテ
ィ”responder”であり、したがってオペレーション”p
art”のレスポンダである。スタック3704は、エー
ジェント150Aの実行状態の一部分でもあるフレーム
3702のプロパティ”stack”であり、現在のスタッ
クである。
【0749】スタック3704の上部にはコンタクト3
706がある。コンタクト3706は、エージェント1
50Aがそれから分離されるべきエージェントとしてエ
ージェント150Bを特定化している。エンジン132
B(図50)は、ミーティングプロパティ220Bのた
めにオペレーション”part”を実行している間に、オペ
レーション”part”を行うようにエージェント150B
に指示する。エージェント150Bはエージェント15
0Bが分離しようとしているエージェントとしてエージ
ェント150Aを特定化するコンタクトを単一のアーギ
ュメントとして消費する。通常エージェント150Aへ
のリファレンスであるコンタクトのプロパティ”subjec
t”は、オペレーション”part”をリクエストする前に
エンジン132Bによってボイドされるので、エージェ
ント150Bは、ミーティングの終了後にエージェント
150Aへのリファレンスとともに残されることはな
い。オペレーション”part”を行う際に、エージェント
150Bはいかなる結果も生成させない。オペレーショ
ン”part”の遂行の動的状態は、エージェント150B
(図50)又はエージェント150Aの実行状態の一部
分ではなく、その代わりに、エンジンプロセスの実行状
態の一部分である。オペレーション”part”の実行によ
って表明された例外は、エージェント150B又はエー
ジェント150Aによって経験されず、したがってこれ
らのエージェントに対していかなる経過もいかなる効果
も持たない。エージェント150Bは、オペレーショ
ン”part”を行う際に、エージェント150A、150
Bの間のミーティングがエージェント150Aによって
終了されたことの通知を受ける。エージェント150B
がコンタクトされるエージェントである場合、エージェ
ント150Aを参照するコンタクトであるエージェント
150Aのプロパティ”contacts”のアイテムは、エー
ジェント150Bのプロパティ”contacts”からリクエ
ストされる。オペレーション”part”のアクセスは”シ
ステム”であるため、エージェント150Bがオペレー
ション”part”を行うことをリクエストし得るのはエン
ジン132Bのみである。
【0750】図87は、ミーティングプレイス222B
によるオペレーション”part”の遂行の直後においての
エージェント150Aの状態を示している。オペレーシ
ョン”part”がいかなる結果ももたらさないので、スタ
ック3704はエンプティである。
【0751】エージェント150A、150Bの間のミ
ーティングの終了は、エージェント150B及びエージ
ェント150Bによって所有されるすべてのオブジェク
トへのエージェント150A中のすべてのリファレンス
をボイドにする。一例として、図88において、エージ
ェント150Bを既に特定化したリファレンス150A
−R1とオブジェクト3604を既に特定化したリファ
レンス150A−R2はどちらもボイドされる。同様
に、エージェント150Aを以前にリファレンスしたリ
ファレンス150B−R1及びオブジェクト3604を
既にリファレンスしたリファレンス150B−R2も、
エージェント150B中においてボイドされる。したが
って、エージェント150A、150Bは、もはや両方
を交換することはできない。エージェント150A、1
50Bが、コンタクトされるエージェントである場合、
エージェント150Aを特定化するコンタクトは、エー
ジェント150Bのプロパティ”contacts”から除去さ
れ、エージェント150Bを特定化するコンタクトは、
エージェント150Aのプロパティ”contacts”から除
去される。
【0752】大規模ワイドエリアネットワークへの本発
明の応用可能性 これまでは、オペレーション”go”又はオペレーショ
ン”send”の実行によって、エージェント150A(図
34)がミーティングプレイス220Bにそれ自身を転
送したり又はエージェント150A自身のクローンがミ
ーティングプレイス220Bに転送されたりするコミニ
ュケーションシステムが記述された。この場合、エージ
ェント150Aは、エージェント150A、150Bと
の間のミーティングを取り決めるためにミーティングプ
レイス220Bによってオペレーション”meeting”を
遂行することをリクエストする。このミーティングの間
にエージェント150A、150Bは、以下に一層詳細
に説明するように情報を交換することができる。
【0753】以上の説明は、本発明の非常に簡単な使用
に関するものであるが、本発明についてはより一般的な
使用も可能である。本明細書中及びアペンディクスAに
記述されるコンピュータ命令のセットの適応によって、
あるエージェントは、他のプレイスにそれ自身を転送さ
せまたその他のエージェント及びプレイスとミーティン
グして情報を交換するべきかを定めるために、非常に複
雑で込み入ったロジックを適用することができる。また
本発明は、以上に説明したように、2又は3のコンピュ
ータシステムのネットワークが限定される、また同質的
なネットワークにも限定されない。本明細書中及びアペ
ンディクスAに記述されるコンピュータ命令のセット
は、広いエリアのネットワークを通るエージェントを作
り出すことができるように広い面積のネットワークにわ
たってプレイスを作り出しそして位置決めするために使
用することができる。ここに管理された命令セットは、
実質的なネットワーク中にインプリメントすることがで
きるので、広い面積のネットワークは、大型のメインフ
レームコンピューター、ローカルエリアネットワーク及
びその広い面積のネットワークにおいてエージェントを
移動させることができる小型のパーソナルコンピュータ
を含む広い範囲のコンピュータシステムを組むことがで
きる。さらに2つのエージェントの間のエンタアクショ
ンとしてミーティングを定義したが、エージェントはど
んな数のミーティングにも同時に参加することができる
ので、多数のエージェントが最初に述べたエージェント
が占有するものと同一のミーティングプレイスを占有す
る限り、これらの多数のエージェントと同時に相互作用
することができる。
【0754】エージェント間の相互作用−実行モデルへ
のイントロダクション エージェント150A(図50)は、エージェント15
0Aとエージェント150Bとの間のミーティングの間
に、あるフィーチャを遂行するようにエージェント15
0Bに指示する命令を送出することによって、エージェ
ント150Bと相互作用する。あるフィーチャを遂行が
リクエストされるメカニズムについて以下に説明する。
このメカニズムについては以下にそしてアペンディクス
Aにおいて一層詳細に説明される。
【0755】実行状態は、各々のプロセスに関係してい
る。用語集において前述したように、各々の方法は、そ
の方法の実行の間ある動的状態を有する。あるプロセス
の実行状態は、1以上のフレームを含み、各々のフレー
ムは、そのプロセスの実行状態の一部分である方法の動
的状態を記録する。各々のフレームにはスタックがあり
このスタックには、オペレーションのリクエストの前に
アーギュメントを保存することができまたこのスタック
から、オペレーションの実行後に結果を復元することが
できる。現在のフレームのスタックは現在のスタックで
ある。現在のフレームは、エンジンによって実行されて
いるコンピュータ命令を含むフレームである。
【0756】あるオペレーションをリクエストする前に
リクエスタは、0又は1以上へのリファレンスを現在の
スタックに保存し、これらのオブジェクトは、それによ
って、オペレーションのためのアーギュメントとして供
給される。リクエスタは次にレスポンダへのリファレン
スを現在のスタックに保存させる。レスポンダは、リク
エストされたオペレーションを実行するようにリクエス
タによって指示されたオブジェクトである。最後に、リ
クエスタは、リクエストされたオペレーションを特定す
る識別子の実行をリクエストする。エンジンは、リクエ
ストするオペレーションを実行する際に、現在のスタッ
クの上部からオブジェクトをポップ(復元)し、そのオ
ブジェクトをオペレーションのレスポンダとなる。その
オペレーションをインプリメントする方法は、レスポン
ダがメンバであるクラス内に見出され、そして実行され
る。一実施例によれば、方法の遂行は、(i)新しいス
タックを形成し、(ii)現在のスタックからオペレー
ションのアーギュメントを復元してそれらを新しいスタ
ックに保存させ、(iii)新しいスタックを現在のス
タックとし、(iv)新しい現在のスタックからアーギ
ュメントを復元し、(v)そのインプリメントによって
結果が得られた場合、その結果を新しい現在のスタック
に保存させ、そして(vi)その結果(もしあれば)を
新しい現在のスタックから復元し、結果(もしあれば)
を以前に現在のスタックであったスッタクに保存させ
る。全体としてのオペレーション及びフィーチャの実行
については以下にそしてアペンディクスAにおいて一層
詳細に説明されている。
【0757】以下の例はオペレーションがリクエストさ
れるメカニズムを表している。前述したように、ミーテ
ィングの間に、エージェント150Aは、オペレーショ
ンを遂行するようにエージェント150Bに指示するこ
とによってエージェント150Bと相互作用する。エー
ジェント150Aは、リクエストされたオペレーション
へのアーギュメントとしてエージェント150A中に含
まれるオブジェクトを供給することによって、これらの
オブジェクトにアクセスすることをエージェント150
Bに許容する。エージェント150Bは、エージェント
150Bに含まれるあるオブジェクトを、リクエストさ
れたオペレーションの結果として生成させることによっ
て、このオブジェクトへのアクセスをエージェント15
0Aに許容する。図89−39Fは、エージェント15
0Bと相互作用して情報をこのエージェント150Bに
送出するエージェント150A(図50、図89〜図9
4には示さない)の例を示している。
【0758】図89はエンプティなスタック3902を
示しているスタック3902は、エージェント150A
(図示しない)の実行状態の現在のスタックである。図
89はスタック3902をエンプティであるものとして
示しているが必ずしもそうでなくてもよい。しかし図8
9のスタック3902のいかなるオブジェクトもこの例
によっては影響されない。”これはメッセージである”
というテキストを有する文字列3904はスタック39
02(図90)に保存される。エージェント150Bへ
のリファレンスは、スタック3902(図91)に保存
される。
【0759】エージェント150Aは、次に、”stor
e”をテキストとし、オペレーション”store”にリファ
レンスする識別子を次に実行する。識別子の実行に際し
て、あるオブジェクトすなわちエージェント150B
は、スタック3902から復元され、そのオブジェクト
は、オペレーション”store”(図92)を実行するよ
うに指示される。この例において、オペレーション”st
ore”はあるクラスについて定義される。エージェント
150Bはこのクラスのメンバであり、このクラスの方
法は、フローチャート4000(図95)によって示さ
れる。
【0760】オペレーション”store”を遂行する際
に、エージェント150Bは、ステップ4002(図9
5)においてスタック3902から文字列3904を復
元する。エージェント150Bは、オペレーション”st
ore”を遂行するものとして記述されているが、オペー
レーション”store”のエージェント150Bによる実
行の動的状態を記録するフレーム(図示しない)は、エ
ージェント150A(図示しない)の実行状態の一部で
ある。チャージズアラウワンスすなわちエージェント1
50Aのパーミットのプロパティ”charges”はそれに
よって、エージェント150Bによるオペレーション”
store”の遂行から結果する処理のために送出される。
エージェント150Bは、オペレーション”store”を
遂行するオブジェクトとなるが、これは、(i)エージ
ェント150A(図示しない)の実行状態がエージェン
ト150Bをレスポンダとして特定化し、(ii)オペ
レーション”store”の方法が、エージェント150B
がその一メンバであるクラスによって提供され、(ii
i)エージェント150Bの内部状態が、オペレーショ
ン”store”の遂行されているコンテキストを提供する
からである。
【0761】処理はステップ4002からステップ40
04に移行し、このステップ4004において、文字列
3904のコピーである文字列3904−Cが形成さ
れ、図93に示した状態となる。文字列3904、39
04−Cは、エージェント150Aの実行状態の一部分
であり、エージェント150Bによって遂行されたオペ
レーション”store”の動的状態を記録している、フレ
ーム3906内に含まれている。処理はステップ400
4からステップ4006(図95)に移行し、ここでエ
ージェント150Bは、文字列3904−Cを格納す
る。処理はステップ4006からステップ4008に移
行し、ここでエージェント150Bは、文字列3904
を廃棄し、この文字列はスタック3902からポップさ
れる。処理はステップ4008から終了ステップ401
0に移行し、ここでオペレーション”store”は成功の
うちに終了する。ステップ4008によって図94に示
した状態となる。すなわちエージェント150Aは、情
報をエージェント150Bに成功のうちに移送させてい
る。
【0762】このようにエージェント150Aは、ある
操作を遂行するようにエージェント150Bにリクエス
トすることによって、エージェント150Bと相互作用
し、エージェント150Aは、リクエストされたオペレ
ーションへのアーギュメント又は実行されたオペレーシ
ョンの結果としてオブジェクトをエージェント150B
に送出する。エージェント150Bがエージェント15
0Aのリクエストに従ってオペレーションを遂行するよ
うに以上に説明したが、あるオブジェクトによるあるフ
ィーチャの実行は、実際には、そのオブジェクトの内部
状態及びクラスによって規定されたそのオブジェクトの
コンテキスト内においてのエンジンによるフィーチャの
遂行である。特別なフィーチャの挙動は、そのフィーチ
ャを実行しているオブジェクトの内部状態に依存して変
化することができる。ここにオブジェクトの内部状態
は、オブジェクトのプロパティによって部分的に定義さ
れる。
【0763】エージェント150Bは、たとえばステッ
プ4008のあと、終了ステップ4010の前に、スタ
ック3902にオブジェクトを保存することによって、
オブジェクトをエージェント150Aに移送させること
もできる。そのオブジェクトはエージェント150Aに
よるオペレーション”store”の結果としてスタック4
010からポップされる。さらに、オペレーション”me
et”について前述対応に、エージェント150Bは、エ
ージェント150Aのリファレンスを含むため、エージ
ェント150Bは、あるオペレーションを行うようにエ
ージェント150Aに指示するとともに、そのオペレー
ションへのアーギュメントととしてエージェント150
Aにオブジェクトを供給することもできる。
【0764】本発明のコンピュータ命令セットの可搬性 本発明の多くの局面は、非常に多くの可動度及び融通性
をプロセスに許容する。第1に、本発明のコンピュータ
命令セットは、均質的又は異質的なネットワークにおい
て均質的にインプリメントされる。第2に、クラスは、
コンピュータ命令のオブジェクトとであるので、可動の
プロセスとともにネットワークを通って移動することが
できる。第3に、コンピュータ命令セットは解釈され
る。
【0765】コンピュータ命令セットの同質性 前述したように、データ及びコンピュータ命令を含むエ
ージェントは、1つのコンピュータシステムから次のコ
ンピュータシステムに移動することができ、そしてエー
ジェントがその中に含まれるどんなコンピュータシステ
ムに対しても実行可能である。さらに、エージェントが
その内部において移動することのできるネットワーク
は、均質でも異質でもよい。エージェントが可動である
ため、エージェントのプロシージャ部分を形成する各々
のコンピュータ命令をネットワークのどのコンピュータ
システムが実行しているかを正確に定めることは必ずし
もできない。従ってエージェントがその内部を通って移
動するネットワークの各々のコンピュータシステムが同
一のコンピュータ命令セットを指示していることが大切
である。
【0766】開示されたコンピュータ命令セットにおい
てオブジェクトとして表されるクラス 第1のコンピュータシステムにおいて実行されているエ
ージェントは、以前に存在していなかった新しいオブジ
ェクトクラスを作りだすことができる。エージェントは
その場合第2のコンピュータシステムにおいて実行中の
エンジンに向かって移動することができ、新しく形成さ
れたクラスのメンバの処理を含むエージェントの解釈
は、その第2のコンピュータシステム内において続けら
れる。この場合、第2のコンピュータシステムにおいて
実行されているエンジンは、新しく形成されたクラス又
はそのクラスのいかなるメンバとも以前に遭遇したこと
はない。したがって、クラスは、開示された命令セット
のオブジェクトとされるので、クラスは、1つのコンピ
ュータシステムから別のコンピュータシステムにエージ
ェントとともに移動することができる。
【0767】クラス構造 いくつかのオブジェクトは、組み合わされて、クラスす
なわちクラスオブジェクト、識別子及びクラス定義を限
定したり表現したりする。クラスオブジェクト、識別子
及びクラス定義は、クラス”class”、”Identifire”
及び”Class Definition”のメンバである。
【0768】クラスオブジェクトすなわちクラス”clas
s”のメンバは、そのフィーチャが同一のインターフェ
イス及びインプリメンテーションを持つオブジェクトセ
ットを表すオブジェクトである。オブジェクトセットは
そのクラスの”インスタンス”である。クラス”clas
s”及びクラスオブジェクトについては以下にそしてア
ペンディクスAに一層詳細に説明される。
【0769】識別子すなわちクラス”Identifire”のメ
ンバは、あるクラスをリファレンスするために、インタ
ーフェイスオブジェクト又はインプリメンテーションオ
ブジェクト内において使用される。なお、識別子は、他
の形式のオブジェクトにもリファレンスする。インター
フェイスオブジェクト及びインプリメンテーションオブ
ジェクトについては以下に一層詳細に説明する。第1の
インターフェイスオブジェクト又はインプリメンテーシ
ョンオブジェクト内の第1のクラスにリファレンスする
第1の識別子は、第1のインターフェイスオブジェクト
又はインプリメンテーションオブジェクト内の他のすべ
てのクラスにリファレンスする識別子とは異なってい
る。しかし、第2のインターフェイスオブジェクト又は
インプリメンテーションオブジェクトは、第2のクラス
にリファレンスするために、第1の識別子と同等の識別
子を使用することができる。
【0770】インターフェイスオブジェクトとインプリ
メンテーションオブジェクトとは一緒に、フィーチャす
なわちオペレーション及び属性のナンバを規定する。オ
ブジェクトの内部状態の一部を提供し、又は変更するた
めにあるオブジェクトが差し向けられる属性とある数の
コンピュータ命令を実行するためにあるオブジェクトが
差し向けられるオペレーションとの間の区別は、第1の
義的に、本発明の概念形成を助ける上に重要である。属
性とは、概念的には、あるオペレーションの特別のケー
スである。一例としてあるオブジェクトの属性に質疑す
ると、そのオブジェクトは、そのオブジェクトの内部状
態についての情報をそのオブジェクトに供給させるコン
ピュータ命令を実行するように指示される。
【0771】あるオブジェクトによるあるフィーチャの
遂行が実際には、そのオブジェクトの内部状態及びクラ
スによって規定されたそのオブジェクトのコンテキスト
においてのエンジンの特徴の遂行であることを想起され
たい。ある特別なフィーチャの挙動は、そのフィーチャ
を遂行するオブジェクトの内部状態に依存して変化する
ことができる。ここにオブジェクトの内部状態は、部分
的に、オブジェクトのプロパティによって規定される。
【0772】単一の識別子は、別々のクラスによって各
々規定される2つの別々のフィーチャを同時に特定化す
ることができる。一例としてオペレーション”add”は
クラス”ディクショナリ”によるとは異なった仕方でク
ラス”ナンバ”によって定義される。あるフィーチャを
遂行しているエンジンは、インターフェイス及びインプ
リメンテーションを選択する際に、そのフィーチャを遂
行するオブジェクトのクラスにとって適切なフィーチャ
の定義及びそれに関連した方法オブジェクトを選定す
る。換言すれば、フィーチャ定義は、レスポンダをメン
バとするクラスから検索される。ある特徴を規定する具
体的なクラスは、そのフィーチャのインターフェイスと
そのフィーチャのインプリメンテーションとの両方を規
定する。あるフィーチャを規定する抽象的なクラスは、
そのフィーチャのインターフェイスを規定し、またその
フィーチャのインプリメンテーションを定義することが
できる。
【0773】あるフィーチャの”インターフェイス”
は、そのフィーチャの遂行において消費されたアーギュ
メント及び生成した結果(もしあれば)を規定する。さ
らに、あるフィーチャによって生成されうる例外は、そ
のフィーチャのインターフェイスによって規定される。
あるクラスによって規定されたフィーチャのインターフ
ェイスは、インターフェイスオブジェクトすなわちクラ
ス定義オブジェクトのプロパティ”interface”である
クラス”interface”のメンバによって集合的に表され
規定される。クラス”interface”については以下に一
層詳細に説明する。
【0774】あるフィーチャのインプリメンテーション
はそのフィーチャの”方法”によって限定される。ある
フィーチャの方法は、取られるべき処置、すなわちその
フィーチャの実行において実行されるべきコンピュータ
命令を規定する。方法オブジェクト、クラス”方法”の
メンバは、一般に、一連の命令であり、これらの命令の
実行は、そのフィーチャの実行を構成する。あるクラス
によって規定されるか、又は受け継がれたフィーチャの
インプリメンテーションは、インプリメンテーションオ
ブジェクトすなわちクラス定義オブジェクトのプロパテ
ィ”implementation”であるクラス”implementation”
のメンバによって集合的に表され規定される。クラス”
implementation”については以下に一層詳細に説明す
る。
【0775】フィーチャの定義は、クラスのスーパーク
ラスから受け継がれる。換言すれば、あるフィーチャが
ある特別なクラスによって定義される場合、そのフィー
チャはそのクラスのサブクラスについても定義される。
しかしサブクラスはフィーチャのインプリメンテーショ
ンを再定義することができ、それによってスーパークラ
スから受け継がれたインプリメンテーションに代替され
る。しかしフィーチャはそれについて定義されたサブク
ラスのスーパークラスによってそのフィーチャが”シー
ル”されていたら、サブクラスは、スーパークラスから
受け継がれたインプリメンテーションを再定義すること
はできない。
【0776】あるクラスによって定義されるフィーチャ
は、そのクラスのクラス定義、クラス”Class Definiti
on”のメンバ、によって定義される。クラス自身は、ク
ラスオブジェクト、クラス”class”のメンバ、によっ
て表される。クラスは、識別子、クラス”Identifire”
のメンバ、によって参照される。
【0777】クラスは、アペンディクスAに構造が説明
されているクラス定義を最初に作りだすことによって作
りだされる。クラス定義は、関係するクラスオブジェク
トを作りだすためにオペレーション”makeClasses ”を
遂行するように指示される。オペレーション”makeClas
ses ”のシンタックス及び挙動はアペンディクスAに一
層詳細に説明されている。形成されたクラスオブジェク
トの特別な形式及び構造は、(i)クラス定義オブジェ
クトに含まれる情報が保存され、(ii)サイテーショ
ン4108(図96)、インターフェイスオブジェクト
4110及びインプリメンテーションオブジェクト41
12がクラスオブジェクトから導出されうる場合には重
要ではない。条件(ii)は、アペンディクスBに説明
するように、クラスオブジェクトの符号化にとって必要
である。
【0778】一実施例において、クラス定義4100
(図96)のためにオペレーション”makeClasses ”を
遂行しているエンジンは、クラス定義4100のプロパ
ティをクラスオブジェクト4102において複製するこ
とによって、クラスオブジェクト4102(図97)を
形成する。
【0779】オペレーション”makeClasses ”を遂行し
たのちに、クラス定義4100は廃棄される。クラス定
義4100のプロパティについては以下に一層詳細に説
明する。クラス定義4100のプロパティはクラスオブ
ジェクト4102において再生されるので、クラスオブ
ジェクト4102は、クラス定義オブジェクト4100
に含まれるすべての情報を含み、クラス定義オブジェク
ト4100のプロパティを導出することができる。
【0780】別の実施例において、コンパイルされたコ
ンピュータプロセスの処理効率は、サイテーション41
08、インターフェイスオブジェクト4110及びイン
プリメンテーションオブジェクト4112の情報を複製
し、クラスオブジェクト4104内にサイテーション構
造4108C(図98)、インターフェイス構造411
0C及びインプリメンテーション構造4112Cをそれ
ぞれ形成することによって実現される。解釈されるとい
うよりはむしろコンパイルされるコンピュータ命令から
成るコンピュータプロセスは、その命令が解釈されるコ
ンピュータプロセスに比べて一般により効率的であり、
すなわち、CPUクロックサイクルのより少ない数の範
囲内である与えられたタスクを遂行する。前述したよう
にコンピュータ命令は最初は人が理解しうるソースコー
ドである。コンピュータ命令がコンピュータによって実
行されうる前に、この命令は、コンピュータによって理
解されうるオブジェクトコード又はマシンコードに翻訳
されなければならない。解釈されたコンピュータプロセ
スは各々の実行されるコンピュータ命令についてこのよ
うな翻訳を必要とし、コンパイルされたコンピュータプ
ロセスは、コンパイルされたコンピュータプロセスの実
行の間にこのような翻訳を必要としないので、コンパイ
ルされたコンピュータプロセスは解釈されたコンピュー
タプロセスに比べて実質的により効率的であることがで
きる。
【0781】サイテーション構造4108C、インター
フェイス構造4110C及びインプリメンテーション構
造4112Cは、サイテーション4108、インターフ
ェイスオブジェクト4110及びインプリメンテーショ
ンオブジェクト4112に類似し、コンパイルされたコ
ンピュータ命令、たとえば集合的にC++プログラミン
グ言語を形成するコンピュータ命令から成っているオブ
ジェクトである。
【0782】それぞれサイテーション構造4108C、
インターフェイス構造4110C及びインプリメンテー
ション構造4112Cとして複製することによって、ク
ラスオブジェクト4104によって表されるクラスに関
する情報は、この情報をクラスオブジェクト4102
(図97)のサイテーション4108、インターフェイ
スオブジェクト4110及びインプリメンテーションオ
ブジェクト4112からの情報を再生する場合に比べて
一層効率的に検索することができる。サイテーション構
造4108C(図98)、インターフェイス構造411
0C及びインプリメンテーション構造4112Cに含ま
れる情報は、クラス定義4100(図96)の対応する
プロパティ内に含まれる情報と実質的に同等である。
【0783】クラスオブジェクト内に含まれる情報は、
そのクラスオブジェクトがそれから導出されたクラス定
義内に含まれる情報と実質的に同等であるので、クラス
定義の構造の説明によって、クラスオブジェクトに含ま
れる情報の性質も同時に説明されることになる。
【0784】クラス定義オブジェクト あるクラスによって定義されたフィーチャは、そのクラ
スを規定するクラス定義オブジェクトにおいて規定され
る。クラス定義オブジェクト4100の構造は図96に
示されている。クラス定義オブジェクト4100は、プ
ロパティ”citation”、”interface”、及び”impleme
ntation”を含む。サイテーション4108は、クラス
定義オブジェクト4100のプロパティ”Citation”で
あり、クラス定義オブジェクト4100によって定義さ
れたクラスを特定化するとともに、そのクラスのオーソ
リティ、タイトル及びエディションも特定する。あるサ
イテーションの構造については、以下にそしてアペンデ
ィクスAに一層詳細に説明される。インターフェイスオ
ブジェクト4110及びインプリメンテーションオブジ
ェクト4112は、それぞれクラス定義オブジェクト4
100のプロパティ”interface”及び”implementatio
n”である。
【0785】インターフェイスオブジェクト4110
は、クラス定義オブジェクト4100によって定義され
たフィーチャのインターフェイスを定義し、インプリメ
ンテーションオブジェクト4112は、クラス定義オブ
ジェクト4100によって定義されたフィーチャのイン
プリメンテーションを規定する。
【0786】インターフェイスオブジェクト インターフェイスオブジェクト4110の構造は図99
に示されている。インターフェイスオブジェクト411
0のプロパティには、プロパティ”isAbstract”、”cl
assFeatures ”、”sealedClassFeatures ”、”instan
ceFeatures”、”sealedInstanceFeatures”、”vocabu
lary”及び”superclasses”が含まれる。
【0787】ブーリアン4208は、インターフェイス
オブジェクト4110のプロパティ”isAbstract”であ
る。ブーリアン4208が”true”であれば、インター
フェイスオブジェクト4110をインターフェイスとす
るクラスは、抽象的である。さもなければクラスは具体
的である。
【0788】レキシコン4210はインターフェイスオ
ブジェクト4110のプロパティ”classFeatures ”で
ある。レキシコン4210は、そのクラスの”classFea
tures ”の定義のレキシコンである。あるクラスのクラ
スフィーチャは、クラス自身すなわちクラス定義オブジ
ェクト4100(図96)によって表されるクラスがレ
スポンダとなるフィーチャである。レキシコン4210
(図99)のキーたとえば、識別子4210Kは、クラ
スフィーチャをリファレンスする識別子である。レキシ
コン4210たとえばフィーチャ定義4210Vの値
は、クラスフィーチャを定義するフィーチャ定義であ
る。フィーチャ定義については以下に一層詳細に説明す
る。
【0789】セット4212は、インターフェイスオブ
ジェクト4110のプロパティ”sealedClassFeatures
”である。セット4212は、シールされたクラスフ
ィーチャをリファレンスする識別子たとえば識別子42
12Iのセットである。シールされたフィーチャは、サ
ブクラスが適合に対して阻止されるフィーチャである。
あるフィーチャがシールされていない場合、クラス定義
オブジェクト4100(図96)によって表されたクラ
スのサブクラスは、フィーチャのインプリメンテーショ
ンを再定義することによってそのフィーチャに適合する
ことができる。
【0790】レキシコン4214(図99)は、インタ
ーフェイスオブジェクト4110のプロパティ”instan
ceFeatures”である。
【0791】レキシコン4214は、そのクラスの”in
stance features ”の定義のレキシコンである。あるク
ラスのインスタンスフィーチャは、そのクラスのメンバ
がレスポンダであるフィーチャである。レキシコン42
14(図99)のキー(レキシコン4214のキー又は
値は示されていない)は、インスタンスフィーチャを参
照する識別子であり、レキシコン4214の値は、イン
スタンスフィーチャを定義するフィーチャ定義である。
【0792】セット4216は、インターフェイスオブ
ジェクト4110のプロパティ”sealedIntanceFeature
s ”である。セット4216は、シールされたインスタ
ンスフィーチャをリファレンスする識別子(図示しな
い)のセットである。
【0793】レキシコン4218は、インターフェイス
オブジェクト4110のプロパティ”vocabulary”であ
る。レキシコン4218は、インターフェイスオブジェ
クト4110においてリファレンスされたユーザー定義
されるクラスの識別子を、これらのクラスのサイテーシ
ョンと関連させる。レキシコン4218のキーは、識別
子、たとえば識別子4218Kであり、レキシコン42
18の値は、対応するサイテーションたとえばサイテー
ション4218Vである。サイテーションについては以
下にそしてアペンディクスAに一層詳細に説明される。
インターフェイスオブジェクト4110すなわちレキシ
コン4218のプロパティ”vocabulary”は、インター
フェイスオブジェクト4110及びクラス定義オブジェ
クト4100(図96)によって定義されたクラスの”
vocabulary”である。
【0794】リスト4220(図99)は、インターフ
ェイスオブジェクト4110のプロパティ”superclass
es”である。リスト4220は、クラスをリファレンス
する識別子たとえば識別子4220Iのリストである。
リスト4220の識別子によってリファレンスされるク
ラスは、クラス定義オブジェクト4100(図96)に
よって定義されたクラスのイメディエイトインターフェ
イススーパークラスである。リスト4220(図99)
の最後のアイテムを除く全てのアイテムは、ミックスイ
ンクラスを特定化し、リスト4220の最後のアイテム
は、フレーバを特定化する。フレーバを特定化するリス
ト4220の最後のアイテムの重要性については、フィ
ーチャを実行する上の方法オブジェクトの選定及びオブ
ジェクトのイニシアリゼーションに関連して以下に一層
詳細に説明する。
【0795】フィーチャ定義 フィーチャ定義すなわちクラス”Feature”のメンバ
は、ある特別のフィーチャのインターフェイスを定義す
る1つのオブジェクトである。フィーチャ定義4210
V(図100)のプロパティには、プロパティ”例外”
及び”isPublic”が含まれる。クラス”Feature”は抽
象的であるので、フィーチャ定義4210Vは、クラ
ス”Feature”のインスタンスではなく、そのメンバで
あり、オペレーション定義又は属性定義のどちらかであ
る。これらの定義はどちらも以下にそしてアペンディク
スAに説明される。セット4302は、フィーチャ定義
4210Vのプロパティ”例外”である。セット430
2は、定義されたにフィーチャによって表明された例外
がメンバであるクラスを各々リファレンスする識別子た
とえば識別子4302Iである。フィーチャ定義421
0Vによって定義されたフィーチャが例外を表明する場
合、その例外は、セット4302の識別子によってリフ
ァレンスされたクラスの1つのもののメンバであること
が確かめられる。例外がセット4302の識別子によっ
てリファレンスされたクラスのメンバでない場合には、
例外の代わりに、クラス”予期されない例外”のメンバ
が表明される。その他の場合には表明される。
【0796】ブーリアン4304は、フィーチャ定義の
4210Vのプロパティ”isPublic”である。ブーリア
ン4304は、フィーチャ4210Vによって定義され
たフィーチャがパブリックなフィーチャか、又はプライ
ベートなフィーチャかを、すなわち、定義されたフィー
チャのアクセスが”パブリック”であるか”プライベー
ト”であるかを指示する。各々のフィーチャは、それに
組み合わされた”アクセス”を持ち、このアクセスは、
どんなオブジェクトが、またどんな状況の下で各々のフ
ィーチャが、適切にリクエストされうるかを定める。こ
の発明の各々のフィーチャのアクセスについてはアペン
ディクスA、Bに示されている。
【0797】ブーリアン4304が”true”であれば、
そのフィーチャはパブリックである。そのアクセスがパ
ブリックであるフィーチャは、どんなオブジェクトによ
ってリクエストされてもよい。ブーリアン4304が”
false”である場合、そのフィーチャはプライベートで
ある。そのアクセスがプライベートであるフィーチャ
は、レスポンダのみによってリクエストされる。すなわ
ち、オブジェクトは、それ自身のフィーチャのみをリク
エストすることができる。システムフィーチャすなわち
そのアクセスが”システム”であるフィーチャは、すべ
てあらかじめ定義されており、したがってフィーチャ定
義によっては定義されない。
【0798】あらかじめ定義されたフィーチャは、エン
ジン内においてインプリメントされておりしたがってフ
ィーチャ定義のようなオブジェクトによっては表されな
い。開示されたあらかじめ定義されたフィーチャをイン
プリメントする本発明の一実施例のエンジンの1つのイ
ンプリメンテーションは、全体として引用によって本明
細書の一部となるマイクロフィルムアペンディクスGの
ソフトウェア中に開示されている。
【0799】属性の定義 1つの属性を定義するフィーチャ定義は、アトリビュー
ト(属性)の定義、すなわちクラス”Attribute”の1
つのメンバである。したがってクラス”Attribute”は
クラス”Feature”のサブクラスである。属性の定義は
フィーチャの定義であるから、属性の定義は、前述した
クラス”Feature”によって定義又は受け継がれたプロ
パティを引き継ぐ。さらに、属性の定義4400(図1
01)は、プロパティ”コンストレイント”及び”isSe
t ”を含む。
【0800】コンストレイント4402は、属性定義4
400のプロパティ”コンストレイント”である。コン
ストレイント4402は、属性定義4400によって定
義された属性を表すオブジェクトを制約する。以下に一
層詳細に説明するように、コンストレイントは、あるオ
ブジェクトに対して拘束を設定し、(i)そのオブジェ
クトが1つのメンバであるクラス、(ii)オブジェク
トがそのクラスのインスタンスでなければならないかど
うか、(iii)オブジェクトがゼロでありうるか否
か、及び(iv)フィーチャのリクエスタとレスポンダ
との間でオブジェクトがどのように通過されるか、を制
限することができる。
【0801】ブーリアン4404は、属性定義4400
のプロパティ”isSet ”である。ブーリアン4404
は、属性定義4400によって定義された属性が設定さ
れ質疑されうるか否かを指示する。ブーリアン4404
が”true”であれば、属性定義4400は、設定可能な
属性を規定する。そうでなければ、属性定義4400に
よって定義された属性は質疑のみされる。
【0802】オペレーションの定義 前述したようにフィーチャは、属性であるか、又はオペ
レーションである。したがってクラス”Feature”の第
2のサブクラスは、クラス”オペレーション”である。
オペレーション定義すなわちクラス”オペレーション”
のメンバは、あるオペレーションのインターフェイスを
規定する。
【0803】図102は、オペレーション定義4500
の構造を示す。オペレーション定義は、フィーチャ定義
であるから、オペレーション定義4500は、前述した
ように、クラス”Feature”によって定義又は引き継が
れるプロパティを含む。さらに、オペレーション定義
は、プロパティ”arguments”及び”result”を含む。
リスト4502は、オペレーション定義4500のプロ
パティ”arguments”である。オペレーション定義のプ
ロパティ”arguments”は、オプションであり、すなわ
ち、あるオペレーション定義のプロパティ”argument
s”は、リストでなく、ゼロであることができる。プロ
パティ”arguments”がゼロである場合、オペレーショ
ン定義4500によって定義されたオペレーションは、
可変数のアーギュメントを消費する。アーギュメントの
数が可変であるオペレーションの遂行についてはアペン
ディクスAに説明されている。逆に、プロパティ”argu
ments”がリスト4502であれば、オペレーション定
義4500によって定義されたオペレーションによって
消費されるアーギュメントの数は、ある固定された数の
アーギュメントを消費し、この数は、リスト4502の
長さに等しい。プロパティ”arguments”がエンプティ
リストであれば、オペレーションはいかなるアーギュメ
ントも消費しない。リスト4502のアイテムたとえば
コンストレイント4502Iは、オペレーション定義4
500によって定義されたオペレーションのアーギュメ
ントを制約するコンストレイントである。図103につ
いて以下に説明するように、コンストレイントは、オブ
ジェクトのクラス及び通路を制約する。
【0804】コンストレイント4504は、オペレーシ
ョン定義4500のプロパティ”result”である。コン
ストレイント4504は、オペレーション定義4500
によって定義されたオペレーションの結果を制約する。
オペレーション定義のプロパティ”result”もオプショ
ンである。
【0805】プロパティ”result”がコンストレイント
4504でなくゼロであれば、オペレーション定義45
00によって定義されたオペレーションはいかなる結果
も生じない。
【0806】コンストレイント 前述したように、コンストレイントは、あるオブジェク
トのクラス及び通路を制約する。コンストレイント44
02の構造については図103に示されている。コンス
トレイント4402のプロパティには、プロパティ”cl
assID”、”ofClass”、”isInstance”、”isOptiona
l”、及び”passage”が含まれる。
【0807】プロパティ”ofClass”及び”classID”
は、制約されたオブジェクトがそのメンバでなければな
らないクラスを特定するための別の方法である。クラス
オブジェクト4602は、コンストレイント4402の
プロパティ”ofClass”である。クラスオブジェクト4
602は、コンストレイント4402が設定されるオブ
ジェクトをメンバとするべきクラスを表している。プロ
パティ”ofClass”はオプションであるため、ゼロであ
ることができる。プロパティ”ofClass”がゼロである
場合、そのオブジェクトをメンバとするべきクラスは、
コンストレイント4402のプロパティ”classID”で
ある識別子4610によって参照される。
【0808】プロパティ”ofClass”は、クラスオブジ
ェクトであるため、コンストレイント4402が作りだ
された時において存在するクラスでしかありえない。し
かし、あるコンストレイントのプロパティが、現存する
クラスであることを要求した場合、本発明のユーザー
は、複数の独立したクラスを定義することができなくな
る。例えば、第1のクラスのフィーチャ定義においての
あるコンストレイントが、第2のクラスにおいての第2
のフィーチャ定義の第2のコンストレイントが、第1の
クラスを参照していることがあり得る。プロパティ”of
Class”に対する代替としてコンストレイント4402
のプロパティ”classID”を用意すると、ユーザーは、
複数の独立したクラスを同時に定義することができる。
【0809】ブーリアン4604は、コンストレイント
4402のプロパティ”イズインスタンス”である。ブ
ーリアン4604は、コンストレイント4402の設定
されたオブジェクトがクラスオブジェクト4602によ
って現されるクラスのインスタンスでなければならない
か否かを指示する。ブーリアン4604が”true”であ
れば、コンストレイントされたオブジェクトは、クラス
の1つのインスタンスでなければならない。さもなけれ
ば、そのクラスにおいて、コンストレイントされたオブ
ジェクトのメンバは、コンストレイント4402を満た
すには不足する。
【0810】ブーリアン4606は、コンストレイント
4402のプロパティ”イズオプショナル”である。ブ
ーリアン4606は、プロパティ”ofClass”及び”cla
ssID”にもかかわらず、ゼロオブジェクトがコンストレ
イント4402を満たすか否かを指示する。ブーリアン
4606が”true”であれば、ゼロオブジェクトはコン
ストレイント4402を満たす。本明細書中の多くの例
において示すように、ゼロオブジェクトは、割愛された
オプションのアーギュメント又はあるフィーチャの結果
の代わりにスタック中に置くことができる。
【0811】識別子4610はコンストレイント440
2のプロパティ”passage”である。識別子4610
は、コンストレイント4402が設定されたオブジェク
トがどんな仕方でパラメーターとして、すなわちアーギ
ュメント又は結果として通過するかを示している。識別
子4610は、4つの可能な値、すなわち”byRef
”、”byUnprotectedRef”、”byProtectedRef”及
び”byCopy”を有する。識別子4610をこれら4つの
うちの1つ以外の値に設定すると、クラス”Passage In
valid”のメンバである例外が表明される。
【0812】あるフィーチャのリクエスタとそのフィー
チャのレスポンダとの間のアーギュメントへの参照を通
過させる際に、エンジンは、リクエスタからのアーギュ
メントへのソースの参照を取り、レスポンダへの目的点
参照を供与する。あるレファランスを結果に導く際に、
ソースレファランスはレスポンダから取られ、目的点レ
ファランスはリクエスタに供給される。
【0813】パラメーターが通過した”byRef”である
と、ソースレファランスとデスティネーションレファラ
ンスとは互いに同一である。パラメーターが通過した”
byUnprotectedRef”であると、ソースレファランスがさ
れた保護されたレファランスである場合にクラス”レフ
ァランス保護”の例外が表明され、他の場合には、目的
点レファランスはソースレファランスである。パラメー
ターが通過した”byProtectedRef”であると、目的点レ
ファランスは、ソースレファランスによって参照された
オブジェクトへのプロテクトされたレファランスであ
る。
【0814】パラメーターが通過した”byCopy”である
と、目的点レファランスは、ソースレファランスによっ
て参照されたオブジェクトのコピーへの保護されないレ
ファランスである。パラメーターの通過についてはアペ
ンディックスAに一層詳細に説明されている。
【0815】したがってコンストレイント4402(図
101)は、オブジェクトのクラス及び通路を制限す
る。
【0816】インプリメンテーションオブジェクト 前述したように、インプリメントオブジェクト4112
(図96)は、クラス定義オブジェクト4100によっ
て定義されたクラスインプリメンテーションを定義す
る。クラスインプリメンテーションは次のものを定義す
る。(i) 定義されたクラスのメンバのイチジョウのプロ
パティ。(ii)いろいろなクラスフィーチャのそれぞれの
インプリメンテーション。(iii) あるクラスによって定
義されたインスタンスフィーチャ。(iv)クラスについて
定義された属性を設定する方法。(v) オブジェクトを規
定されたクラスから第2のクラスに変換する方法。(vi)
オブジェクトを第2のクラスから規定されたクラスに変
換する方法。(vii) クラスの定義に用いられる識別子の
定義。(viii)定義されたクラスのインプリメンテーショ
ンサブスーパークラス。
【0817】リスト4702(図104)は、インプリ
メンテーションオブジェクト4112のプロパティ”pr
operties”である。リスト4702は、インプリメンテ
ーションオブジェクト4112がインプリメントするプ
ロパティを定義する。レキシコン4702のアイテム例
えば識別子4702Iは、インプリメンテーションオブ
ジェクトによって規定されたプロパティの識別子であ
る。
【0818】レキシコン4704(図104)は、イン
プリメンテーションオブジェクト4112のプロパテ
ィ”classMethods”である。レキシコン4704は、ク
ラス定義オブジェクト4100 (図96)によって現さ
れたクラスのクラスフィーチャのための方法を提供す
る。レキシコン4704のキー、例えば識別子4704
K(図104)は、クラスフィーチャの識別子であり、
レキシコン4704の値、例えば方法オブジェクト47
04Vは、クラスフィーチャのインプリメンテーション
を規定する方法オブジェクトである。
【0819】方法オブジェクトすなわちクラス”方法”
のメンバは、フィーチャのメソッドを規定するオブジェ
クトである。あるフィーチャの方法は、そのフィーチャ
の遂行にあたってエンジン、したがってそのエンジンが
実行されているコンピューターシステムが行う特定のス
テップ連鎖である。
【0820】ある方法は、開示された命令セットがユー
ザー定義されるクラス又はフィーチャのどれかによって
申請される場合に、その開示された命令セットの言葉で
定義される。方法オブジェクトは以下に、及びアペンデ
ィックスAに、一層詳細に説明されている。
【0821】レキシコン4706は、インプリメンテー
ションオブジェクト4112のプロパティ”インスタン
スメソッド”である。レキシコン4706はインスタン
スフィーチャの識別子を対応する方法オブジェクトに関
連させ、対応するこれらの方法オブジェクトは、インス
タンスフィーチャのインプリメンテーションを規定す
る。レキシコン4706の構造は、レキシコン4704
の構造と同様であり、この説明は引用によって本明細書
の一部となる。
【0822】レキシコン4707は、インプリメンテー
ションオブジェクト4112のプロパティ”セットメソ
ッド”である。レキシコン4707は、それぞれの属性
を特定する識別子を方法オブジェクトと関連させる。レ
キシコン4707の方法オブジェクトの各々は、”セッ
ト”モディファイヤーの存在下に実行されたときに対応
する識別子の属性をインプリメントする。換言すれば、
レキシコン4707の各々の方法オブジェクトは、対応
する属性の設定のインプリメンテーションを規定す
る。”セット”モディファイアーの存在下に属性を実行
することについてはアペンディックスAに説明されてい
る。
【0823】レキシコン4708は、インプリメンテー
ションオブジェクト4112のプロパティ”フロムメソ
ッズ”である。レキシコン4708は、識別子を方法オ
ブジェクトと関連させる。各々の識別子は、あるクラス
を参照し、方法オブジェクトにに組み合わされる。この
方法オブジェクトは、レファランスされたクラスから、
クラス定義オブジェクト4100(図96)すなわちそ
のインプリメンテーションのインプリメンテーションオ
ブジェクト4112 (図104)である。クラスによっ
て定義されたクラスへの変換のインプリメンテーション
を提供する。
【0824】レキシコン4710は、インプリメンテー
ションオブジェクト4112のプロパティ”ツーメソッ
ズ”である。レキシコン4710は、識別子を方法オブ
ジェクトと組み合わせる。各々の識別子は、クラスを参
照し、方法オブジェクトと関連される。この方法オブジ
ェクトは、クラス規定オブジェクト4100 (図96)
によって規定されたクラス、すなわちそのインプリメン
テーションがインプリメンテーションオブジェクト41
12 (図104)であるクラスからの参照されたクラス
の変換のインプリメンテーションを行う。レキシコン4
707、4708及び4710の構造は、レキシコン4
704の構造と同様であり、この説明は引用によってこ
の明細書の一部分となる。
【0825】レキシコン4712は、インプリメンテー
ションオブジェクト4112のプロパティ”vocabular
y”である。レキシコン4712は、クラスを特定する
ためにインプリメンテーションオブジェクト4112に
よって使用される識別子を定義する。レキシコン471
2のキー例えば識別子4712Kは、特定のユーザー定
義されたクラスを特定するためにインプリメンテーショ
ンオブジェクト4112内において用いられる識別子で
ある。レキシコン4712の値、例えばサイテーション
4712Vは、関連した識別子によって特定されるクラ
スを対応するサイテーションである。レキシコン471
2は、インプリメンテーションオブジェクト4112中
のユーザー定義されたクラスを特定するために用いられ
る識別子とネットワークを通じてクラスを特定するため
に用いられるサイテーションとの間の翻訳を提供する。
サイテーションについては以下にまたアペンディックス
Aに詳細に説明されている。
【0826】リスト4714は、インプリメンテーショ
ンオブジェクト4112のプロパティ”superclasses”
である。リスト4714のアイテム、例えば識別子47
14Iは、クラス定義4100 (図96)によって定義
されたクラスインプリメンテーションスーパークラスを
特定する識別子である。リスト4714(図104)
は、すなわちインプリメンテーションオブジェクト41
12のプロパティ”superclasses”は、リスト4220
のアイテムでないクラスの識別子、すなわちインターフ
ェースオブジェクト4110のプロパティ”superclass
es”を含みうる。一例として第1のクラスは、第1のク
ラスのフィーチャのインプリメンテーションにおいて、
第2のクラスのフィーチャを使用する能力によって有利
となりうる。
【0827】しかし、このようなクラスをデザインする
場合、第2のクラスのフィーチャ自身が第1のクラスか
ら受け継がれることは必ずしも好ましくない。このよう
な場合、第2のクラスは、インプリメンテーションスー
パークラスとされるが、第1のクラスのインターフェー
ススーパークラスとはされない。
【0828】したがって、インプリメンテーションオブ
ジェクト4112は、クラス定義オブジェクト4110
(図96)によって規定されるクラスについて、(a) 規
定されたクラスのメンバのプロパティ、(b) クラス及び
インスタンスのフィーチャ方法、(c) 属性を設定する方
法、(d) 定義されたクラスへの、又はその定義されたク
ラスへの変換方法、(e)クラスを特定するために用いら
れる識別子及び(f) インプリメンテーションスーパーク
ラス、を定義する。
【0829】方法オブジェクト 前述したように、方法オブジェクトは、フィーチャ又は
変換を遂行する際に実行されるコンピューターの命令を
規定する。図105は方法オブジェクト4800の構造
を示す。方法オブジェクト4800のプロパティは、プ
ロパティ”procedure”及び”変数”を含む。プロシー
ジャ4802は、方法オブジェクト4800のプロパテ
ィ”procedure”である。プロシージャ4802の遂行
は、方法オブジェクト4800によってインプリメント
されたフィーチャ又は変換の実行を構成する。プロシー
ジャについては以下に詳細に説明する。
【0830】リスト4804は、方法オブジェクト48
00のプロパティ”変数”である。リスト4804は、
プロシージャ4802によって使用される変数を規定す
る。リスト4804のアイテム、例えば識別子4804
Iは、方法オブジェクト4800について規定された変
数をレファランスする識別子である。ある方法の変数の
値を示す関連されたオブジェクトは、その方法の遂行の
間、ユーザー定義されたフレームのプロパティ”変数”
としてリスト中に確認される。フレームについては以下
にそしてアペンディックスAに詳細に説明されている。
【0831】プロシージャ プロシージャ4802の構造は図106に示される。
【0832】プロシージャ4802は、オブジェクト4
902A−4902Eのリスト4902を含む。リスト
4902は、クラス”List”のメンバではなく、その代
わり、プロシージャ4802の一体的な部分である。換
言すれば、リスト4902は、プロシージャ4802の
プロパティ又はアイテムではなく、リスト4902はク
ラス”List”のメンバとして取り扱われることを供与す
るいかなるフィーチャも用意されていない。本発明の一
実施例によれば、クラス”procedure”はクラス”Lis
t”のインプリメンテーションサブクラスであるが、ク
ラス”List”のインターフェースサブクラスでない。し
たがって、クラス”List”によって規定されたフィーチ
ャは、クラス”procedure”によって受け継がれず、ク
ラス”List”によって規定された方法は、リスト490
2をつくり出して、それにアクセスするプロシージャに
よって使用することができる。
【0833】オブジェクト4902A−4902Eは、
実行されるオブジェクト、すなわち、ミックスインクラ
ス”実行”のメンバである。プロシージャ4802は、
順次すなわちオブジェクト4902A、オブジェクト4
902B、オブジェクト4902C、オブジェクト49
02D及びオブジェクト4902Eの順序でオブジェク
ト4902A−4902Eを実行することによって遂行
される。プロシージャ4802の実行の間に、予め規定
されたフレームは、オブジェクト4902A−4902
Eのうちどれが実行されているかを決めて、プロシージ
ャ4802の遂行の動的な状態を記録し保持する。予め
規定されたフレームについては以下に、及びアペンディ
ックスBに、詳細に説明されている。
【0834】サイテーション サイテーションは、各々後ろ方向又は前方向に互いにコ
ンパティブルである一連のオブジェクトを特定するオブ
ジェクトである。サイテーションはまた、シリーズ中の
特定のオブジェクト及びプロセス又はその特別なオブジ
ェクトを作り出したプロセスのオーソリティをさらに特
定する。既に説明したように、クラスはサイト(引用)
されたオブジェクトである。したがって、サイテーショ
ンは、互いに後ろ方向及び前方向にコンパティブルな一
連のクラスを特定するために用いられる。
【0835】後ろ方向及び前方向のコンパティブルにつ
いては以下に、及びアペンディックスAに、詳細に説明
される。
【0836】なおそのサイテーションが互いに前方向又
は後ろ方向コンパティブルとしてオブジェクトを識別す
るオブジェクトは、必ずしも前方向又は後ろ方向にコン
パティブルではない。一例として、それぞれのサイテー
ションによってコンパティブルであると特定された2つ
のクラス定義オブジェクトは単にコンパティブルである
ことが意図されているに過ぎない。
【0837】サイテーション5000(図107)はク
ラス”Citation”の1つのメンバである。サイテーショ
ン5000のプロパティには、プロパティ”タイト
ル”、”メージャーエディション”、”マイナーエディ
ション”、及び”オーサー”が含まれる。サイテーショ
ン5000のプロパティ”タイトル”は識別子5008
である。したがって識別子5008はサイテーション5
000のタイトルである。サイテーションのタイトルは
サイテーションによって現される連鎖をレファランスす
る。サイテーションのタイトルは、サイテーションのオ
ーソリティに関して解釈される。換言すれば、異なった
オーソリティの2つのサイテーションは同等のタイトル
を使用することができる。2つのサイテーションは、異
なったオーソリティによって双方から識別される。サイ
テーションのオーソリティは、以下に説明するプロパテ
ィ”オーサー”によって特定化される。
【0838】プロパティ”メージャーエディション”及
び”マイナーエディション”は、どちらも整数500
4、5006である。したがって、整数5004、50
06は、タイトルサイテーション5000のメージャー
エディション及びマイナーエディションである。ある連
鎖中の2つのオブジェクトの間の関係は、それらのオブ
ジェクトの相対的なメージャーエディション及びマイナ
ーエディションによって定められる。一例として、オブ
ジェクト5102、5104(図108)は、それぞれ
サイテーション5106、5108によって引用され
る。整数5110、5112は、サイテーション510
6のメージャーエディションとマイナーエディションと
をそれぞれ現す。整数5114、5116は、サイテー
ション5108のそれぞれメージャーエディションとマ
イナーエディションとを現す。
【0839】サイテーション5106のメージャーエデ
ィションである整数5110が、サイテーション510
8のマイナーエディションである整数5114よりも大
きい場合には、オブジェクト5102は、オブジェクト
5104の生成よりも後に生成されたものであり、オブ
ジェクト5104に対して後ろ方向にコンパティブルで
ある。
【0840】オブジェクト5102がオブジェクト51
04に対して後ろ方向にコンパティブルであれば、オブ
ジェクト5104は、オブジェクト5102に対して前
方向にコンパティブルである。その逆に、整数5100
が、整数5114よりも小さい場合には、オブジェクト
5104は、オブジェクト5102の生成よりも後に生
成され、オブジェクト5102に対して後ろ方向にコン
パティブルである。
【0841】整数5110、5114が等しければ、そ
れぞれオブジェクト5102、5104のマイナーエデ
ィションを表す整数5112、5116の相対値は、オ
ブジェクト5102、5104の間の関係を定める。例
えば、整数5112が整数5116よりも大きければ、
オブジェクト5102はオブジェクト5104の生成よ
りも遅れて生成され、オブジェクト5104に関して後
ろ方向にコンパティブルである。その逆に整数5112
が整数5116よりも小さければ、オブジェクト510
4はオブジェクト5102の生成よりも生成の後に生成
され、オブジェクト5102に関して後ろ方向にコンパ
ティブルである。
【0842】プロパティ”オーサー”はテレネーム50
02(図107)である。したがって、テレネーム50
02はサイテーション5000のオーサーである。テレ
ネーム5002はサイテーション5000によって特定
されるオブジェクトを生成したプロセスのネームであ
る。単一の連鎖の全てのオブジェクトは、単一のオーソ
リティのプロセスによって作り出されている。
【0843】前方向及び後方向のコンパティビリティに
ついてのより正確な定義はアペンディックスAに示され
ているが、次の例は、これらのコンセプトの意味及び有
用性を示している。アペンディックスAに定義されるよ
うに、クラス”Integer”のメンバすなわち整数は、”
加算”、”減算”、”掛け算”及び”割り算”を含むあ
る数の数学的な演算を実行することができる。クラス”
Integer”のプロパティ”Citation”は、クラス”Integ
er”を特定化する第1のサイテーションである。本明細
書中に記載されるコンピューター命令のセットをインプ
リメントし、また本明細書中に記載されるコンピュータ
ー命令のセットを使用する際に新しいクラス及び新しい
フィーチャを定義する際に、アペンディックスAに記載
されたクラス”Integer”の記述に適合するクラス”Int
eger”のメンバに依存して過度に多くのフィーチャが設
計されている。
【0844】本明細書に記述されるコンピューター命令
のセットの、以下のバージョンにおいて、乱数を生成さ
せるためにオペレーション”randomize ”を与えるよう
に第2のクラス”Integer”が設計されているものと想
定する。第1のクラス”Integer”は、第1のクラス”I
nteger”と呼ばれる。第2のクラス”Integer”のプロ
パティ”Citation”は、第2のサイテーションである。
第1のクラス”Integer”と第2のクラス”Integer”と
の間には他の差異は存在せず、第1のクラス”Intege
r”のメンバについてリクエストされたいかなるフィー
チャも第2のクラス”Integer”のメンバによって満た
されているものと想定する。したがって、第2のクラ
ス”Integer”の整数が与えられていれば、第1のクラ
ス”Integer”の記述に適合した整数に依存して設計さ
れたフィーチャは、適切に機能する。したがって、第2
のクラス”Integer”は、第1のクラス”Integer”と後
ろ方向にコンパティブルである。その逆に、第1のクラ
ス”Integer”は、第2のクラス”Integer”と前方向に
コンパティブルである。
【0845】第1のクラスと第1及び第2のサイテーシ
ョンのプロパティ”タイトル”は、等しく、どちらかの
クラス”Integer”をレファランスする。しかし、第1
及び第2のサイテーションのメージャーエディション及
びマイナーエディションは、第1のクラス”Integer”
と第2のクラス”Integer”との間の前方向及び後ろ方
向のコンパティビリティを反映している。後ろ方向及び
前方向にコンパティブルなオブジェクトがネットワーク
内において共存することを許容すると、本明細書により
記述されるコンピューター命令のセットの初期のバージ
ョンによって作り出されたオブジェクトは、本明細中に
記述されるコンピューター命令のセットの後のバージョ
ンをインプリメントするエンジン内において移動し動作
することはできる。以上の説明からわかるように、クラ
スはそれ自身に対して前方向及び後ろ方向にコンパティ
ブルである。以上の例示的な実施例は、予め限定された
クラスのコンテキストにおいて前方向及び後ろ方向のコ
ンパティビリティを示しているが、ユーザーによって定
義されたクラスは、典型的に、予め規定されたクラスよ
りもより頻繁に変化する。そのため、クラスの間の前方
向及び後ろ方向のコンパティビリティを与えることは、
ユーザーによって定義されたクラスのコンテキストにお
いては特に重要である。
【0846】すなわち、クラスは、ここに開示された命
令セットの一部分となり、したがって、可搬型であり、
エージェントとともに第1のコンピューターシステムか
ら第2のコンピューターシステムに移動することができ
る。
【0847】解釈される命令セット 前述したように、本発明の3つの要素によって、コンピ
ュータープロセスは特に可動となりかつ一般的になる。
第1に本発明のコンピューター命令セットは、均質又は
異質なネットワーク内において均質にインプリメントさ
れている。第2に、クラスは、開示されたコンピュータ
ー命令セットのオブジェクトであるため、命令セットは
拡張性でありかつ可動である。すなわち遠隔なコンピュ
ーターシステムにおいて定義されていないクラスは、可
動のコンピュータープロセスとともにこれらの変革のコ
ンピューターシステムに転送される。以下の説明は、コ
ンピューターの命令セットを特に一般的に可動にする第
3の要素に関係している。ここに開示されたコンピュー
ター命令セットのコンピューター命令は解釈される。
【0848】多くのコンピュータープロセスは最初に人
が読むことができるソースコードで書かれ、次にこのソ
ースコードがオブジェクトコードにコンパイルされ、マ
シンコードにリンクされる。このマシンコードは人には
全く読むことができない。ソースコードをマシンコード
に翻訳する主な利点は、マシンコードがソースコードを
再コンパイルすることなく、何回でもコンピューターシ
ステムのCPUによって実行されるため、翻訳を一度だ
け行えば良いことになる。しかし異質なネットワークの
2つのコンピューターシステムは、同一のマシンコード
の命令をともに実行しない。したがって第1のコンピュ
ーターシステムから第2のコンピューターシステムに向
かって移動するエージェントが、第1のコンピューター
システムにも第2のコンピューターシステムにも特異で
ない標準化された命令セットによって現されることが好
ましい。
【0849】ソースコード1回だけコンパイルする利点
がネットワークの異質性によって除かれるため、開示さ
れたコンピューター命令セットは解釈される。本明細書
中において”解釈される”という用語は、当該技術にお
いて理解されている通りに用いられている。すなわち、
一連のコンピューター命令中のコンピューター命令が読
まれマシンコードに翻訳され、一連のコンピューター命
令中の次にコンピューター命令が読まれる前にエンジン
によって実行される。開示された命令セットの命令をコ
ンパイルするのでなく解釈することによって一層大きな
一般性が得られる。第1のエージェントは第1のコンピ
ューターシステムから第2のコンピューターシステムに
向かって移動しそこで、第1のエージェントにプロシー
ジャを与える第2のエージェントと出会う。第1のエー
ジェントは次に、第1のエージェントが当初は成功する
ように設計されていなかったプロシージャを遂行する。
【0850】以下の説明は、ここに開示されたコンピュ
ーターの解釈についての説明である。以下の説明はプロ
シージャとその個々のアイテムの実行に主に向けられ、
個々のアイテムは、個々のコンピューター命令である。
【0851】プロシージャの実行 あるプロシージャは、オペレーション”do”をそのプロ
シージャが行うことをリクエストする命令を表出するこ
とによって遂行される。プロシージャの遂行を表示させ
る他のプロシージャは以下に、そしてアペンディックス
Aに説明されている。クラス”procedure”について定
義されたオペレーション”do”の遂行は、フローチャー
ト5200(図109)に示され、予め定義されたフレ
ーム5250(図110)によって現されている。予め
定義されたフレーム5250は、それぞれ整数5252
及びプロシージャ4802であるプロパティ”positio
n”及び”procedure”を含む。予め定義されたフレーム
はアペンディックスAに詳細に説明されている。予め定
義されたプロシージャ5250は、プロシージャ480
2(図106)によって遂行されるオペレーション”d
o”の動的な状態を記録する。
【0852】ステップ5202(図109)において、
整数5252は、値1に設定される。
【0853】整数5252はその実行が最も最近に開始
されたアイテムのプロシージャ4802内の位置を特定
する。処理はステップ5202(図109)からエンド
オブプロシージャテストステップ5204に移行し、こ
こで整数5252(図110)がプロシージャ4802
の長さと比較される。整数5252は、プロシージャ4
802の長さに比べて短いか、又は等しい場合に処理は
エンドオブプロシージャテストステップ5204(図1
09)からステップ5208に移行する。ステップ52
08において、プロシージャ4802(図110)内の
位置がインテジャー5252であるアイテムが遂行され
る。実行されるオブジェクトの遂行については、以下に
そしてアペンディックスAに詳細に説明される。
【0854】プロシージャ4802のアイテムが遂行さ
れると、処理はステップ5208(図109)から例外
テストステップ5210に移行する。例外テストステッ
プ5210において、エンジン解釈プロシージャ102
(図110)は、そのアイテムの遂行が成功したか、又
は例外を表明したかを定める。例外が表明された場合処
理は例外テストステップ5210(図109)から終了
ステップ5212に移行し、そこでオペレーション”d
o”が失敗に終わり、プロシージャ4802(図11
0)の遂行が終了する。
【0855】ステップ5208(図109)において整
数5252により示されるプロシージャ4802内のう
ちでアイテムの遂行によって例外が表明された場合処理
が例外テストステップ5210からステップ5214に
移行し、ここで整数5252(図110)がインクリメ
ントされる。処理はステップ5214(図109)から
エンドオブプロシージャテストステップ5204に移行
し、ここで予め定義されたフレーム5250(図11
0)のプロシージャ”position”すなわち整数5252
が前述したように応答プロシージャ4802の長さと比
較される。
【0856】整数5252(図110)がプロシージャ
4802の長さよりも大きい場合、処理はエンドオブプ
ロシージャテストステップ5204(図109)から終
了ステップ5216に移行し、そこでオペレーション”
do”は成功のうちに終了する。
【0857】このようにプロシージャ4802(図10
6及び図110)によってオペレーション”do”が遂行
されることによって前述した順序でプロシージャ480
2の各々のアイテムが実行される。
【0858】実行モデル 前述したように、あるエンジン例えばエンジン132B
(図34)の主な機能は、プロシージャの遂行すなわち
プロシージャのアイテムの実行である。本発明のここに
開示された実施例の実行モデルはプロシージャの各アイ
テムが実行されるプロセスである。ここに開示された実
施例の実行モデルの説明は6つのセクションに分けられ
る。第1にフレームの構造及び組織が説明される。フレ
ームは1つのフィーチャ又は1つの変更をインプリメン
トする方法の動的状態を記録するオブジェクトである。
第2に識別子の実行が説明される。あるフィーチャにレ
ファランスする識別子の実行は、レファランスされたフ
ィーチャの遂行を生じさせる。第3に、あるフィーチャ
又はコンバージョンをインプリメントする方法オブジェ
クトをクラスハイアラキーから選出するプロセスが説明
される。方法オブジェクトを検索するクラスオブジェク
トの構造は前述した通りである。第4にあるフィーチャ
のエスカレーションが説明される。第5にモディファイ
アーの実行が説明される。第6にセレクターの実行が説
明される。
【0859】フレーム フレームは、フィーチャ又は変更の実行の間、フィーチ
ャ又は変更をインプリメントする方法の動的状態を記録
するオブジェクトである。あるプロセスすなわちエージ
ェント又はプレイスの実行状態は、1以上のフレーム中
二記録される。1つのプロセスがつくり出されるとき、
そのプロセスはオペレーション”live”を遂行するよう
に求められる。プロセス5300内にはプロパティ”フ
レーム”がつくり出され、このプロパティ”フレーム”
は、プロセス5300の実行スレッドを現すスタック5
302である。
【0860】スタック5302はプロセス5300の実
行状態を集合的に形成するフレームを収容している。プ
ロセス5300が最初にオペレーション”live”を遂行
するように求められたとき、スタック5302の単一の
アイテムは、オペレーション”live”の動的状態を記録
するユーザーによって定義されたフレーム5304であ
る。
【0861】予め定義されたクラス”Process”、”Age
nt”、及び”Place”は抽象的であるので、本発明のこ
こに開示された実施例のプロセスはユーザーによって定
義されたクラスのインスタンスである。予め定義された
アブストラクトのクラス”Process”、”Agent”、及
び”Place”はオペレーション”live”のインプリメン
テーションを定義しない。したがって、オペレーショ
ン”live”の方法の動的状態を記録するフレーム530
4は必然的にユーザーによって定義されたフレームであ
る。ユーザーによって定義されたフレームは、オペレー
ションの実行の間ユーザーによって定義されたインプリ
メンテーションによってオペレーションの動的状態を記
録するフレームである。ユーザーによって定義されたフ
レーム5304の構造は図112に示されている。
【0862】ユーザーによって定義されたフレーム53
04(図112)のプロパティには、プロパティ”clas
s”、”responder”、”procedure”、”positio
n”、”stack”及び”variables”が含まれる。クラス
オブジェクト5402は、ユーザーによって定義された
フレーム5304のプロパティ”class”であり、これ
はスーパークラス”Object”から受け継がれたプロパテ
ィである。クラスオブジェクト5402は、ユーザーに
よって定義されたフレーム5304が1つのインスタン
スであるクラスを現し、したがってクラス”ユーザーに
よって定義されたフレーム”又はそのサブクラスを現
す。
【0863】オブジェクト5404はユーザーによって
定義されたフレーム5304のプロパティ”responde
r”である。オブジェクト5404はユーザーによって
定義されたフレーム5304がその動的状態を記録する
フィーチャ又は変更のレスポンダである。図111のコ
ンテキストにおいてオブジェクト5404は、プロセス
5300がオペレーション”live”のレスポンダである
ため、プロセス5300である。
【0864】プロシージャ5406(図112)は、ス
ーパークラス”Procedure Frame”から受け継がれたプ
ロパティである。ユーザーによって定義されたフレーム
5304のプロパティ”procedure”である。
【0865】プロシージャ5406は、その動的な状態
をユーザーによって定義されたフレーム5304が記録
するところの方法オブジェクトのプロパティ”procedur
e”である。一例として、ユーザーによって定義された
フレーム5304が方法オブジェクト4800(図10
5)の動的状態を記録する場合、プロシージャ480
2、5406は同一のプロシージャである。
【0866】整数5408は、スーパークラス”Proced
ure Frame”から受け継がれたユーザーによって定義さ
れたフレーム5304のプロパティ”position”であ
る。整数5408は、現在実行されているプロシージャ
5406のアイテムのプロシージャ5406内のポジシ
ョン(1)を特定する。一例としてプロシージャ540
6の第2のアイテムが、その実行が開始されているがま
だ終了していないプロシージャ5406のアイテムであ
る場合、整数5408の値は2となる。
【0867】ユーザーによって定義されたフレーム53
04は、2つの追加のプロパティ、すなわちプロパテ
ィ”stack”及び”変数”を有する。スタック5410
は、ユーザーによって定義されたフレーム5304のプ
ロパティ”stack”であり、ユーザーによって定義され
たフレーム5304のスタックである。プロシージャ5
406の実行の開始時に、スタック5410は、その動
的状態がユーザーによって定義されたフレーム5304
によって記録されたフィーチャ又は変更の遂行によって
消費されたアーギュメントを有している。プロシージャ
5406の遂行後には、スタック5410は、フィーチ
ャ又は変更の遂行によって生じた結果(もしあれば)を
有している。
【0868】リスト5412は、ユーザーによって定義
されたフレーム5304のプロパティ”変数”である。
リスト5412のアイテム、例えばオブジェクト541
2Iは、フレームの変数である。変数はプロシージャ5
406が遂行される間に、ユーザーによって定義された
フレーム5304の動的状態を記録する。リスト541
2(図112)のアイテムである変数は、その動的状態
がユーザーによって定義されたフレーム5304によっ
て記録されている方法オブジェクトのプロパティ”変
数”の同じ位置にあるアイテムによってレファランスさ
れる。一例として、ユーザーによって定義されたフレー
ム5304が方法オブジェクト4800(図105)の
動的状態を記録する場合、リスト4804内のポジショ
ン1にある識別子4804Iは、リスト5412内の1
に有るオブジェクト5412I(図112)をレファラ
ンスする。
【0869】このように、ユーザーによって定義された
フレーム5304は、(i) フィーチャ又は変更のレスポ
ンダ、(ii)フィーチャ又はコンバージョンをインプリメ
ントするプロシージャ、(iii) 現在実行されている命令
されているプロシージャ内の位置、(iv)フィーチャ又は
変更のアーギュメント又は結果を収容しているスタッ
ク、及び(v) ユーザーによって定義されたフレーム53
04の動的状態を記録する変数を記録することによっ
て、ユーザーによって定義されたフィーチャ又は変更の
動的状態を記録する。
【0870】実行されるオブジェクトの実行 前述したように、プロシージャの遂行は、プロシージャ
の各アイテムの順次の実行である。一般に実行されるオ
ブジェクトすなわちミックスインクラス”実行”から受
け継がれたオブジェクトの実行は、そのオブジェクトに
対するレファランスが、プロシージャの実行状態を現す
フレームのスタック、例えばスタック5410に保存さ
れる結果となる。しかし、識別子、モディファイアー及
びセレクターの実行は、この一般的な規則に対する例外
となる。
【0871】識別子 他の指示をしているモディファイアーの存在の元に実行
されるのでない限り、実行される識別子は、あるフィー
チャをレファランスしているものと想定され、したがっ
てあるオペレーションを呼び出すか、又はある属性を質
疑している。第1のプロシージャ内のある識別子の実行
は、その識別子によってレファランスされたフィーチャ
を遂行させる結果となり、それによって第2のプロシー
ジャは、識別子によってレファランスされたオペレーシ
ョン又は属性をインプリメントする方法オブジェクトの
プロシージャである。フィーチャをレファランスする識
別子の実行は、フローチャート5500(図55)に示
されている。
【0872】フローチャート5500は、図115〜図
117のコンテキストにおいて説明される。スタック5
302(図115)は、プロセス5300の実行スレッ
ドすなわちプロパティ”フレーム”である。
【0873】ユーザーによって定義されたフレーム53
04は現在のフレームである。現在のフレームは、プロ
シージャすなわちそのアイテムが現在エンジンによって
実行されているプロシージャ5406を含むフレームで
ある。換言すれば、プロセス5304の解釈においてエ
ンジンが実行する、次に実行されるオブジェクトは、ユ
ーザーによって定義されたフレーム5304のプロシー
ジャから検索される。
【0874】プロシージャ5406はユーザーによって
定義されたフレーム5304のプロパティ”procedur
e”である。整数5408は、ユーザーによって定義さ
れたフレーム5304のプロパティ”position”であ
り、その実行が最も最近にエンジン処理プロセス530
0によって開始されたアイテムのプロシージャ5406
内の位置を示している。 識別子の実行は、整数540
8によって示される位置にあるプロシージャ5406の
アイテムが識別子である場合に生じる。この例では識別
子はあるオペレーションを参照(レファランスする)す
る。識別子によってレファランスされるオペレーション
は、図115〜図117及び図55のコンテキストにお
いて、時にオペレーション”subject”と呼ばれる。識
別子の実行は、フローチャート5500(図55)に示
される。リクエスタのスタックすなわちスタック541
0は、ステップ5502においてユーザーによって定義
されたフレーム5304のアトリビュート”stack”に
質疑することによって生ずる。ユーザーによって定義さ
れたフレーム5304のプロシージャ5405(図11
5)の遂行が、整数5408によって示されたプロシー
ジャ5406内の位置に有る識別子の実行をリクエスト
するので、現在のフレームである、ユーザーによって定
義されたフレーム5304のプロパティ”responder”
は、識別子によってレファランスされるオペレーション
のリクエスタである。図115のコンテキストにおいて
レスポンダはプロセス5300である。したがってスタ
ック5410は、”リクテスタのスタック”である。
【0875】処理はステップ5502(図55)からス
タックエンプティテストステップ5504に移行する。
識別子が実行される時点において、スタック5410の
上部にあるオブジェクトは、サブジェクトオペレーショ
ンのレスポンダである。スタックエンプティテストステ
ップ5504において、エンジン解釈プロセス5300
は、スタック5410がエンプティであるか否かを定め
る。
【0876】スタック5410がエンプティであること
が定められたら、処理は、スタックエンプティテストス
テップ5504から終了ステップ5506に移行し、こ
こでクラス”Responder Missing”の例外が表明され、
サブジェクトオペレーションは失敗に終わる。しかし、
スタック5410がエンプティでない場合、処理はスタ
ックエンプティテストステップからステップ5508に
移行し、ここで、スタック5410の上部にあるオブジ
ェクト(図示しない)はスタック5410からポップ
(復元)される。スタック5410からポップされるオ
ブジェクトは、実行中の識別子のサブジェクトオペレー
ションの予定されたレスポンダであり、時には、図11
5〜図117及び図108、109のコンテキストにお
いて、”レスポンディングオブジェクト”と呼ばれる。
【0877】なお、サブジェクトオペレーションは、ユ
ーザーによって定義され、したがってユーザーによって
定義されたフレームによって現される。予め定義された
フィーチャは直接にエンジン中に表示される。換言すれ
ば、予め定義されたオペレーションを形成する命令は、
エンジン中にあるコンピュータープロセスを形成する命
令中に含まれている。実行されるアイデンティファイア
ーが予め定義されたオペレーションをレファランスする
場合、エンジン内のオペレーションを定義する命令は、
突き止められ、遂行される。
【0878】本明細書中及びアペンディックスAに記述
される予め定義されたオペレーションを規定する命令を
含む、本発明の一実施例のエンジンの1つのインプリメ
ンテーションは、本明細書に全体として引用によって合
体されるマイクロフィルムアペンディックスGのソフト
ウエアに開示されている。
【0879】処理はステップ5508からステップ55
10に移行する。ステップ5510では、サブジェクト
オペレーションを定義する定義オペレーションが検索さ
れる。定義オペレーション及びそれに関連した方法オブ
ジェクトの選択については、以下に詳細に説明する。処
理はステップ5510からアクセステストステップ55
12に移行する。アクセステストステップ5512で
は、サブジェクトオペレーションのアクセスが検査され
る。プロパティ”イズパブリック”、例えばブーリアン
4404(図101)は、定義オペレーションから検索
される。サブジェクトオペレーションのアクセスが”パ
ブリック”でない場合、すなわちプロパティ”イズパブ
リック”が”false”であり、レスポンディングオブジ
ェクト(応答オブジェクト)がユーザーによって定義さ
れたフレーム5304のプロパティ”responder”(図
示しない)でない場合、処理はアクセステストステップ
5512から終了テストステップ5514に移行する。
【0880】終了ステップ5514では、クラス”Feat
ure Unavailable”の例外が表明され、サブジェクトオ
ペレーションは失敗に終わる。しかしプロパティ”イズ
パブリック”が”true”であるか、又はレスポンディン
ブオブジェクトがユーザーによって定義されたフレーム
5304のプロパティ”responder”である場合には、
サブジェクトオペレーションのアクセスは容易に可能で
あり、処理はアクセステストステップ5512からアー
ギュメント数テストステップ5516に移行する。
【0881】アーギュメント数テストステップ5516
においては、定義オペレーションのプロパティ”argume
nts”が、定義オペレーションのアトリビュート”argum
ents”の質疑によって生成される。プロパティ”argume
nts”のリスト中のアイテム数は、スタック5410上
のオブジェクトの数と比較される。プロパティ”argume
nts”がスタック5410上に存在するオブジェクトの
数よりも大きなアーギュメントの数を規定した場合に
は、処理はアーギュメント数テストステップ5516か
ら終了ステップ5518に移行する。終了ステップ55
18においてはクラス”Argument Missing”の例外が表
明され、サブジェクトオペレーションは失敗に終わる。
【0882】なお、終了ステップ5506又は終了ステ
ップ5514において、サブジェクトオペレーションに
レファランスする識別子の実行によって表明された例外
は、サブジェクトオペレーションを終了に終わらせ、同
一の例外が表明される。
【0883】ステップ5510において検索された定義
オペレーションのプロパティ”arguments”によって示
されたアーギュメントと少なくとも同数のオブジェクト
がスタック5410に存在していれば、処理はアーギュ
メント数テストステップ5516からアーギュメントク
ラステストステップ5520に移行する。アーギュメン
トクラステストステップ5520において、エンジン解
釈プロセス5300は、ステップ5510において検索
された定義オペレーションのプロパティ”arguments”
であるリスト内の対応するコンストレントをアーギュメ
ントのポジションにおいてスタック5410の各々のオ
ブジェクトが満たすか否かを定める。
【0884】一例として、定義オペレーション4500
のプロパティ”arguments”であるリスト4502(図
102)のコンストレント4502Iは、スタック54
10の上部のオブジェクトに対応する。コンストレント
の構造は以上にまたアペンディックスAに詳細に説明さ
れている。
【0885】以上に詳細に説明したように、コンストレ
ントは、(i) オブジェクトがメンバであるべきクラス、
(ii)オブジェクトが特定されたクラスのインスタンスで
もあるべきか否か、及び(iii) 特定されたクラスと関係
なしにゼロがコンストレントを満たすか否か、を特定す
ることによって、オブジェクトを制限する。あるコンス
トレントに対応するスタック5410の各々のオブジェ
クトは、そのオブジェクトがアーギュメントクラステス
トステップ5520中のコンストレントを満たすか否か
を定めるために点検される。スタック5410のどれか
のオブジェクトが定義オペレーションのプロパティ”ar
guments”の対応するコンストレントを満たさない場合
には、処理はアーギュメントクラステストステップ55
20から終了ステップ5520に移行し、そこでクラ
ス”Argument Invalid”の例外が表明される。
【0886】逆に、スタック5410上の各々のオブジ
ェクトが対応するコンストレントを満たす場合、処理は
アーギュメントクラステストステップ5520からステ
ップ5524に移行する。ステップ5524において、
レスポンディングオブジェクトのコンテキストにおいて
サブジェクトオペレーションのインプリメンテーション
を定義する方法オブジェクトが選定される。方法オブジ
ェクトは、以下に一層詳細に説明するように、レスポン
ディングオブジェクトがそのメンバであるクラスの中か
ら選出される。
【0887】処理はステップ5524からステップ55
26に移行し、そこで新しいユーザーによって定義され
たフレーム5602(図116)が作り出される。レス
ポンディングオブジェクト5604は、新しいユーザー
によって定義されたフレーム5602のプロパティ”re
sponder”とされる。ステップ5524において選択さ
れた方法オブジェクトのプロパティ”procedure”は、
プロシージャ5606であり、新しいユーザーによって
定義されたフレーム5602の、プロパティ”procedur
e”とされる。ユーザーによって定義されたフレーム5
602のプロパティ”position”は、値が1に等しい整
数5608となるようにイニシアライズされる。
【0888】プロパティ”stack”は、エンプティスタ
ック5610にイニシアライズされる。
【0889】新しいユーザーによって定義されたフレー
ム5602が作り出されたら、処理はステップ5526
からステップ5528に移行し、そこでオブジェクト
は、ユーザーによって定義されたフレーム5304のス
タック5410から、ユーザーによって定義されたフレ
ーム5602のスタック5610に移動する。オブジェ
クトはスタック5410からスタック5610に移動
し、その際に、オブジェクトの順序が保たれる。換言す
れば、スタック5410上の最も上方のアーギュメント
は、スタック5610の上部にあり、スタック5410
の最も下方のアーギュメントは、スタック5610の底
部にある。各々のオブジェクトは、検索された定義オペ
レーションのプロパティ”arguments”の対応するコン
ストレントのプロパティ”passage”に従って移動す
る。
【0890】プロパティ”passage”が”byRef ”であ
れば、オブジェクトへのレファランスは、スタック54
10からポップされ、スタック5610に保存される。
したがって新しいユーザーによって定義されたプロシー
ジャ5606は、リクエストしているユーザーによって
定義されたフレーム5304のプロシージャ5406と
同一の、アーギュメントへのアクセスを持つ。
【0891】プロパティ”passage”が”byProtectedRe
f”であれば、オブジェクトへのレファランスは、スタ
ック5410からポップされ、保護されたレファランス
とされ、スタック5610に保存される。したがって、
新しいユーザーによって定義されたフレーム5602の
プロシージャ5606は、アーギュメントを変更するこ
とができず、したがってアーギュメントは”リードオン
リー”となる。
【0892】プロパティ”passage”が”byUnprotected
Ref”であれば、リクエストするユーザーによって定義
されたフレーム5304のスタック5410上のアーギ
ュメントへのレファランスが保護されているか否かが定
められる。このチェックは、アペンディックスAに一層
詳細に記述されているアトリビュート”isProtected”
を質疑することによって行う。レファランスが保護され
ている場合、クラス”レファランス保護”の例外が表明
される。その他の場合、レファランスはスタック541
0からポップされ、スタック5610に保存される。し
たがって新しいユーザーによって定義されたフレーム5
602のプロシージャ5606には、保護されないレフ
ァランスによって追加されたアーギュメントを変更する
ためにアクセスが与えられる。
【0893】プロパティ”通過”は”バイコピー”であ
れば、スタック5410上に見出されるオブジェクトの
コピーが作られ、そのコピーへの保護されないレファラ
ンスは、新しいユーザーによって定義されたフレーム5
602のスタックに保存される。したがって、プロシー
ジャ5606には、コピーによって通過させられるがア
ーギュメント自身にはアクセスを持たないアーギュメン
トのコピーへの無制限のアクセスが与えられる。
【0894】したがって、新しいユーザーによって定義
されたフレーム5602は完全になり、サブジェクトオ
ペレーションの遂行の直前のサブジェクトオペレーショ
ンの動的状態を表したものになる。処理はステップ55
28(図55)からステップ5530に移行し、ここ
で、新しいユーザーによって定義されたフレーム560
2は、スタック5302(図117)に保存されること
によってプロセス5300の実行状態に含められる。し
たがって、スタック5410と、そのプロパティ”proc
edure”がプロシージャ5406である方法オブジェク
トとは、それぞれ最早現在のスタックでも現在の方法で
もなくなる。スタック5610は、現在のスタックであ
り、そのプロパティ”procedure”がプロシージャ56
06である方法オブジェクトは、現在の方法である。処
理はステップ5530(図55)からステップ5532
に移行する。ステップ5532において、ユーザーによ
って定義されたフレーム5602のプロシージャ560
6(図117)が遂行される。 サブジェクトオペレー
ションの遂行とユーザーによって定義されたフレーム5
602の生成とを生じさせる識別子がプロシージャ54
06の遂行によって実行されるので、さらに別のオペレ
ーションを生じさせる識別子が、ユーザーによって定義
されたフレーム5602のプロシージャ5606の遂行
によって引き起こされ、それによって、別のフレームが
作り出され、これらの別のフレームは、後にスタック5
302に保存され、そのプロシージャが後に遂行され
る。このように、プロセス5300の実行状態は、実行
のスレッドを現すプロセス5300のプロパティ”フレ
ーム”であるスタック5302上の1以上のフレームに
よって現される。
【0895】プロシージャ5606の遂行の後に、ユー
ザーによって定義されたフレーム5602は、サブジェ
クトオペレーションの遂行直後のサブジェクトオペレー
ションの動的状態を現している。
【0896】ユーザーによって定義されたフレーム56
02のスタック5610は、サブジェクトオペレーショ
ンの遂行によって生じた結果(もしあれば)を有してい
る。処理はステップ5532(図55)からステップ5
534に移行し、ここでサブジェクトオペレーションを
規定する定義オペレーションのプロパティ”result”
が、定義オペレーションのアトリビュート”result”を
質疑することによって生成される。処理はステップ55
34から結果テストステップ5536に移行し、ここで
クラス”コンストレント”のプロパティ”result”のメ
ンバシップが定められる。換言すれば、プロパティ”re
sult”は、コンストレントであってゼロでないことが検
査される。プロパティ”result”がコンストレントであ
り、ゼロでない場合に、サブジェクトオペレーション
は、結果を生じ、処理は結果テストステップ5536か
らスタックエンプティテストステップ5538に移行す
る。
【0897】スタックエンプティテストステップ553
8において、エンジン解釈プロセス5300(図11
7)は、スタック5610にオブジェクトが存在するか
否かを定める。スタック5610がエンプティであれ
ば、処理はスタックエンプティテストステップ5538
(図55)から終了ステップ5540に移行する。終了
ステップ5540では、クラス”Result Missing”の例
外が表明される。スタック5610(図117)がオブ
ジェクトを含む場合、処理はスタックエンプティテスト
ステップ5538(図55)から結果クラステストステ
ップ5542に移行する。結果クラステストステップ5
542において、エンジン解釈プロセス5300(図1
17)は、定義オペレーションのプロパティ”result”
であるコンストレントをスタック5610上のオブジェ
クトが満たすか否かを定める。オブジェクトがコンスト
レントを満たさない場合、処理は結果クラステストステ
ップ5542(図55)から終了ステップ5544に移
行する。終了ステップ5544において、クラス”Resu
lt Invlid”の例外が表明される。オブジェクトがコン
ストレントを満たす場合、処理は結果クラステストステ
ップ5542からステップ5546に移行する。
【0898】ステップ5546では、オブジェクトは、
前述した定義オペレーションのプロパティ”passage”
に従って、ユーザーによって定義されたフレーム560
2のスタック5610(図117)からユーザーによっ
て定義されたフレーム5304のスタック5410に移
動する。
【0899】処理はステップ5546(図114)から
ステップ5548に移行する。
【0900】結果テストステップ5536においてプロ
パティ”result”がゼロである場合、処理は直接ステッ
プ5548に移行する。ステップ5548では、新しい
ユーザーによって定義されたフレーム5602がスタッ
ク5302(図116)からポップされ、廃棄される
(図115)。したがってスタック5410とそのプロ
パティ”procedure”がプロシージャ5406である方
法オブジェクトとが、再びそれぞれ現在のスタックと現
在の方法になる。処理はステップ5548(図114)
からステップ5550に移行し、そこでプロシージャ5
406の実行が、整数5408をインクリメントし、整
数5408によって示された位置においてプロシージャ
5406のアイテムを実行することによって継続され
る。したがって、あるオペレーションにレファランスす
る識別子の実行によって、そのオペレーションが遂行さ
れる。
【0901】定義オペレーション及び方法の選択 前述したように、サブジェクトオペレーションを一緒に
規定する定義オペレーションと方法オブジェクトとは、
それぞれステップ5510、5524において選択され
る(図113)。定義オペレーション及び方法の選択
は、図97について前述した本発明の実施例のコンテキ
ストにおいて説明される。この実施例においてはクラス
オブジェクト4102は、クラス定義4100のプロパ
ティ”Citation”、”interface”、及び”implementat
ion”を複製することによって生成される。選択された
定義オペレーションはインターフェースオブジェクトか
ら選択され、選択された方法オブジェクトはインプリメ
ンテーションオブジェクトから選択される。定義オペレ
ーション及び方法オブジェクトは、各々フローチャート
5700(図118)に従って選択される。 適切な定
義オペレーション及び方法オブジェクトは、レスポンデ
ィングオブジェクトがその1つのインスタンスであるク
ラスに依存する。レスポンディングオブジェクトは、そ
れがクラスオブジェクトであるか否か、すなわちクラ
ス”class”の1つのメンバであるか否かについて、ク
ラステストステップ5702において検査される。
【0902】レスポンディングオブジェクトはクラスオ
ブジェクトであれば、処理はクラステストステップから
クラスルックアップステップ5704に移行する。クラ
スルックアップステップ5704において、レスポンデ
ィングオブジェクトのプロパティ”classFeatures”と
レスポンディングオブジェクトのインターフェーススー
パークラスが以下に説明するようにサーチされる。クラ
スフィーチャのレキシコンすなわちプロパティ”class
フィーチャーズ”はサブジェクトオペレーションの識別
子すなわち実行識別子に適合するキーについてサーチさ
れる。またクラスルックアップステップ5704におい
て、レスポンディングオブジェクトのプロパティ”クラ
スメソッズ”とレスポンディングオブジェクトのインプ
リメンテーションスーパークラスが、実行識別子に関連
した方法オブジェクトについて、以下に述べるようにサ
ーチされる。
【0903】処理はクラスルックアップステップ570
4からテストステップ5706に移行し、ここで、現在
のプロセス例えばプロセス5300(図115)を解釈
するエンジンは、定義オペレーション及び方法オブジェ
クトがクラスルックアップステップ5704において見
出されるか否かを定める。サブジェクトオペレーション
を定義する方法オブジェクト及び定義オペレーションが
見出されたら、処理はテストステップ5706から終了
ステップ5708に移行し、そこでセレクションプロセ
スが終了する。その他の場合には、処理はテストステッ
プ5706からインスタンスルックアップステップ57
10に移行する。さらに、レスポンディングオブジェク
トがクラスオブジェクトでない場合、すなわちクラス”
class”のメンバでない場合、処理はクラステストステ
ップ5702から直接インスタンスルックアップステッ
プ5710に移行する。
【0904】インスタンスルックアップステップ571
0において、レスポンディングオブジェクトが1つのイ
ンスタンスであるクラスのインターフェースオブジェク
ト及びそのクラスのインターフェーススーパークラス
(複数)のインターフェースオブジェクト(複数)のプ
ロパティ”インスタンスフィーチャーズ”が、実行識別
子に関連したフィーチャ定義についてサーチされる。さ
らに、インスタンスルックアップステップ5710にお
いて、レスポンディングオブジェクトがその1つのイン
スタンスであるクラスのインプリメンテーションと、そ
のクラスのインプリメンテーションスーパークラス(複
数)のインプリメンテーション(複数)のプロパティ”
インスタンスメソッズ”が、実行識別子に関連した方法
オブジェクトについてサーチされる。スーパークラス
(複数)が、サーチされる順序については以下に説明す
る。
【0905】レスポンディングオブジェクトがクラスオ
ブジェクトである場合には、クラス方法は、クラスフィ
ーチャをインプリメントし得るに過ぎず、またインスタ
ンス方法はインスタンスフィーチャをインプリメントし
得るに過ぎない。
【0906】処理はインスタンスルックアップステップ
5710から第2のテストステップ5712に移行し、
そこでエンジンは定義オペレーションと方法オブジェク
トとがインスタンスルックアップステップ5710に見
出されるか否かを定める。実行識別子によって特定され
た定義オペレーションと方法オブジェクトが見出された
ら、処理は第2のテストステップ5712から終了ステ
ップ5716に移行する。終了ステップ5716におい
て、選択プロセスは成功のうちに終了する。さもなけれ
ば、処理は第2のテストステップ5712から終了ステ
ップ5714に移行する。終了ステップ5714におい
ては、クラス”Feature Unavailable”の例外が表明さ
れる。
【0907】引用によって全体が本明細書の一部とされ
るアペンディックスAに開示されている予め定義された
ハイアラキーの一部は、適切な定義オペレーション及び
方法オブジェクトのために種々のクラスがサーチされる
順序を示すために図119、図120に示されている。
図119、図120は、予め定義されたインターフェー
スハイアラキーの一部を示すが、インプリメンテーショ
ンハイアラキーをサーチする方法は、インターフェース
ハイアラキーのサーチに関連して以下に説明される。
【0908】ハイアラキーグラフ5800(図119)
はクラス”List”を現すクラスオブジェクト5802を
示している。クラス”List”は、それぞれクラスオブジ
ェクト5804、5806によって現されたミックスイ
ンスーパークラス”ordered”及びフレーバスーパーク
ラス”コレクション”から引き継がれる。クラス”コレ
クション”はクラスオブジェクト5808によって現さ
れるスーパークラス”Object”から引き継がれる。
【0909】クラス”Object”は、クラスオブジェクト
5810によって現されるミックスインスーパークラ
ス”レファランスド”から引き継がれる。図119、図
120において(i) 二重線は、フレーバクラスとフレー
バクラスのサブクラスとの間に引かれ、(ii)単一の実線
は、ミックスインクラスとミックスインクラスのサブク
ラスとの間に引かれ、(iii)斜線は、あるクラスとその
クラスのインスタンスとの間に引かれている。前述した
ように、インターフェースオブジェクト又はインプリメ
ンテーションオブジェクトのプロパティ”superclasse
s”の最後のアイテムはミックスインクラスを特定すべ
きではない。この理由については以下に説明する。
【0910】例示の目的のために、フローチャート57
00(図118)のコンテキストにおいてレスポンディ
ングオブジェクトが、クラス”List”を現すクラスオブ
ジェクト5802(図119)であるものと想定する。
クラスルックアップステップ5704(図118)にお
いて、クラスオブジェクト5802のプロパティ”inte
rface”であるインターフェースオブジェクトのプロパ
ティ”classFeatures”は、実行中の識別子をキーとす
る関連についてサーチされる。このような関連が見出さ
れたら、識別子と関連されたフィーチャ定義はサブジェ
クトオペレーションのインターフェースを定義する定義
オペレーションであり、選択され、定義オペレーション
のサーチは終了する。
【0911】そのような関連が見出されなかったら、ク
ラス”List”の第1のスーパークラスすなわちクラス”
ordered ”のインターフェースオブジェクトが、適切な
定義オペレーションの場合と同様の仕方でサーチされ
る。適切に特定された定義オペレーションが見出されな
かったら、インターフェースハイアラキーのデプスファ
ーストウオークにおいてクラス”ordered ”のスーパー
クラスがサーチされる。クラス”ordered ”はスーパー
クラスを持たないので、クラス”List”のインターフェ
ースオブジェクトすなわちクラス”コレクション”のプ
ロパティ”superclasses”の次のアイテムが前述したよ
うにサーチされる。サーチされる最後のスーパークラス
はミックスインクラスではないので、フレーバスーパー
クラスのサーチの前に各々のミックスインスーパークラ
スをサーチする。
【0912】したがって、クラス”List”について前述
したように、図119のクラスオブジェクトの残りの部
分が次の順序すなわちクラス”Object”を現すクラスオ
ブジェクト5808、クラス”レファランス”を現すク
ラスオブジェクト5810、の順序でサーチされる。
【0913】サーチオペレーションのインプリメンテー
ションを規定する適切な方法オブジェクトのサーチは、
2つの例外を除いて、適切な定義オペレーションのサー
チについて前述した通りである。第1に、あるクラスの
インプリメンテーションオブジェクトのプロパティ”ク
ラスメソッド”が、適切に特定された方法オブジェクト
についてサーチされる。第2に、クラス”List”の、イ
ンターフェーススーパークラスではなく、インプリメン
テーションスーパークラスが、適切に特定された方法オ
ブジェクトについてサーチされる。
【0914】単一のフレーバスーパークラスがサーチさ
れる最後のスーパークラスであることの重要性は、次の
仮説的な例を検討すれば明らかとなる。一例として、フ
レーバ”コレクション”を現すクラスオブジェクト58
06とクラス”コレクション”のスーパークラスを現す
クラスオブジェクトとが、ミックスインクラス”ordere
d (順序あり)”を現すクラスオブジェクト5804の
サーチの前にサーチされるものと想定する。さらに、ク
ラス”Object”を現すクラスオブジェクト5808が、
クラス”ordered ”によって適合された1以上の特徴、
すなわち、クラスオブジェクト5804によってその方
法が提供された1以上の特徴を規定していると想定す
る。この仮説的な例においては、クラスオブジェクト5
808が常にクラスオブジェクト5804の前にサーチ
されるので、クラスオブジェクト5808によって定義
された特徴についての方法は、常にクラスオブジェクト
5808に見出される。したがってクラスオブジェクト
5804がクラスオブジェクト5808によって定義さ
れたフィーチャに適合することは不可能であろう。した
がってあるフレーバのフレーバスーパークラスは、常に
定義オペレーション又は方法についてサーチされるフレ
ーバの最後のスーパークラスである。
【0915】引き続き、フローチャート5700(図1
18)のコンテキストにおいてレスポンディングオブジ
ェクトが、クラス”List”を現すクラスオブジェクト5
802(図119、図120)である、この例示的な例
において、ハイアラキーグラフ5850(図120)
は、インスタンスルックアップステップ5710(図1
18)においてサーチされるクラスを示している。
【0916】定義オペレーションとクラスオブジェクト
5802(図120)のインスタンスフィーチャに対す
る方法オブジェクトのサーチは、前述したクラスフィー
チャの方法オブジェクト及び定義オペレーションに対す
るサーチと次の2つの点で異なっている。第1に、ある
クラスのインターフェースオブジェクトのプロパティ”
インスタンスフィーチャーズ”は、適切に特定された定
義オペレーションについてサーチされ、あるクラスのイ
ンプリメンテーションオブジェクトのプロパティ”イン
スタンスメソッズ”は、適切に特定された方法オブジェ
クトについてサーチされる。第2に、レスポンディング
オブジェクトすなわちクラスオブジェクト5802がそ
の1つのメンバであるクラス(複数)がサーチされる。
【0917】クラスをサーチする方法は、前述したもの
と同様でありここでは繰り返さない。適切な定義オペレ
ーション及び方法オブジェクトが見出されるか、又は以
下に述べる全てのクラスがサーチされるかするまで、以
下のクラスが、以下の順序においてサーチされる。(i)
クラスオブジェクト5802が1つのインスタンスであ
るクラス”class”を現すクラスオブジェクト580
2。(ii)クラス”class”のミックスインスーパークラ
スである、クラス”インターチェンジド”を現すクラス
オブジェクト5816。(iii) ミックスインクラス”イ
ンターチェンジド”のミックスインスーパークラス、し
たがってクラス”class”のミックスインスーパークラ
スであるクラス”変化しない”を現すクラスオブジェク
ト5818。(iv)クラス”class”のミックスインスー
パークラスであるクラス”サイテッド”を現すクラスオ
ブジェクト5814。(v) クラス”class”のフレーバ
スーパークラスであるクラス”Object”を現すクラスオ
ブジェクト5808。(vi)クラス”Object”のミックス
インスーパークラスであるクラス”レファランスド”を
現すクラスオブジェクト5810。
【0918】図119、図120のクラスのサーチにお
いて、実行識別子に関連した定義オペレーション又は方
法オブジェクトが見出されない場合には、レスポンディ
ングオブジェクトについてオペレーションが定義され
ず、クラス”Feature Undefind”の例外が表明される。
【0919】前述したように、レスポンディングオブジ
ェクトがクラスでない場合には、クラスルックアップス
テップ5704(図118)はスキップされる。一例と
して、レスポンディングオブジェクトが、クラス”Lis
t”のインスタンスであるリスト5802Aであれば、
ハイアラキーグラフ5800(図119)に示されたク
ラス(複数)が前述したようにインスタンスルックアッ
プステップ5712(図118)においてサーチされ
る。
【0920】本発明の一実施例において、インターフェ
ースハイアラキーとインプリメンテーションハイアラキ
ーとは互いに独立である。換言すれば、あるクラスのイ
ンターフェーススーパークラスは、必ずしもそのクラス
のインプリメンテーションスーパークラスではなく、あ
るクラスのインプリメンテーションスーパークラスは、
必ずしもそのクラスのインターフェーススーパークラス
ではない。このかかる実施例において、オペレーショ
ン”makeClasses”の遂行の間にいかなるフィーチャ定
義もインプリメンテーションなしにはならないようにす
ることをエンジンが確実にする。オペレーション”make
Classes”が失敗に終わり、クラス”classException”
の例外が表明されるのは、次の条件の下である。すなわ
ちこの条件とは、定義されるクラスが抽象的ではなく、
定義されるクラスが、ある定義されたフィーチャをイン
プリメントする方法を定義せず、又はその方法をインプ
リメンテーションスーパークラスから受け継がないこと
である。すなわち、インターフェースハイアラキーにお
いて定義されたフィーチャはインプリメンテーションハ
イアラキーにおいて見出される方法によって常にインプ
リメントされる。
【0921】したがって、サブジェクトオペレーション
のための適切な定義オペレーション及び方法オブジェク
トは、前述したようにクラスハイアラキーをサーチする
ことによって見出されるか、又は例外が表明される。
【0922】エスカレーション 前述したように、スーパークラスからあるフィーチャを
受け継ぐクラスは、そのフィーチャに対する新しいイン
プリメンテーションを供与することによって、そのフィ
ーチャのインプリメンテーションに代替される。しかし
この新しいインプリメンテーションは、スーパークラス
によって提供されたインプリメンテーションを使用する
必要はない。あるオブジェクトは、現在のクラスのイミ
ディエイトスーパークラスの特別の1つ、又は任意の1
つによってインプリメントされたフィーチャを、このフ
ィーチャのエスカレートによって遂行するように指示さ
れる。
【0923】アペンディックスAに一層詳細に説明する
ように、現在のクラスは、現在実行されている方法を供
与するクラスである。
【0924】あるフィーチャは、エスカレートされるべ
きフィーチャをレファランスする資格のある識別子を実
行するか、又は”エスカレート”セレクタを実行するこ
とによってエスカレートされる。資格のある識別子は、
フィーチャのインプリメンテーションを与えるべきクラ
スを特定するプロパティ”クオリファイアー”を含
む。”エスカレート”セレクタの実行によってあるフィ
ーチャがエスカレートされる場合、いかなるイミディエ
イトインプリメンテーションスーパークラスも、そのフ
ィーチャのインプリメンテーションを供与しうる。
【0925】なお、資格のある識別子のプロパティ”ク
オリファイアー”にアクセスを与えるいかなる属性も定
義されていない。資格のある識別子が作り出され、その
資格のある識別子が破壊されるまで変化しないままに保
たれる場合に、資格のある識別子のプロパティ”クオリ
ファイアー”が設定される。フィーチャのエスカレーシ
ョンについてはアペンディックスAに詳細に説明されて
いる。
【0926】エスカレーションはオブジェクトのイニシ
アライゼーションにおいて特に重要な役割をする。アペ
ンディックスAは、本発明の各々の予め定義されたクラ
スのイニシアライゼーションの記述を含む。オブジェク
トのイニシアライゼーションは、リストのイニシアライ
ゼーションすなわちクラス”List”のインスタンスの例
示的なコンテキストにおいて説明されるフローチャート
5900(図121)に示されている。オペレーショ
ン”initialize”は、クラス”List”の各々のイミディ
エイトインプリメンテーションスーパークラスについて
エスカレートされる。前述したように、ハイアラキーダ
イアグラム5800(図119)は、クラス”List”の
インターフェーススーパークラス(複数)を現してい
る。さらにハイアラキーダイアグラム5800は、クラ
ス”List”のインプリメンテーションスーパークラス
(複数)の、正確に現している。
【0927】新しいリストがインスタンスであるクラス
すなわちクラス”List”によって定義されたオペレーシ
ョン”initialize”は、ステップ5902において遂行
される。オペレーション”initialize”の遂行は、現在
のスタックから0又は1以上のアーギュメントを消費す
る。処理はステップ5902からステップ5904に移
行する。
【0928】ステップ5904においては、インプリメ
ンテーションオブジェクトのアトリビュート”superCla
sses”を質疑することによって、クラス”List”のイン
プリメンテーションオブジェクトのプロパティ”superC
lasses”が生成される。前述したように、あるインプリ
メンテーションオブジェクトのプロパティ”superClass
es”は、クラスをレファランスする識別子のリストであ
る。処理はステップ5904からeach superclass ステ
ップ5906に移行する。
【0929】each superclass ステップ5906及び次
のステップ5910は、前記のようにして形成されたプ
ロパティ”superClasses”の各々のスーパークラスがエ
スカレートステップ5908において処理されるループ
を形成する。すなわち、各々のスーパークラスにおい
て、処理は、for each superclass ステップ5906か
らエスカレートステップ5908に移行する。エスカレ
ートステップ5908においてスーパークラスは、フロ
ーチャート5900に従ってオペレーション”initiali
ze”を遂行するように指示される。したがって、フロー
チャート5900は、インプリメンテーションハイアラ
キーのデプスファーストウオークにおいて反復的に遂行
される。一例として、エスカレートステップ5908に
おいて”イニシアライズ”がエスカレートされた第1の
イミディエイトスーパークラスは、(i) ステップ590
2において”イニシアライズ”を実行し、(ii)ステップ
5904においてスーパークラスのイミディエイトイン
プリメンテーションスーパークラス(複数)を生成さ
せ、(iii) for each superclass ステップ5906及び
次のステップ5910によって定義されたループにおい
てスーパークラスの各々のスーパークラスに(イニシア
ライズ)をエスカレートする。
【0930】処理はエスカレートステップ5908から
次のステップ5910を経てfor each superclass ステ
ップ5906に移行する。したがってプロパティ”スー
パークライシス”であるリストに見出される順序で、イ
ニシアライゼーションが、各々のイミディエイトインプ
リメンテーションスーパークラスにエスカレートされ
る。クラス”List”のスーパークラスによるオペレーシ
ョン”initialize”の各々の実行は、現在のスタックか
ら0又は1以上のアーギュメントを消費し、スーパーク
ラスのイミディエイトインプリメンテーションスーパー
クラスのイニシアライゼーションにエスカレートされ
る。
【0931】for each superclass ステップ5906及
び次のステップ5910のループに従ってクラス”Lis
t”の各々のイミディエイトインプリメンテーションス
ーパークラスがオペレーション”initialize”を遂行し
た後は、処理はfor each superclass ステップ5906
から終了ステップ5912に移行する。
【0932】終了ステップ5912において、クラス”
List”によって定義されたオペレーション”initializ
e”の遂行は成功のうちに終了する。したがって、新し
いリストが1つのメンバである各々のクラスは、前述し
たインスタンスルックアップステップ5710(図11
8)においてクラスがサーチされた順序で、オペレーシ
ョン”initialize”を遂行する。
【0933】モディファイアの実行 識別子の実行については以上に、そしてアペンディック
スAに詳細に説明されている。しかしモディファイアの
存在又は識別子の性質によって、識別子の実行が変更さ
れることがある。例えば、アペンディックスAに述べた
モディファイア代替ルールに従って、識別子がある属性
を特定した場合、オペレーション”getAttribute”が遂
行され、只1つのアーギュメントとして、実行中の識別
子が消費される。種々のモディファイアと、識別子の実
行に対する効果とについては、アペンディックスAに説
明されており、この説明は引用によって本明細書の一部
とされる。
【0934】セレクタの実行 セレクタはその実行によってある特別のアクションが引
き起こされるプリミティブである。各々のセレクタはア
ペンディックスAに説明されているが、幾つかのセレク
タについては本明細書中において説明される。一例とし
て、セレクタ”break ”、”continue”及び”succeed
”は、プロシージャの遂行のコンテキストにおいて、
以下に説明される。セレクタ”self”の実行によって、
現在のオブジェクトに対するレファランス、すなわち現
在の方法のレスポンダ、が現在のスタックに保存され
る。図117のコンテキストにおいて、現在のオブジェ
クトは、フレーム5602のプロパティ”responder”
であるオブジェクト5604であり、現在のスタック
は、フレーム5602のプロパティ”stack”であるス
タック5610であり、現在の方法は、そのプロパテ
ィ”procedure”がプロシージャ5606である方法オ
ブジェクトである。
【0935】セレクタ”Process”の実行によって、現
在のプロセスに対するレファランスが、現在のスタック
に保存される。図117において、現在のプロセスはプ
ロセス5300である。現在のプロセスがエンジンプレ
イスであれば、0が現在のスタックに保存される。
【0936】したがって、本発明に従って作り出された
エンジンは、プロシージャのアイテムを順次実行するこ
とによって、プロシージャを実行する。プロシージャの
アイテムの実行は、このアイテムが識別子である場合、
その識別子によってレファランスされるフィーチャを、
前述した状態の元に実行させる。遂行されるプロシージ
ャの動的状態はフレームに記録される。ユーザーによっ
て定義されるフィーチャをインプリメントする方法の動
的状態は、ユーザーによって定義されたフレームに記録
される。フィーチャのインターフェースとインプリメン
テーションとをそれぞれ定義するフィーチャ定義及び方
法オブジェクトは、レスポンディングオブジェクトのメ
ンバであるクラスから選択される。現在のクラスのスー
パークラスによって提供されたインプリメンテーション
は、フィーチャのエスカレートによって遂行される。一
例として、オペレーション”initialize”は、反復的に
エスカレートされ、レスポンダは1つのメンバである各
々のクラスによって供与される方法が遂行される。モデ
ィファイアは、識別子の実行を変更するために用いられ
る。セレクタは、普通に実行される複雑なアクションが
単一のオブジェクトの実行によって生ずるようにするた
めの簡単な手段を提供する。これらのフィーチャは、こ
こに開示されたコンピューター命令セットにおいて高度
の機能性及び一般性を組合せによって提供する。
【0937】コントロールコンストラクト 前述したように、エージェントは、どのプレイス(1個
以上)に移動し、そしてどのエージェント(1又は複
数)と会合するかを定めるための複雑なロジックを適応
することができる。ここに開示された命令セットは、そ
の命令セットからなるプロシージャにおいて複雑で込み
入ったロジックを実現することを可能にする高度の一般
性を供与する複数の命令を供与する。
【0938】このように高度の一般性を与える以下のコ
ントロールコンストラクトについて説明する。(i) リソ
ース及びリソース割当フィーチャは、あるプロシージャ
の実行の間リソースの共有もしくは排他的コントロール
を取得し保持する能力をプロセスに与える。(ii)デシジ
ョンハンドリングフィーチャは、プロセスがプロシージ
ャを条件的に実行することを可能にする。(iii) 例外ハ
ンドリングフィーチャは、プロセスが例外の表明を検出
してそれに対してアクションをとることを可能にする。
(iv)ルーピングフィーチャはプロシージャを反復遂行し
てそれにより反復的なタスクを効率的に実行することを
可能にする。
【0939】リソース及びリソース割当フィーチャ 以上に説明しアペンディックスAに説明するように、1
以上のプロセスを処理するエンジンはそれを同時に行っ
ている。一例として、エンジン132B(図50)は、
エージェント150A及び150Bを同時に処理する。
エンジン132Bは、エンジン132Bによって実行さ
れるエージェント150Aによる第1のプロシージャの
遂行の間のどの点でも、エージェント150Aによる第
1のプロシージャの遂行を一時的に中止しておくことが
できる。エンジン132Bはその場合、エージェント1
50Bのために第2のプロシージャを自由に実行するこ
とができる。エンジン132Bは、第2のプロシージャ
の遂行のどの点においても、エージェント150Bのた
めに第2のプロシージャの実行を一時的に中断し、エー
ジェント150Aのために第1のプロシージャの実行を
再開することができる。このようにしてエンジン132
Bは、エージェント150A、150Bを同時に処理す
る。
【0940】アペンディックスAに説明するように、あ
るエンジンは、予め規定されたフィーチャの大部分をア
トミックに実行する。エンジンが別のプロセスを処理す
る目的のために、そのフィーチャが成功のうちに終了し
またそのフィーチャが成功のうちに終了するか、又は失
敗するまで、そのフィーチャの実行を中止しておくこと
を拒んだ場合、そのフィーチャはアトミックに遂行され
る。あるフィーチャがアトミックに遂行される場合、そ
のフィーチャの遂行の間いかなる他のプロセスも解釈さ
れないので、現在のプロセスを除くいかなるプロセスも
リソースを変更したり操作したりすることはできない。
【0941】アトミックに遂行されないあらかじめ提示
されたフィーチャは、アペンディックスAに説明されて
いる。
【0942】ユーザーによって定義されたフィーチャを
アトミックに遂行するメカニズムは存在しない。すなわ
ち、ユーザーによって定義されたフィーチャ又はアトミ
ックに遂行されないあらかじめ定義されたフィーチャの
遂行の間にあるプロセスがリソースの共有又は排他的な
使用を取得し得るようにするためのメカニズムが必要で
ある。ユーザーは、クラス”リソース”によって定義さ
れアペンディックスAに詳細に説明されているオペレー
ション”use”の使用によってリソースの共有又は排他
的な使用が得られるようにプロセスを構成することがで
きる。オペレーション”use”の遂行の動的状態はクラ
ス”ユーズフレーム”のユーズフレームによって記録さ
れる。ユーズフレームは付録Bに記載されている。
【0943】実行されるオブジェクトの条件的な実行 実行されるオブジェクトは、オペレーション”if”又は
オペレーション”either”の遂行によって条件的に実行
される。応答する実行されるオブジェクトによるオペレ
ーション”if”の遂行は、ブーリアンオブジェクトを消
費し、ブーリアンオブジェクトの値が”true”であれ
ば、実行されるオブジェクトを遂行する。なを、プロシ
ージャは、実行されるオブジェクト、すなわちミックス
インクラス”エグゼキューティッド”のメンバであり、
プロシージャの遂行については図109、図110を参
照して以上に説明したとおりである。
【0944】フローチャート6000(図122)は、
ミックスインクラス”エグゼキューティッド”によって
規定されたオペレーション”if”のインプリメンテーシ
ョンを示している。オペレーション”if”を遂行する際
に、応答する実行されるオブジェクトは、ステップ60
02において、現在のスタックからブーリアンオブジェ
クトをポップする。処理はステップ6002からブーリ
アンテストステップ6004に移行し、ここで、ステッ
プ6002でポップされたブーリアンオブジェクト
が、”true”と比較される。ブーリアンオブジェクト
が”true”であれば、処理は、ブーリアンテストステッ
プ6004から6006に移行し、ここで応答する実行
されるオブジェクトが遂行される。処理はステップ60
06から、例外テストステップ6010に移行し、ここ
で、オペレーション”if”を実行しているエンジンが、
応答する実行されるオブジェクトをステップ6006で
実行したことによって例外が表明されたか否かを定め
る。
【0945】ステップ6006において例外が表明され
た場合、処理は例外テストステップ6010から終了ス
テップ6008に移行する。更に、ブーリアンオブジェ
クトが”false”である場合、処理はブーリアンテスト
ステップ6004から直接に終了ステップ6008に移
行する。終了ステップ6008ではオペレーション”i
f”が成功のうちに終了する。ステップ6006におい
て例外が表明された場合、処理は例外テストステップ6
010から終了ステップ6012に移行し、ここで、応
答する実行されるオブジェクトがステップ6006にお
いて遂行されたことによって表明された例外が表明さ
れ、それによってオペレーション”if”が失敗となる。
オペレーション”if”の遂行の動的状態は、あらかじめ
規定されたフレームすなわち以上に説明したアペンディ
クスBにおいて説明されるクラス”あらかじめ定義した
フレーム”の1つのメンバ、によって記録される。2つ
の実行されるオブジェクトのうちの1つが選択され、オ
ペレーション”either”の使用によって実行される。実
行されるオブジェクトは、ブーリアンオブジェクトの値
が”true”であれば、第2の実行されるオブジェクトと
ブーリアンオブジェクトとを消費し、応答する実行され
るオブジェクトの実行を生じさせ、ブーリアンオブジェ
クトの値が”false”であれば第2の実行されるオブジ
ェクトの実行を生じさせることによって、オペレーショ
ン”either”を遂行する。フローチャート6100(図
123)は、ミックスインクラス”エグゼキューティッ
ド”によって規定されたオペレーション”either”のイ
ンプリメンテーションを示している。
【0946】応答する実行されるオブジェクトは、ステ
ップ6102において第2の実行されるオブジェクトを
現在のスタックからポップする。処理は、ステップ61
02からステップ6104に移行し、ここで応答する実
行されるオブジェクトは現在のスタックからブーリアン
オブジェクトをポップする。処理はステップ6104か
らブーリアンテストステップ6106に移行し、ここ
で、ステップ6104においてポップされたブーリアン
が”true”と比較される。ブーリアンオブジェクトが”
true”であれば処理はブーリアンテストステップ610
6からステップ6108に移行し、ここで応答する実行
されるオブジェクトが遂行される。
【0947】その逆に、応答するブーリアンオブジェク
トの値が”false”であれば、処理はブーリアンステッ
プ6106からステップ6110に移行し、ここで第2
の実行されるオブジェクトが遂行される。処理はステッ
プ6108又はステップ6110から終了ステップ61
12に移行する。終了ステップ6112では、オペレー
ション”either”が終了し、ステップ6108又はステ
ップ6110において表明された例外(もしあれば)が
表明される。オペレーション”either”を遂行する実行
されるオブジェクトの動的状態は、あらかじめ定義され
たフレームによって記録される。
【0948】1以上の実行されるオブジェクトから選択
され、オペレーション”select”の遂行によって遂行さ
れる。オペレーション”select”は、クラス”Object”
によって定義され、遂行されるべき特別な実行オブジェ
クトを決定するオブジェクトによって遂行される。図1
25、図126は、オペレーション”select”のインタ
ーフェースを示している。図125は、オブジェクト6
204によって遂行されるオペレーション”select”の
動的状態を記録するあらかじめ定義されたフレーム62
00の状態を示している。あらかじめ定義されたフレー
ム6200が、プロセス(図示しない)の実行状態の一
部分であり、オペレーション”select”の遂行直前にお
いて示されている。
【0949】オブジェクト6204はレスポンダであ
る。あらかじめ定義されたフレーム6200は、オブジ
ェクト6204を特定するプロパティ”responder”を
持たない。その代わりに、オブジェクト6204は、現
在のプロセスのプロパティ”フレームズ”であるスタッ
ク(図示しない)上の現在のフレームの直下のフレーム
(図示しない)のプロパティ”procedure”内のその位
置によって、レスポンダとして特定される。オブジェク
ト6204は、その位置が、そのフレームのプロパテ
ィ”position”よりも1だけ少ないプロシージャ(図示
しない)のアイテムである。一例として、ユーザーによ
って定義されたフレーム5602(図117)のレスポ
ンダは、その位置が整数5408の値よりも1だけ少な
いプロシージャ5406のアイテムである。
【0950】スタック6202(図125)は現在のス
タックである。スタック6202は、オペレーションの
アーギュメント、及び1以上の対のオブジェクト及びそ
れに関連した実行されるオブジェクトのアーギュメント
を表現する、文字”M”によって位置が示されたマーク
である。一例としてスタック6202は、上部からマー
クの直上のところにかけて、オブジェクト6206と実
行されるオブジェクト6208とオブジェクト6210
と実行されるオブジェクト6212とゼロ6214と実
行されるオブジェクト6216とを収容している。オブ
ジェクト6206、6210及びゼロ6214はそれぞ
れの実行されるオブジェクト6208、6212及び6
216に関連されている。
【0951】オペレーション”select”のインプリメン
テーションは、フローチャート6300(図124)に
よって示される。ステップ6302において、オブジェ
クト6206ー7616(図125)及びマークはスタ
ック6202からポップされる。処理はステップ630
2からステップ6304に移行し、ここで、オブジェク
ト6206、6210及びゼロ6214をキーとし、そ
れぞれの実行されるオブジェクト6208、6212及
び6216を関連された値とするディクショナリーが形
成される。処理はステップ6304からステップ630
6に移行する。ステップ6306において、その関連さ
れたキーがレスポンディングオブジェクト6204に等
しい実行されるオブジェクトが、ステップ6304にお
いて形成されたディクショナリーから検索される。ディ
クショナリーのキーの与えられた場合のディクショナリ
ーの値の検索についてはアペンディクスAに一層詳細に
説明されている。
【0952】処理はステップ6306からテストステッ
プ6308に移行する。テストステップ6308ではオ
ペレーション”select”を実行しているエンジンが、実
行されるオブジェクトがディクショナリーから成功のう
ちに検索されているか否かを定める。応答するオブジェ
クト6204に等しいキーに組み合わされた実行される
オブジェクトがディクショナリー内において見いだされ
検索された場合、処理はステップ6314に移行する。
ステップ6314では検索された実行されるオブジェク
トが遂行される。処理はステップ6314から例外テス
トステップ6316に移行しここでエンジンは、実行さ
れるオブジェクトの遂行がステップ6314において成
功のうちに完了したか否かを定める。
【0953】ステップ6314において実行されるオブ
ジェクトの遂行が失敗し、例外が表明された場合、処理
は例外テストステップから終了ステップ6320に移行
する。終了ステップ6320では例外が表明され、オペ
レーション”select”は失敗となる。しかし検索された
実行されるオブジェクトがステップ6314において成
功のうちに遂行された場合、処理は例外テストステップ
6318から終了ステップ6316に移行する。
【0954】終了ステップ6316ではオペレーショ
ン”select”は成功のうちに終了する。
【0955】テストステップ6308では、レスポンデ
ィングオブジェクト6204に等しいキーが、ステップ
6304において形成されたディクショナリーに見いだ
されなかった場合、処理はテストステップ6308から
ステップ6310に移行する。ステップ6310では、
関連するキーがゼロであるディクショナリー内に含まれ
る実行されるオブジェクト、例えばゼロ6214に組み
合わされたオブジェクト6216、が検索される。処理
はステップ6310から第2のテストステップ6312
に移行し、ここでエンジンは、実行されるオブジェクト
がステップ6310において成功のうちに検索されたか
否かを定める。ゼロに等しい組み合わされたキーを有す
るディクショナリー内の実行されるオブジェクトが見い
だされ、成功のうちに検索されたら、処理は第2のテス
トステップ6312からステップ6314に移行しここ
で前述のように実行されるオブジェクトが遂行される。
【0956】ステップ6310において実行されるオブ
ジェクトが検索されなかった場合、オブジェクト620
4に等しいキー及びゼロに等しいキーがディクショナリ
ーにおいて見いだされなかったので、処理は第2のテス
トステップ6312から終了ステップ6316に移行す
る。前述したように、終了ステップ6316では、オペ
レーション”select”は成功のうちに終了する。すなわ
ちレスポンディングオブジェクトに等しいキーに組み合
わされた実行されるオブジェクトがなく、又はゼロに組
み合わされている場合、オペレーション”select”は、
ディクショナリー内のいかなる実行されるオブジェクト
を遂行することなく、成功のうちに終了する。
【0957】図126は、レスポンディングオブジェク
ト6204によるオペレーション”select”の遂行の直
後においてのセレクトフレーム6200の状態を示して
いる。オペレーション”select”の遂行は、図126の
エンプティスタック6202に示すようにいかなる結果
も生じていない。
【0958】実行されるオブジェクトは、オペレーショ
ン”while”の遂行によって条件が満たされるまで繰り
返し実行される。オペレーション”while”の遂行の動
的状態は、あらかじめ定義されたフレーム6402(図
127)に記録される。実行されるオブジェクト640
4は、オペレーション”while”のレスポンダであり、
応答する実行されるオブジェクトである。
【0959】実行されるオブジェクト6404は、あら
かじめ定義されたフレーム6402のプロパティ”proc
edure”である。実行されるオブジェクト6406は、
あらかじめ定義されたフレーム6402のプロパティ”
プレコンディション”であり、いかに説明するようにア
ーギュメントとして消費される実行されるオブジェクト
である。
【0960】オペレーション”while”は、アーギュメ
ントとして実行されるオブジェクト6406を消費す
る、応答する実行されるオブジェクト6404によって
遂行される。オペレーション”while”の遂行は、フロ
ーチャート6500(図128)によって示されてい
る。ステップ6502において、実行されるオブジェク
ト6406は現在のスタックからポップされる。処理は
ステップ6502からステップ6504に移行し、ここ
で実行されるオブジェクト6406が遂行される。実行
されるオブジェクト6406がステップ6504で遂行
されることによって、応答する実行されるオブジェクト
6404が遂行されるか否かを示すブーリアンが現在の
スタックに保存される。
【0961】処理はステップ6504から例外テストス
テップ6506に移行し、ここで、オペレーション”wh
ile”を遂行するエンジンが、実行されるオブジェクト
6406の遂行によって例外が表明されるか否かを定め
る。実行されるオブジェクト6406の遂行が例外を表
明する場合、処理は例外テストステップ6506から終
了ステップ6508に移行し、ここで、オペレーショ
ン”while”によって例外が表明され、オペレーショ
ン”while”は失敗となる。しかし、実行されるオブジ
ェクト6406が成功のうちに遂行された場合、処理は
例外テストステップ6506からステップ6510に移
行する。
【0962】ステップ6510では、ブーリアンが現在
のスタックからポップされる。処理はステップ6510
から真テストステップ6512に移行する。真テストス
テップ6512では、現在のスタックからポップされた
ブーリアンが”true”と比較される。もしもブーリアン
が”true”であれば、処理は真テストステップ6512
からステップ6514に移行し、ここで応答する実行さ
れるオブジェクト6406が遂行される。処理はステッ
プ6514から第2の例外テストステップ6516に移
行し、ここでエンジンは、実行されるオブジェクト64
06が例外を表明するか否かを定める。
【0963】実行されるオブジェクト6406の遂行に
よってステップ6514で例外が表明されると、処理は
第2のテストステップ6516から継続テストステップ
6522に移行する。継続テストステップ6522で
は、表明された例外は、以下にまたアペンディクスAに
説明されるセレクタ”継続”の実行によって表明された
内部的な例外”継続”と比較される。以下に一層詳細に
説明するように、セレクタ”継続”の実行は、1つのプ
ロシージャの反復的な遂行を終了させ、そのプロシージ
ャの新しい反復的な遂行を開始させる。ステップ651
4において表明された例外が、内部的な例外”継続”で
あれば、処理は継続テストステップ6522から、前述
したステップ6504に移行する。
【0964】その反対に、ステップ6514において表
明された例外が内部的な例外”継続”でなければ、処理
は継続テストステップ6522からブレークテストステ
ップ6524に移行する。ブレークテストステップ65
24では、ステップ6514において表明された例外
が、以下にそしてアペンディクスAに説明されるセレク
タ”ブレーク”の実行によって表明された内部的な例
外”ブレーク”と比較される。以下に一層詳細に説明す
るように、セレクタ”ブレーク”の実行によって、プロ
シージャの反復的な遂行が、そのプロシージャの新しい
反復的な遂行を開始することなしに終了される。ステッ
プ6514において表明された例外が内部的な例外”ブ
レーク”であれば、処理は継続テストステップ6522
から終了ステップ6520に移行し、ここでオペレーシ
ョン”while”は、以下に説明するように成功のうちに
終了する。
【0965】その逆に、ステップ6514において表明
された例外が内部的な例外”ブレーク”でない場合、処
理はブレークテストステップ6524から終了ステップ
6518に移行する。終了ステップ6518では、ステ
ップ6514において表明された例外が表明され、オペ
レーション”while”を失敗に終わらせる。
【0966】しかし、実行されるオブジェクト6404
の遂行が成功し、ステップ6514において例外が表明
されなかった場合には、処理は第2の例外テストステッ
プ6516から、ステップ6504に移行し、そこで実
行されるオブジェクト6406は再び遂行される。
【0967】ステップ6504、6506、6510、
6512、6514、6516、6522の遂行は、実
行されるオブジェクト6406の遂行が”false”の値
を有するブーリアンを生じるか、又はステップ6508
又はステップ6518において例外が表明されるまで反
復される。実行されるオブジェクト6406の遂行が”
false”であるブーリアンを生じた場合には、処理は真
テストステップ6512から終了ステップ6520に移
行し、そこでオペレーション”while”は成功のうちに
終了する。従ってプロシージャ6406は、実行される
オブジェクトの遂行が”true”のブーリアンを生じてい
る間は反復して遂行される。
【0968】このように、オペレーション”if”、”ei
ther”、”select”、及び”while”が、ここに開示さ
れたコンピュータ命令のセットに、実質的な決定能力を
供与する。
【0969】例外ハンドリングフィーチャ アペンディクスAにおいて詳細に説明するように、オペ
レーション”do”を遂行する実行されるオブジェクト
は、それによって遂行され、この実行されるオブジェク
トの遂行が例外を表明した場合、オペレーション”do”
によって例外が表明され、オペレーション”do”が失敗
となる。例外の伝搬は、前述したようにフローチャート
5200(図109)のステップ5210、5212に
示されている。実行されるオブジェクトの遂行の失敗
は、一般に、実行を直接に、又は間接に引き起こす実行
されるオブジェクトの失敗を生じさせる。あるプロセス
のオペレーション”live”を失敗させる例外は、プロセ
スの破壊を生ずる。従って例外の伝搬を検出してこれを
防止するための命令を用意することが好ましい。
【0970】第2の実行されるオブジェクトの遂行を引
き起こす、第1の実行されるオブジェクト、例えばプロ
シージャは、第2の実行されるオブジェクトによって表
明される例外を”キャッチ”することによって、第2の
実行されるオブジェクトによって表明された例外による
第1の実行されるオブジェクトの失敗を防止することが
できる。
【0971】例外を”キャッチ”することは、例外の表
明を検出し、このような事態において特定のアクション
がとられることを指示することである。第2の実行され
るオブジェクトによって表明され、第1の実行されるオ
ブジェクトによってキャッチされる例外は、第1の実行
されるオブジェクトを失敗に終わらせない。
【0972】実行されるオブジェクトの遂行によって表
明される例外は、オペレーション”do”の場所でオペレ
ーション”catch”の使用によって実行されるオブジェ
クトの遂行を生じさせることによってcatchされる。オ
ペレーション”catch”によって遂行が生ずる、実行さ
れるオブジェクトは、実行されるオブジェクトがオペレ
ーション”do”を遂行しているかのように遂行される
が、実行されるオブジェクトの遂行によって表明された
例外がオペレーション”catch”を失敗に終わらせるこ
とはない。この場合には、現在のスタックに例外が保存
され、結果として返却される。
【0973】オペレーション”catch”のインターフェ
ースは、図129、図130によって示される。図12
9は、キャッチフレーム6602の状態を示し、このキ
ャッチフレーム6602は、実行されるオブジェクト6
604によるオペレーション”catch”の遂行の直前に
ミックスインクラス”エグゼキューティッド”によって
定義されたオペレーション”catch”の動的状態を記録
する。キャッチフレーム6602は、あるプロセス(図
示しない)の実行状態の一部である。実行されるオブジ
ェクト6604は、応答する実行されるオブジェクトで
あり、キャッチフレーム6602のプロパティ”proced
ure”である。オペレーション”catch”が遂行される
と、スタック6606の頂点にあるクラスオブジェクト
6608である単一なアーギュメントが消費される。ス
タック6606は現在のスタックである。スタック66
06は、現在のプロセスのプロパティ”フレームズ”で
あるスタック(図示しない)のキャッチフレーム660
2の下方にあるもっとも上方のユーザーによって定義さ
れるフレーム(図示しない)のプロパティ”stack”で
ある。クラスオブジェクト6608は、クラス”例外”
又はそのサブクラスを表す。
【0974】オペレーション”catch”のインプリメン
テーションは、フローチャート6700(図131)に
よって示される。クラスオブジェクト6608は、スタ
ック6606からポップされることによって、ステップ
6702において消費される。
【0975】処理はステップ6702からステップ67
04に移行し、そこで実行されるオブジェクト6604
は遂行される。処理はステップ6704から例外テスト
ステップ6706に移行し、ここで、オペレーション”
catch”の遂行を行うエンジンは、実行されるオブジェ
クト6604の遂行が例外を表明するか否かを定める。
実行されるオブジェクト6604の遂行が例外を表明し
なかった場合、処理は例外テストステップ6706から
ステップ6708に移行する。ステップ6708では、
スタック6606にゼロが保存される。処理はステップ
6708から終了ステップ6710に移行し、そこでオ
ペレーション”catch”を、成功のうちに終了する。
【0976】実行されるオブジェクト6604をステッ
プ6704で実行することが失敗し、例外が表明された
ら、処理は例外テストステップ6706からメンバテス
トステップ6712に移行する。メンバテストステップ
6712では、エンジンは、クラスオブジェクト660
8によって表されたクラス中のステップ6704におい
て表明される例外のメンバシップをチェックする。表明
された例外がクラスオブジェクト6608によって表さ
れるクラスのメンバでない場合、処理はメンバテストス
テップ6712から終了ステップ6714に移行する。
終了ステップ6714では、ステップ6706において
表明された例外が、オペレーション”catch”によって
表明され、オペレーション”catch”は失敗となる。
表明された例外がクラスオブジェクト6608によって
表されたクラスのメンバである場合、処理はメンバテス
トステップ6712からステップ6716に移行する。
ステップ6716では、ステップ6704で表明された
例外がスタック6606に保存され、処理はステップ6
716から終了ステップ6710に移行する。前述した
ように、終了ステップ6710では、オペレーション”
catch”は成功のうちに終了する。従って表明された例
外はキャッチされ、オペレーション”catch”は成功
し、表明された例外が伝搬されることはない。
【0977】図130は、プロシージャ6604による
オペレーション”catch”の遂行直後のキャッチフレー
ム6602の状態を示している。
【0978】スタック6606の上部には、例外661
0があり、この例外6610が、プロシージャ6604
の遂行が失敗した場合にプロシージャ6604の遂行に
よって表明される例外である。この場合、例外6610
は、クラスオブジェクト6608(図129)によって
表されるクラスのメンバである。プロシージャ6604
の遂行が成功した場合に、スタック6606の例外66
10(図130)の場所にあるのはゼロ(図示しない)
である。従ってここに開示されたコンピュータ命令セッ
トは、例外を検出し取り扱うための手段を備えている。
【0979】ルーピングフィーチャ ここに開示されたコンピュータ命令セットは、実行され
るオブジェクト例えばプロシージャを繰り返し遂行し
て、反復タスクの遂行を容易にするための手段を備えて
いる。前述したオペレーション”while”は、ルーピン
グフィーチャの一例である。そのほかに、実行されるオ
ブジェクトは、オペレーション”loop”及び”repeat”
を用いて繰り返し遂行される。
【0980】オペレーション”loop”は、応答する実行
されるオブジェクトを繰り返し遂行することによって、
実行されるオブジェクトを不特定に遂行する。実行され
るオブジェクトによるオペレーション”loop”の遂行
は、アーギュメントを消費せず、いかなる結果も生じな
い。実行されるオブジェクトによるオペレーション”re
peat”の遂行は、整数アーギュメントを消費し、消費さ
れるアーギュメントの整数の値に等しい回数だけ、応答
する実行されるオブジェクトを実行し、いかなる結果も
生じない。オペレーション”loop”又はオペレーショ
ン”repeat”の間に応答する実行されるオブジェクトが
遂行されることはここでは実行されるオブジェクトの”
反復的な遂行”と呼ばれる。
【0981】フローチャート6800(図132)は、
応答する実行されるオブジェクトによって遂行されるオ
ペレーション”loop”のインプリメンテーションを示し
ている。応答する実行されるオブジェクトはステップ6
802において遂行される。処理はステップ6802か
ら例外テストステップ6804に移行し、そこで、オペ
レーション”loop”を遂行するエンジンは、応答する実
行されるオブジェクトが例外を表明するか否かを定め
る。
【0982】例外が表明されなかった場合すなわち応答
する実行されるオブジェクトが成功のうちに遂行された
場合、処理は例外テストステップ6804からステップ
6802に移行し、そこで応答する実行されるオブジェ
クトが再び遂行される。しかし、応答する実行されるオ
ブジェクトの遂行が例外を表明した場合には、処理は例
外テストステップ6804から継続テストステップ68
06に移行する。継続テストステップ6806におい
て、ステップ6802で応答する実行されるオブジェク
トの遂行によって表明された例外は、内部的な例外”継
続”と比較される。 内部的な例外”継続”及び”ブレ
ーク”は、以下に及びアペンディクスAに一層詳細に説
明されるセレクタ”継続”及び”ブレーク”の実行によ
ってそれぞれ表明される。これらの例外は、内部的な例
外”継続”及び”ブレーク”がそれに応答してアクショ
ンを行うエンジンによって検出されるので、”内部的”
と呼ばれる。第3の内部的な例外すなわちセレクタ”成
功”の実行の結果として表明される内部的な例外”成
功”については以下に説明する。内部的な例外は、オペ
レーション”catch”によってはキャッチされず、オペ
レーション”live”を失敗に終わらせることによって以
下に説明する場合を除いてプロセスの破壊を生じさせ
る。
【0983】ステップ6802において、実行されるオ
ブジェクトの遂行によって表明された例外が内部的な例
外”継続”であると、処理は継続テストステップ680
6からステップ6802に移行し、そこで応答する実行
されるオブジェクトが再び遂行される。そうでなく、表
明された例外が内部的な例外”継続”でなければ、処理
は継続テストステップ6806からブレークテストステ
ップ6808に移行する。ブレークテストステップ68
08では、応答する実行されるオブジェクトを実施する
ことによって表明された例外は、内部的な例外”ブレー
ク”と比較される。ステップ6802において、実行さ
れるオブジェクトの遂行によって表明された例外が内部
的な例外”ブレーク”であると、処理はブレークテスト
ステップ6808から終了ステップ6810に移行し、
そこでオペレーション”loop”は成功のうちに終了す
る。そうでなくて、表明された例外が内部的な例外”ブ
レーク”でない場合には、処理はブレークテストステッ
プ6808から終了ステップ6812に移行し、そこで
オペレーション”loop”は失敗に終わり、ステップ68
02において応答する実行されるオブジェクトの遂行に
よって表明された例外は、オペレーション”loop”によ
って表明される。
【0984】図133は、実行されるオブジェクト69
04によるオペレーション”repeat”の遂行の動的状態
を記録するリピートフレーム6902を示している。リ
ピートフレーム6902は、あるプロセス(図示しな
い)の実行状態の一部分である。リピートフレーム69
02は、プロパティ”procedure”、”repetition
s”、”repetitionsSoFar”及び”position”を含む。
実行されるオブジェクト6904は、オペレーション”
repeat”のレスポンダであり、リピートフレーム690
2のプロパティ”procedure”である。整数6910、
6911は、リピートフレーム6902のそれぞれプロ
パティ”repetitionsSoFar”及び”repetitions”であ
る。整数6910は、実行されるオブジェクト6906
の終了した反復遂行の回数を示し、整数6911は、消
費された整数のアーギュメントによって特定される反復
遂行の全回数である。
【0985】フローチャート7000(図134)は、
実行されるオブジェクト6904によって遂行されるオ
ペレーション”repeat”のインプリメンテーションを示
している。ステップ7002において、整数6910は
ゼロにイニシャライズされ、整数6911は、アーギュ
メントとして消費された整数の値にイニシャライズされ
る。処理はステップ7002からテストステップ700
4に移行し、そこで整数6910は整数6911と比較
される。整数6910が整数6911に等しいかこれよ
りも大きければ、処理はテストステップ7004から終
了ステップ7018に移行し、そこでオペレーション”
repeat”は成功のうちに終了する。従って、消費される
整数が整数でなければ、オペレーション”repeat”の遂
行は効果を持たない。そうでないと、すなわち整数69
10が整数6911より小さいと、処理はテストステッ
プ7004からステップ7005に移行し、そこで整数
6910はインクリメントされる。処理はステップ70
05からステップ7006に移行し、そこで整数691
0に等しい値を持つ整数オブジェクトが現在のスタック
に保存される。
【0986】処理はステップ7006からステップ70
08に移行し、そこで応答する実行されるオブジェクト
6904が遂行される。現在のスタックから整数をポッ
プすることは、実行されるオブジェクト6904の仕事
である。換言すれば、実行されるオブジェクト6904
の遂行が現在のスタックから整数をポップしない場合に
は、整数は、オペレーション”repeat”の遂行の間現在
のスタックに留まっている。
【0987】処理はステップ7008から例外テストス
テップ7010に移行し、そこで、オペレーション”re
peat”の遂行を行うエンジンは、応答する実行されるオ
ブジェクト6904の遂行が例外を表明するか否かを定
める。例外が表明されなかったら、処理は例外テストス
テップ7010からテストステップ7004に移行す
る。その逆に、例外が表明された場合、処理は例外テス
トステップ7010から、継続テストステップ7014
に移行し、そこで例外が内部的な例外”継続”と比較さ
れる。表明された例外が内部的な例外”継続”であれ
ば、処理は継続テストステップ7014からテストステ
ップ7004に移行する。このように、ステップ700
8において例外が表明されなかったり、表明された例外
が内部的な例外”継続”である場合には、処理はテスト
ステップ7004に移行し、そこで整数6910が整数
6911と再び比較される。従って、セレクタ”継続”
の実行は、早すぎる時期に、応答する実行されるオブジ
ェクト6904の反復遂行を終了させ、オペレーショ
ン”repeat”の遂行においてその後の反復的な遂行に影
響することはない。
【0988】継続テストステップ7014において、ス
テップ7008で応答する実行されるオブジェクト69
04の遂行が内部的な例外”継続”以外の例外を表明し
たことをエンジンが定めた場合、処理は継続テストステ
ップ7014からブレークテストステップ7016に移
行する。ブレークテストステップ7016において、表
明された例外が内部的な例外”ブレーク”と比較され
る。表明された例外が内部的な例外”ブレーク”であれ
ば、処理はブレークテストステップ7016から終了テ
ストステップ7018に移行する。
【0989】終了テストステップ7018において、オ
ペレーション”repeat”は成功のうちに終了する。従っ
て、セレクタ”ブレーク”の実行は、応答する実行され
るオブジェクト6904の反復的な遂行を終了させ、オ
ペレーション”repeat”の遂行を成功のうちに終了さ
せ、オペレーション”repeat”の遂行においてその後の
反復的な遂行を全てアボートする。
【0990】表明された例外が、内部的な例外”ブレー
ク”でない場合には、処理はブレークテストステップ7
016から終了ステップ7020に移行する。
【0991】ステップ7020では、応答する実行され
るオブジェクトの6904の遂行によって表明された例
外は、オペレーション”repeat”によって表明され、オ
ペレーション”repeat”を失敗させ、例外を伝搬させ
る。前述したように、オペレーション”catch”は、例
外の伝搬を防止するために使用することができる。 整
数6910がステップ7005において、ゼロに等しい
か、又はゼロより小さい値までデクリメントされると、
処理はテストステップ7004から終了ステップ701
8に移行し、そこでオペレーション”repeat”が成功の
うちに終了する。実行されるオブジェクトによるオペレ
ーション”repeat”の遂行は、図134においてステッ
プ7008によって実行されるオブジェクトの遂行から
結果したもの以外の結果を生じさせない。
【0992】セレクタ”継続”の実行によって、内部的
な例外”継続”が表明され、この内部的な例外は、オペ
レーション”while”、例えば継続テストステップ65
22(図128)、オペレーション”loop”、例えば継
続テストステップ6806(図132)、及びオペレー
ション”repeat”例えば継続テストステップ7014
(図134)によってキャッチされる。セレクタ”継
続”の実行による内部的な例外”継続”の表明は、オペ
レーション”while”、”loop”、又は”repeat”を遂
行している実行されるオブジェクトの反復的な遂行を終
了させる。先により詳細に述べたように、オペレーショ
ン”while”、”loop”又は”repeat”を遂行している
間に、内部的な例外”継続”の検出によって、応答する
プロシージャのその後の反復的な遂行例えば図128、
図132及び図134の継続テストステップ6522、
606、7014のような反復的な遂行が生ずる。
【0993】セレクタ”ブレーキ”の実行は、内部的な
例外”ブレーキ”を生じさせ、この例外”ブレーキ”
は、オペレーション”while”によって、例えば、ブレ
ーキテストステップ6524(図128)によって、ま
たオペレーション”loop”、例えばブレーキテストステ
ップ6808(図132)によって、またオペレーショ
ン”repeat”、例えばブレーキテストステップ7016
(図134)によってキャッチされる。前述した内部的
な例外”継続”の表明の場合と同様に、内部的な例外”
ブレーキ”が表明されると、オペレーション”whil
e”、”loop”又は”repeat”の遂行の間の実行される
オブジェクトの反復的な遂行が終了される。しかし、内
部的な例外”ブレーキ”の表明は、応答する実行される
オブジェクトのその後の反復的な遂行を表示させるので
はなく、オペレーション”while”、”loop”又は”rep
eat”の遂行を終了させる。
【0994】内部的な例外”継続”及び”ブレーキ”
は、オペレーション”while”、”loop”及び”repea
t”のコンテキスト内においてのみ他の例外から識別さ
れうる。従って、内部的な例外”継続”及び”ブレー
キ”の以下の説明のコンテキストにおいて、オペレーシ
ョン”while”、”loop”及び”repeat”は、集合的に
て、”関連のあるオペレーション”と呼ばれる。関連す
るオペレーションの各々は、内部的な例外”継続”及
び”ブレーキ”を検出し、それに応答してアクションを
行うので、内部的な例外”継続”及び”ブレーキ”は他
の例外のように関連するオペレーションのどちらによっ
ても表明されない。図135は例示的な例として用いら
れる。
【0995】スタック7104はプロセス7102のプ
ロパティであり、プロセス7102の実行のスレッドを
表している。ユーザーによって定義されたフレーム71
06はスタック7104の底部にあり、オペレーショ
ン”live”の遂行の動的状態を記録する。底部から上部
にかけてのスタック7104の残りの内容は、リピート
フレーム7108、あらかじめ定義されたフレーム71
10(オペレーション”loop”の遂行の動的状態を記録
する)及びユーザーによって定義されたフレーム711
2である。従って、図135のオペレーション内部
は、”live”は、さらに別の1つのフィーチャの遂行を
表示させるオペレーション”loop”の遂行を生じさせる
オペレーション”repeat”の遂行を生じさせる。
【0996】ユーザーによって定義されたフレーム71
12によってその動的状態を記録されるフィーチャの遂
行が、セレクタ”継続”又はセレクタ”ブレーキ”を実
行させると想定する。前述したように、セレクタ”継
続”又は”ブレーキ”の実行は、対応する内部的例外を
表明する。これらの内部的な例外をキャッチするように
デザインされていないオペレーション、すなわち関連す
るオペレーション以外のオペレーションは、普通の例外
が表明されたかのように挙動する(図109の例外とし
てステップ5210及び終了ステップ5212について
の前記の説明参照)。この状態のもとでは、内部的な例
外は、ユーザーによって定義されたフレーム7112に
よって表されるフィーチャの遂行によって伝搬され、前
述したようにあらかじめ規定されたフレーム7110に
よって表されるオペレーション”loop”の遂行によって
キャッチされる。内部的な例外は、ループフレーム71
10によって表されるオペレーション”loop”によって
伝搬されず、従ってリピートフレーム7108によって
表されるオペレーション”repeat”の遂行には影響しな
い。
【0997】関連のあるオペレーションは現に遂行され
ていない場合、すなわち、スタック7104に存在しな
い場合、セレクタ”継続”又はセレクタ”ブレーキ”が
実行されると、クラス”ループ不在”の例外が発生す
る。クラス”ループ不在”の例外は、内部的な例外では
ないので、他の例外と同様に、伝搬される。
【0998】内部的な例外”成功”が表明された場合、
すなわちセレクタ”成功”が実行された場合、現在の方
法の遂行は成功の後に終了する。なお、あらかじめ規定
されたフィーチャは直接に、すなわちエンジンを集合的
に形成するコンピュータ命令中においてインプリメント
されるので、ユーザーによって定義されたフィーチャの
みが方法オブジェクトによってインプリメントされる。
従って、その遂行の動的状態があらかじめ規定されたフ
レーム7110(図135)に記録されるオペレーショ
ン”loop”がセレクタ”成功”を実行する場合、内部的
な例外”成功”が表明され、オペレーション”loop”の
実行が終了する。
【0999】オペレーション”loop”はあらかじめ規定
されているので、オペレーション”loop”は内部的な例
外”成功”をキャッチせず、従って内部的な例外”成
功”を伝搬させ、その遂行の動的状態がリピートフレー
ム7108に記録されるオペレーション”repeat”を終
了させる。同様に、オペレーション”repeat”はあらか
じめ規定されているので、オペレーション”repeat”は
内部的な例外”成功”をキャッチせず、その遂行の動的
状態がユーザーによって定義されたフレーム7106中
に記録されているオペレーション”live”を終了させ
る。しかしオペレーション”live”はあらかじめ規定さ
れたインプリメンテーションを持たないので、オペレー
ション”live”は成功のうちに終了し、すなわち、例外
の表明によって失敗に終わらない。同様に、ユーザーに
よって定義されたフレーム7112のサブジェクトを方
法とするフィーチャが内部的な例外”成功”を表明した
場合、すなわち、セレクタ”成功”を実行した場合、そ
のフィーチャは、成功のうちに終了し、内部的な例外”
成功”はキャッチされる。この場合、内部的な例外”成
功”は、あらかじめ規定されたフレーム7110、リピ
ートフレーム7108及びユーザーによって定義された
フレーム7106には影響しない。
【1000】前述したオペレーション、すなわち、オペ
レーション”do”、”if”、”either”、”whil
e”、”select”、”catch”、”loop”及び”repeat”
は、現在のメソッドのコンテキストにおいて遂行され
る。前述したように、あらかじめ規定されたオペレーシ
ョンは、方法オブジェクトによってインプリメントされ
ない。前述したオペレーションは、すべてあらかじめ規
定されており、従って方法オブジェクトによってインプ
リメントされない。前述した各オペレーションの、ユー
ザーのメソッドのコンテキストにおいての遂行は、一例
として容易に記載される。
【1001】一例として、その方法がフレーム7112
(図135)のサブジェクトであるフィーチャが、スタ
ック7104のユーザーによって定義されたフレーム7
112の直上のあらかじめ規定されたフレーム(図示し
ない)にその遂行が記録されている前記のあらかじめ規
定されたオペレーションの1つの遂行をリクエストした
ものと想定する。あらかじめ規定されたオペレーション
の遂行の間に、ユーザーによって定義されたフレーム7
112のプロパティ”stack”は、現在のスタックのま
まである。従って、あらかじめ規定されたオペレーショ
ンの遂行は、ユーザーによって定義されたフレーム71
12のプロパティ”stack”に対して、アーギュメント
をポップしたり、結果を保存したりする。従って前記の
あらかじめ規定されたオペレーションは、現在の方法の
コンテキストにおいて遂行される。
【1002】前述したオペレーション、すなわちオペレ
ーション”do”、”if”、”either”、”while”、”s
elect”、”catch”、”loop”、”repeat”、”contin
ue”及び”break”は、実質的な一般性及び融通性を本
発明によるオブジェクト志向命令セットに供与する。す
なわち、エージェントは、1つのプレイスから別のプレ
イスに移動する間に複雑なロジックを使用し、いろいろ
なプレイスにおいて生み出されるエージェントとの相互
作用によって情報をディポジットしたり収集したりする
ことができる。
【1003】すなわち、それ自身の運動をコンピュータ
ネットワークを通じて差し向け、ネットワークを通じて
複数の活性のそれ自身のコピーを送出し、遠隔のコンピ
ュータノードに見いだされる他のコンピュータプロセス
と相互作用し、それによってプロセスの間に情報を伝達
することもできる新規なコンピュータプロセスのセット
が提供される。新規なコンピュータプロセスのセットを
形成するここに開示されたコンピュータ命令セットは、
携帯型であり又一般的である。コンピュータ命令のセッ
トはコンピュータネットワークの各々のノードに一様に
インプリメントされている。クラスは開示された命令セ
ット内のオブジェクトとされる。本発明においてあるプ
ロセスの命令は、コンパイルされるのではなく解釈され
る。コントロールコンストラクトは、リソースのマネー
ジメント、決定の取扱い、例外の取扱い及びループコン
ストラクトのために用意される。従って、携帯型で一般
的なコンピュータ命令セットが提供され、この命令セッ
トからコンピュータプロセスの新規なセットが構成され
る。
【1004】コンピュータ命令の1つの特別のセットを
以上に又アペンディクスに説明したが、本発明はここに
記載された命令の機能性に限定されない。従って本発明
の範囲は請求範囲の記載のみによって限定される。
【1005】アペンディックスA 著作権 ジェネラル・マジック社 1991、1992、1993。
複製を禁ず。
【1006】以下の目次は、読者がアペンディックスの
構成を理解しその情報を検索するために役立てるもので
ある。
【1007】目次 1 序 1.1 テレスクリプト(Telescript)インス
トラクションセット 1.2 テレスクリプト エンジン 1.3 テレスクリプト ネットワーク 1.4 本アペンディックス 1.4.1 適用範囲(Scope) 1.4.2 一致(Conformance) 1.4.3 慣例(Conventions) 1.4.4 構成(Organization) 1.4.5 ロードマップ(Road Map) 1.4.6 リファレンス(Reference) 2 テレスクリプトの概念 2.1 モデル 2.2 オブジェクトモデル 2.2.1 オブジェクト 2.2.2 リファレンス 2.2.3 クラス 2.2.4 インヘリタンス 2.2.5 フィーチャ 2.2.6 属性 2.2.7 オペレーション 2.2.8 例外 2.2.9 コンストレイント 2.2.10 プロパティ 2.2.11 コピー 2.2.12 オブジェクトの初期化 2.2.13 オブジェクトの最終化 2.2.14 クラスの構造 2.3 実行モデル 2.3.1 メソッド 2.3.2 プロシージャ 2.3.3 実行されるオブジェクト 2.3.4 識別子 2.3.5 静的な置換の規則 2.3.6 動的な置換の規則 2.3.7 セレクタの実行 2.3.8 モディファイヤの実行 2.3.9 識別子の実行 2.3.10 メソッドの選択 2.3.11 メソッドの遂行 2.4 プロセスモデル 2.4.1 プロセス 2.4.2 位相 2.4.3 スレッド 2.4.4 リソース 2.4.5 パーミット 2.4.6 オーナーシップ 2.4.7 クローニング 2.4.8 ブランディング 2.4.9 コンタクト 2.4.10 アイソレーション 2.4.11 終了 2.5 ネットワーク・モデル 2.5.1 エージェント 2.5.2 プレイス 2.5.3 トリップ 2.5.4 チケット 2.5.5 ミーティング 2.5.6 ペティション 2.5.7 占有 2.5.8 コンタクト 2.5.9 サイテイション 2.5.10 テレネーム 2.5.11 テレアドレス 2.5.12 相互変換 2.6 タイムキーピング・モデル 2.6.1 時間 2.6.2 カレンダ時間 2.7 パターンマッチングモデル 2.7.1 パターン 2.7.2 構造 2.7.3 他の非ターミナル 2.7.4 メタキャラクタ 3 テレスクリプトクラスの概観 3.1 グループ 3.2 カーネルグループ 3.2.1 クラス 3.2.2 コンストレインド 3.2.3 コンストレイント 3.2.4 例外 3.2.5 実行される 3.2.6 実行の例外 3.2.7 識別子 3.2.8 カーネル例外 3.2.9 マーク 3.2.10 モディファイヤ 3.2.11 ゼロ 3.2.12 オブジェクト 3.2.13 パッケージ 3.2.14 プロシージャ 3.2.15 プログラミングの例外 3.2.16 有資格の識別子 3.2.17 リファレンスド 3.2.18 セレクタ 3.2.19 変更されない 3.2.20 予想されない例外 3.2.21 検査 3.3 プリミティブグループ 3.3.1 ビット 3.3.2 ブーリアン 3.3.3 ケースド 3.3.4 キャラクタ 3.3.5 整数 3.3.6 数 3.3.7 オクテット 3.3.8 順序あり 3.3.9 プリミティブ 3.3.10 プリミティブの例外 3.3.11 テレナンバ 3.3.12 時間 3.4 コレクショングループ 3.4.1 アソシエーション 3.4.2 ビットストリング 3.4.3 コレクション 3.4.4 コレクションの例外 3.4.5 コンストレインドディクショナリ 3.4.6 コンストレインドリスト 3.4.7 コンストレインドセット 3.4.8 ディクショナリ 3.4.9 ハッシュド 3.4.10 レキシコン 3.4.11 リスト 3.4.12 オクテットストリング 3.4.13 セット 3.4.14 スタック 3.4.15 ストリーム 3.4.16 ストリング 3.5 クラス定義グループ 3.5.1 属性 3.5.2 クラス定義 3.5.3 クラスの例外 3.5.4 フィーチャ 3.5.5 インプリメンテーション 3.5.6 インターフェース 3.5.7 メソッド 3.5.8 オペレーション 3.6 特定化グループ 3.6.1 サイテイション 3.6.2 引用 3.6.3 名前付け 3.6.4 テレアドレス 3.6.5 テレネーム 3.7 プロセスグループ 3.7.1 コンタクト 3.7.2 コンタクティッド 3.7.3 パーミット 3.7.4 プロセスの例外 3.7.5 プロセス 3.7.6 リソース 3.8 エージェント及びプレイスグループ 3.8.1 エージェント 3.8.2 オーセンティケータ 3.8.3 相互変換 3.8.4 手段 3.8.5 プレイス 3.8.6 チケット 3.8.7 チケットスタブ 3.8.8 トリップの例外 3.8.9 移動しない 3.8.10 ウェイ 3.9 ミーティンググループ 3.9.1 ミーティングの例外 3.9.2 ミーティングプレイス 3.9.3 ペティション 3.9.4 ペティションド 3.10 その他のグループ 3.10.1 カレンダ時間 3.10.2 種々の例外 3.10.3 パターン 3.10.4 ランダムストリーム 3.10.5 実数 4 テレスクリプトクラスの詳細 4.1 コンベンション 4.2 エージェント 4.3 アソシーエーション 4.4 属性 4.5 オーセンティケイタ 4.6 ビット 4.7 ビットストリング 4.8 ブーリアン 4.9 カレンダ時間 4.10 ケースド 4.11 キャラクタ 4.12 サイテイション 4.13 サイティド 4.14 クラス 4.15 クラス定義 4.16 クラスの例外 4.17 コレクション 4.18 コレクションの例外 4.19 コンストレインド 4.20 コンストラインドディクショナリ 4.21 コンストレインドリスト 4.22 コンストレインドセット 4.23 コンストレイント 4.24 コンタクト 4.25 コンタクティド 4.26 ディクショナリ 4.27 例外 4.28 実行される 4.29 実行の例外 4.30 フィーチャ 4.31 ハッシュド 4.32 アイデンティファイヤ 4.33 インプレメンテーション 4.34 整数 4.35 インテーチェンジド 4.36 インターフェース 4.37 カーネルの例外 4.38 レキシコン 4.39 リスト 4.40 マーク 4.41 手段 4.42 ミーティングの例外 4.43 ミーティングプレイス 4.44 メソッド 4.45 その他の例外 4.46 モディファイヤ 4.47 ネームド 4.48 ニル 4.49 ナンバ 4.50 オブジェクト 4.51 オクテット 4.52 オクテットストリング 4.53 オペレーション 4.54 オーダード 4.55 パッケージ 4.56 パターン 4.57 パーミット 4.58 ペティション 4.59 ペティションド 4.60 プレイス 4.61 プリミティブ 4.62 プリミティブエクセプション 4.63 プロシージャ 4.64 プロセス 4.65 プロセスエクセプション 4.66 プログラミングエクセプション 4.67 クオリファイドアイデンティファイヤ 4.68 ランダムストリート 4.69 実数 4.70 リファレンスド 4.71 リソース 4.72 セレクタ 4.73 セット 4.74 スタック 4.75 ストリーム 4.76 ストリング 4.77 テレアドレス 4.78 テレネーム 4.79 テレナンバ 4.80 チケット 4.81 チケットスタブ 4.82 タイム 4.83 トリップエクセプション 4.84 アンチェンジド 4.85 アネクスペクティドエクセプション 4.86 アンムーブド 4.87 ベリファイド 4.88 ウェイ 5 テレスクリプトシンタックス 5.1 テレスクリプト 5.2 キャラクタテレスクリプト 5.2.1 プリフエイスとコメント 5.2.2 エグゼキュートオブジェクツ 5.2.3 他の非ターミナル 5.3.1 プリウエイスとコメント 5.3.2 エグゼキューティドオブジェクト 5.3.3 他の非ターミナル 5.4 数値コード 5.4.2 プレデファインディドフィーチャーズ 6. モジュールのシンタックス 6.1 一般的な構造 6.2 詳細な構造 6.2.1 モジュール 6.2.2 インターフェース 6.2.3 フィーチャ 6.2.4 コンストレイント 6.2.5 他の非ターミナル 7 プレデファインドモジュール 8 プレデファインドクラスグラフ 1 序 このアペンディックスのこのセクションでは、テレスク
リプト(以下、Telescriptをカタカナで表記する)・テ
クノロジーの3つの主要な要素を紹介する。:3つの主
要な要素は、テレスクリプトインストラクションセッ
ト、すなわちこのアペンディックスの主題、インストラ
クションセットを実行する、テレスクリプト・エンジン
及び相互接続するエンジンによって形成される、テレス
クリプト・ネットワークである。
【1008】1.1 テレスクリプトインストラクショ
ンセット ここに”インストラクションセット”としてときには呼
ばれる、テレスクリプトインストラクションセットは、
適用分野を分散型システム及びアプリケーションにしよ
うとするプログラミング言語を集合的に形成するコンピ
ュータインストラクションの組である。インストラクシ
ョンセットは、オブジェクト指向でインタプリタされる
ものである。マイクロフィルムのアペンディックス
E、Fにおいて、インストラクションセットはときに
は”言語”とも言われる。
【1009】インストラクションセットの中に組み込ま
れる最も顕著なクラスは、クラス”エージェント(Agen
t)”及び”プレイス(Place)”である。エージェン
ト、すなわちクラス”エージェント”のメンバであるコ
ンピュータプロセスは、それ自身を検査変更し、それ自
身をネットワーク中の一方のプレイスから他方のプレイ
スに転送し、そしてそこに見い出される他のエージェン
トと相互作用することのできるアクティブなオブジェク
トである。この能力は、特別な場合において特別なエー
ジェントに対して特別な能力のみをプログラマまたは管
理者のどちらか一方が許可できるようにする、パーミッ
トによってバランスされる。プレイスすなわちクラス”
プレイス”の一つのメンバであるコンピュータプロセス
は、それ自身を検査変更することができ、エージェント
に対する地域(venue)及びエージェントが相互作用す
るコンテキストとして取り扱う活動的なオブジェクトで
ある。
【1010】あるエージェントは、あるプレイスに行
き、そこでそのプレイス及びそのプレイスの他の占有者
と相互作用する。エージェントとプレイスとはある距離
をおいては相互作用できない。このようにリモートプロ
グラミング(以下、単にRemoteProgrammingをRPとい
う)を実行するインストラクションセットは、より親し
みのあるリモートプロシージャコーリング(以下、単に
Remote Procedure callingをRPC という)パラダイムを
実行するのではない。RPは、可能なシステムの要素をコ
ミュニケーションなしに相互作用させることによってRP
C を改善し、その待ち時間(latency )を減少させるこ
とによって相互作用の兼ね合いを改善する。等価的に
は、RPは、システムの要素が、他の領域内に存在するそ
れ自身のエージェント−そしてこのようにそれら自身−
によって他のものをあつらえる。
【1011】インストラクションセットは、以下に示す
これらの特徴を実現するようにしている。: 安全性 ・ インストラクションセットは、その後者の許可(pe
rmission)を得ることなしに他のプロセスと干渉し、ま
たはプロセスが実行中のコンピュータを直接操作する、
その許容を越えたプロセスを防止する。これは、ビール
スの汚染を防止するのに役立つ。
【1012】携帯性 ・ インストラクションセットは、ハードウェアの制約
あるいはソフトウェアの制約に対して、または特殊なコ
ンピュータシステムの特異性に対して何らの譲歩をしな
い。これによってネットワーク内部またはその回りのど
こでもプロセスを実行することが可能となる。
【1013】拡張性 ・ インストラクションセットは、インストラクション
セットに組み込まれるものと同様の拡張(stature) の
オブジェクトをプログラマによって規定された情報の形
式に対して与える。これによって特別の目的のためにイ
ンストラクションセットの拡張が可能となる。
【1014】向上 ・ インストラクションセットは、volatileのストレー
ジと非volatileのストレージとの間に区別を設けない。
各々の情報オブジェクトは、本来、不変である。これに
よって抽象概念プロセスレベルを増大させ、プロセスの
サイズを減少させる。
【1015】1.2 テレスクリプト エンジン インストラクションセットによって書かれたプログラム
は、テレスクリプトエンジンによって生命がもたらされ
る。テレスクリプトエンジンは、ここでときに”エンジ
ン”とも呼ばれるもので、エンジンは、プログラムが含
むインストラクションを解読する。そのようなプログラ
ムが、テレスクリプト(telescript)と呼ばれる。ある
エンジンは、多くのテレスクリプトを同時に解読するこ
とができる。
【1016】あるエンジンは、エンジンが実行中のコン
ピュータのハードウェアまたはオペレーティングシステ
ムに直接依存することなく、インストラクションセット
の抽象概念を遂行することができる。エンジンは、基準
(platform)についてエンジンが必要とするコミュニケ
ーション、ストレージ及び他のサブシステムへの標準的
なインターフェースを使用してこれを行う。これらは、
テレスクリプト コミュニケーション アプリケーショ
ン プログラミング インターフェース(Telescript C
ommunication Application Programming Interface:以
下、APIという)を形成し、このインターフェースは、
アペンディックスCとして添付され、引用によって全体
として本明細書の一部とされる。
【1017】エンジンは、インストラクションセットの
抽象概念からの特別に許可されたエスケープ(privileg
ed escape )を遂行することができる。これらのエスケ
ープは、オペレーション、アドミニストレーション及び
マネージメント(operational,administrative, and ma
nagerial:以下、単にOAMという)のツールの、エンジン
外の構成を可能にする。このようなツールは、大規模な
コミュニケーションシステムの成功にとって不可欠であ
る。
【1018】1.3 テレスクリプトネットワーク 2つあるいは2つ以上のエンジンは、相互接続すること
ができる。ここで、ときに”ネットワーク(Network)
”と呼ばれる、結果としてテレスクリプトネットワー
クは、エージェントがその中で移動することができる宇
宙である。ネットワークは、他のネットワークの一部で
はなく、他のネットワークのクライアントと考えること
ができる複数のコンピュータシステムを含んでいる。
【1019】コンピュータシステムは、コンピュータシ
ステムがエンジンを組み込んでおり、このようにエージ
ェントが行き来できるプレイスを提供する場合にのみ、
ネットワークの一部分となる。この要求は、情報の構造
並びに伝送に関してネットワークを均質にする。
【1020】エンジンは、相互接続されており、その結
果、エンジンは、エージェントをそれ自身の間に移動さ
せている。エージェントが、アペンディックスBに記載
されているテレスクリプトエンコード規則に従わせるこ
の目的のため、順番に並べたり、またはエンコードされ
る。結果としてオクテットストリングは、プラットフォ
ームインターコネクトプロトコル(Platform Interconn
ect Protocol)によって規定されるようにエンジン間を
移動する。プラットフォームインターコネクトプロトコ
ルは、この開示の一部分としてアペンディックスFとし
て添付され、引用によって全体として本文の最初に組み
込まれている。
【1021】1.4 本アペンディックス このアペンディックスは、次のように説明される。
【1022】1.4.1 適用範囲(Scope) このアペンディックスは、インストラクションセットの
バージョン0.8を規定する。テレスクリプトエンコー
ド規則、テレスクリプト プロトコル及びテレスクリプ
トAPI は、すべてこのアペンディックスの範囲外にあ
り、それぞれアペンディックスB、F、Cの主題であ
る。
【1023】インストラクションセットは、仮想的なマ
シンのためのインストラクションセットと見ることがで
きる。この視点から、読者は、テレスクリプトを発生さ
せるより高いレベルの言語を用いた、すなわちテレスク
リプトを生成させるためのコンパイラであることを容易
に描くことができる。カリフォルニア州マウンテンビュ
ーのジェネラル・マジック社は、ハイテレスクリプト
(High Telescript) と呼ばれるこのような言語を開発
している。この開示のアペンディックスA−Fのコンテ
キストにおいて、インストラクションセット自体は、し
ばしばローテレスクリプト(Low Telescript)と呼ばれ
る。
【1024】1.4.2 一致(Conformance) エンジンのメーカは、このアペンディックスに対する一
致を適切に請求するためにはある要求を満たさねばなら
ない。
【1025】1.4.3 慣例(Conventions) 以下に、このアペンディックス全体を通じて散文による
これらの慣例が記載される。
【1026】・”the α attribute”は、”その識別子
がαに等しい属性”を意味する。
【1027】・”is a key”は、”キーに等しい”こと
を意味し、”キーと同一である”ことは意味しない。
【1028】・”an X”は、一般に” Xの一つのメン
バ”を意味し、”Xの一つのインスタンス”は意味しな
い。
【1029】・”throws X”は、一般に”Xの一つのメ
ンバを送出する”ことを意味する。
【1030】・”whether statement”は、”statement
iff true”を意味する。
【1031】・ iffは、数学においてそうであるよう
に、”if and only if”を意味する。
【1032】・ MSBは、”most significant bit”を
意味する。
【1033】・ LSBは、”least significant bit”を
意味する。
【1034】注:このアペンディックス全体を通じて、
注(この場合の注と同様のもの)は定義ではなく注釈で
ある。
【1035】1.4.4 構成(Organization) このアペンディックスは、8つのセクションに分けられ
る。セクション1は、この序である。セクション2は、
インストラクションセットの主な概念を紹介する。セク
ション3は、インストラクションセットの予め規定され
たクラスを概観する。セクション4は、それらを詳細に
規定する。セクション5は、インストラクションセット
の構文を規定する。
【1036】セクション6は、予め規定されたクラスへ
のインターフェースの形式的な定義に従わされる慣例を
規定する。セクション7は、これらの形式的な定義を包
含する。セクション8は、ユーザ定義されたクラスはな
く、予め規定されたクラスを包含するクラスグラフの一
部を示す。
【1037】1.4.5 ロードマップ(Road Map) このアペンディックスの一部は、定義的であり、他の一
部は、単に情報を与えるものにすぎない。定義を与える
セクションは、セクション1、2、4及び5である。対
照的に、セクション3、7、8は、セクション4に示さ
れた事項の再構成であり、セクション6は、ハイテレス
クリプトのいろいろな様相の再掲である。
【1038】異なる読者には、このアペンディックスの
違った部分が必要になる。インストラクションセットの
適用範囲及び構造のみに興味を持つ読者は、セクション
1、2及び3のみを読めばよい。テレスクリプトプログ
ラマは、セクション4も必要である。ローテレスクリプ
トプログラマでは、キャラクターテレスクリプトをカバ
ーするセクション5の部分もマスタすべきであが、ハイ
テレスクリプトプログラマでは、その必要はない。ハイ
テレスクリプトコンパイラまたはエンジンのオペレータ
は、2進テレスクリプトをカバーするセクション5の部
分が必要である。
【1039】テレスクリプトの実務者にとっては、セク
ション7、8は不可欠なリファレンスである。
【1040】1.4.6 リファレンス(Reference) このアペンディックスはこれらの他のドキュメントに依
存する。
【1041】[10646] Information technology -Universal Coded Character
Set(UCS), ISO/IEC DIS 10646, International Organiz
ation for Standardization and International Electr
otechnical Commission, 1990. [ユニコート゛] The Unicode Standard: Worldwide Character Encodin
g, Volume 1, Version1.0, The Unicode Consortium, A
ddisonーWesley, 1991. 2 テレスクリプトの概念 インストラクションセットは、種々のコンセプトを規定
し、インストラクションセットの最も重要な規定が、こ
のアペンディックスのこのセクションに紹介されてい
る。これらの概念は”モデル”に分けられる。サブセク
ションには、各モデルが割り当てられている。各サブセ
クション内で、より小さなサブセクションには、モデル
中の各概念に振り分けられている。
【1042】インストラクションセットは、リモートプ
ログラミング用であるから、言語、オペレーティング
システム及びネットワークの領域を網羅する多くの概念
を含む。普通は別々であるこれらの領域は、このインス
トラクションセットにおいて一つにまとめられる。
【1043】2.1 モデル インストラクションセットの概念は、複数のモデルに分
けられている。この分けられたモデルは、教育的な目的
にのみ用いられ、いかなる意味においても遂行中には見
られない。
【1044】つぎのモデルが規定されている。
【1045】オブジェクト ”object(以下、オブジェクトともいう)”モデルは、
オブジェクト指向、例えばオブジェクト、リファレン
ス、クラス、オペレーション及び例外を規定する。
【1046】実行 ”execution(以下、実行ともいう)”モデルは、逐次
実行、例えばメソッド、プロシージャ及び識別子(アイテ゛
ンティファイヤ)を規定する。
【1047】プロセス ”process(以下、プロセスともいう)”モデルは、マ
ルチタスク処理(multitasking )、例えばプロセス、
リソース、パーミッット、コンタクト及びオーナーシッ
プを規定する。
【1048】ネットワーク ”network(以下、ネットワークともいう)”モデル
は、ネットワークのアーキテクチャ、例えばエージェン
ト、プレイス、トリップ、ミーティング及びテレネーム
を規定する。
【1049】タイムキーピング ”timekeeping(以下、タイムキーピングともいう)”
モデルは、計時用、例えば時間及びカレンダー期間の計
測のための手段を規定する。
【1050】パターンマッチング ”pattern matching (以下、パターンマッチングとも
いう)”モデルは、パターンマッチング、例えばパター
ンのための手段を規定する。
【1051】各モデルは、以上に列挙したと同じ順序で
以下に提示される。各モデル内の概念は、論理的な順序
で示される。
【1052】2.2 オブジェクトモデル このインストラクションセットは、このセクションが定
義する”object model(以下、オブジェクトモデルとも
いう)”を実現する。
【1053】2.2.1 オブジェクト オブジェクトは、情報と情報処理との両方のインストラ
クションセットの単位である。オブジェクトは、あるク
ラスの一つのインスタンスである。
【1054】注:オブジェクトはどんなものでもよく、
例えばブーリアンのように単純なもの、または例えばデ
ィクショナリのように複雑なもののどちらでもよく、例
えばストリングのように受動的なもの、または例えばプ
ロセスのように能動的なものいずれか一方でよい。
【1055】注:メッセージ、すなわちインストラクシ
ョンセットが理解されるアプリケーションで、オブジェ
クトには、メッセージのシステムの構成部分、例えばそ
のメイルボックス及び分配リストと、システムが伝達す
る情報オブジェクト、例えばメッセージ及び配送レポー
トと、これらの情報オブジェクトの要素、例えばエンベ
ロープフィールドが含まれる。
【1056】パーシステンス 各オブジェクトは”persistent(以下、パーシステント
ともいう)”である。エンジンが故障し、後に回復した
場合、オブジェクトに対するただ一つの効果は、それが
一時的に使用できなくなることである。
【1057】サイズ オブジェクトが占有する近似的な不変の記憶量である”
サイズ(size)”を有する各オブジェクトは、オクテッ
ト単位で測定される。
【1058】注:オブジェクトのサイズは、プレイス毎
に変化していてもよい。
【1059】2.2.2 リファレンス ”reference(以下、リファレンスともいう)”は、オ
ブジェクトが指示されまたアクセスされる手段である。
【1060】Protected vs Unprotected リファレンスは、”unprotected(保護されていな
い)”または”protected(保護されている)”であ
る。保護されていないリファレンスは、オブジェクトを
変更することができ、保護されたリファレンスは変更す
ることができない。保護されていないリファレンスは、
保護されるようにできるが、逆は正しくない。
【1061】生成(Creation) 各オブジェクトには、1つ以上のリファレンスが存在す
る。ある1つのオブジェクトの生成は、そのオブジェク
トへの最初のリファレンスを作り出すことでもある。リ
ファレンスは、オブジェクトが不変である場合にのみ保
護される。追加のリファレンスは、希望するように生成
することができる。生成されたリファレンスは、ソース
リファレンスが保護されている場合にのみ保護される。
【1062】注:多くの予め規定されたオペレーション
は、既存のオブジェクトへの新しいリファレンスを生成
し、これらのリファレンスを結果としてリターンする。
【1063】比較(Comparison) オブジェクトに対するすべての保護されていないリファ
レンスは、同等である。あるオブジェクトに対する保護
されていないリファレンスを用いて行われた変更は、そ
のオブジェクトに対して行われたもので、従って、実際
にはそのオブジェクトに対する全ての他のリファレンス
について行われる。あるオブジェクトに対する全ての保
護されたリファレンスも、相互に同等である。
【1064】保護されていないリファレンスと保護され
ているリファレンスとは、2つの点で異なっている。こ
れらの相違点は、リファレンスが意味するオブジェクト
のフィーチャを要求するために保護されたリファレンス
が用いられる場合に現れる。第1に、フィーチャがオブ
ジェクトを変更しようとする場合には、そのフィーチャ
は失敗し、”リファレンスが保護されている”を送出す
る。第2に、フィーチャが、−コピーではない−オブジ
ェクトのプロパティの一つへのリファレンスをリターン
した場合、そのリファレンスは保護される。
【1065】2つのリファレンスが同一のオブジェクト
を意味するかどうかを定めることができる。
【1066】廃棄処理(Discarding) リファレンスが、必要とされなくなったときには廃棄す
べきである。同一のオブジェクトに対するリファレンス
が残存していない場合、オブジェクト自身は破壊され
る。
【1067】無効処理(Voiding) エンジンは、このアペンディックスの規定する事情のも
とにリファレンスを無効にすることができる。”voided
(無効にされたことを意味し、以下、ボイドされたとも
いう)”リファレンスは、もはやオブジェクトへのアク
セスをしない。エンジンは、スタックにボイドされたリ
ファレンスを保存(push)するのではなく、”リファレ
ンス ボイド(Reference Void)”を送出する。
【1068】2.2.3 クラス ”クラス”は、すべて同一のインターフェースと同一の
遂行とを持つ、クラスの”インスタンス(instance)”
であるオブジェクトのセットを規定する。クラス自身
は、インターフェースと遂行との両方を持ち、これらは
潜在的にクラスについてユニークである。
【1069】Predefined vs User-defined クラスは、Predefined(予め規定されていることを意味
し、以下、プリデファインドともいう)かまたはUser-d
efined(ユーザ定義されることを意味し、以下、ユーザ
デファインドともいう)のいずれかである。”プリデフ
ァインド”クラスは、インストラクションセットに組み
込まれ、このアペンディックスによって定義されている
もので、各々のテレスクリプトプログラマにとって利用
可能な一種のオブジェクトを表している。”ユーザデフ
ァインド”クラスは、プログラマによって定義されるも
ので、インストラクションセットを特定の目的のために
拡張させる。
【1070】Concrete vs Abstract クラスは、具体的でもあり、抽象的でもある。”concre
te(以下、コンクリートともいう)”のクラスは、イン
スタンスを持つことができる。”abstract(以下、アブ
ストラクトともいう)”のクラスは、インスタンスを持
ち得ないが、そのサブクラスは持つことができ、またし
ばしば持っている。具体的なクラスまたはその遂行のス
ーパークラスの一つは、クラスに対する本来の各フィー
チャかまたはクラスによって引き継がれた各フィーチャ
を遂行する。
【1071】シーリング(Sealing) 通常、コンクリートであるクラスは、シールすることが
できる。エンジンは、シールされたクラスがユーザによ
って定義された直接のサブクラスを持つことを禁止する
が、予め規定された直接のサブクラスを持つことは禁止
しない。
【1072】クリエーション(Creation) 具体的なクラスは、新しいインスタンスを記述する初期
パラメータが与えられる場合に、新しいインスタンスを
生成することができる。しかしながら、各々のクラスの
各インスタンスは、すべてこの方法で生成することはで
きない。残りのものは、最初にこのようにして一つのイ
ンスタンスを作り出し、次に必要に応じてインスタンス
の属性を変更することによって作り出すことができる。
【1073】変更(Conversion) コンクリートなクラスは、あるクラスのインスタンスを
それ自身のインスタンスに変更することができる。しか
しながら、各々のクラスの各インスタンスを各々の他の
クラスのインスタンスに変更することができるわけでは
ない。オペレーション”コンバージョン(変更を意味
し、以下コンバージョンともいう)”の定義と、コンバ
ージョンが作り出すオブジェクトの性質とは、関係する
2つのクラスに依存する。
【1074】互換性(Conpatibility) クラスは、一つの引用されたオブジェクトとして具体化
される。あるクラスは、前者のインターフェースを他の
インターフェースから、次の種類の変更を行うことだけ
で後者のインターフェースから生成することができる場
合に他のクラスに対して後方に互換を有する。第1に、
フィーチャを付加することができる。第2に、後者のイ
ンターフェースにおいて属性がリードオンリである場合
には、その属性のクラスは、サブクラスにまで狭めるこ
とができる。第3に、現存しているオペレーションのア
ーギュメントのクラスは、一つのスーパークラスまで広
げることができる。第4に、現存するオペレーションの
結果のクラスは、一つのサブクラスまで狭めることがで
きる。
【1075】2.2.4 インヘリタンス Native vs Inherited 予め規定されたものでもユーザー定義されたものでもよ
い、すべてのクラスは、”inheritance(引き継ぎを意
味し、以下インヘリタンスともいう)”によって相互に
対して関連付けられている。各クラスは、いろいろの特
性を有する。一般に、クラス特性の内のあるものは、そ
のクラスに対して”native(固有を意味し、以下ネイテ
ィブともいう)”であり、他のものは、他のクラスか
ら”インヘリタンス”されている。インヘリタンスは、
移行的な関係である。あるクラスは、別のクラスから後
者のクラスの引き継がれた特性だけでなく、後者の固有
の特性も引き継ぐ。前記の用語を多少拡張すると、ある
オブジェクトの固有の特性は、そのオブジェクトがイン
スタンスであるクラスに固有の特性である。
【1076】インストラクションセットは、クラスとそ
の関係と簡単なグラフによって記述する、クラス間の引
き継ぎ関係に対して十分に強制する。このグラフにおい
て、ノードはクラスを表し、ノードの間の円弧は、それ
らのノードが表すクラスの間の引き継ぎ関係を表してい
る。
【1077】Subclass vs Superclass あるクラスが別のクラスから直接または間接に特徴を引
き継いでいれば、前者は後者の”subclass(以下、サブ
クラスともいう)”であり、後者は前者の”superclass
(以下、スーパークラスともいう)”である。あるクラ
スが直接に別のクラスから特徴を引き継いでいれば、前
者は後者の”immediate subclass(以下、イミディエー
トサブクラスともいう)”であり、後者は前者の”imme
diate superclass(以下、イミディエートスーパークラ
スともいう)”である。
【1078】あるクラスのインスタンスは、そのクラス
及び複数のスーパークラスの”member(メンバ)”であ
る。
【1079】フレーバあるクラスは、フレーバである。
各々が抽象的であるかまたは具体的である”flavor(以
下、フレーバともいう)”は、次のようにしてツリー構
造を形成する。ツリーのルートは、クラス”オブジェク
ト”を表す。任意の与えられたソースノードから発する
アーク(arc)によって到達される各々の目的点ノード
は、そのソースノードが表すフレーバのイミディエート
サブクラスである。従って、ソースノードは、各々のこ
のような目的点ノードによって表されるフレーバのイミ
ディエートスーパークラスを表す。1つ以上のアークを
次々に通って到達される各々の目的点ノードは、そのソ
ースノードが表すフレーバのサブクラスを表している。
このように、ソースノードは、各々のこのような目的点
ノードによって表されるフレーバのスーパークラスを表
している。
【1080】注:フレーバは、単一の受け継ぎを規定す
る。
【1081】ミックスイン 他のすべてのクラスは、ミックスインである。”mix-in
(以下、ミックスインともいう)”及び−すべてそれ自
身ミックスインである−その0または1つ以上のスーパ
ークラスは、次のようにして第2のツリーを形成する。
このツリーのルートは、ミックスインである。アーク
は、ツリーのノードが表すミックスインの間の逆引き継
ぎ関係を表している。ミックスインは、抽象的である。
【1082】注:ミックスインは、多重するインヘリタ
ンスの限定された形式を規定する。
【1083】クラスグラフ フレーバとミックスインとは共に、ある指向されたグラ
フを形成する。グラフは、次の2つのステップで形成さ
れる。第1に、各ミックスインツリーのアークは、逆イ
ンヘリタンス関係ではなく、逆インヘリタンス関係を表
すように再指向させられる。第2に、このように変更さ
れたミックスインツリーは、フレーバツリーの上に重ね
られる。
【1084】注:複数のクラスをグローバルに特定化す
ることによって達せられるひとつのグローバルなクラス
グラフがある。どんな特別なプレイスにおいても、グラ
フの知識が不完全であることがある。
【1085】カノニカルオーダー フレーバまたはミックスインであるクラスと、どちらも
フレーバ及びミックスインであるそのスーパークラスと
は、第3のツリーの道のりの順序である”canonical or
der(標準的な順序を意味し、以下、カノニカルオーダ
ーともいう)”を有する。
【1086】ツリーは次のようにして構成される。その
ルートは、問題のクラスであり、他のノードは、そのク
ラスのスーパークラスである。
【1087】アークは、ミックスインツリーと同様に、
そのツリーのノードが表すクラスの間の逆引き継ぎ関係
を表す。
【1088】道のりは、クラスが定義するその標準的な
順序においてそのクラスのイミディエートスーパークラ
スが訪問をうける第1の階層(depth-first one)であ
る。
【1089】Interface vs Implementation 前述したすべては、クラス特性の3組いずれか、すなわ
ちクラスのインターフェース、その導入(implementati
on)またはその両方のどれについてもいえることであ
る。このアペンディックス内のどの特定の点において、
2組の特徴のどちらが説明されているかを明確にまたは
暗黙の内に説明する。
【1090】注:クラスのインターフェースは、むしろ
頻繁に説明されている。
【1091】2.2.5 フィーチャ ”feature(以下、フィーチャともいう)”は、あるオ
ブジェクトの外部から見られる特徴である。フィーチャ
は、オブジェクトが相互作用することを可能にする。あ
るオブジェクトが他のオブジェクトへのリファレンスを
所有していれば、前者は後者のあるフィーチャを要求す
ることができる。あるクラスのすべてのインスタンス
は、そのクラスに固有の、またはそのクラスによって引
き継がれたインターフェースによって定義される同一の
フィーチャを有する。
【1092】あるフィーチャは、それが正しく使用され
たときに”succeed (以下、成功ともいう)”し、他の
場合には”fails (以下、失敗ともいう)”する。フィ
ーチャが失敗する場合、例外が送出される。
【1093】Attribute vs Operation フィーチャは、次の二種類、すなわち属性及びオペレー
ションである。
【1094】注:ある特別なフィーチャが属性にされる
かオペレーションにされるかは、部分的には趣味の問題
である。
【1095】シーリング(Sealing) クラスは、固有のものか、または受け継がれたフィーチ
ャを指定することができ、それによりユーザ定義された
サブクラスによるフィーチャの実行を禁止するが、予め
定義されたサブクラスによるフィーチャの実行は阻止し
ない。
【1096】実施(Implementation) クラスは、スーパークラスによって指定されないいかな
る固有のフィーチャまたは引き継がれたフィーチャを実
施することができる。後者の場合、クラスの実施は、も
しあれば、スーパークラスの実施に取って代わるもので
ある。
【1097】アクセス(Access) エンジンは、フィーチャへのアクセスを制御する。フィ
ーチャの”access(以下、アクセスともいう)”は、フ
ィーチャを使用し得るオブジェクトを定義し、次のもの
のいずれかに該当する。
【1098】パブリック(public) いかなるオブジェクトもこのフィーチャを使うことがで
きる。
【1099】プライベート(private) そのフィーチャを有するオブジェクトのみがそれを使用
できる。
【1100】システム(system) エンジンのみが、予め定義された、フィーチャを使用で
きる。
【1101】2.2.6 属性 オブジェクトである”attribute(以下、属性ともい
う)”は、あるオブジェクトが”requester(以下、リ
クエスタともいう)”では、別のオブジェクトか、また
は同一のオブジェクトかを要求し”responder(以下、
レスポンダともいう)”では、別のオブジェクトか、ま
たは同一のオブジェクトかをおそらく取得し設定するこ
とのできるある特徴である。設定不可の属性は、”リー
ドオンリ(read-only)”である。
【1102】”αGet” vs ”αSet” 属性は、属性がリードオンリ、であれば、どれかひとつ
のオペレーションと正確に同等であり、リードオンリで
なければ、両者である。”αGet” として象徴的に表さ
れる第1のオペレーションは、属性を取得する。それ
は、アーギュメントを持たず、その結果として属性を有
する。”αSet” と呼ばれる、第2のオペレーション
は、ある特定のオブジェクトで属性に変える。オペレー
ション”αSet” のひとつのアーギュメントは、そのオ
ブジェクトであり、オペレーションは、結果として属性
を持たない。
【1103】Manual vs Automatic クラスは、手動または自動によってある属性を実施する
ことができ、そのクラスが抽象的である場合にのみ、全
く実施しない。属性を”Manually(以下、手動的ともい
う)”で実施することは、”αGet” の方法を規定しな
ければならず、属性が設定可能であれば、”αSet”で
ある。属性を”Automatically(以下、自動的ともい
う)”に実施することは、エンジンにそのようにさせる
ことであり、エンジンは、属性がインスタンス属性であ
り、クラスが具体的であり、クラスのその実施スーパー
クラスも属性を実施しない場合に、そのようにする。エ
ンジンは同一の識別子のプロパティで属性を遂行する。
【1104】インストラクションセットは、そのアーギ
ュメントが属性の識別子 (”α”)である内部オペレー
ションである”getAttribute”及び”setAttribute”の
助けをそれぞれ借りて、属性の取得及び設定を定義す
る。これらの2つのオペレーションは、属性が自動的に
実施されていれば、その属性に関連されたプロパティを
それぞれ取得及び設定し、その他の場合、すなわち属性
が自動的に実施されていれば、”αGet”及び”αSet”
の各オペレーションについて、ユーザによって定義され
た方法を実施する。同様に属性の手動実施または自動実
施は、オペレーションの実施の位置付けを行う実行モデ
ルのアルゴリズムを使用して位置付けされる。
【1105】格納位置(Strage Location) リードオンリでない属性は、デフォルトによって”Stra
ge Location (以下、ストレージロケーションともい
う)”として挙動する。すなわち、オペレーション”α
Get” は、もっとも最近に成功のうちに供給されたオブ
ジェクトをオペレーション”αSet” のアーギュメント
としてリターンする。このデフォルト挙動の例外は、特
別の属性の散文の記載で呼び出されねばならない。
【1106】注:すなわち、デフォルト挙動を示す属性
が、クラス”Dictionary(以下、ディクショナリともい
う)”のひとつのメンバであるように制約され、クラ
ス”Dictionary” のサブクラスのひとつのインスタン
スが、オペレーション”αSet”に供給される場合、オ
ペレーション”αGet”はそのクラス”は、クラス”Dic
tionary” のインスタンスではなく、そのインスタンス
をリターンする。
【1107】注:リードオンリであるすべての予め定義
された属性は、デフォルト挙動を示す。
【1108】2.2.7 オペレーション オペレーションは、あるオブジェクト、すなわち”the
requester(以下、リクエスタともいう)”が他のオブ
ジェクト、または同一のオブジェクト、すなわち”the
responder(以下、レスポンダともいう)”に実施する
ように求めることのできるすべてのタスクである。
【1109】アーギュメント(Arguments) リクエスタは、オペレーションの”arguments(以下、
アーギュメントともいう)”である0またはそれ以上の
オブジェクトをレスポンダに供給する。オペレーター
は、オペレーションのアーギュメントの数が可変である
かまたは固定されているかを定め、後者の場合にはどの
ように各々が強制されるかを定める。
【1110】注:アーギュメントが、可変の数を持て
ば、いずれもマークとはならない。
【1111】注:予め定義されたオペレーションの中
で、オペレーション”initialize”、”makeClasse
s”、”select”及び”new” は、可変数のアーギュメ
ントを必要とし、他のいずれのオペレーションもそれを
必要としない。
【1112】リザルト(Result) レスポンダは、オペレーションが成功すれば、リクエス
タに、オペレーションの”result(以下、リザルトとも
いう)”である単一のオブジェクトをオプション的に供
給することができる。あるオペレーションは、結果の有
無を定め、結果がある場合には、それがどのようにして
強制されたかを規定する。
【1113】2.2.8 例外 ”exception(以下、例外ともいう) ”は、ある特徴の
ための方法の遂行の失敗または、より基本的には、その
方法のプロシージャ中の複数のアイテムである実行され
る複数のオブジェクトの内のひとつの実行の失敗を記述
するオブジェクトである。
【1114】フィーチャは、もしフィーチャが成功した
場合にレスポンダが、リターンするはずの結果の代わり
に例外をレスポンダが”throws(投げ返す)”した場合
に、失敗となる。フィーチャのリクエスタは、リクエス
タが例外に反応することを望む場合に、その例外を”ca
tch( 受ける)”する。他の場合に、エンジンは、例外
を”propagates(伝える)”させる。すなわち、エンジ
ンは、リクエスタに例外を投出することを求める。
【1115】2.2.9 コンストレイント ”constraint(以下、コンストレイントともいう)”
は、コンストレイントの”subjects(以下、サブジェク
トともいう)”である他のオブジェクトの上におかれる
制限を規定する。可能な制限は、サブジェクトがメンバ
であるクラスの識別子、サブジェクトがそのクラスのイ
ンスタンスであるかどうか、そのサブジェクトが0であ
ることが許容されるかどうか、上述したクラスにもかか
わらず、そのクラス自身及びサブジェクトの通路を含
む。
【1116】パッセージ(Passage) オブジェクトは、オブジェクトのソースがエンジンに伝
えるソース リファレンスが、エンジンがオブジェクト
の目的点に伝える目的点リファレンスを定めるいくつか
の異なった方法のどれかひとつにおいて、フィーチャの
リクエスタとレスポンダとの間に通されることができ
る。
【1117】オブジェクトの”passage(通路を意味
し、以下パッセージともいう)”は、これらの識別子の
内のひとつである。
【1118】バイレフ(byRef) 目的点のリファレンスは、ソース リファレンスであ
る。
【1119】バイアンプロテクティドレフ(byUnprotec
tedRef) 目的点リファレンスは、ソース リファレンスである
が、エンジンは、ソースリファレンスが保護されている
場合、”リファレンスプロテクティド(Reference Prot
ected)”を投出する。
【1120】バイプロテクティドレフ(byProtectedRe
f) 目的点のリファレンスは、ソースリファレンスがアクセ
スを与えるオブジェクトに対して、保護されたリファレ
ンスである。
【1121】バイコピー(byCopy) 目的点リファレンスは、ソースリファレンスがアクセス
を与えるところのオブジェクトのコピーに対する保護さ
れないリファレンスである。エンジンは、この目的のた
めのみにコピーを作成する。コピーは、プロセスであれ
ば、オブジェクトの目的点によって所有され、さもなけ
れば、オブジェクトの目的点の所有である。
【1122】2.2.10 プロパティ オブジェクトは、0またはそれ以上のプロパティを有す
る。それ自身がひとつの目的である”property(以下、
プロパティともいう)”は、オブジェクトの内部状態の
ひとつの要素であり、全体としてみて、全内部状態を構
成するオブジェクトのプロパティのすべてである。オブ
ジェクトのプロパティは、オブジェクトに対して内部的
であり、従って、そのオブジェクトの有無によって直接
に感知され、検査され、変更されることができる。
【1123】オブジェクトのプロパティは、クラスによ
って区分される。0またはそれ以上は、オブジェクトの
クラスに固有であり、0または1つ以上はクラスの実施
スーパークラスの各々に対して固有である。プロパティ
が、それに対して固有であるクラスの複数のメソッドに
よって、直接に感知され、検査され、変更することがで
きるが、他のクラスまたはそのクラスのサブクラスもし
くはスーパークラスに対して固有のメソッドによっては
そのようにはできない。
【1124】2.2.11 コピー オブジェクトはコピーすることができる。あるオブジェ
クトの”copy(以下、コピーともいう)”は、別のオブ
ジェクトである。この別のオブジェクトは、”isSame”
による場合ならびに、保護されたリファレンスがコピー
を作成するために使用されたとしても、一般的に、その
コピーが変更され得ることによる場合以外は、コピー元
のオブジェクトから区別できない。
【1125】あるコピーは、一般に、少なくとも最初
は、そのコピーがコピー元になった、オリジナルと一般
に同等である。”equal (同等を意味し、以下イコール
ともいう)”の意味は、オリジナルはメンバであるクラ
スに依存する。従って、クラスとコピーが不変であれ
ば、コピーとオリジナルとは不特定的に同等のままであ
る。その他の場合には、コピーとオリジナルとは互いに
独立であるため、相互に分岐していくことができる。
【1126】コピーは、オペレーション”copy”を用い
て生成される。エンジンは、オリジナルの各プロパティ
のオペレーション”copy”をリクエストすることによっ
てコピーを作成する。しかしながら、そのプロパティ
が、エンジンがこの目的のためにすでにコピーしたこと
のあるオブジェクトへのリファレンスであることを、エ
ンジンが見出した場合には、エンジンはそのオブジェク
トの第2のコピーを作らず、第1のコピーへのリファレ
ンスを使用する。
【1127】2.2.12 オブジェクトの初期化 オブジェクトの生成は、オブジェクトの初期化を課す
る。オペレーション”initialize(以下、イニシャライ
ズともいう)”の方法は、生成されたオブジェクトがそ
のメンバであるクラスに固有のものであり得る。方法
は、そのクラスにとって固有のオブジェクトのプロパテ
ィを初期化することになる。
【1128】エンジンがオペレーション”イニシャライ
ズ”の方法をリクエストする場合、エンジンは、その方
法が、それ自体固有であるクラスにとって固有であるプ
ロパティを0に設定する。
【1129】初期化の順序 オペレーション”initialize”に対する各々の方法は、
その方法の責任範囲であるプロパティをイニシャライズ
した後に、オペレーションをエスカレートし、それによ
り他の方法が同じことをすることを可能にする。ある方
法が、オペレーションをエスカレートすることなく成功
した場合に、エンジンがその方法について同じことをす
る。エスカレーションのプロセスは、生成されたオブジ
ェクトのクラスとそのクラスの遂行のスーパークラスを
標準的な順序で訪問する。
【1130】初期化パラメータ(InitializationParame
ters) あるクラスの”initialization parameter(以下、初期
化パラメータともいう)”は、そのクラスにとって固有
のオペレーション”initialize”の方法が、オペレーシ
ョンの実施にとって必要とするオブジェクトである。も
しクラスのミックスインであれば、クラスは、パラメー
タを選択することによってそれ自身ためのみに語る。ク
ラスがフレーバであれば、クラスはそれ自身のみ及びそ
の実施のスーパークラスのみについて語る。エスカレー
ションにおいて、オペレーション”initialize”のため
のクラスの方法は、標準的な順序で後続するクラスのパ
ラメータが最も上方のマークのさらに上においてスタッ
クの上にあることを確実にするべきである。その他のク
ラスのための方法が実施された後、パラメータが残存し
ていれば、クラス”Object”は、例外を投出する。
【1131】初期化の特権(Initialization Privilege
s) オペレーション”initialize”の方法は、エスカレーシ
ョンの前ではなくエスカレーションの後に、生成された
オブジェクトのフィーチャを使用する。その場合にもオ
ブジェクトは、メソッドがそれに対して固有であるクラ
スのインスタンスであるかのように応答するとき、オブ
ジェクトがそのひとつのインスタンスであるクラスでは
ない。メソッドは、どんな時にも他のオブジェクトのフ
ィーチャを使用することができる。
【1132】2.2.13 オブジェクトの最終化 オブジェクトの破壊は、オブジェクトの最終化を課す
る。オペレーション”finalize(最終化を意味し、ファ
イナライズともいう)”の方法は、破壊されるオブジェ
クトがそのひとつのメンバであるどのクラスにとっても
固有とすることができる。方法は、そのクラスにとって
固有のオブジェクトのプロパティを最終的なものにしな
ければならない。
【1133】オペレーション”finalize”のための方法
は、そのオペレーションが最終化するプロパティをオプ
ションによって廃棄し、したがっておそらくは破壊する
ことができる。方法がそのようにしない場合エンジンが
それを行う。
【1134】最終化の順序(Finalization Order) オペレーション”finalize”の方法は、オペレーション
をエスカレートしない。エンジンは、破壊されたオブジ
ェクトのクラス及びその実施スーパークラスを標準的な
順序で訪問して、他の方法が成功しているか否かにかか
わらず、各々の方法を実施する。
【1135】2.2.14 クラスの構造 インストラクションセットは、多くのコンピューター言
語とは異なって、オペレーション”makeclass(以下、
メイククラスともいう)”によって実行中にクラスを生
成することができる。あるクラスは、クラスのインター
フェースとクラスの実施との両方を規定するクラス定義
に基づいて生成される。
【1136】識別子のバインディング(Identifier Bin
dings) クラスのインターフェースまたは導入は、そのインター
フェースまたは実施が識別子によって指示する他のクラ
スに通常は依存する。サイテイションは、インターフェ
ースまたは実施の属性”vocabulary”の助けを借りて各
々のこのような識別子に対して拘束される。
【1137】識別子が、予め規定されたクラスの識別子
に等しければ、サイテイションはそのクラスに等しい。
その他の場合には、識別子が、属性”vocabulary”中の
あるキーに等しければ、サイテイションは、関連した値
に等しい。その他の場合には、サイテイションの属性”
title”が、そのクラスの識別子に等しいことを除い
て、サイテイションは、構成されたクラスのサイテイシ
ョンに等しい。
【1138】注:インストラクションセットは、予め定
義されたクラスの割り当てられたサイテイションを定義
しない。
【1139】サイテイションのバインディング(Citati
on Bindings) クラスは、それぞれ現在のプロセス及び現在のプレイス
の属性”privateClasses(以下、プライベートクラスと
もいう)”及び”publicClasses(以下、パブリックク
ラスともいう)”の助けをかりて、サイテイションに対
して拘束される。引用されたクラスが予め定義されてい
れば、引用されたクラスは、エンジン自体に見い出され
る。もし引用されたクラスが、ユーザーによって定義さ
れていれば、そのクラスはサーチされ、現在のプロセス
の属性”privateClasses”に見い出されるか、または見
い出されず、見い出されない場合は、現在のプレイスの
属性”publicClasses” に見い出され、そのクラスは、
引用されたクラスに対して後方に互換性を有するどんな
クラスでもよい。
【1140】クラスは、2回の内の1回において、サイ
テイションに対して拘束される。クラスの識別子がある
プロシージャのアイテムである場合、そのクラスは、識
別子が実行される都度サーチされる。その他の場合に
は、クラスが構成された場合にサーチされる。
【1141】2.3 実行モデル インストラクションセットは、このセクションが定義す
る”実行モデル”を実現する。
【1142】2.3.1 メソッド ”method(以下、メソッドという)”は、その各々の遂
行の動的状態を別々に保持することのできるプロシージ
ャである。この動的状態は、ひとつのフレームの形状を
とる。オペレーション、変換及び選択された属性を遂行
するためにメソッドが使用される。
【1143】フレーム(Frame) ”frame(以下、フレームともいう)は、スタックと0
またはそれ以上の変数とを含む。それ自身がオブジェク
トである”variable(変数)”は、フレームのメソッド
の特別な遂行の動的状態のひとつの要素であり、全体と
して集められかつスタックとともに、フレームのすべて
のプロパティが、全体の動的状態を構成する。フレーム
のスタック及び変数は、そのフレームに対して内部的で
あり、従って、フレームのメソッドのみによって直接に
感知され、検査され、変更することができる。フレーム
自身は、全く操作され得ない。
【1144】遂行(Performance) メソッドを”performance(遂行を意味し、以下、パフ
ォーマンスともいう)”することは、ひとつのフレーム
を生成し、フレームのスタックの初期アイテムとしてオ
ブジェクトの申し入れを受け入れ、フレームの変数を0
に設定し、メソッドのプロシージャを実施し、フレーム
を廃棄し、プロシージャの成功した場合にのみフレーム
の最終的なアイテムを、フレームの廃棄前にそのスタッ
クからそれらをポップして提供することである。プロシ
ージャが成功するか、または失敗した場合にメソッドの
実施は、それぞれ成功したり失敗したりする。
【1145】いかなる時点においても”current method
(現在の方法)”は、現在遂行中のメソッドであり、”
current frame(現在のフレーム)”は、その遂行のた
めにつくり出されたフレームであり、”current stack
(現在のスタック)”すなわち”the stack(以下、ス
タックという)”は、現在のフレームのスタックであ
る。
【1146】注:メソッドは、あるオペレーションを遂
行する場合、スタックの初期アイテムとして提供された
オブジェクトが、アーギュメントであり、もしあれば、
最終的なアイテムとして提供されたオブジェクトの最も
上方にあるものが結果である。これらの2つの事象の間
で、スタックは、最初にアーギュメントを保持し、もし
あれば、次にメソッドが要求するオペレーションの結果
を保持する。もしあればオペレーションの終了時にスタ
ックのもっとも上方にあるアイテム以外のアイテムが、
オペレーションの中間のステップを実行するためにオペ
レーションによって遂行の間、使用されるオブジェクト
である。
【1147】2.3.2 プロシージャ ”procedure(以下、プロシージャともいう)は、プロ
シージャのプロパティに含まれず、より基本的に、プロ
シージャの一部分である、その”item(以下、アイテム
ともいう)”である、0またはそれ以上の実行されるオ
ブジェクトを含む。これらのアイテムは、範囲[1,
n]によって番号付けされ、”n”は、プロシージャ
の”length(長さ)”である。プロシージャは、長さが
0になれば”cleared(クリアされるという意味をな
し、以下、クリアードともいう)”される。アイテムの
番号は、プロシージャ中のその”positoin(位置)”で
ある。”subprocedure(以下、サブプロシージャともい
う)”は、一つのプロシージャ内の隣接した位置にある
0以上のアイテムを含む。
【1148】遂行(performance) プロシージャを”perform(遂行)”することは、現在
のフレーム中において増大する位置の順序でそのアイテ
ム順に実行されることである。プロシージャの遂行は、
各々のアイテムが成功のうちに実行されれば”succeeds
(成功)”し、他の場合には”fails(失敗)”する。
いずれかのアイテムが実行に失敗した場合には、残りの
アイテムは実行されない。
【1149】2.3.3 実行されるオブジェクト ”executed(実行されるという意味をなし、以下、エグ
ゼキューティドともいう)”オブジェクトは、ひとつの
プロシージャのアイテムとして許可される。
【1150】遂行 プロシージャではない実行されるオブジェクトを、”pe
rform(遂行)”することは、それを実行することであ
る。
【1151】実行(execution) 実行されるオブジェクト”execute(実行:以下、エグ
ゼキュートともいう)”することは、実行されるオブジ
ェクトが識別子であるか、モディファイヤであるか、セ
レクタであるか、または他の何かであるかということに
依存して物事をすることである。エンジンが例外を投出
した場合には、実行は失敗し、他の場合には実行は成功
する。
【1152】識別子、モディファイヤまたはセレクタ以
外のいかなる実行されるオブジェクトも、実行されるオ
ブジェクトへの保護されるリファレンスをスタックに保
存することによって実行される。
【1153】注:前項において問題にされた実行される
オブジェクトは、ビット、ビットストリングブーリア
ン、文字、整数、マーク、オクテット、オクテットスト
リング、プロシージャ、実数及びストリングである。
【1154】2.3.4 識別子 特別なクラス、フィーチャ、プロパティまたは変数は、
インストラクションセット中の他の構成及びオブジェク
トと同様に、識別子によって表される。
【1155】識別子(Identifiers) ”identifier(識別子)”は、長さが少なくとも1に等
しいストリングである識別子の”text(テキスト)”に
よって、その範囲内において、あるオブジェクトを他の
オブジェクトから識別する。
【1156】有資格の識別子(Qualified Identifier) ”qualified identifier(有資格の識別子)”は、ある
フィーチャの0またはそれ以上の遂行を同一のフィーチ
ャの0またはそれ以上の他の遂行から識別する。有資格
の識別子は、その識別子のテキストによってフィーチャ
を表す。有資格の識別子は、有資格の識別子の”qualif
ier”であるクラスの識別子のテキストによって、遂行
−すなわち、あるクラスに対して固有のまたはあるクラ
スによって引き継がれたもの−を表す。
【1157】範囲(Scope) 同一のスコープを持ついかなる2つの識別子も同一とは
しない。
【1158】クラス(Class) インターフェースまたは遂行によって引用されるクラス
は、その範囲が遂行のそのインターフェースによって引
用される全てのクラスである識別子によって表される。
【1159】フィーチャ(Fiture) あるオブジェクトのフィーチャは、そのオブジェクトが
1つのインスタンスであるクラスによってクラスに固有
か、またはそれによって引き継がれる全てのフィーチャ
を範囲とする識別子によって表される。
【1160】プロパティ(Property) あるオブジェクトのプロパティは、問題のプロパティそ
れ自身がそれに対し固有であるクラスに対して固有の全
てのプロパティを範囲とする識別子によって表される。
【1161】変数(Variable) あるフレームの変数は、そのフレームがその遂行に属す
るメソッドによって規定されたすべての変数を範囲とす
る識別子によって表される。
【1162】シンタックス(Syntax) クオリファイァのテキストは、表A.1の文字を排除す
るものとする。
【1163】
【表1】 テキストまたはクオリファイァの最初の文字は、表A.
2の文字ならびに表A.1の文字を排除するものとす
る。
【1164】
【表2】 注:1つのプログラムがハイテレスクリプトにある場
合、そのテキストの最初の文字が下線(” ”)(U+00
5F)である識別子を割り当てる特権は、ハイテレスクリ
プトコンパイラ自身に留保される。
【1165】2.3.5 静的な置換の規則(Static S
ubstitution Rules) プロシージャは、下記の表A.3の置換がなされたかの
ように遂行される。プロシージャ中の第1列にサブプロ
シージャが現出されたときは、いつでも第2列の第2行
のサブプロシージャがそれに変えられる。
【1166】表A.3は、テレスクリプトを定義するた
めに用いられたノンターミナルを用いて各々のサブプロ
シージャを定義する。この表の第1セクションでは、”
Identifier(識別)”は、それ自身かまたは”QIdentif
ier(Q識別子ともいう)”を表す。第2セクションで
は”Idenntifier(識別子を意味し、以下、アイデンテ
ィファイヤともいう)”はそれ自身のみを表す。
【1167】1 この置換は、識別子がオペレーション”
protect(プロテクトともいう)”の識別子でもオペレ
ーション”ref(レフともいう)”の識別子でもない場
合のみ適応される。
【1168】2 この置換は、ひとつのアイデンティティ
である。
【1169】下記の表A.3または表A.4のもの以外
のサブプロシージャ中に配置されたモディファイアを有
するプロシージャを作成するように求められた場合、エ
ンジンは例外を投出する。このアペンディックスのセク
ション3.2.12に説明される内部的なオペレーショ
ンは、表A.3または表A.4の置換のひとつのものの
結果として要求された場合にのみ成功する。その他の場
合には内部オペレーションにはアクセスすることができ
ない。
【1170】
【表3】 2.3.6 動的な置換の規則 プロシージャは、表A.4による置換が同様になされた
かのように遂行される。表A.4において”Idenntifie
r”は、それ自身かまたは”QIdenntifier” を表す。
【1171】
【表4】 1 この置換は、識別子が属性を示すときにのみ適応され
る。
【1172】2 この置換、すなわちアイデンティティ
は、注1の置換が、すなわち識別子が属性を表さない場
合にのみ適応される。
【1173】2.3.7 セレクタの実行 ”selector(セレクタともいう)”は、特別の実行効果
を実現する。セレクタは、次のように実行される。
【1174】ブレーク(break) オペレーション”loop(以下、ループともいう)”、”
repeat(以下、リピートともいう)”、または”while
(ホワイルともいう)”を成功させる。どのオペレーシ
ョンも遂行されていない場合には、”loop Missing(す
なわちループ不在を意味)”が投出される。
【1175】クライアント(client) 現在のクライアントへのプロテクトされないリファレン
スをスタックに保存する。”current client(現在のク
ライアント)”は、リクエスタがエンジン自身でない場
合、例えばフィーチャのアクセスが”system(システム
ともいう)”である場合、現在のメソッドが、遂行して
いるフィーチャを要求するオブジェクトであり、その他
の場合には、0である。
【1176】継続(continue) オペレーション”loop”、”repeat”、または”whil
e” を行わせ、もし何かオペレーションがあれば、その
次の遂行を開始させる。どちらのオペレーションも遂行
されていなければ、”Loop Missing”が投出される。
【1177】エスカレート(escalate) 現在のメソッドが、遂行するオペレーションのための識
別子を実行するのと同じであるが、次のような例外があ
る。メソッド選択の前に、エンジンは、リクエスタがレ
スポンダでない場合、”Escalation Invarid(エスカレ
ーション不適切の意味)”を投出する。また、エンジン
は、メソッドの選択の間、現在のメソッドが固有となる
クラスをバイパスする。オペレーションは、エスカレー
トされている。
【1178】ここ(here) 現在のプレイスへの保護されていないリファレンスをス
タックに保存する。”current place(現在のプレイ
ス)” は、現在のプロセスがエンジンプレイスでない
場合に、現在のプレイスが占有されているプレイスであ
り、その他の場合には、0である。
【1179】プロセス(process) 現在のプロセスへのプロテクトされていないリファレン
スをスタックに保存する。”current process(現在の
プロセス)” は現在の方法の遂行が動的にその一部と
なっているプロセスである。
【1180】セルフ(self) 現在のオブジェクトへのリファレンスをスタックに保存
する。”current object(現在のオブジェクト)”は、
現在のメソッドを遂行しているオブジェクトである。保
護されるリファレンスが現在のメソッドの遂行をリクエ
ストするために用いられている場合にのみ、リファレン
スは保護される。
【1181】成功(succeed) 残りのアイテムを実行することなしに現在の方法を成功
させる。属性、またはオペレーションの結果は、もしあ
れば、スタックに残される。
【1182】2.3.8 モディファイヤの実行 モディファイアはプロシージャにおいてそれに続くアイ
テムの実行を変更する。いろいろのモディファイヤの実
行が置換規則に定められている。置換規則が関与しない
もののモディファイヤは、次のように実行される。
【1183】デマルケイト(demarcate) 次の識別子または有資格の識別子を実行させるが、次の
点が変更される。スタックがマークを含まない場合、エ
ンジンは、”Mark Missing (マーク不在の意味)”を
投出する。識別子が表わすオペレーションによって要求
されるアーギュメントの数が固定されており、マークよ
りも上方のオブジェクトの数よりも少なければ、エンジ
ンは”Argument Invalid(アーギュメント不適切の意
味)”を投出する。さもなければ、アーギュメントの数
が固定されていてマークよりも上方のオブジェクトの数
よりも多ければ、エンジンはスタック中に、マークと供
給されるオブジェクトとの間に、不在のアーギュメント
の数分の0を挿入する。エンジンは、次にスタックから
マークを除き、オペレーションが成功しているが結果を
もたらさない場合には、結果の代りにリクエスタにゼロ
をリターンする。
【1184】メンション(mention) ”mention(以下、メンションともいう)"モディファイ
アに続くオブジェクトの実行を回避し、その代りにスタ
ックにそのオブジェクトへの保護されたリファレンスを
保存する。
【1185】ユーススタック(useStack) 次のオブジェクトを実行する前にスタック自身へのリフ
ァレンスをスタックに保存する。
【1186】2.3.9 識別子の実行 クラス、属性、プロパティまたは変数のための識別子の
実行は、表A.3及び表A.4について以上に説明した
置換規則によって定められている。
【1187】識別子 置換規則が関与しない識別子−すなわち、オペレーショ
ンのための識別子−は、次のようにして実行される。
【1188】エンジンはスタックがクリアされた場合に
は、”Responder Missing(レスポンダ不在の意味)”
を投出する。それは、レスポンダがスタックの頂点にい
たはずだからである。エンジンは、レスポンダが、識別
子の表わすオペレーションを持たないかまたはリクエス
タがオペレーションへのアクセスを持たないときに、”
Feature Unavailable(フィーチャ使用不可能の意
味)” を投出する。その他の場合には、エンジンは、
以下のセクションに述べるようにオペレーションのメソ
ッドを選択し、実行する。
【1189】有資格識別子 オペレーションのための有資格の識別子は、そのオペレ
ーションのための有資格の識別子でない識別子と同じ仕
方で実行されるが、次の例外がある。
【1190】メソッドの選択の前にエンジンは、リクエ
スタがレスポンダでない場合に、”Escalation Invalid
(エスカレーション不適切を意味し、以下、エスカレー
ションインバリッドともいう)”を投出する。さもなけ
れば、エンジンは、オペレーション”getClass(ゲット
クラスともいう)"を要求し(そのアーギュメントは、
テキストがクオリファイヤである識別子である)、オペ
レーションの結果が、現在のメソッドを固有とするクラ
スでも、その直接実施スーパークラスでもない場合に”
Escalation Invalid(エスカレーションインバリッド)
”を投出する。
【1191】エンジンは、メソッドの選択の間に、オペ
レーション”getClass”及びその遂行スーパークラスの
結果にそれ自身を限定する。オペレーションはエスカレ
ートされている。
【1192】2.3.10 メソッドの選択 エンジンは、ここにリストされる順序で次の4つのロケ
ーションをサーチすることによってそれが見い出した最
初のメソッドをあるオペレーションのために選択する。
【1193】・レスポンダがクラスであれば、そのクラ
スメソッド。
【1194】・レスポンダがクラスであれば、標準的な
順序で探索されるその遂行スーパークラスのクラスメソ
ッド。
【1195】・レスポンダのクラスのインスタンスメソ
ッド。
【1196】・標準的な順序で探索されるレスポンダの
クラスの遂行スーパークラスのインスタンスメソッド。
【1197】もしメソッドがオペレーションをエスカレ
ートさせれば、エンジンは、別のオペレーションを選択
することを試み、それが既に選択した方法が固有となる
クラスに対するサーチを継続する。エンジンが方法を見
出さなかった場合、エンジンは”Escalation Invalid”
を投出する。
【1198】2.3.11 メソッドの遂行 エンジンはオペレーションのためにそれが選択したメソ
ッドを次のように遂行する。
【1199】アーギュメントの数の固定 オペレーションが固定された数のアーギュメントを必要
とする場合、エンジンは、スタックの長さがこの数字プ
ラス1よりも少ない場合に、”Argument Missing(アー
ギュメント不在を意味し、以下、アーギュメントミッシ
ングともいう)”を投出し、アーギュメントがアーギュ
メントのコンストレイントを侵害している場合に、”Ar
gument Invalid”を投出する。
【1200】アーギュメントの数の変動 オペレーションが可変数のアーギュメントを必要とする
場合、エンジンは、スタックがマークを含まない場合
に”Mark Missing(マーク不在を意味し、マークミッシ
ング)”を投出し、アーギュメントがアーギュメントの
コンストレイントを侵害している場合に、”Argument I
nvalid”を投出する。
【1201】遂行(Performance) エンジンは、スタックからレスポンダを復元し、メソッ
ドの遂行のためのフレームを生成し、そのメソッドを遂
行し、フレームを廃棄する。
【1202】以下の動作は、メソッドの遂行を取り巻い
ている。エンジンは、オペレーションのアーギュメント
を提供し、リクエスタのスタックからレスポンダのスタ
ックにそれらのアーギュメントを移動させる。アーギュ
メントの数が可変の場合には、マークは、同様にこのよ
うにして提供される。エンジンは、もしあれば、オペレ
ーションの結果の提供を受け入れ、それをレスポンダの
スタックからリクエスタのスタックに移動させる。
【1203】成功(Success) メソッドが、成功しオペレーションがある結果を生じる
べき場合には、エンジンは次のことを行う。結果が生じ
ない場合エンジンは”Result Missing(結果不在を意味
し、以下、リザルトミッシングともいう”を投出する。
結果が結果のコンストレイントを満たさない場合、エン
ジンは”Result Invarid(結果不適切を意味し、以下、
リザルトインバリッドともいう)”を投出する。どちら
の例外も、次のように取り扱われる。
【1204】失敗(Failure) メソッドが失敗し、オペレーションがその投出するべき
例外を投出しなかった場合、エンジンは”Unexpected E
xception(予期されない例外を意味し、以下、アンイク
スペクティドイクセプションともいう)”によって、前
記の例外を代える。
【1205】2.4 プロセスモデル インストラクションセットは、このセクションが定義す
る”プロセスモデル(process model)”を実現する。
【1206】2.4.1 プロセス(Processes) ”プロセス(process)”は、ネームされた自律的な計
算である。それは、マルチタスクのためのインストラク
ションセットの規則を構成する。
【1207】注:あるプロセスは、実世界における何物
か、例えば、ネットワーク中においてプロセスがその目
的を促進しようと努めている人をしばしば表わす。
【1208】注:2つの種類のプロセス、すなわちエー
ジェントとプレイスがある。
【1209】相互作用(Interaction) プロセスが、別のプロセスへのリファレンスを持つ場
合、両者は、2つの任意のオブジェクトが行い得るもの
と同じ仕方で相互作用をすることができる。すなわち、
これは、それぞれのフィーチャによる。このフィーチャ
の各特性または結果は、あるオブジェクトへのリファレ
ンスまたはそのコピーを一方のプロセスが他のプロセス
に伝達すること可能にする。
【1210】2.4.2 位相(Phases) プロセスは、複数の位相を通過する。エンジンはオペレ
ーション”イニシャライズ”を要求し、その時の可能な
プロセスは、そのオペレーションを成功のうちに遂行す
る。エンジンはオペレーション”live(以下、ライブと
もいう)”を要求し、プロセスはそのオペレーションを
成功のうちに遂行する。オペレーションのアーギュメン
トとしてゼロが供給される。エンジンはオペレーショ
ン”finalise(最終化)”を要求し、プロセスはそのオ
ペレーションを遂行する。
【1211】例外(Exceptions) 前記の各位相の通常の進行状態は中断させることができ
る。オペレーション”initialize”が例外を投出した場
合、エンジンはそのプロセスを終了させる。オペレーシ
ョン”live”が例外を投出した場合、そのプロセスが保
持するパーミットがそれを許すならば、オペレーショ
ン”live”を再び要求することによってプロセスを再開
するかまたはさもない場合にオペレーション”finaliz
e”を要求する。前者の場合、例外はオペレーションの
アーギュメントとして供給される。オペレーション”fi
nalize”が例外を投出する場合、エンジンはプロセスを
終了させる。
【1212】プロセスが前記の位相のどれかにおいてそ
の固有のパーミットまたはローカルパーミットを使い尽
くした場合、プロセスが”Permit Exhausted(パーミッ
ト消尽を意味し、パーミットイクスハウステッドともい
う)”を投出したかのような状態となる。
【1213】2.4.3 スレッド(Threads) 各プロセスは、独立した実行スレッドを生じさせる。こ
の実行スレッドは、どんな時点においても、プロセスの
イニチアティブにおいて遂行されているメソッドのフレ
ームを包括する。第1のこのようなメソッドは、プロセ
ス自身がオペレーション”live”のために供与する方法
であり、第2のメソッドは、オペレーション”live”の
方法がそのオブジェクトのために要求するフィーチャの
ためにオブジェクトが用意する方法であり、以下同様で
あり、反復される。
【1214】スケジューリング(Scheduling) エンジンは、ブロックされていない、すなわちある時間
まで待機しているすべての実行スレッドをスケジュール
し、そのプライオリティによって必要とされる優先順序
に従って行う。他のものが等しければ、エンジンは、1
つのオーソリティのプロセスを他のオーソリティのプロ
セスに対して優先させることはなく、またひとつのブラ
ンドのプロセスを他のブランドのプロセスに対して優先
させたり、同一のプライオリティのあるプロセスを別の
プロセスに優先させたりすることはない。
【1215】中断(Interruption) エンジン自身があるオブジェクトのフィーチャを、すな
わちシステムフィーチャを要求する場合、そのフィーチ
ャのメソッドは、オブジェクトのオーナーのスレッドの
一部分として遂行される。オーナーは実際には、その目
的に対しては中断される。
【1216】2.4.4 リソース(Resouces) ”resouce(リソースともいう)”は、ある特別のプロ
シージャの遂行を通じてあるプロセスに対してある保証
を与えることのできる何かである。エンジンは、これら
の保証を与えることができるまでプロセスを遅延させる
ことができる。
【1217】注:リソースは、臨界的な条件領域の定義
を可能にする。
【1218】注:リソースは、物理的なリソース(以下
に例示する)のための代理人であることが多い。
【1219】注:電子メールシステムにおいて、例えば
メールボックスとして役立つエージェントが送出される
メッセージのためのデータベース及びこれらのデータベ
ースを表わすリソースをそのプロパティの中に含めるこ
とができる。エージェントは、新しく送出されるメッセ
ージをデータベースに追加するタスクを開始する前にリ
ソースの排他的な使用を得ることがあり、それによって
現在の配送に対してデータベースの一体性を確保する。
【1220】ニード(Need) プロセスは、別のプロセスに、あるオブジェクトへのリ
ファレンスを伝えることができるので、各オブジェクト
は、そのクラスに固有のまたはそのクラスによって受け
継がれたメソッドがこれらのプロセスによって同時に遂
行されることに対して準備しなければならない。リソー
スは、オブジェクトがこれらの準備をすることを可能に
する。
【1221】リソースは、オペレーションの連鎖が細か
く(Atomically)行われることを保証するために用いら
れる。あるオペレーションに対してはこのような注意は
一般には必要ではない。それは、オペレーション”wait
(ウエイトという)”、オペレーション”meet(ミート
という)”及びレスポンダ例えばオペレーション”do
(ドゥーという)”としてかまたはアーギュメント例え
ばオペレーション”restrict(制限を意味し、レストリ
クトという)”として供給されたプロシージャを遂行す
るすべての予め定義されたオペレーションは、エンジン
によって細かく遂行されるからである。
【1222】注:エンジンは、オペレーション”go”及
び”send”をアトミックに遂行する。
【1223】排他的と共有(Exclusive vs Shared) あるプロセスには、リソースの共有された使用または排
他的な使用が保証されうる。どんな時点においても、い
かなるプロセスもリソースの使用を持たないか、あるプ
ロセスがリソースの”exclusive(排他的なという意味
を有し、イクスクルーシブともいう)”使用を持つか、
または1つ以上のプロセスがリソースの”shared(共有
されたという意味を有し、シェアードともいう)”使用
を持つかである。
【1224】条件(Condition) 要求がなされたときに特定される1つ以上の条件の中に
リソースが含まれることがプロセスにおいて保証され得
る。いかなる時点においても、リソースは、そのリソー
スが生成されたときに定義された1つ以上の条件の中
に、”condiion(条件)”を持つ。識別子によって表わ
されるリソースの条件は、リソースの使用、この場合、
共有でも排他的でもよい、によってのみ検査でき、そし
てリソースの排他的な使用を持ったプロセスによっての
み変更され得る。
【1225】2.4.5 パーミット(Permits) ”permit(パーミットともいう)”は、あるプロセス、
その”subject(サブジェクトともいう)”に能力を許
容する。これらの能力は、インストラクションセットの
大部分例えばインストラクションセットの算術演算によ
って表わされ、各々のプロセスに暗黙のうちに許可され
ている。他の能力は、特別のプロセスに対して、これら
のプロセスに割り当てられたパーミットによって明文で
許可されている。
【1226】注:パーミットの主要な目的は、コンピュ
ータ及びコミュニケーションのリソースを予定されない
量においてプロセスが消費することをできるだけ阻止す
ることにある。これは、プロセスを生成してそのプロセ
スに対してお金を支払うかもしれないユーザにとって
も、プロセスが消費するリソースを供給しなければなら
ない供給者にとっても利益である。
【1227】注:前述したリソースは、クラス”resouc
e(リソース)”のメンバと混同されるべきではない。
2つの間には必要な関連性はない。
【1228】能力(Capabilities) パーミットは、ある限られた大きさ及び量において能力
を許容する。
【1229】パーミットは、プロセスにあるエイジ、サ
イズ、料金、優先、または真正(オーセンティシティと
もいい;authenticity)を許容することができる。パー
ミットが、そのサブジェクトに対して資格を与える料金
は、サブジェクトの”allowance(以下、アローワンス
ともいう)”と呼ばれる。これらのディメンションのい
ずれにおいても量は、整数である。エイジは秒とし、サ
イズはオクテットで、また料金は”teleclick(以下、
テレクリックともいう)”で計測される。優先度はその
整数の価と共に増大する。オーセンティシティは、領域
特異である。
【1230】パーミットは、プロセスに、それ自身を搬
送する権利(パーミットの属性”canGo”)、それ自身
のクローンを作り出して搬送する権利(属性”canSen
d”)、他の競争プロセスを作り出す権利(属性”canCr
eate”)、選定されたプロセスのパーミットを、それら
の能力を減少させる(属性”canDeny”)または増大
(属性”canGrant”)させるように選定されたプロセス
のパーミットを設定する権利、または、他のプロセスの
実際の料金を増大させる権利(属性”canCharge”)、
または終了された時に再スタートさせる権利(属性”ca
nRestart”)を許容することができる。これらのディメ
ンションのどれにおいても量はブーリアンであり、この
ブーリアンの値が”真”であれば、問題の権利は許可さ
れる。
【1231】パーミットが能力を許容することのできる
各ディメンションは、そのパーミットの属性によって表
わされる。属性は、通常は整数であるが、その代りにゼ
ロであることもでき、その場合に能力は無限の量で許容
される。
【1232】注:エンジンによってもまたは他のプロセ
スによっても、あるプロセスに与えられるサービスにつ
いてのテレクリックで表わした料金は、プレイスごとに
または時間ごとにまたはその両方について変化し得る。
あるサービスに対するチャージ、例えばスペースは、単
位時間ごとに評価することができる。
【1233】ステイタス(Status) あるプロセスの”status(以下、ステイタスともい
う)”は、そのプロセスの行使された能力を特定する。
あるプロセスのステイタスは、以下に説明する、そのプ
ロセスの実効的なパーミットであるが、パーミットの”
age(エイジともいう)”、”charge(チャージともい
う)”、”extent(範囲の意味)”及び”priority(優
先度の意味)”の各属性は、それぞれそのプロセスの実
際のエイジ、チャージ、大きさ及び優先度である。
【1234】実効的パーミット(Effective Permit) プロセスの”effective Permit(実効的パーミット)”
は、そのプロセスの許容された能力を特定する。このパ
ーミットは、どんな時点及びプレイスにおいても、その
プロセスの本来の、領域的な、そしてローカルなパーミ
ットと、効力を持つ時間的なパーミットとの間の交点で
ある。しかしこの目的のために、本来のパーミットの”
オーセンティシティ(authenticity)”属性は、プロセ
スの生成された領域にそのプロセスがいない場合には、
ゼロと考えられる。
【1235】2つのパーミットの”交点(intersectio
n)”は、それ自体としてパーミットであり、このパー
ミットの本来の属性のおのおの、A0は、問題の2つの
パーミットの同じようなネームの属性A1及びA2の交点
である。より特定的には、A0は、A2がゼロである場合
に、A1であり、A1がゼロである場合A2であり、その
他の場合には、A1とA2とのどちらか最小のものであ
る。一旦設定されたプロセスのパーミットのどれかが再
設定された場合には、エンジンは、後述するオペレーシ
ョン”restricted(制限される)”の使用によってプロ
セスにそれを通知する。
【1236】プロセスは、プロセスの言う実効的なパー
ミットによってプロセスに許可される量以上の量におい
て能力を行使しようと努めた場合に、そのパーミット
を”violates(侵害)”している。パーミットを使い尽
くすことなしに自己のパーミットを侵害すると、例外が
引き起こされる。
【1237】プロセスの一時的なパーミットのどのひと
つも行使されていない場合、プロセスの実効的なパーミ
ットがプロセスに許容するべきエイジ、チャージ、また
はサイズにプロセスの実際のエイジ、チャージまたは大
きさがそれぞれ到達することを許容することによって、
プロセスのパーミットが”消尽(exhausts)”される。
自己のパーミットの消尽は自己の終了を開始させる。
【1238】固有のパーミット(Native Permit) あるプロセスの”native permit(固有のパーミッ
ト)”はプロセスの創始者によってプロセスに許容され
た能力を特定する。あるプロセスすなわち親は、別のプ
ロセスすなわち子を親が作ったときにこのパーミットを
設定する。同僚プロセスは同僚の自身の実効的パーミッ
ト(属性”canDeny”)によってそのように能力が与え
られるならば、能力を減少させることができるが増大は
させることができない。
【1239】能力はプロセスの間に転送させられるが生
成はされない。親または同僚は、親または同僚がそれ自
身持たない能力”X”を子に許容することはできない。
その実効的パーミットによって親または同僚に許可され
た”X”の量を”P”で表わすものとする。さらに、子
の固有のパーミットによって子に許容された”X”の量
を”C”で表わすものとする。”C”は”P”を超過し
ない。
【1240】チャージ能力”X”は保存されている。親
または子の実際のチャージの量を予め”A”とする。”
C”は”P−A”を超過しない。親または同僚の実際の
その後のチャージの量は”A+C”である。
【1241】地域的なパーミット(Regional Permit) プロセスの”regional permit(地域的パーミットを意
味し、リージョナルパーミットともいう)”は、プロセ
スの占有するプレイスを含む領域によってプロセスに許
可された能力を特定する。領域のオーソリティのプレイ
スは、プレイス自身の実効的パーミット(属性”canDen
y”及び”canGrant”)によってそのように能力が保護
されていれば、プロセスが領域に入る時及びその後のど
の時点においても、パーミットを設定することができ
る。しかし、子がオペレーション”go”または”send”
ではなく、オペレーション”new”を用いてエンタした
場合には、この最初の地域的なパーミットは、親の現在
の地域的なパーミットにされる。
【1242】ローカルパーミット(Local Permit) プロセスの”local Permit(ローカルパーミットともい
う)”はプロセスが占有するプレイスによってプロセス
に許可される能力を特定する。プレイスは、プレイス自
身の実効的パーミット(属性”canDeny”及び”canGran
t”)によってそのように能力が賦与されていれば、プ
ロセスがエンタした時及びその後のどの時点において
も、パーミットを設定することができる。
【1243】あるエージェントは、チケットを用いてあ
るプレイスにエンタした場合、そのプレイスのある能力
をリクエストする。しかしながら、プレイスは、エージ
ェントが持つべき能力を定める。そのプレイスは、エー
ジェントが要求したよりも多くまたは少ない能力のロー
カルパーミットをもってエージェントがエンタすること
を許容することができる。しかし、後者の場合にはトリ
ップは失敗に終るすなわちオペレーション”go”また
は”send”は、エージェントが到着したとしても例外を
投出する。
【1244】あるプロセスは、あるプレイスにそこで作
り出されることによってエンタした場合、初期化パラメ
ータなしに作り出されたローカルパーミットをプロセス
の最初のローカルパーミットとして受ける。
【1245】一時的なパーミット(Temporary Permit
s) プロセスの0またはそれ以上の”temporary permits
(一時的なパーミットと意味し、テンポラリパーミッツ
ともいう)”は、プロセスが一時的にそれ自身に許容す
る能力を特定する。おのおのは、特定されたプロシージ
ャの遂行についてオペレーション”制限(restrict)”
または”スポンサ(sponsor)”を用いて実行される。
これらのプロシージャは入れ子させることができる。
【1246】エンジンが、あるシステムのフィーチャを
リクエストする場合、レスポンダのオーナーは、イニシ
ャライゼーションパラメータなしに作り出された一時的
なパーミットを用いてオペレーションのメソッドをスポ
ンサする。このようにしてチャージは、オーナーに帰せ
られる。
【1247】注:あるプロセスは、一時的なパーミット
を使用して、そのプロセスの許容されたエイジ、チャー
ジまたはサイズの一部分を保存することができる。プロ
セスがこの品目の大部分を消尽した場合、プロセスは保
存されている部分を使用して緊急アクションを取ること
ができる。
【1248】2.4.6 オーナーシップ それ自身プロセスでないおのおののオブジェクトは、オ
ブジェクトによって”owned(所有)”されている。あ
るプロセスとそれが所有するオブジェクトとは、そのプ
ロセスの”artifacts(以下、アーティファクトともい
う)”である。
【1249】注:オーナーシップは、オーソリティと混
同されるべきではない。
【1250】オブジェクトの生成 各オブジェクトは、最終的に、あるフィーチャのアーギ
ュメントまたはフィーチャの結果をメソッドの間のコピ
ーによって通過させることによって生成される。新しい
オブジェクト−すなわちパスされるコピー−は、オブジ
ェクトがプロセスである場合、コピーがそのメソッドに
伝えられるオブジェクトによってかまたはその他の場合
には、オブジェクトのオーナーによって所有される。
【1251】オブジェクトの破壊 オブジェクトが破壊される時、そのすべてのアーティフ
ァクトは破壊され、すべての残存するそれらへのリファ
レンスはボイドされる。
【1252】オブジェクトの共有 プレイスのアーティファクトは、第1の領域及びそれ自
身のアーティファクトを形成する、直接スーパープレイ
スのアーティファクト並びに集合的に第2の領域を形成
する、その直接サブプレイスのアーティファクトを意味
するが、エンジンは、これら2つの領域の間にパスされ
たリファレンスをボイドすることができる。
【1253】注:このようにして防火壁をプレイスの間
に設立することができる。
【1254】2.4.7 クローニング あるプロセスには、それ自身をクローニングする能力が
与えられることがある。クローンは、別のプロセス、す
なわち”オリジナル(original)”のコピーとして開始
されるプロセスであるが、次のような例外がある。
【1255】クローンのアイデンティティ(オーソリテ
ィではない)はオリジナルのアイデンティティとは異な
っている。
【1256】クローンの固有のパーミット(そのローカ
ルパーミットでもある)はクローンが作り出された時に
与えられるパーミットである。オリジナルにおいて継続
中の、すなわちオペレーション”制限(restrict)”の
結果としての一時的なパーミットは、クローンの固有の
パーミットがこれを必要とする限りにおいて、クローン
内においてより制限的にされる。
【1257】オリジナルがそれ自身にまたはオリジナル
が所有するオブジェクトに関するものである場合、クロ
ーンはそれぞれそれ自身に関するかまたはそのオブジェ
クトのそれ自身のコピーに関する。オリジナルな第3の
プロセスのアーティファクトに関する場合、そのクロー
ンはボイドされたリファレンスを有する。
【1258】オリジナル従ってクローンがコンタクトさ
れるオブジェクトである場合、クローンの属性”コンタ
クト(contacts)”はクリアされる。
【1259】2.4.8 ブランディング ある領域は、その内部の各プロセスに対するブランドで
ある。
【1260】ある領域内のゼロまたは1つ以上のプロセ
スによって作り出された識別マークである。エージェン
トがある領域に入る時、その領域は、そのエージェント
に新しいブランドを与える。その領域内のあるプロセス
が別のプロセスを作り出す場合、後者のプロセスは前者
のプロセスのブランドを担う。従ってブランドは、その
領域に入ったプロセス例えばエージェントと、前者のプ
ロセスによってそこで作り出された全てのプロセスとを
意味する。
【1261】注:ブランドは、それ自身がインストラク
ションセットにないトラッキング・メカニズムを可能に
する。
【1262】2.4.9 コンタクト(Contacts) ”contact(コンタクトともいう)”は1つのプロセス
すなわち”obserrver(オブザーバ)”のために、第2
のプロセスすなわち”subject(サブジェクト)”との
相互作用を表し且つドキュメントする。”contacted
(コンタクトされた)”プロセスは、そのコンタクトの
セットを保持する上に、エンジンの助力を受ける。
【1263】2.4.10 アイソレーション(Isolat
ion) あるプロセスは色々な条件のもとに、例えばオペレーシ
ョン”partAll”を用いてその全ての知合いから分かれ
たり、トリップを開始したり、または終了したりするこ
とによって、アイソレートされる。
【1264】プロセスを”isolate(アイソレートとも
いう)”することは、他のプロセスのアーチファクトに
よって保持されているプロセスのアーチファクトへの各
々のリファレンスをボイドし、他のプロセスのアーチフ
ァクトをプロセスのアーチファクトが保持していること
の各々のリファーレンスをボイドすることである。2つ
の例外がある。第1に、プロセスが占有するプレイス
は、プロセスへのリファレンスを保持するが、プロセス
が所有するオブジェクトへのリファーレンスは保持しな
い。第2に、プロセスは、プロセスが占有するプレイス
に対して参照し続けることができる。
【1265】2.4.11 終了(Termination) あるプロセスは、そのフレームがプロセスの実行スレッ
ド中に含まれているメソッドを優雅に終了させることが
できる方法で終了される。
【1266】(i)A、B、Cがプロセスであり、(i
i)AのアーチファクトがBのアーチファクトのフィー
チャを要求し、(iii)BのアーチファクトがCのア
ーチファクトのフィーチャを要求し、(iv)Aがそれ
の固有のもしくはローカルなパーミットを生ずるものと
する。その場合エンジンはAを次のようにして終了させ
る。
【1267】A、B、Cが同一性なければ、エンジン
は”Permit Exhausted(パーミット消尽)”を投出し、
例外のためのオペレーション”catch(キャッチ)”を
用いて、最も最近に作り出されたA、BまたはCの方法
に制御を戻す。方法は再開されるがAは、それに方法が
関係しているオブジェクトであるかまたはそのオブジェ
クトのオーナである、ローカルパーミットA、Bまたは
Cのいずれかを保持している。メソッドが成功または失
敗によって終了すると、エンジンはAの消尽されたパー
ミットを回復し、前述の終了アルゴリズムを再開する。
【1268】エンジンは、これをした後に、(i)Aを
ホールドし、(ii)Aをアイソレートし、(iii)
効力のある OAMポリシーがそのようにそれを必要とする
ならば診断的な検査のためにAを提供し、(iv)Aを
破壊する。
【1269】2.5 ネットワーク・モデル インストラクションセットは、このセクションが定義す
る”network model(ネットワーク・モデル)”を実現
する。
【1270】2.5.1 エージェント(Agents) ”agent(以下、エージェントともいう”は、プレイス
からプレイスへと移動しうるプロセスである。エージェ
ントは、オペレーション”go”によって特別な目的点に
それ自身を搬送することができ、またオペレーション”
send”によって同時に1つ以上のクローンにいくつかの
目的点に向かって移動するように委託することができ
る。
【1271】注:インストラクションセットの”go”及
び”センド”の各オペレーションは、インストラクショ
ンセットの最も顕著で有力な様相である。多くのネット
ワーク・アーキテクチャにおいて全てのプロセスは静止
しており、メッセージの交換によって通信する。このネ
ットワーク・アーキテクチャでは、あるプロセスは静止
しているが他のプロセスは移動しており、前者は後者に
よって通信する。これはパラダイム・シフトである。
【1272】2.5.2 プレイス(Places) ”place(プレイス)”は、ゼロまたはそれ以上の他の
プロセスのための場所であり、これらの他のプロセスの
各々は、プレイスを参照し従ってプレイスと相互作用す
ることができる。
【1273】注:プレイスは、インストラクションセッ
トのただ1つの変革においてのアクションの例を表して
いる。プレイスはその間を移動するエージェントによっ
て相互作用する。
【1274】エンジン・プレイスと仮想的なプレイス
(Engine Place vs Virtual Places) 2つの種類のプレイスがある。各々のエンジンは1つ
の”engine place(エンジンプレイス)”を保持してお
りこれはエンジン自身を表している。また各々のエンジ
ンはゼロまたは以上の”virtual(仮想的な)”プレイ
スも持つ。
【1275】サブプレイスとスーパープレイス(Subpla
ce vs Superplace) エンジンプレイスを除くいかなるプレイスも別のプレイ
スを占有することができる。あるプレイスが直接または
間接に別のプレイスを占める場合、前者は後者の”subp
lace”であり、後者は前者の”superplace”である。あ
るプレイスが別のプレイスを直接占有する場合、前者は
後者の”immediate suvplace”であり、後者は前者の”
immediate superplace”である。
【1276】プレイスハイアラーキ(Place Hierarch
y) エンジンが保持するプレイスは、ツリーのノード、すな
わち”place hierarchy” として表され、ここにノード
はプレイスを表し、ノードの間のアークは、ノードが表
すプレイスの間の占有の相互関係を表している。
【1277】注:ツリーのルートは、エンジンの場所を
表し他のノードは仮想的なプレイスを表す。
【1278】2.5.3 トリップ(Trips) ”トリップ(trip)”は、1つのプレイスすなわちトリ
ップの”origine(始まりを意味し、オリジンともい
う)”から同じプレイスの別の点、すなわちトリップ
の”destination(目的点)”へのエージェントの移動
である。トリップは、そのオリジンのエージェントまた
は”transit(トランジットともいう)”のプレイス内
のエージェントを残すと、そのオリジンあるいはその目
的点のいずれか一方だけ失敗させ得る。
【1279】注:あるトリップは、そのトリップが論理
的なコミュニケーションのメディアでなく、物理的な手
段のエージェントで伝送を行うことをときどき課すの
で、物長時間を要す。
【1280】オペレーション”go”とオペレーション”
send” エージェントは、オペレーション”go”によって単一の
目的点にそれ自身移動するか、またはオペレーション”
send”によっていくつかの目的点に同時に1つ以上のク
ローンが移動するように委託することができる。
【1281】注:”send”オペレーションは、エンジン
が保有するプレイスにいくつかのクローンが送られてい
るにもかかわらず、ある特別なエンジンにエージェント
の単一の代表を搬送する。このエンジンによれば、コン
ピュータのメモリースペースがさらに節減される。
【1282】制限(Restrictions) オペレーション”go”または”send”は、クラス”Agen
t”のサブクラスに固有の方法のプロシージャかまたは
このプロシージャのアイテムであるプロシージャのみに
よって、反復的に要求される。エンジンはさもなけれ
ば、”State Improper(状態不適切)”を投出する。
【1283】2.5.4 チケット(Tickets) ”チケット(ticket)”は、トリップをするエージェン
トの見地から見た、予定されたトリップを記述する。チ
ケットの主な目的は、トリップの目的点を特定すること
である。
【1284】構成 チケットは、目的点のテレネーム及びテレアドレスと、
目的点がその1つのメンバであるクラスへのサイテイシ
ョンと、エージェントが目的点において必要とするロー
カルパーミットと、トリップの理想的な終了時間と、ど
んな状況のもとにおいてもトリップが成功または失敗と
なるべき時間とを包含する。
【1285】注:所望の時間を定義すると、移動中のエ
ージェントの間にコミュニケーションリソースをどのよ
うに分配するかを定める上にネットワークの助けにな
る。
【1286】注:プログラミングの上の便利さのために
許可される最大の時間を規定する効果は、オペレーショ
ン”制限”によっても達成される。
【1287】充足(Satisfication) チケットは、最大の時間内にエージェントが到達するこ
とに合致する、特定されたネーム、アドレス及びクラス
のどんなプレイスによっても充たされる。
【1288】プレイスがチケットを充たさない場合、ネ
ットワークはそのチケットを拒絶する。
【1289】2つ以上のプレイスのセットがチケットを
充たさない場合、ネットワークは、1つのものがエージ
ェントの到達に合致するかまたはネットワークが到達す
る全てのプレイスがエージェントの到達を拒絶するま
で、セットの次々のメンバに向けてトリップすることを
試みる。ネットワークがセットのメンバにアプローチす
る順序、ネットワークの、セットのカバレージの程度が
完全かどうか、並びに、チケットの提示後にセットに加
わるプレイスにネットワークがアプローチするか否か、
は定められていない。
【1290】2.5.5 ミーティング(Meetings) ”meeting(以下、ミーティングともいう)” は、どち
らもペティションされるオブジェクト及び従ってエージ
ェントである同一のプレイスの2つの占有者が互いに相
互作用する1つの機会である。要求エージェントは”pe
titioner(ペティショナ)”であり、レスポンディング
エージェントは”petitionee(ペティショニ)”であ
る。
【1291】ミーティング(Meeting) あるエージェントは、別のエージェントに、オペレーシ
ョン”meet(ミート)”を介して、”会合(meet)”す
ることを求めることができる。エンジン−ペティショナ
ではない−は、ペティショニのオペレーション”meetin
g” を求め、アーギュメントとして、ペティショナーの
コンタクトを供給する。ミーティングはオペレーション
の結果如何である。
【1292】オペレーション”meeting”の成功によっ
てミーティングが完了した場合にのみそれら2つのエー
ジェントに、相互に対する参照(リファレンス)を与え
る。2つのエージェントは、ミーティングしている間、
相互に対して”acquaintances(知人)”であると言わ
れる。
【1293】エンジンはエージェントとのミーティング
を系列化しない。エージェントがすでにオペレーショ
ン”meeting”を行なっているということは、エンジン
がオペレーション”meeting”の遂行を再び要求するこ
とを妨げるものではない。エージェントは、例えばリソ
ースによって、エージェントが求めるミーティングの系
列化を与えることができる。
【1294】パーティング(Parting) 2つのエージェントのどちらか1方は、オペレーショ
ン”part”または”partAll”によってそのフレンドの
一方または全てから”パート”(part:分かれる)こと
ができる。エンジン−エージェントではない−は、エー
ジェントの1つ以上のフレンドのオペレーション”part
ing”を求めることができる。エンジンは、オペレーシ
ョン”meeting”またはオペレーション”meeting”の結
果のアーギュメントとしてエンジンが先に提供したコン
タクトをアーギュメントとして提供する。ミーティング
と異なって、成功するパーティングは、オペレーショ
ン”parting”の結果には依存しない。パーティングは
直ちにそして無条件に生ずる。
【1295】エンジンは、各々のエージェントの、他の
エージェントのアーチファクトへのリファレンスをボイ
ドにする。
【1296】エンジンは、エージェントからのパーティ
ングを系列化しない。エージェントがすでにオペレーシ
ョン”parting”を遂行しているということは、エンジ
ンがオペレーション”parting”の遂行を再び要求する
ことを妨げない。エージェントは、例えばリソースによ
って、エージェントが求める系列化をパーティングによ
って与えることができる。
【1297】両方のエージェントが相互から分かれるこ
とを要求する場合、エンジンがどちらかのオペレーショ
ン”parting”を求めるか否かについては定められてい
ない。
【1298】制限(Restrictions) オペレーション”meet”、”part”、または”partAl
l”は、クラス”Agent”のサブクラスに固有の方法のプ
ロシージャまたはこのようなプロシージャの1つのアイ
テムであるプロシージャのどちらかによってのみ、回帰
的に要求されるべきである。エンジンはさもなけれ
ば、”State Improper(状態不適切)”を投出する。
【1299】2.5.6 ペティション(Petitions) ”ペティション(petition)は、ペティショナの見地か
らの予定されたミーティングを記述する。その主な目的
は、ペティショニを特定することである。
【1300】構成 ペティションは、ペティショニのテレネーム、ペティシ
ョニがその1つのメンバであるクラスのサイテイショ
ン、並びにどんな状態においてもミーティングの試みが
成功するかまたは失敗するべき時間からなる。
【1301】注:プログラミングの便宜上便宜の問題と
して許容される最大時間の規定の効果も、オペレーショ
ン”restruct”によって達成され得る。
【1302】充足(Sartisfaction) あるペティションは、最大時間内にミーティングに同意
する特定されたネーム及びクラスのペティションされた
オブジェクトによって充たされる。ペティショニは、最
大時間のある点において(必ずしもそのスタート点では
ない)ペティショナと同一のプレイスの占有者でなけれ
ばならない。
【1303】いかなるペティションされるオブジェクト
もペティションを充たさない場合、エンジンはそのペテ
ィションを拒絶する。
【1304】2つ以上のペティションされるオブジェク
トの組がペティションを充たした場合、エンジンは、1
つのものがミーティングに同意するかまたはエンジンが
アプローチする全てのペティションされるオブジェクト
がミーティングを拒絶するまで、セットの次々のメンバ
とのミーティングを試みる。エンジンがセットのメンバ
にアプローチする順序、エンジンの、セットのカバレー
ジの程度がどの程度完全であるか、並びにペティション
が提示された後にセットに参加するエージェントにエン
ジンがアプローチするか否かについては定められていな
い。
【1305】2.5.7 占有(Occupation) あるプレイスの占有者達は、経時的に変化し得る。
【1306】エントリー あるプロセスは、2つの方法のどちらかであるプレイス
に”エンタ(enter)”し、従って、占有することがで
きる。あるエージェントは、トリップの結果としてその
プレイスに到着することができ、また、すでにその場所
にある1つのプロセスは、その場所の別のプロセスを作
り出すことができる。どちらの場合にも、エンジン−到
着したエージェントまたは作り出したプロセスではない
−その場所のオペレーション ”entering”を要求す
る。到着したエージェントまたは作り出されたプロセス
のためのコンタクトは、オペレーション ”entering”
のアーギュメントとして供給される。エントリの成功
は、オペレーションの結果にかかっている。
【1307】エンジンは、エントリーが完成した時にの
み、すなわち、オペレーション”entering” の成功に
よってのみ、相互に対するリファレンスを、そのプレイ
スとそのプレイスにエンタしたプロセスとに与える。プ
ロセスは、プレイスを占有している間、そのプレイス
の”占有者(occupant)”であるとされる。
【1308】エンジンは、あるプレイスへのエントリを
系列化しない。そのプレイスがオペレーション”enteri
ng”をすでに行なっているという事実は、オペレーショ
ン”entering”を再びエンジンが要求することを妨げな
い。そのプレイスは、プレイスが要求するいかなるエン
トリの系列化も与えなければならない。
【1309】注:たとえトリップの出発点と目的点とが
同一であったとしても、オペレーション”entering”は
発生する。
【1310】エクシット あるプロセスは、次の2つの方法のどちらかであるプレ
イスを”exit(抜けを意味し、エクシットともいう)”
し、従って、もはやその場所を占めないようになること
ができる。あるエージェントは、トリップの結果として
その場所を去ることができ、または、その場所にあるプ
ロセスはそれ自身を破壊しまたはその場所にいる別のプ
ロセスを破壊することができる。どちらの場合にもエン
ジンは−立ち去るエージェントでも破壊するプロセスで
もない−その場所の、オペレーション”exiting”を求
める。オペレーション”entering” のアーギュメント
として供給された同一のコンタクトは、オペレーショ
ン”exiting” のアーギュメントとして供給される。エ
クシットの成功は、エントリとは異なって、後者のオペ
レーションの成功に依存しない。エクシットは、すでに
生じたものである。
【1311】エンジンは、プレイス及びそのプレイスを
エクシットするプロセスの、その後のアーチファクトへ
のリファレンスをボイドとする。さらにエンジンは、そ
のプロセスをアイソレートする。
【1312】エンジンは、あるプレイスからのエクシッ
トを系列化しない。そのプレイスがすでにオペレーショ
ン”exiting” を行なっているという事実は、オペレー
ション”exiting” を再びエンジンが要求することを妨
げない。そのプレイスは、プレイスが要求するいかなる
エクシットの系列化も供与しなければならない。
【1313】注:たとえトリップの出発点と目的点とが
同一であってもオペレーション”exiting” は、成立す
る。
【1314】2.5.8 コンタクト(Contacts) エンジンは、プレイス及びエージェントに、それらのも
のの占有者及び知人との接触をそれぞれ保つ上の助力を
与える。
【1315】占有者(Occupants) プレイスがコンタクトされるオブジェクトでもある場
合、エンジンは、属性がそのプレイスの現在の占有者を
含み、そのプレイスの以前の占有者を含むことがないよ
うにするためプレイスのコンタクトの属性を保持する。
【1316】エンジンは、プロセスがそのプレイスに入
ったり出たりする時点においてプロセスに対するコンタ
クトをそのプレイスの属性に対してそれぞれ含めたり排
除したりする。
【1317】知人(Acquaintances) ペティションされるオブジェクトはコンタクトされるオ
ブジェクトでもある場合、エンジンは、オブジェクトの
現在のフレンドを常に含み、その以前のフレンドは含む
ことがないようにそのコンタクトの属性を保持する。
【1318】エンジンは、オペレーション”meet”また
は”meeting” が成功する時に、ペティショニまたはペ
ティショナのためのコンタクトをそれぞれペティショナ
の属性またはペティショニの属性に含めるものとする。
【1319】エンジンは、どちらかのプロセスがオペレ
ーション”part” または”partAll”を要求した場合
に、ペティショナ及びペティショニの属性からコンタク
トを除去する。
【1320】2.5.9 サイテイション(Citation
s) ネットワーク内において、あるクラスのオブジェクトは
サイテイションによって表される。
【1321】サイテイション(Citations) ”サイテイション(Citation)”は、タイトルによって
0またはそれ以上の引用されたオブジェクトを特定し、
任意には、オーサー、エディション、またはオーサとエ
ディションとの両方を特定する。サイテイションは、オ
ーサーのオーソリティによってオーサを特定し、任意に
は、オーサのアイデンティティを特定する。もしあるサ
イテイションがこれらの3つの特徴の内のどれかを定義
しないままに残した場合、サイテイションは、サイテイ
ションが定義する特徴とともに、全ての引用されたオブ
ジェクトを表すものとする。
【1322】オーサー ”オーサー(author)”は、引用されたオブジェクトを
作り出すプロセスである。従って、オーサは、テレネー
ムによって特定される。あるタイトルの全てのエディシ
ョンのオーサは仲間である。
【1323】タイトル(Title) ”タイトル(title)”は、相互に対して後方向または
前方向にコンパティブルであると主張された、引用され
た複数のオブジェクトの1組である。あるタイトルは、
そのタイトルのオーサの共通のオーソリティに関連して
解釈される識別子によって表される。
【1324】エディション(Edition) ”エディション(edition)”は、あるタイトルにおい
ての引用されたどれかのオブジェクトである。あるエデ
ィションは2つの整数によって表される。タイトルに対
して相対的に解釈される一方の整数は、メイジャーエデ
ィションを意味する。第1のものに対して相対的に解釈
される他の整数は、マイナーエディションを表す。
【1325】注:あるタイトルの第1のメジャーエディ
ションまたはマイナーエディションには、通常、数1ま
たは0がそれぞれ割り当てられる。
【1326】割り当てられるサイテイション ”割り当てられるサイテイション(assiged citatio
n)”は、オーサー、タイトル及びエディションによっ
て、引用されたオブジェクトを表し、オーサーを、その
オーソリティ及びそのアイデンティティの両方によって
特定する。従って割り当てられたサイテイションは、引
用されたオブジェクトを、他の全ての引用されたオブジ
ェクトから、従って割り当てられたサイテイション自身
のタイトル中の他のものから識別する。以下のテレネー
ムについての説明参照。
【1327】コンパティビリティ ある引用されたオブジェクトO2 は、別の引用されたオ
ブジェクトO1 に対して次の場合にのみ”後の方向にコ
ンパティブル(backward compatible)” である。その
場合とは、両方の引用されたオブジェクトをナンバとす
るあるクラスによって規定された種類の変化のみをO1
に対して行なうことによってO2 が生成されることがで
き、その変更の種類が、プロセスO1 について書かれた
プログラムによってO2 も同様に処理されることが確保
されるように選定される場合である。同様の条件のもと
に、O1 はO2 に対して”前方向にコンパティブル”で
ある。
【1328】2.5.10 テレネーム(Telenames) ネットワーク内においてある複数のクラスのオブジェク
トは、テレネームによって表される。
【1329】テレネーム(Telename) ”テレネーム(telename)”は、テレネームが不適切で
ある場合に0を、またはそれ以上の、名前のあるオブジ
ェクトを、それらのもののオーソリティによって特定
し、任意には、それらのもののアイデンティティによっ
て特定する。テレネームがそのアイデンティティを定義
されないままに残しておく場合、テレネームは、特定さ
れたオーソリティーの全ての名前のあるオブジェクトを
意味する。
【1330】オーソリティ(Authority) ある名前のあるオブジェクトの”オーソリティ(author
ity)” は、そのオブジェクトに対して責任のあるエン
ティティ、例えば人または組織である。オーソリティ
は、ネットワーク中の他の全てのものからそのオーソリ
ティを識別するオクテット文字列によって特定される。
【1331】2つのテレネームは、それらが同一のオー
ソリティを特定する場合にのみ”ピーアス(仲間)”で
ある。
【1332】注:オーソリティは、プログラムによって
ではなく政策的に作り出される。しかしアイデンティ
は、両方の方法によって作り出される。
【1333】アイデンティティ(Identity) 名前のあるオブジェクトの”アイデンティティ(identi
ty)”は、名前のあるオブジェクト自身である。アイデ
ンティティは、オーソリティと同様に、オクテット文字
列によって特定され、このオクテット文字列はそれだけ
でもネットワーク中の他の全てのものからそのアイデン
ティティを識別する。
【1334】注:あるオーソリティまたはアイデンティ
ティを表すオクテット文字列は、人には意味を持たない
ことがある。インストラクションセットは、オクテット
文字列がどのようにして割り当てられるかを定義しな
い。
【1335】割り当てられるテレネーム(assigned Tel
enames) ”割り当てられるテレネーム”は、オーソリティ及びア
イデンティティによって正確に1つの名前のあるオブジ
ェクトを表す。
【1336】2.5.11 テレアドレス(Teleaddres
s) ネットワーク中においてプレイスはテレアドレスによっ
てロケートされる。
【1337】”ネットワーク(network)” は、全ての
エンジンプレイスを含み、1つ以上の領域に区画され
る。”領域(region:以下、領域という)”は、特別の
オーソリティによって操作されるかまたは提供される1
つ以上のエンジンプレイスである。
【1338】テレアドレス ”テレアドレス(teleaddress)”は、(テレアドレス
が不適切であれば)ゼロを、または1つ以上のプレイス
を、それらの領域によって、また任意にはそれらのロケ
ーションによって特定する。テレアドレスがそれらのロ
ケーションを定義されないままに残した場合、テレアド
レスは、特定される領域内の全てのプレイスを表す。
【1339】領域(Region) あるプレイスの”領域”は、そのプレイスを含む領域で
ある。ある領域は、オーソリティと同じ仕方では特定さ
れない(テレネームについての前記の説明参照)。従っ
て領域は、それをネットワーク中の他の全てのものから
識別するオクテット文字列によっては特定されない。
【1340】ロケーション(Location) あるプレイスの”ロケーション(location)”は、その
プレイスの領域のオーソリティによってその目的のため
に選定されたプレイスの任意の特徴である。あるロケー
ションは、そのロケーションを領域内の全ての他のもの
から識別する文字列によって特定される。
【1341】ある領域内の2つのプレイスは同一のロケ
ーションを用い得る。
【1342】注:ある場所のロケーションは例えばそれ
を指示するコンピュータ・システムでも有り得る。
【1343】注:あるロケーションを表す文字列は、人
に対して意味を持ちうるがそれは必ずしも必要ではな
い。インストラクションセットは、文字列がどのように
して割り当てられるかを定義せず、割り当ての仕方は一
般に領域ごとに異なる。
【1344】ルーティングアドバイス(Routing Advic
e) テレアドレスは、テレアドレスが表すプレイスへのエー
ジェントのルーティングについてのアドバイスを与える
ことができるが、これは必ずしも必要ではない。テレア
ドレスは、エージェントがそれを通ってルーティングさ
れうる1つ以上の領域を示唆することによってこのアド
バイスを与える。これらの”ルーティングアドバイス
(routing advice)”がない場合、例えばエージェント
のソースから非常に離れたプレイスについては、ネット
ワークは、エージェントをこれらのプレイスに送り届け
ることはできないかもしれない。
【1345】割り当てられるテレアドレス(Assigned T
eleaddress) ”割り当てられるテレアドレス(assigned teleadres
s)”は、1つ以上のプレイス−これはいくつかのプレ
イスが同一のロケーションを用いるためである−を、そ
れらの各々の領域及び領域内のロケーションによって特
定する。
【1346】2.5.12 相互変換(Interchange) ”相互変換されたオブジェクト(interchanged objec
t)” は、相互変換されたオブジェクトがダイジェスト
を持つ場合にオブジェクトが随伴するべきトリップをオ
ブジェクトのオーナーが行なう場合にはいつでも、例え
ば目的点において見出だされる同等のオブジェクトによ
って、ネットワークは代替することのできる不変のオブ
ジェクトである(この代替は必ずしも不可欠ではな
い)。ダイジェストは、以下に説明されている。
【1347】注:相互変換されたオブジェクトは、例え
ば目的点で見出だされる同等のオブジェクトによって代
替することによってエンジンが時に相互変換されたオブ
ジェクトを物理的に搬送することを避けうるようにする
ことによって、オペレーション”go”及び”send”の遂
行を改良する。
【1348】注:クラス及びパッケージは相互変換され
たオブジェクトである。
【1349】ダイジェスト 相互変換されたオブジェクトは、そのダイジェストが相
互変換されたオブジェクトのものと同等であるオブジェ
クトのクラスのいかなる他のインスタントとも同等であ
ると見なされる。”ダイジェスト”は、この目的のため
に適した、ゼロ以外の任意のオブジェクトである。例え
ばダイジェストは、相互変換されたオブジェクトの標準
的な2進表示の数学的なハッシュ(細切れ:hash)であ
り得る。
【1350】注:相互変換されたオブジェクトは、オブ
ジェクトがそのダイジェストよりも大きい場合にのみ、
オペレーション”go”及び”send”の遂行を改善する。
【1351】2.6 タイムキーピング・モデル(Time
keeping Model) インストラクションセットは、このセクションが定義す
る”タイムキーピングモデル(timekeeping model)”
を実現する。
【1352】タイムキーピング(計時)は2つの方法で
なしうる。時間またはカレンダー時間は日付及び時間を
同じように特定するがこれら2つは他の点では異なって
いる。
【1353】注:時間はカレンダー時間に変換でき逆も
真である。
【1354】注:エンジンはカレンダー時間よりも一層
コンパクトに内部的に時間を表すことができる。従って
時間は一般に日付及び時間を保存し搬送するのにはより
適している。
【1355】2.6.1 時間(Time) ”時間(time)”は、協定世界時(UTC)を用いて1
秒の精度で、日付及び1日の時間を特定する。また時間
は、時間が計測された時間帯を特定し、また昼光を節約
時間(DST)が、もし使用されていればであるが、ど
の程度までそのプレイスでその時間に有効であったかを
特定する。
【1356】注: UTCは、実際には、グリニッヂ標
準時間(GMT)として以前知られていたものである。
【1357】2.6.2 カレンダ時間(Calendar Tim
e) ”カレンダ時間(calendar time)”は、時間の全ての
特徴及び他のものを有する。特に、カレンダー時間は、
時間と分と秒とを検査及び変更にかける。カレンダー時
間は、グレゴリー暦、その年の月及びその月の日を表
す。また、週の日及び年をも表す。また、時間帯のUT
Cからの恒久的なオフセットを分で表し、恒久的なもの
からの季節的なオフセット(分)も表す。時間は、DS
Tのオフセットがゼロでない場合にDSTである。
【1358】ノーマリティ(Normality) カレンダ時間は、通常ある定められた範囲内にある整数
として、近接可能な日、及び日の時間の各面を作成す
る。時間は[0,24]の範囲内でまた分は[0,6
0]の範囲内でまた秒は[0,60]の範囲内でそれぞ
れ表示される。秒は[0,60]の範囲内でその内閏年
を勘案するために61の可能な値によって表示される。
1993年は例えば整数1993によって表され、月は
[1,12]の範囲内で表され、日は[1,31]の範
囲内で表示される。週の日は、それぞれ日曜、月曜、火
曜、水曜、木曜、金曜及び土曜を表す数字1、2、3、
4、5、6及び7によって表される。月の日は[1,3
66]で表される。恒久的及び季節的なオフセットはど
ちらも[−720,720]で表される。
【1359】注:整数は、A.D.年を、また、負数
は、B.C.年をそれぞれ表す。
【1360】アブノーマリティ(Abnormrity) カレンダ時間は、その整数値がその通常の範囲外にある
面を有する。カレンダ時間は、例えば9月32として日
付を表すことがありこれは10月2日を意味する。この
ような異常な数値は、有用な仕方で、例えば月の日に2
を加えることによってカレンダ時間を操作することによ
って生じうるが、カレンダ時間が正確と考えられうる前
に除去しなければならない。カレンダ時間はこの意味で
は、ノーマリゼーションプロセスによって正常にされ
る。
【1361】規格化(Normalization) カレンダ時間は、次のステップによって”ノーマライズ
(規格化)”される。第1のステップは、カレンダー時
間のどの面も0でありうることを考慮している。
【1362】デフォールト(Defalts) ・ 時間、分または秒は、0であれば、0とされる。
年、月または日は0であれば0とされる。恒久的または
季節的なオフセットは、0であれば、現在の時間を表す
正常化されたカレンダー時間のものとされる。
【1363】オフセット(Offsets) ・恒久的及び季節的なオフセットは、オフセット24×
60すなわち整数1440で割算することによって得た
剰余を[−720,720]に転送の結果によって置き
換えられる。
【1364】時間(Time) ・秒は、60を繰り返し加算または減算する(それぞれ
分に1を足したり引いたりすること)によって通常な範
囲とされる。分は、60を繰り返し加算または減算(そ
れぞれ時間に1を足したり引いたりする)によって正常
な範囲にされる。時間は、24を繰り返し加算または減
算(各々1を日にそれぞれ減算または加算する)によっ
て正常な範囲にされる。
【1365】日付(Date) ・月は、12を繰り返し加算または減算する(それぞれ
1を年に足したり引いたりする)によって正常な範囲に
される。日は、Kを加算または減算(それぞれ月に1を
引いたり足したりする)によって、[1,K]に置かれ
る。Kは、問題の年の問題の月の日の数である。1の加
算または減算によって日が所用の範囲に置かれない場合
には、この全体のステップを再び行なう。換言すれば、
月は、再び日を調整する前に前述したようにして調整さ
れる。
【1366】日(Days) ・週及び年の日は、正確にセットされる。
【1367】ローカライズとグローバライズ(Localize
vs Globalize) カレンダー時間、それが特定する絶対時点を変えずに別
のパマネントまたは季節のオフセットを表すように修正
することができる。カレンダー時間は、そのオフセット
が現在のプレイスのものとされた場合、”ローカライズ
(localize;すなわち、地域化”される。カレンダー時
間は、そのオフセットがUTCのものとされた場合に
は、”グローバライズ(globalize;全域化)”され
る。
【1368】2.7 パターンマッチングモデル(Ptte
rn Matching Model) インストラクションセットは、このセクションが定義す
る”パターンマッチングモデル(pattern matching mod
el)”を実現する。
【1369】2.7.1 パターン(Patterns) ”パターン(pattern)” は、文字列を辞書的に分析す
る手段である。それ自身文字列である、パターンの”テ
キスト(text)”は、ストリングがパターンにマッチン
グされる基準を規定する。
【1370】パターンのテキストは、下記のシンタック
ティックな規則及びそれに不随するセマンティックな規
則に従う一連のトークンである。BNF(Backus-Naur
またはBackus Normal Form)で表される規則
は、(”[”と”]”)によって任意のトークンを囲む。
これらの規則は、一方では任意のパターンのテキストを
記述する上のBNFに従った使用を、他方ではある特別
なテキストのメタキャラクタとしての可能な使用から識
別するために、クウォテーションマーク(’"’) によ
って、垂直バー(”|”)、左ブラケット(”[”)及び
右ブラケット(”]”) を囲む。
【1371】あるパターンのテキストの各々のトークン
はゼロまたはそれ以上のキャラクタである。テキスト
は、トークンとこのようなキャラクタとを連結すること
によって得られる。
【1372】2.7.2 構造(Structure) Pattern パターン、すなわちそのテキストは、この規則に従
う。: pattern ::= オールタナティブ["|"pattern] ストリング(文字列)は、それがその他のオールタナテ
ィブに一致している場合にのみパターンに一致させる。
【1373】オールタナティブ(Alternative) オールタナティブは、次の規則に従う。: オールタナティブ ::= [^]コンホ゜ーネント[$] コンポーネント ::= Component[Components] ストリングは、間にギャップを置かない、連続するサブ
ストリングが、オールタナティブの次々のコンポーネン
トとマッチする場合にのみオールタナティブにマッチす
る。オールタナティブが、カレット(”^”)で始まる
かまたはドルマーク(”$”)で終わる場合、サブスト
リングの系列は、ストリングの最初及び終わりにおいて
それぞれ開始し、そして終了しなければならない。
【1374】コンポーネント(Component) コンポーネントは、次の規則に従う。: コンポーネント ::= Item[* | + | ?] あるストリング(文字列)は、0またはそれ以上のサブ
ストリングを含み各々が、アステリスク(”*”)が表
れる場合にアイテムにマッチする)を含むかまたはプラ
ス・マーク(”+”)が表れるならば1つ以上のこのよ
うなサブストリングを含む場合にのみあるコンポーネン
トにマッチする。どちらもクエッション・マーク(”
?”)が表れるならばアイテムにマッチするかまたはク
リアされまたはさもなければアイテムにマッチする。
【1375】アイテム(Item) アイテムは、次の規則に従う。: あるストリング(文字列)は、パターン、キャラクタク
ラス (Character Class)またはキャラクタの内でアイ
テムによって規定されるどれかにマッチする場合にのみ
アイテムにマッチする。
【1376】CharacterClass キャラクタクラスは次の規則に従う。: CharacterClass ::= [^]CharacterItems ストリングは、キャレット(^)が存在している場合に
のみ、キャラクタアイテム(Character Items) のリス
トに整合する場合にのみ、キャラクタクラスにマッチす
る。
【1377】CharacterItems キャラクタ・アイテムのリストは次の規則に従う。: CharacterItems ::= CharacterItem [CharacterItems] CharacterItem ::= CharaterRange | Character 文字列は、文字列の連続するサブストリングがその間に
ギャップなしに、リスト中の次々のキャラクタアイテム
とマッチする場合にのみ、キャラクタアイテムのリスト
にマッチする。サブストリングの系列は、ストリングの
開始点で開始され、終了点で終了しなければならない。
【1378】CharacterRange キャラクタレンジは次の規則に従う。: CharacterRange ::= Character - Character ストリング(文字列)は、それが第1のキャラクタの1
つ後の文字かまたは第1キャラクタを含み、第2のキャ
ラクタの1つ前または第2のキャラクタに等しい1つの
キャラクタを持つ場合にのみキャラクタレンジにマッチ
する。
【1379】キャラクタ(Character) キャラクタは次の規則に従う。: Character ::= . | \ metacharacter | characte
r ストリングが1つの文字を含み、ピリオッド(”.”)
が存在する場合、にのみキャラクタにマッチし、逆スラ
ッシュ(”\”)が存在する場合にメタキャラクタであ
りその他の場合はキャラクタである。
【1380】注:従って逆スラッシュ(”\”)がメタ
キャラクタの直前にある場合には、メタキャラクタの特
別の意味は避けられる。
【1381】2.7.3 他の非ターミナル Character メタキャラクタ以外のクラス”Character”のインスタ
ンス。
【1382】メタキャラクタ(Metacharacter) メタキャラクタ(metacharacter) 2.7.4 メタキャラクタ(Metacharacters) パターンのテキストは、メタキャラクタを含める。メタ
キャラクタは、テキストを支配するセマンティックルー
ルに含まれる特別な意味を有する。メタキャラクタは、
表A.5に示されたキャラクタ並びに、キャラクタのテ
レスクリプトの”ストリング(String)”トークンに示
されたもの例えばバックスペースである。
【1383】
【表5】 3. テレスクリプトクラスの概観 オブジェクト指向されたインストラクションセットは、
このアペンディックスのこのセクションにおいて概観さ
れるある予め規定されたクラスを含む。これらのクラス
は次のように複数のグループに分けられる。サブセクシ
ョンは各々のグループに向けられる。各々のサブセクシ
ョン内において1つのサブセクションはグループ内の各
々のクラスに向けられる。
【1384】解釈されるインストラクションセットは、
例えば制御フローのためのステートメント形式を規定す
るのではなく、そのクラスのオペレーションに依存す
る。従ってインストラクションセットのセマンティック
スは予め規定されたクラスのセマンティックスであるこ
とが多い。
【1385】3.1 グループ(Groups) インストラクションセットの予め規定されたクラスは、
その1つがカーネルと呼ばれる複数のグループに分けら
れる。この区画は、教育的な目的のみに用いられ、カー
ネル以外のグループにおけるクラスがカーネルにより実
行され得ることを示さず、また、エンジンがカーネルの
クラスを実行することがあるが他のグループのものは必
ずしも実行しなくてもよいことを示すものでもない。
【1386】次のグループが規定されている。
【1387】カーネル(Kernel) このグループは、基本機械言語、例えばクラス、オブジ
ェクト、リファレンス、プロシージャ、実行及び例外を
規定する。
【1388】プリミティブ(Primitives) このグループは、不可分の情報、例えばブーリアン、オ
クテット、数、キャラクタ及び時間の基本的な形式を与
える。
【1389】コレクション(Collections) このグループは、複合情報、例えばセット、リスト、ス
タック、ストリング及び辞書の基本的な形式を与える。
【1390】クラス定義(Class Definition) このグループは、クラス定義例えばインタフェース、属
性、オペレーション、実施及び方法の基本的な部分を与
える。
【1391】特定化(Identification:アイデンティフ
ィケーション) このグループは、ネーミング及びアドレッシング、例え
ばテレネーム及びテレアドレスを与える。
【1392】プロセス(Processes) このグループは、マルチ・タスク例えばプロセス、パー
ミット、リソース及びコンタクトを与える。
【1393】エージェント及びプレイス(Agents and P
lace) このグループは、ネットワーク内のプロセスの移動、例
えばプロセス、エージェント及びチケットを与える。
【1394】ミーティング(Meeting) このグループは、ネットワークノード、例えばミーティ
ングノード及びペティション内のプロセス相互作用を与
える。
【1395】その他(Miscellaneous) このグループは、いろいろなこと例えばランダムナンバ
ジェネレータ及びパターンマッチャを与える。
【1396】これらのグループは、以上に示した順序で
以下に示される。おのおののグループ内のクラスはアル
ファベット順で示される。
【1397】3.2 カーネルグループ(Kernel Grou
p) オブジェクト(リファレンスされる) ・ クラス(サイトされそして相互変換される) ・ コレクション ・・ セット(検査される) ・・・ コンストレンド・セット(コンストレインド) ・・・・ パッケージ(引用され相互変換される) ・ コンストレイント ・ 例外(変更されない) ・・ プログラミングの例外 ・・・ カーネルの例外 ・・・・ 実行の例外 ・・・・・ 期待されない例外 ・ プリミティブ(実行されそして変換されない) ・・ 識別子(順序付けされる) ・・・ 有資格の識別子 ・・ マーク ・・ モディファイヤ ・・ ゼロ ・・ プロシージャ ・・ セレクタ コンストレインド 実行される リファレンスされる 変換されない 検査される 3.2.1 クラス(Class) オペレーション convert isInstance isMember isSubclass new ”Class”は、オブジェクトのセット、クラスのインス
タンス、を定義する不変のオブジェクトである。
【1398】クラスの固有のオペレーションは、オペレ
ーション”new”を介して新しいインスタンスを作り出
し、別のクラスのインスタンスを、このクラスのインス
タンスにオペレーション”convert”によって変更し、
あるオブジェクトはオペレーション”isInstance”によ
るインスタンスまたはクラスのオペレーション”isMemb
er”を介したメンバであるか否かを表示し、別のクラス
がオペレーション”isSubclass”を介して現在のクラス
のサブクラスであるか否かを表示する。
【1399】3.2.2 コンストレインド(Constrai
ned) 属性 Constraint ”constrained object(コンストレインドオブジェク
ト)”は、オブジェクトがその1つのメンバである別の
クラスによって特定されたそのプロパティのものに対し
て制約を課す。
【1400】コンストレインド・オブジェクトの固有の
属性はコンストレイント(属性”constraint”)であ
る。
【1401】注:コンストレインドディクショナリ、リ
スト及びセットは、コンストレインドオブジェクトであ
る。
【1402】3.2.3 コンストレイント(Constrai
nt) ”constraint”は、他のオブジェクトに課せられた制限
を規定するオブジェクトである。
【1403】コンストレイントの本来の属性は、コンス
トレイントのサブジェクトがそのメンバとなるべきクラ
スの識別子(属性”classId”)、クラス自身(属性”o
fClass”)、サブジェクトがそのクラスのインスタンス
となるか否か(属性”isInstance”)、サブジェクトが
ゼロであるか否か(属性”isOptional”)及びサブジェ
クトの通路(属性”passage”)である。
【1404】3.2.4 例外(Exception) オペレーション throw ”例外(exception)”は、遂行または実行の失敗を記
述するオブジェクトである。
【1405】例外の本来のオペレーションは、例外を投
出する(オペレーション”throw”)。
【1406】3.2.5 実行される(Executed) オペレーション catch do either if loop repeat while ”実行されるオブジェクト(executed objyect)”は、
プロシージャの1つのアイテムとして許可される。
【1407】実行されるオブジェクトの本来のオペレー
ションは、(i)オペレーション”do”を介して1回、
(ii)オペレーション”catch” を介してある例外を
1度キャッチする。(iii)オペレーション”if”を
介して予条件が充たされた場合にのみ1度、(iv)オ
ペレーション”リピート”を介して数回、(v)オペレ
ーション”loop”を介して不特定数の何回か、(vi)
オペレーション”while”を介して別の実行されたオブ
ジェクトの遂行が指示する回数がある。別のオペレーシ
ョンは、2つの実行されるオブジェクトの内どちらを実
行すべきかを定める(オペレーション”either”)。
【1408】注:クラス”Primitive”の予め規定され
た具体的なサブクラス並びにクラス”Constrained Lis
t”の予め規定されたサブクラスのインスタンスは、実
行されるオブジェクトである。
【1409】3.2.6 実行の例外 ”実行の例外(execution exception)”は、エンジン
があるプロシージャのアイテムを実行しえないことを示
すカーネル例外である。
【1410】このクラスの予め規定されたサブクラスの
中には、インストラクションセットのあるアスペクトを
エンジンがインプリメントし得ないことをそのメンバの
1つが示す”内部例外(Internal Exception)”があ
る。理想的なエンジンは、このような例外を投出しない
が、実際のエンジンは、それを行なう。後者のドキュメ
ンテーションによれば、例えば2つの整数の和がエンジ
ンによって内部的に便利に表示されるには、大きすぎる
場合を挙げている。
【1411】3.2.7 識別子(Identifier) ”識別子(idenntifier)”は、特定のコンテキストに
おいてあるクラスを別のクラスから識別するプリミティ
ブである。
【1412】3.2.8 カーネル例外(Kernel Excep
tion) ”カーネル例外(Kernel Exception)”は、このセクシ
ョンのクラスのメンバによって投出されたプログラミン
グの例外である。
【1413】3.2.9 マーク(Mark) ”マーク(mark)”は、1つの可能な値、”マーク(ma
rk)”についてプリミティブである。あるマークは、一
連のオブジェクト通常はあるスタックの最も情報のアイ
テムを区別するために用いられる。
【1414】3.2.10 モディファイヤ(Modifie
r) ”モディファイヤ(moifier)”は、以下の可能な値”d
emarcate”、”getClass”、”getProperty”、”getVa
riable”、”mention”、”setAttribute”、”setProp
erty”、”setVariable”及び”useStack”についてプ
リミティブである。あるプロシージャにおいてモディフ
ァイヤの直後にあるアイテムの実行を変えるために用い
られる。
【1415】3.2.11 ゼロ(Nil) ”ゼロ(nil)”は、1つの可能な値、”ニル(nil)”
についてプリミティブである。ゼロは例えば別のクラス
のあるメンバがスタック上に存在しないことを示すため
に用いられる。
【1416】3.2.12 オブジェクト(Object) 属性 class size オペレーション copy finalize initialize isEqual select 内部オペレーション getAttribute getClass getProperty getVariable setAttribute setProperty setVariable ある”オブジェクト”は、情報及び情報処理のインスト
ラクションセットのユニットである。あるオブジェクト
はあるクラスのインスタンスである。
【1417】オブジェクトの本来の属性は、そのクラス
(”class”)及びその大きさ(”size”)である。
【1418】オブジェクトの本来のオペレーションは、
オブジェクトの初期化(オペレーション”initializ
e”)及び最終化(オペレーション”finalize”)し、
オブジェクトが別のオブジェクトに等しいかどうかを定
め(オペレーション”isEqual”)いくつかのオブジェ
クトの内で以前のオブジェクトが等しいものはどれかを
定め、そのオブジェクトと対をなす実行されるオブジェ
クトを遂行し(オペレーション”select”)、別のしか
しそれ自身の同一のコピーを生成する(オペレーショ
ン”copy”)。
【1419】あるオブジェクトは、いつくかの内部的フ
ィーチャを有する。”内部的(internal)”フィーチャ
は、クラス”Object”によってシールされ、さらに、ク
ラス”Object”のユーザによって定義されたサブクラス
の固有のフィーチャが同一の特定子(identifier)を持
つことを妨げないシステムフィーチャである。従って、
内部的フィーチャは、虚構的なもの(fictitious)であ
る。その唯一の目的は、インストラクションセット特に
その実行モデルの定義を簡単にすることである。
【1420】あるオブジェクトの内部的オペレーション
は、オブジェクトのクラスのインタフェース及びインプ
リメンテーションにおいて使用された特定子を作動時間
の間オブジェクトに拘束する。従ってオブジェクトは、
(i)ある識別子が意味するそれ自身の属性をオペレー
ション”getAttribute”を介して取得しうるかまたはオ
ペレーション”setAttribute”を介してセットし(i
i)ある識別子が意味するそれ自身のプロパティをオペ
レーション”getProperty”を介して取得し、またはオ
ペレーション”setProperty”を介してセットし、(i
ii)ある識別子が意味する変数をオペレーション”ge
tVariable”を介して取得し、またはオペレーション”s
etVariable”を介してセットし、並びに(iv)オペレ
ーション”getClass”を介してある識別子が意味するク
ラスを特定しロケートする。
【1421】3.2.13 パッケージ(Package) ”パッケージ(package)”は、拘束されたクラスのセ
ットである。さらに、パッケージは、パッケージが含む
各々のクラスの仲間である引用されたオブジェクトであ
る。
【1422】1つのパッケージは、次の種類の変更のみ
を行なうことによって後のものから先のものが作られた
場合にのみ、別のパッケージに対して後方向にコンパテ
ィブルである。第1に、新しいクラスが付加されうる。
第2に現存のクラスは、その現存のクラスと後方向にコ
ンパティブルな別のものに変えることができる。
【1423】3.2.14 プロシージャ(Procedur
e) ”プロシージャ(procedure)”は、実行されるオブジ
ェクトのある順序付けられたセットを含むプリミティブ
なものである。
【1424】3.2.15 プログラミングの例外(Pr
ogramming Exception) ”プログラミングの例外(programming exception)”
は、あるフィーチャの用意または使用においてプログラ
ミングエラーが生じたことを示す例外(exception)で
ある。
【1425】3.2.16 有資格の識別子(Quarifie
d Identifier) ”有資格の識別子”は、フィーチャの実施がそれに対し
て固有かまたは受け継がれた関係にあるフィーチャまた
はクラスを表す識別子である。
【1426】3.2.17 リファレンスド(Referenc
ed) 属性 isProtected オペレーション discard isSame protect ref ”参照される(referenced)”オブジェクトは、それに
対するリファレンスを取得し得るオブジェクトである。
そのフィーチャは、それを要求するために用いられた、
オブジェクト自身ではない、リファレンスを操作する。
【1427】リファレンスされるオブジェクトの固有の
属性は、あるリファレンスがプロテクトされているかを
否か明らかにする(属性”isProtected”)。
【1428】リファレンスされるオブジェクトの固有の
オペレーションは、所望ならばプロテクト(オペレーシ
ョン”protect”)されたオブジェクトへの新しいリフ
ァレンス(オペレーション”ref”)を生成し、現存の
リファレンスを廃棄し(オペレーション”discar
d”)、2つのリファレンスが同一のオブジェクトのも
のであるかどうかを明示する(オペレーション”isSam
e”)。
【1429】注:全てのオブジェクトは、リファレンス
されるオブジェクトである。その場合現在のクラスは純
粋に教育的な理由によって定義される。
【1430】3.2.18 セレクタ(Selector) ”セレクタ(selector)”は”break”、”clien
t”、”continue”、”escalate”、”here”、”proce
ss”、”self”及び”succeed”の可能な値についてプ
リミティブである。あるセレクタは、特別の実行効果を
得るために用いられる。
【1431】3.2.19 変更されない(Unchange
d) ”変更されない(unchanged)”オブジェクトは、変化
させることができない。”変化(change)”の意味は、
変化しないオブジェクトが1つのメンバである他のクラ
スに依存する。変更されないオブジェクトは、しばし
ば”不変(immutable)”と記述される。
【1432】注:”クラス”、”例外”、”パッケー
ジ”、”プリミティブ”及び”時間”のクラスのメンバ
は、不変である。
【1433】3.2.20 予想されない例外(Unexpe
cted Exception) 属性 exception ”予想されない例外(unexpected exception)”は、あ
るフィーチャが、そのフィーチャが明らかにしないクラ
スの例外を送出したことを示す実行例外処理である。
【1434】予想されない例外の固有な属性は、明らか
にされない例外(属性”exception”)である。
【1435】3.2.21 検査(Verified) オペレーション verify ”検査されるオブジェクト(verified object)”は、
そのオブジェクトが1つのメンバである他のクラスに依
存する1つ以上の仕方で内部的に不一致とすることがで
きる。
【1436】検査されるオブジェクトの本来のオペレー
ションは、そのオブジェクトが内部的に一致するか否か
を示す(オペレーション”verify”)。
【1437】注:セットは、検査されるオブジェクトで
ある。
【1438】3.3 プリミティブグループ(Primitiv
e Group) オブジェクト(リファレンスされる) ・ 例外(変更されない) ・・ プログラミングの例外 ・・・ プリミティブな例外 ・ プリミティブ(実行され変更されない) ・・ ビット(順序あり) ・・ ブーリアン(順序あり) ・・ キャラクタ(ケースドアンドオーダード) ・・ 数(順序あり) ・・・ 整数 ・・・ 実数 ・・ オクテット(順序あり) ・ テレナンバ ・ 時間(順序あり、変更なし) ケースド(cased) 順序あり(Ordered) 3.3.1 ビット(Bit) ”ビット(bit)”は、2つの可能な値、すなわち”
0”と”1”とを有するプリミティブなものである。
【1439】3.3.2 ブーリアン オペレーション and not or ”ブーリアン(boolean)”は、2つの可能な値、”
偽”と”真”とを有するプリミティブなものである。
【1440】ブーリアンの固有のオペレーションは、論
理的な肯定(オペレーション”and”)、択一(オペレ
ーション”or”)及び否定(オペレーション”not”)
を可能にする。
【1441】3.3.3 ケースド(Cased) 属性 isLower isUpper オペレーション makeLower makeUpper ”ケースド(Cased)”オブジェクトは、キャラクタの
情報を含む。この情報やこのようなケースドオブジェク
ト自身は、アッパーケース(大文字)、ロウアーケース
(小文字)またはその混合にすることができる。
【1442】ケースドオブジェクトの固有の属性は、あ
るキャラクタ情報が小文字であるか(属性”isLowe
r”)または大文字であるか(属性”isUpper”)を表
す。
【1443】ケースドオブジェクトの固有の操作は、オ
ブジェクトのすべてを小文字(オペレーション”makeLo
wer”)またはすべて大文字(オペレーション ”makeU
pper”)に等価なものを作り出す。
【1444】注:2つのケースドオブジェクトは、オペ
レーション”makeLower”またはオペレーション”makeU
pper”と組合せてオペレーション”isEqual”を使用す
ることによって、そのケースと関わりなく比較すること
ができる。
【1445】注:キャラクタとストリングはケースド・
オブジェクトである。
【1446】3.3.4 キャラクタ(Character) ”キャラクタ(character)”は、その可能な値がユニ
コードキャラクタ[ユニコード]を基本とする。
【1447】3.3.5 整数(Integer) オペレーション modulus quotient ”integer”は、整数でもある数である。
【1448】整数の固有のオペレーションは、整数の除
算を行ない、商(オペレーション”quotient”)または
結果としての剰余(オペレーション”modulus”)のい
ずれか一方を生ずる。
【1449】注:内部的に、エンジンは、有限な確度の
みを持って整数を表すことができる。従って、全部の整
数が、実際に、このクラスのインスタンスであるとは限
らない。
【1450】3.3.6 数(Number) オペレーション abs add ceiling divide floor multiply negate round subtract truncate ”数(number)”は、基本的な演算操作を可能にする基
本的なものである。
【1451】ある数の固有の操作は、 加算(オペレー
ション”add”)、減算(オペレーション”subtruc
t”)、掛算(オペレーション”multiply”)、除算
(オペレーション”divid”)、否定 (オペレーショ
ン”negate”)、絶対値(オペレーション”abs”)、
丸め(オペレーション”round”)、切捨て(オペレー
ション”truncate”)及びフロア (オペレーション”f
loor”)及びシーリング(オペレーション”ceilin
g”)の各機能を遂行する。
【1452】3.3.7 オクテット(Octet) ”オクテット(octet)” は、8ビットから成る基本的
なものである。リファレンスの目的のためにビットは、
ビット7−ビット0によって示される。
【1453】3.3.8 順序あり(Ordered) オペレーション isAfter isBefore max min ”順序あり(Ordered)” のオブジェクトは、任意の1
つのものを他のものの前に、後に、またはそれと同じ所
に置くことによってそのメンバが順序付けされた別のク
ラスの1つのメンバにする。”前”及び”後”の意味
は、そのクラスに依存する。
【1454】順序付けされたオブジェクトの固有の操作
は、1つのかかるオブジェクトが別のものの前に(オペ
レーション”isBefore”)、または別のものの
後に(オペレーション”isAfter”)あるかそし
て2つの内のどちらが最初(オペレーション”mi
n”)または最大(オペレーション”max”)である
かを示す。
【1455】注:2つの順序付けされたオブジェクトが
一致しているか否かは、オペレーション”isEqual”で
示される。
【1456】注:多くのクラスのインスタンスは、順序
付けされたオブジェクトである。
【1457】3.3.9 プリミティブ(Primitive) ”プリミティブ(primitive)”は、インストラクショ
ンセットの基本的なオブジェクトである。
【1458】注:各々のインストラクションセット・プ
リミティブがこのクラスのメンバであるわけではない。
【1459】3.3.10 プリミティブの例外(Prim
itive Exception) ”プリミティブの例外(primitive exception)”は、
このセクションのクラスのメンバによって送出されたプ
ログラミングの例外である。
【1460】3.3.11 テレナンバ(Telenumber) 属性 country extension telephone ”テレナンバ(telenumber)”は、国際電話ネットワー
クにおいて、電話機のアドレス、すなわち電話番号を与
えるオブジェクトである。
【1461】テレナンバの固有の属性は、電話機が置か
れている国のコード(”country”)、その国が電話機
に与えるナンバ(”telephone”)及びもし電話機に内
線があればその電話機の内線(”extension”)のコー
ドである。
【1462】3.3.12 時間(Time) オペレーション adjust interval ”時間(time)”は、UTCを用いて1秒の精度まで1
日の日付及び時間を特定するオブジェクトである。ま
た、時間は、それが計測された時間帯を記録し、また、
もし何かあれば、その時その場所のDSTの実際の範囲
も記録する。
【1463】時間の固有のオペレーションは、任意の数
の秒によって時間を調節し(オペレーション”adjus
t”)その時間と別の時間との間の時間間隔(オペレー
ション”interval”)を与える。
【1464】3.4 コレクショングループ(Collecti
on Group) オブジェクト(リファレンスされる) ・ アソシエーション(順序あり) ・ コレクション ・・ リスト(順序あり) ・・・ コンストレインドリスト(コンストレインド) ・・・・ ビットストリング(実行される) ・・・・ オクテットストリング(実行される) ・・・・ ストリング(ケースドアンドエグゼキューテ
ッド) ・・・ スタック ・・ セット(検査される) ・・・ コンストレインドセット(コンストレインド) ・・・ ディクショナリ ・・・・ コンストリンドディクショナリ(コンストレ
インド) ・・・・・ レキシコン ・ 例外(変更なし) ・・ プログラミングの例外 ・・・ コレクションの例外 ・ ストリーム ハッシュド(Hashed) 3.4.1 アソシエーション(Association) 属性 key value ”アソシエーション(association)”は、あるオブジ
ェクトの”key”及び”value”である、2つのオブジェ
クトを含む1つのオブジェクトである。
【1465】アソシエーションの固有の属性は、キー
(属性”key”)及びその値(属性”value”)である。
【1466】注:アソシエーションは、ディクショナリ
を作り出すために用いられる。
【1467】3.4.2 ビットストリング(Bit Stri
ng) ”ビットストリング”は、クラス”ビット”のインスタ
ンスをアイテムとするコンストレインドリストである。
【1468】3.4.3 コレクション(Collection) 属性 length オペレーション clear examine exclude include stream ”コレクション(collection)”は、0またはそれ以上
の他のオブジェクト、そのプロパティに含まれるその”
items”の順序付けされないセットを含むオブジェクト
である。コレクションの”長さ(length)” は、コレ
クションのアイテムの数である。コレクションは、その
長さが0の時に”クリア(cleared)”される。クラ
ス”collection”のサブクラスは、そのメンバのアイテ
ムを制限することができる。
【1469】コレクションの固有の属性はコレクション
の長さ(属性”length”)である。
【1470】コレクションの固有のオペレーションは、
新しいアイテムとしてのオブジェクトを含め、(オペレ
ーション”include”)、現在のアイテムを排除し(オ
ペレーション”exclude”)、全ての現在のアイテムを
排除し(オペレーション”clear”)、アイテムの検査
の準備をし(オペレーション”examine”)、コレクシ
ョンのアイテムをアイテムとするストリーム(オペレー
ション”stream”)を生成させる。
【1471】注:コレクションの長さは、無制限であ
る。
【1472】3.4.4 コレクションの例外(Collec
tion Exception) ”コレクションの例外(collection exception)”は、
このセクションのクラスのメンバによって投出されたプ
ログラミングの例外である。
【1473】3.4.5 コンストレインドディクショ
ナリ(Constrained Dictionary) ”コンストレインドディクショナリ(constrained dict
ionary)”は、条件付けによってそのキーが制限された
ディクショナリであり、単一の制限は、全体の辞書を支
配する。
【1474】3.4.6 コンストレインドリスト(Co
nstrained List) ”コンストレインドリスト(constrained list)”は、
条件(constraint)によってアイテムが制限されたリス
トであり、単一の条件は、全体のリストを支配する。
【1475】3.4.7 コンストレインドセット(Co
nstrained Set) コンストレインドセットは、条件によってアイテムが制
限されたセットであり、単一の条件は、全体のセットを
支配する。
【1476】3.4.8 ディクショナリ(Dictionar
y) オペレーション add drop find get rekey set transpose ”ディクショナリ(dictionary)”は、組合せ(associ
ation)をアイテム(items)とするセットである。クラ
ス”dictionary”のサブクラスは、そのメンバのキー、
値または両方を制限することができる。
【1477】ディクショナリの固有の操作は、あるキー
と新しいアイテムとしての別のある値との間の組合せを
含め(オペレーション”add”)、あるキーとの組合せ
を排除し(オペレーション”drop”)、あるキーの組み
合わされた値を定め(オペレーション”get”)、ある
キーの組み合わされた値を取り替え(オペレーション”
set”)、ある値の組み合わされたキーを定め(オペレ
ーション”find”)、あるキーを別のキーと取り替え
(オペレーション”rekey”)及び2つのキーを転置す
る(オペレーション”transpose”)。
【1478】3.4.9 ハッシュド(Hashed) 属性 ”Hashed”オブジェクトは、ハッシュファンクションが
それについて定義されている別のクラスの一つのメンバ
である。そのクラスの各々のメンバは、それ自身のハッ
シュ、整数、を計算し、2つのメンバは同一であればそ
れらのもののハッシュは、同一であることを確実にす
る。
【1479】ハッシュドオブジェクトの固有の機能は、
そのオブジェクトについてもハッシュファンクション
(属性”hash”)である。
【1480】注:ディクショナリのキーがハッシュドオ
ブジェクトであれば、ディクショナリのオペレーション
のいくつかのものの遂行において属性”hash”を使用す
ることができるが、これは必ずしも必要ではない。
【1481】注:予め定義されたクラスのいかなるイン
スタンスもハッシュドオブジェクトではない。
【1482】3.4.10 レキシコン(Lexicon) ”レキシコン(lexicon)”は、キーが識別子であるコ
ンストレインドディクショナリである。
【1483】3.4.11 リスト(List) オペレーション add drop find get reposition set transpose ”リスト(list)”は、そのアイテムが[1,n]で番
号付けされるコレクションである。”n”はコレクショ
ンの長さである。アイテムの長さは、リスト中のそのア
イテムの”位置”である。
【1484】あるリストの固有のオペレーションは、新
しいアイテムとしてもオブジェクトを含め(オペレーシ
ョン”add”)、現在のアイテムを排除し(オペレーシ
ョン”drop”)、あるアイテムの検査の取決めをし(オ
ペレーション”get”)、現在のアイテムを置き換え
(オペレーション”set”)、現在のアイテムの位置を
定め(オペレーション”find”)、現在のアイテムの再
位置決めし(オペレーション”reposion”)、2つの現
在のアイテムを転置する(オペレーション”transpos
e”)。
【1485】3.4.12 オクテットストリング(Oc
tet String) ”オクテットストリング(octet string)”は、そのア
イテムがクラス”Octet"のインスタンスであるコンスト
レインドリストである。
【1486】3.4.13 セット(Set) オペレーション difference intersection union ”セット(set)”は、含められた時にそのアイテムの
どの2つの同一ではないコレクションである。
【1487】あるセットの固有の操作は、2つのセット
のユニオン(オペレーション”union”)または区分
(オペレーション”intersection”)を計算し、他のも
のにおいて他のもののアイテムに等しいあるもののアイ
テムを排除する(オペレーション”difference”)。
【1488】注:あるアイテムのそのままの変更は、2
つのアイテムを同一のものにのこしておくことがある。
【1489】3.4.14 スタック(Stack) オペレーション pop push pushItems roll swap ”スタック(stack)” は、アイテムが付加された順序
と逆の順序において通常そのアイテムがドロップされる
リストである。スタックの”トップ(top)”は、位置
1であり、スタックの”下部(bottom)”は、スタック
の長さである位置である。
【1490】スタックの固有の操作は、上部にオブジェ
クトを付け加え(オペレーション”push”)、リストの
アイテムを上部に付け加え(オペレーション ”pushIte
ms”)、上部のアイテムをドロップし(オペレーショ
ン”pop”) 、上部の2つのアイテムを転置し(オペレ
ーション”swap”)及びもっとも上方のアイテムのある
位置数だけローリングする(オペレーション”rol
l”)。
【1491】3.4.15 ストリーム(Stream) 属性 current isDone next ”ストリーム(stream)”は、組み合わされたオブジェ
クトの系列すなわちストリームの”アイテム(item
s)” 中のオブジェクトに順次アクセスするためのオブ
ジェクトである。ストリームは同一のアイテムを2回”
生成(produces)”させることはなく、最後のアイテム
を生成させた後は0を生じる。
【1492】ストリームの固有の属性は、要求に応じて
次のアイテムをつくり出し(属性”next”)、もっとも
最近生成させたアイテムを再生し(属性”currnt”)及
びその最後のアイテムをまだ生成させているか否かを定
める(属性”isDone”)を可能にする。
【1493】注:ストリームのあるアイテムそれ自身が
0である場合、この事実は、”ネクスト(next)”また
は”カレント(current)” 属性の解釈に当たって考慮
されなければならない。
【1494】3.4.16 ストリング(String) オペレーション substring ”ストリング(string:文字列)”は、クラス”charac
ter”のインスタンスをアイテムとするコンストレイン
ドリストである。
【1495】ストリングの固有のオペレーションは、サ
ブストリングのコピーをつくり出すことである(オペレ
ーション”substring”)。サブストリングは、あるス
トリング中の連続する位置を示す0または1以上の文字
の系列である。サブストリングは、2つの位置P1 及び
2 によって定義され、サブストリングのアイテムは、
ストリングの位置[P1 ,P2 ]であるアイテムであ
る。
【1496】3.5 クラス定義グループ オブジェクト(参照される) ・ クラス定義 ・ 例外(変更なし) ・・ プログラミングの例外 ・・・ クラスの例外 ・ フィーチャ ・・ 属性 ・・ オペレーション ・ インプリメンテーション ・ インターフェース ・ 方法 3.5.1 属性(Attribute) 属性 constraint isSet ”属性定義(attribute definition)”、すなわちクラ
ス”属性(Attribute)”のメンバは、属性のためのフ
ィーチャの定義である。
【1497】属性定義の固有の属性は、属性がどのよう
にして拘束されるか(属性”constrint”)並びにそれ
を設定できるか(属性”isSet”)を定義する。前者
は、オペレーション”αGet”の結果に、そして属性が
セット可能であれば、オペレーション”αSet”のアー
ギュメントに影響する。
【1498】3.5.2 クラス定義(Class Definiti
on) 属性 implementation interface majorEdition minorEdition title オペレーション makeClasses ”クラス定義”は、あるクラスを定義するオブジェクト
である。
【1499】クラス定義の固有の属性は、クラスのイン
ターフェース(属性”interface”)、 実施(属性”i
mplementation”)、タイトル(属性”title”)、メジ
ャーエディション(属性”majorEdition”)及びマイナ
ーエディション(属性”minorEdition”)を規定する。
【1500】クラスの定義の固有の操作は、1つまたは
1つ以上のクラス定義のセットが定義する同じ数のクラ
スのセットをつくり出す(オペレーション”makeClas
s”)。クラスの間の必要とされるリファレンスは、ク
ラスが作成された時に設定される。オペレーションを要
求するプロセスは、そのクラスの多さである。
【1501】3.5.3 クラスの例外(Class Except
ion) ”クラスの例外(class exception)”は、このセクシ
ョンのクラスのメンバによって投出されたプログラミン
グの例外である。
【1502】3.5.4 フィーチャ(Feature) 属性 exceptions isPublic ”フィーチャ定義”、すなわちクラス”feature”のメ
ンバは、そのインターフェースに充分であるクラスの各
々のメンバの特別なフィーチャを規定するオブジェクト
である。
【1503】フィーチャの定義の固有の属性は、そのフ
ィーチャがパブリックであるか否か、プライベートでな
いか(属性”isPublic”)、フィーチャの例外がメンバ
であるクラス(属性”exceptions”)を規定する。シス
テムフィーチャは、フィーチャ定義を受けない。
【1504】3.5.5 インプリメンテーション(Im
plementation) 属性 classMethods fromMethods instanceMethods properties setMethods superclasses toMethods vocabulary ”インプリメンテーション(implementation)”は、イ
ンプリメンテーションがその一部分であるクラスに固有
のまたはそれによって引き継がれた、選択されたフィー
チャ及び変換を実施するオブジェクトである。
【1505】インプリメンテーションの固有の属性は、
直接インプリメンテーションスーパークラス(属性”su
perClasses”)を特定し、選択されたクラスフィーチャ
(属性”classMethods”)、インスタンスフィーチャ
(属性”instanceMethods”及び属性”setMethods”)
及び(属性”fromMethods”)及び(属性”toMethod
s”)の変更を提供し、ユーザによって定義されたクラ
スを表すために用いられるインプリメンテーションを特
定する(属性”vocabulary”)。
【1506】3.5.6 インターフェース(Interfac
e) 属性 classFeatures instanceFeatures isAbstract sealedClassFeatures sealedInstanceFeatures superclasses vocabulary ”インターフェース(interface)”は、インターフェ
ースがその一部分であるクラスに固有のフィーチャを定
義するオブジェクトである。
【1507】インターフェースの固有の属性は、クラス
が抽象的であるかを定め(属性”isAbstract”)、クラ
スのイミーディエイトインターフェーススーパークラス
(属性”superclasses”)を特定し、クラスの固有のク
ラスフィーチャ(属性”classFeatures”)及びインス
タンスのフィーチャ(属性”instanceFeatures”)を定
義し、クラスフィーチャ(属性”sealedClassFeature
s”)及びそのクラスのシールするインスタンスフィー
チャ(属性”sealedInstanceFeatures”)を特定し、ユ
ーザによって定義されたクラスを表す上にインターフェ
ースが使用する識別子を定義する(属性”vocabular
y”)。
【1508】3.5.7 メソッド(Method) 属性 procedure valiables ”メソッド(method)”は、あるフィーチャをインプリ
メントするために使用されるオブジェクトである。
【1509】あるメソッドの固有の属性は、その方法の
プロシージャ(属性 ”procedure”)及びその方法の変
数(属性”valables”)の識別子である。
【1510】3.5.8 オペレーション(Operatio
n) 属性 arguments result ”オペレーション定義(operation definition)”、す
なわちクラス”Operation”のメンバは、あるオペレー
ションのフィーチャの定義である。
【1511】あるオペレーションの定義の固有の属性
は、オペレーションのアーギュメントが数について一定
であるかまたは可変であるかを定め、後者の場合には、
いかにして各々のアーギュメントが拘束(コンストレイ
ント)されるかを定める(属性”arguments”)。また
属性は、オペレーションの結果を有するか否かを定め、
結果を有する場合にはいかにその結果が拘束されるかを
定める(属性”result”)。
【1512】3.6 特定化グループ(Identification
Group) オブジェクト(リファレンスされる) ・ サイテイション(順序有り) ・ テレアドレス ・ テレネーム 引用(Cited) 名前付け(Named) 3.6.1 サイテイション(Citation) 属性 author majorEdition minorEdition title ”サイテイション(citation)”は、テレスクリプトネ
ットワークにおいて、0またはそれ以上のエディショ
ン、例えばクラスを特定するオブジェクトである。
【1513】サイテイションの固有の属性は、エディシ
ョンがその中に現れるタイトルを規定し、(属性”titl
e”)、任意に、そのタイトルのオーサー(属性”autho
r”)、任意には、エディションのメイジャーエディシ
ョン(属性”majorEdition”)、マイナーエディション
(属性”minorEdition”)または両方を定義する。
【1514】3.6.2 引用(Cited) 属性 Citation ”引用される(citationed)”オブジェクトは、割り当
てられたサイテイションを持つオブジェクトである。2
つの引用されたオブジェクトは、それらの割り当てられ
たサイテイションにおいて割り当てられたテレネームが
仲間である場合にのみ仲間である。
【1515】引用されたオブジェクトの固有の属性は、
そのオブジェクトの割り当てられたサイテイションであ
る(属性”citation”)。
【1516】注:クラス及びパッケージは、サイテッド
オブジェクトである。
【1517】3.6.3 名前付け(Named) 属性 Name ”名前付けされた(Named)”オブジェクトは、割り当
てられたテレネームを有するオブジェクトである。2つ
の名前付けされたオブジェクトは、それらのものの割り
当てられたテレネームが仲間である場合にのみ仲間であ
る。
【1518】名前付けされたオブジェクトの固有の属性
は、そのオブジェクトの割り当てられたテレネーム(属
性”name”)である。
【1519】注:プロセスは、名前付けされたオブジェ
クトである。
【1520】3.6.4 テレアドレス(Teleaddres
s) 属性 location prvider routingAdvice ”テレアドレス(teleaddress)”は、テレスクリプト
ネットワークに0または1つ以上のプレイスを配置する
オブジェクトである。
【1521】テレアドレスの固有の属性は、そのプレイ
スの領域を与え(属性”provider”)、任意には、その
プレイスの位置(属性”loction”)を与え、さらにル
ーティングアドバイス(属性”routingAdvice”)を与
える。
【1522】3.6.5 テレネーム(Telename) 属性 authority identity ”テレネーム(telename)”は、ネットワーク中におい
て0または0以上のネーム付けされたオブジェクトを特
定するオブジェクトである。
【1523】テレネームの固有の属性は、名前付けされ
たオブジェクトのオーソリティを規定し(属性”author
ity”)、任意に、単一に名前付けされたオブジェクト
のアイデンティティを定める(属性”identity”)。
【1524】3.7 プロセスグループ(Process Grou
p) オブジェクト(リファレンスされる) ・ コンタクト ・ 例外(変更なし) ・・ プログラミングの例外 ・・・ プロセスの例外 ・ パーミット(順序付けされる) ・ プロセス(名前付けされる) ・ リソース コンタクティッド(Contacted) 3.7.1 コンタクト(Contact) 属性 subject subjectClass subjectName subjectNotes ”コンタクト(contact)”は、あるプロセスについて
他のものとの相互作用を表しドキュメントするオブジェ
クトである。
【1525】コンタクトの固有の属性は、サブジェクト
(属性”subject”)、サブジェクトの割り当てられた
テレネーム(属性”subjectName”)、サブジェクトの
クラスの割り当てられたサイテイション(属性”subjec
tClass”)、ならびにオブザーバが保持するオブジェク
ト(属性”subjectNotes”)である。サブジェクト属性
が0であっても、エンジンは他の属性の真正さを保証す
る。
【1526】注:典型的には属性”subjectNotes”は、
オブザーバの見地から2つのプロセスの間の相互作用の
状態である。
【1527】3.7.2 コンタクティッド(Contacte
d) 属性 contacts 必然的にプロセスである、”コンタクトされた(contac
ted)” オブジェクトは、そのオブジェクトのコンタク
トのセットを保つ上にエンジンからの助力を受ける。
【1528】コンタクトされたオブジェクトの固有の属
性は、オブジェクトのコンタクト(属性”contacts”)
である。
【1529】注:いかなる予め定義されたクラスのイン
スタンスもコンタクトされるオブジェクトではない。
【1530】3.7.3 パーミット(Permit) ”パーミット(permit)”は、あるプロセスに能力を与
えるオブジェクトである。
【1531】属性 age authenticity canCharge canCreate canDeny canGo canGrant canRestart canSend charges extent priority パーミットの固有の属性は、パーミットのサブジェクト
の最大のエイジ(属性”age”)、サイズ(属性”exten
t”)、チャージイズ(属性”charges”)、プライオリ
ティ(属性”priority”)、及びオーセンティシティ
(属性”authenticity”)を規定する整数である。
【1532】パーミットの固有の属性は、オペレーショ
ン”charge”(属性”canCharge”)、オペレーショ
ン”go”(属性”canGo”)、オペレーション”send”
(属性”canSend”)またはオペレーション”new”を、
クラス”Process”のサブクラスについてサブジェクト
について要求することをサブジェクトに許容し、あるプ
ロセスのあるパーミットを経て能力を拒絶(属性”canD
eny”)または許容(属性”canGrant”)し、さらに再
スタート(属性”canStart”)をサブジェクトが要求す
ることを許容する。
【1533】オペレーション intersection パーミットの固有の操作は、2つのパーミットのインタ
ーセクションをリターンする(オペレーション”inters
ection”)。
【1534】3.7.4 プロセスの例外(Process Ex
ception) ”プロセスの例外(process exception)”は、このセ
クションのクラスのメンバによって投出されるプログラ
ミングの例外である。
【1535】3.7.5 プロセス(Process) 属性 age brand charges localPermit permit priority privateClasses regionalPermit オペレーション charge live restrict restricted sponsor wait ”プロセス”は、自律的な計算を構成する名前付けされ
たオブジェクトである。
【1536】プロセスの固有の属性は、プロセスのエイ
ジ(属性”age”)、ブランド(属性”brand”)、チャ
ージイス(属性”charges”)、ローカルパーミット
(属性”localPermit”)、パーミット(属性”permi
t”)、プライオリティ(属性”priority”)、私的に
保有され、使用されるクラス(属性”privateClasse
s”) 並びに量的なパーミット(属性”regionalPermi
t”)である。
【1537】あるプロセスの固有のオペレーションは、
そのプロセスの自律的な計算(オペレーション”liv
e”)を行い、ある一定の期間の間計算を遅延させ(オ
ペレーション”wait”)、プロセス自身に一時的なパー
ミットを課し(オペレーション”restrict”)、一時的
なパーミット及びレスポンダのオーナーの結果としての
実効的なパーミットをもとにプロシージャを遂行し(オ
ペレーション”sponsor”)、現在のプロセスが他のプ
ロセスに与えるサービスについて他のプロセスにチャー
ジする(オペレーション”charge”)。
【1538】3.7.6 リソース(Resouce) 属性 condition conditions オペレーション use ”リソース(resouce)”は、ある特定のプロシージャ
をプロセスが遂行する間プロセスに対してある保障を与
えることができるオブジェクトである。
【1539】リソースの固有の属性は、リソースの現在
の状態(属性”condition”)及びリソースの可能な状
態(属性”conditions”)の識別子である。
【1540】リソースの固有のオペレーションは、その
リソースについて要求された保障がリソースによってな
された時にあるプロシージャを遂行する(オペレーショ
ン”use”)。
【1541】3.8 エージェント及びプレイスグルー
プ(Agent and Place Group) オブジェクト(リファレンスされる) ・ オーセンティケータ ・ 例外 (変更なし) ・・ トリップの例外 ・ 手段 ・ プロセス(ネーミングされている) ・・ エージェント ・・ プレイス (移動しない) ・ チケットスタブ ・・ チケット ・ ウェイ 変更なし(Unchanged) ・ 相互変換される 移動なし(Unmoved) 3.8.1 エージェント(Agent) オペレーション go send ”エージェント”は1つのプレイスから次のプレイスに
移動することのできるプロセスである。エージェントの
本来のオペレーションは、エージェントを1つの目的点
に(オペレーション”go”)または1以上のクローンを
同数の目的点に同時に(オペレーション”send”)搬送
する。
【1542】3.8.2 オーセンティケータ(Authen
ticator) ”オーセンティケータ(authenticator)”は、例えば
エージェントが領域の間を通過する間に、トリップを開
始したエージェントをネットワークがそれによって認証
することのできるオブジェクトである。
【1543】注:クラス”Authenticator”の具体的な
サブクラスは、領域特異であり、したがってユーザによ
って定義されている。
【1544】3.8.3 相互変換(Interchanged) 属性 digest ”相互変換された(digested)”オブジェクトは、オブ
ジェクトのオーナーがトリップする時にネットワークが
同等のオブジェクトによって変えることのできる変更さ
れないオブジェクトである。
【1545】相互変換されたオブジェクトの固有の属性
は、オブジェクトのダイジェストである(属性”diges
t”)。
【1546】3.8.4 手段(Means) ”ミーンズ(means)” は、ネットワークがトリップを
開始したエージェントをトリップのソースからトリップ
の目的点にまたはその両方に搬送することができる手段
たとえば特別の無線通信メディアムを特定するオブジェ
クトである。
【1547】注:クラス”Means” の具体的なサブクラ
スは、領域特異であり、したがってユーザによって定義
されている。
【1548】3.8.5 プレイス(Plece) 属性 address publicClasses オペレーション entering exiting terminate ”プレイス(place)”は、0またはより多くの他のプ
ロセスのための場所であるプロセスである。
【1549】あるプレイスの固有の属性は、プレイスの
アドレス(属性”adoress”)及びそのプレイスの公共
に保持され使用されるクラス(属性”publicClasse
s”)である。
【1550】あるプレイスの固有のオペレーションは、
リクエスタが十分に能力を持ち(リクエスタのパーミッ
トの属性”canTerminate”)であり、しかも占有者の仲
間であることを条件として、プロセスの提案されたプレ
イスのエントリに判断を下し(オペレーション”enteri
ng”)、プロセスがプレイスからエクシットしたことを
記録し(オペレーション”exiting”)ならびに占有者
を強制的に終了させる(オペレーション”terminat
e”)。
【1551】3.8.6 チケット(Ticket) 属性 desiredWait destinationAddress destinationClass destinationName destinationPermit maximumWait ”チケット(ticket)”は、トリップを行うエージェン
トの見地から見た予定されたトリップを記述するチケッ
トスタグ(半券のこと)である。チケットの主な目的
は、トリップの目的点を特定することである。
【1552】チケットの固有の属性は、目的点のテレネ
ーム(属性”destinationName”)及びテレアドレス
(属性”destinationadrress”)、目的点がその1つの
メンバであるクラスへのサイテイション(属性”destin
ationClass”)、エージェントが目的点において必要と
するローカルパーミット(属性”destinationPermi
t”)、理想的にトリップがその範囲内で行われるべき
時間(属性”desiredWait”)、並びにいかなる状態に
おいても、トリップが成功または失敗するべき事情(属
性”maximumWait”)である。
【1553】3.8.7 チケットスタブ(TicketSta
b) 属性 travelNotes way ”チケットスタブ(ticketStab)”は、トリップの結果
を記述するオブジェクトである。
【1554】チケットのスタブの固有の属性は、トリッ
プの出発点へのもどり道(属性”way”)ならびにトリ
ップを開始したエージェントが専用的に使用する、チケ
ット上に最初にのせられていた情報(属性”travelNote
s”)である。
【1555】3.8.8 トリップの例外(Trip Excep
tion) 属性 ticketStab ”トリップの例外(ticket exception)”は、あるチケ
ットが記述するトリップを与える上にネットワークが失
敗したことを表す例外である。
【1556】トリップの例外の固有の属性は、チケット
スタブである(属性”ticketStab”)。
【1557】3.8.9 移動しない(Unmoved) ”unmoved”オブジェクトは、1つのプレイスから次の
プレイスに移動することはできない。移動しないオブジ
ェクトはしばしば移動不可能と記述される。移動しない
オブジェクトへのリファレンスは、そのオブジェクトの
移動が試みられる場合に、ボイドされる。
【1558】注:プレイスは、移動不可能である。
【1559】3.8.10 ウェイ(Way) 属性 authenticator means name ”ウェイ(way)”は、トリップを開始したエージェン
トをネットワークがそれに沿って移送させることができ
るルート(道筋)を特定するオブジェクトである。
【1560】ウェイの固有の属性は、トリップがそれを
経て行われるべき領域の名前(属性”name”)及びその
領域に入るために用いられる手段(属性”means”)及
びオーセンティケータ(属性”authenticator”)であ
る。
【1561】3.9 ミーティンググループ オブジェクト(リファレンスされる) ・ 例外(変更なし) ・・ ミーティングの例外 ・ ペティション ・ プロセス(名前付けされている) ・・ プレイス(移動しない) ・・・ ミーティングプレイス ペティションド 3.9.1 ミーティングの例外(Meeting Exceptio
n) ”ミーティングの例外(meeting exception)”は、あ
るペティションが記述するミーティングをミーティング
プレイスが取り計らうことができなかったことを意味す
る例外である。
【1562】3.9.2 ミーティングプレイス(Meet
ing Place) オペレーション meet part partAll ”ミーティングプレイス(meeting place)”は、その
占有者の中に含まれる2つのペティションされるオブジ
ェクトの間のミーティングを取り決めるためのプレイス
である。ミーティングプレイスの固有のオペレーション
は、ミーティングを開始させ(オペレーション”mee
t”)、それを終了させ(オペレーション”part”)な
らびにリクエスタを含むすべてのミーティングを終了さ
せる(オペレーション”partAll”)。
【1563】3.9.3 ペティション(Petition) 属性 agentClass agentName maximumWait ”ペティション(petition)”は、ペティショナの見地
から見た予定されたミーティングを記述するオブジェク
トである。ペティションの主な目的はペティショニの特
定化である。
【1564】ペティションの固有の属性は、ペティショ
ニーのテレネーム(属性”agentName”)、ペティショ
ニーがその1つのメンバであるクラスへのサイテイショ
ン(属性”agentClass”)、並びにミーティングの試み
がどんな事情のもとにおいても成功または失敗するべき
時間(属性”maximumWait”)である。
【1565】3.9.4 ペティションド(Petitione
d) オペレーション meeting parting 必ずエージェントである、”ペティションド(petition
ed)”オブジェクトは、ミーティングの設立においてペ
ティショナまたはペティショニの役目をすることができ
る。
【1566】ペティションされたオブジェクトの固有の
オペレーションは、ミーティングの要求について判断を
下し(オペレーション”meeting”)、パーティングに
ついて記録することである(オペレーション”partin
g)。
【1567】注:定義されていないクラスのインスタン
スは、ペティションドオブジェクトである。
【1568】3.10 その他のグループ オブジェクト(リファレンスされる) ・ カレンダ時間 ・ 例外 (変更なし) ・・ プログラミングの例外 ・・・ その他の例外 ・ パターン (順序有り) ・ プリミティブ(実行され変更されない) ・・ ナンバ(順序有り) ・・・ 実数 ・ ストリーム ・・ ランダムストリーム 3.10.1 カレンダ時間(Calendar Time) 属性 day dayOfWeek dayOfYear dst hour minute month second year zone オペレーション globalize localize normalize ”カレンダ時間(calendar time)は、UTCを用いて
1秒の精度でローカルデートと時間とを特定するオブジ
ェクトである。カレンダ時間はまたローカル時間帯とD
STがその時その場所で有効となる度合いも記憶する。
【1569】カレンダ時間の固有の属性は、時間(属
性”hour”)、分(属性”minite”)、秒(属性”seco
nd”)、日付の年(属性”year”)、月(属性”mont
h”)、日(属性”day”)、週の日(属性”dayOfWee
k”)、年(属性”dayOfYear”)ならびに最後に、時間
帯(属性”zone”)ならびにDSTがそこでどの程度有
効か(属性”dst”)を与える。
【1570】カレンダ時間の固有のオペレーションは、
カレンダ時間のローカライズ(オペレーション”locali
ze”)、グローバライズ(オペレーション”globaliz
e”)、またはノーマライズ(オペレーション”normali
ze”)である。
【1571】3.10.2 種々の例外 ”ミセレネアスエクスセプション(miscellaneous exce
ption)”は、このセクションのクラスのメンバによっ
て投出されたプログラミングの例外である。
【1572】3.10.3 パターン(Pattern) オペレーション find substitute ”パターン(pattern)” は、ストリングをレキシコル
によってアナライズするためのオブジェクトである。そ
れ自身ストリングである、パターンのテキストは、分析
の正確な性質を定める。
【1573】パターンの固有のオペレーションは、最初
のマッチング、サブストリングのためのストリングをサ
ーチし(オペレーション”find”)または全てのマッチ
ングサブストリングを変更(オペレーション”substitu
te”)する。
【1574】3.10.4 ランダムストリーム(Rand
om Stream) そのアイテムが疑似ランダムに選ばれたインテジャ
[0,M]であるストリームである。各アイテムは同じ
間隔中の整数−シード−によって定められる。ランダム
なストリームは、その最後のアイテムを生成させない。
この発明の一事例によれば、”M”は、ランダムストリ
ームの創出者によって選択され、イニシャライゼイショ
ンパラメータとして特定される。
【1575】3.10.5 実数(Real) 実数は、数学において実数を形成する数である。
【1576】注:内部的にエンジンは実数を表現し、限
られた有限な確度で−実数を含む算術演算を行う。従っ
てすべての実数が必然的にこのクラスのインスタンスで
あるわけではなく、実数によって行われた算術演算の結
果は、単に近似的であることがある。
【1577】4 テレスクリプトクラスの詳細 テレスクリプトのあらかじめ規定されたクラスは、アペ
ンディックスのこのセクションにおいてアルファベット
順に規定されている。サブセクションは各々のクラスに
向けられる。
【1578】4.1 コンベンション(Conventions) クラスの定義は、そのクラスを包含するクラスグラフの
部分の図によって開始される。クラス自身はアンダーラ
インされている。
【1579】以下のセクションは、各々のあらかじめ定
義されたクラスの説明において、必要な限り示されてい
る。
【1580】クラス このセクションは、クラスのフィーチャとは別に、クラ
スを記述する。クラスは以前はセクション6のコンベン
ションに従って規定されているが、クラスのフィーチャ
の以前の定義のかわりに、省略(...)がなされている。
クラスのインターフェースの符号化がパラメータ化され
ていればそのパラメータがどのようになされているかが
クローズ(散文)によって記述されている(下記のセク
ション6参照)。
【1581】構成 このセクションは、クラスのメンバに所属するオペレー
ション”initialize”を記述する。このセクションが省
略されている場合、以下にセクション6に示すように特
別な説明が内包されている。
【1582】サブクラス このセクションは、クラスのあらかじめ規定された直接
サブクラスの定義を含む。このセクションは、クラスが
クラス”エクセプション”のサブクラスでない場合にの
み、または、クラス”Exception”のサブクラスである
があらかじめ規定されたサブクラスをもたない場合にの
み省略される。
【1583】属性 このセクションは、クラスに固有の属性を定義する。ク
ラス自身及びそのクラスのインスタンスのパブリック
な、プライベートな及び内部的な及びその他のシステム
の属性に別々なセクションが向けられている。ひとつの
セクションは、それが空であると思われる場合にのみ省
略される。
【1584】属性は、セクション6のコンベンションに
従って公式に規定されている。属性のセマンティクス及
び例外は、非公式に散文によって定義されている。
【1585】オペレーション 以下のセクションは、ここに示された他のセクションが
クラスに固有に属性を定義するのと同じ仕方で、クラス
に固有のオペレーションを定義する。
【1586】あるオペレーションが、そのアーギュメン
ト及び結果を保持するスタックを変更する場合、オペレ
ーションのスタックに対する影響は、アーギュメントが
スタックからポップされ、いかなる結果もいまだスタッ
クに保存されていないものと想定して記述される。
【1587】アダプテーションズ このセクションは、クラスが受け継いだフィーチャをク
ラスがどのようにしてインプリメントするかを記述す
る。このセクションは、クラスがそのようなフィーチャ
をインプリメントしない場合にのみ省略される。
【1588】変換 このセクションは、クラスのインスタンスを生じさせる
変換に記述する。このセクションは、そのような変換が
ない場合にのみ省略される。
【1589】個別の変換の定義は、ソースクラスを特定
し、ソースクラスのメンバがどのようにしてサブジェク
トクラスに変換されるかを記述する。すべてのメンバが
このように変換できない場合にはどれが変換され得るか
が表示される。ひとつの変更のソースクラスが別の変換
のソースクラスのサブクラスである場合には、以前の変
換は後の変換に優先する。変換は鎖状になっていない。
【1590】注:変換は1ステップで行われる。従っ
て、ストリングへのテレナンバの変換及びオクテットス
トリングの変換が規定されていないとしても、オクテッ
トストリングへのテレナンバの変換は定義されていな
い。
【1591】4.2 エージェント(Agent) オブジェクト(リファレンスされている) ・ プロセス (名前付けされている) ・・ エージェント クラス Agent: 抽象的なインターフェース(プロセス) = (...); プライベートインスタンスオペレーション go: プロテクトされていないop(チケット:copied ticke
t); TicketStubは、PermitViolated, StateImproper, TripE
xceptionを投出する。
【1592】チケットの他の条項に従ってチケットによ
って特定された目的点にレスポンダを搬送する(アーギ
ュメント”ticket”)。オペレーションは、チケットス
タブをリターンする。
【1593】レスポンダはオペレーション”go”を禁止
した場合(”PermitViolated”)、レスポンダのステイ
トがオペレーション”go”を排除した場合(”StateImp
roper”)、またはトリップが失敗した場合(”TripExc
eption”)。
【1594】send: 保護されていないop(チケット:copied List[Ticke
t]) TicketStub | Nilは、 PermitViolated, StateImproper, TripExceptionを投出
する。
【1595】チケットの他の条項に従って、ならびに各
々のリストされたチケット(アーギュメント”ticket
s”)によって特定された目的点にレスポンダのクロー
ンを搬送する。レスポンダのアローワンスは、チケット
がクローンに割り当てる量によって減少する。オペレー
ションは、レスポンダに0をリターンし、各々のクロー
ンにチケットスタブをリターンする。
【1596】”PermitViolated”またはクラス”StateI
mproper”のどちらかのクラスのメンバがオペレーショ
ンを失敗に終わらせた場合、レスポンダは失敗を経験し
いかなるクローンもつくり出されていない。またレスポ
ンダがオペレーションの成功を経験し各々のクローンが
別々にそして独立して、クラス”TripException” のメ
ンバであるためにオペレーションが成功しまたは失敗し
たことを経験する。
【1597】レスポンダがオペレーション”send”を禁
止するパーミットを保持し、そのアラウワンスは、リス
トされたチケットのパーミットのものの合計よりも少な
い場合(”PermitViolated”)、レスポンダのステイト
は、オペレーション”send”を排除し、(”StateImpro
per”)、またはトリップは失敗する(”TripExceptio
n”)。
【1598】4.3 アソシーエーション(Associatio
n) オブジェクト(リファレンスされる) ・ アソシエーション(順序有り) クラス Association シールされたインターフェース[keyClass,valueClass:C
lass] (Object, Ordered) = (...); サブジェクトクラスの各々のメンバの、キー(アーギュ
メント”keyClass”)及び値(アーギュメント”ValueC
lass”)がそれ自身メンバであるクラスによってパラメ
ータ化される。
【1599】構成 initialize 保護されていないop(key:keyClass; value: valueClas
s); レスポンダの本来の属性を最後に述べたアーギュメント
にする(アーギュメント”key”及びアーギュメント”v
alue”)。
【1600】パブリックインスタンスの属性 key: keyClass レスポンダのキー value: valueClass; レスポンダの値。
【1601】アダプテーション isAfter ひとつのアソシエーションは、それらのキーに従って次
々に続く。
【1602】isBefore あるアソシエーションは、それらのキーに従って次のも
のの前にある。
【1603】isEqual 2つのアソシエーションは、それらのもののキーに従っ
て同等である。
【1604】4.4 属性 オブジェクト(リファレンスされる) ・ フィーチャ ・・ 属性 クラス 属性 シールされたインターフェース(Feature) = (...); 構成 initialize 保護されていないop(constraint:Constraint|Nil; isSet, isPublic: Boolean|Nil; exceptions: Set [Identifier!]|Nil); レスポンダの属性を、最後に述べたアーギュメント(ア
ーギュメント”constraint”、”exceptions”、”isPu
blic”及び”isSet”)にする。アーギュメントが0で
ある場合、対応する属性は、0をイニシャライゼイショ
ンのパラメータとしたコンストレイント、クリアされた
セット”偽”、または、”偽”、とされる。
【1605】パブリックインスタンス属性 constraint: constraint; レスポンダが定義するアトリビュートに対するコンスト
レイント。
【1606】isSet: Boolean; レスポンダが定義する属性がリードオンリでないかどう
か。
【1607】アダプテーションズ isEqual 2つの属性の定義がフィーチャの定義、及び属性の定義
に固有の属性に従って同等である。
【1608】4.5 オーセンティケイタ(Authentica
tor) オブジェクト(レファレンスされる) ・ オーセンティケイタ クラス Authenticator: 抽象的なインターフェース = (); 4.6 ビット(Bit) オブジェクト(リファレンスされる) ・ プリミティブ(実行され、変更されない) ・・ ビット(順序有り) クラス Bit: シールされたインターフェース(Primitive, Ordered)
= (); アダプテーション isAfter 第1のものが1であり第2のものが0である場合にのみ
あるビットはあるビットが次のビットのあとに続く。
【1609】isBefore 最初のビットが0で次のビットが1である場合のみひと
つのビットが別のビットの前にある。
【1610】isEqual 2つのビットは、両方が0であるか1であるかの場合の
み同等である。
【1611】変換 BitString ひとつのアイテムをもつビットストリングは、そのアイ
テムに等しいビットをつくり出す。
【1612】Boolean 偽及び真であるブーリアンはそれぞれ0及び1をつくり
出す。
【1613】Character 数字0及び1はそれぞれ0及び1をつくり出す。
【1614】Integer 整数0及び1はそれぞれ0及び1をつくり出す。
【1615】Octet ビット0を除くすべてのビットが0であるオクテット
は、そのビットを作り出す。
【1616】OctetString 1ビットに変換可能なオクテットに変換可能なオクテッ
トストリングは、そのビットを作り出す。
【1617】String 1ビットに変換可能なキャラクタに変換可能なストリン
グはそのビットを生成する。
【1618】4.7 ビットストリング(Bit String) オブジェクト(リファレンスされる) ・ コレクション ・・ リスト (順序有り) ・・・ コンストレインドリスト (コンストレインド) ・・・・ ビットストリング (実行される) クラス BitString: シールされたインターフェース(ConstraineList [Bit],
Executed) =(...); 構成 initialize 保護されていないop(segments: Object ... /*Bit|proected BitString!*/); レスポンダを、レスポンダ中の位置が左から右にかけて
増大しているセグメントの連鎖をつくる(アーギュメン
ト”segment”)。
【1619】アダプテーション constraint: 属性はシールされている。その”ofClass”、”classI
d”、”isInstance”、”isOptional”、及び”passag
e”属性は、クラス”Bit”、クラス”Bit”の識別
子、”真”、”偽”、及び”byCopy”である。
【1620】isAfter 短い長さのビットストリングを長いビットストリングに
等しい長さとするために十分な数の”0”ビットを短い
長さのビットストリングに最初にあらかじめ付加された
かのように1ビットストリングが別のものの後に続く。
【1621】isBefore 短い長さのストリングの長さが長いビットストリングと
同じ長さになるのに十分な数の”0”ビットを短いビッ
トストリングに最初に付加されたかのように1ビットの
ストリングが別なストリングの前にある。
【1622】転換 Bit 1ビットはその唯一のアイテムがそのビットに等しいビ
ットストリングを生ずる。
【1623】Boolean ブーリアンは最初にブーリアンビットに変換したのちそ
のビットをビットストリングに転換する結果を生ずる。
【1624】Character キャラクタはオクテットストリングにキャラクタを最初
に変換し、次にオクテットストリングをビットストリン
グに変換することの結果を生ずる。
【1625】Integer ある整数の”n”について[−2n ,2n )の範囲にあ
ってこれより小さくない整数は、長さ”n”のビットス
トリングを生ずる。2の補数の表示が用いられる。1の
位置であるビットは−2のn乗を表す。(1,n]の範
囲内にある各々の位置、”i”にあるビットは、2n-i
を表す。
【1626】Octet オクテットは、オクテットをオクテットストリングに最
初に変換したのち次にオクテットストリングをビットス
トリングに変換する結果を生じる。
【1627】OctetString 長さが”n”に等しいオクテットストリングは、長さ
が”8n”に等しいビットストリングを作り出す。ビッ
トストリング中のその位置が(8i+j)であるビット
は、オクテットストリング中の位置が”i”であるオク
テットのビット(8−j)である。上記において”i”
及び”j”は整数であり、”i”は、[0,n)の範囲
にあり”j”は[1,8〕の範囲にある。
【1628】String ストリングは、ストリングをオクテットストリングに最
初に変換し、次にオクテットストリングをビットストリ
ングに変換する結果を生ずる。
【1629】4.8 ブーリアン(Boolean) オブジェクト(リファレンスされる) ・ プリミティブ(実行され変更されない) ・・ ブーリアン(順序有り) クラス Boolean: シールされたインターフェース(primitive, Ordered) =
(...); パブリックインスタンスオペレーション and op(boolean: Boolean) Boolean; ブーリアンの論理的な結合(アーギュメント”boolea
n”)及びレスポンダをリターンする。
【1630】not op() Boolean; レスポンダの論理的な否定をリターンする。
【1631】or: op(boolean: Boolean) Boolean; ブーリアンの論理的な択一(アーギュメント”boolea
n”)及びレスポンダをリターンする。
【1632】アダプテイション isAfter 第1のブーリアンが”真”、第2のブーリアンが”偽”
の場合、前者は後者より後である。
【1633】isBefore 第1のブーリアンが”偽”、第2のブーリアンが”真”
の場合、前者は後者より前である。
【1634】isEqual 2つのブーリアンがいずれも”偽”または”真”である
場合、両者は等しい。
【1635】変換 Bit ビットは、ビットが1であるか否かを示す。
【1636】Character キャラクタは、キャラクタのユニコードが0でないか否
かを示す。
【1637】Collection コレクションは、コレクションの長さが0でないか否か
を示す。
【1638】Exception エクセプションは、”真”を生じる。
【1639】Nil 無(ゼロ)は、”偽”を生じる。
【1640】Number ナンバは、ナンバが0でないか否かを示す。
【1641】Octet オクテットは、オクテットのビットのいずれかが1であ
るかを示す。
【1642】4.9 カレンダ時間(Calenar Time) オブジェクト(リファレンスされる) ・ カレンダ時間 クラス CalenarTime: Interface = (...); 構成 initialize レスポンダの本来の属性をなくす。
【1643】パブリックインスタンス属性 day: Integer|Nil; レスポンダが特定する日または0。
【1644】dayOfWeek: リードオンリ Integer|Nil レスポンダが特定する曜日または0。
【1645】dayOfYear: リードオンリ Integer|Nil レスポンダが特定する月日または0。
【1646】dst: Integer|Nil; レスポンダが特定するタイムゾーンのパーマネントオフ
セットからの分における季節的なオフセットまたは0。
【1647】hour: Integer|Nil; レスポンダが特定する時または0。
【1648】minute: Integer|Nil; レスポンダが特定する分または0。
【1649】month: Integer|Nil; レスポンダが特定する月または0。
【1650】second: Integer|Nil; レスポンダが特定する秒または0。
【1651】Year: Integer|Nil; レスポンダが特定するグレゴリオ歴の年または0。
【1652】zone: Integer|Nil; レスポンダが特定するタイムゾーンのUTCからの分に
おけるパーマネントオフセットまたは0。
【1653】パブリックインスタンスオペレーション globalize: unprotected op(); レスポンダのパーマネント及び季節的なオフセットをU
TCオフセットに設定し、特定された絶対時点が変化し
ないようにする。
【1654】localize: unprotected op(); レスポンダのパーマネント及び季節的なオフセットを現
在位置のオフセットに設定し、特定された絶対時点が変
化しないようにする。
【1655】nomalize: unprotected op() Boolian; レスポンダを規格化し、レスポンダの属性のいずれかが
プロセス中変化したか否かをリターンする。
【1656】アダプテイション isEqual 2つのカレンダ時間は、その本来の属性に従い、同等で
ある。
【1657】変換 Time タイムは、同一の絶対時点と同一のパーマネント及び季
節的なオフセットを特定する規格化されたカレンダ時間
を生じる。
【1658】4.10 ケースド(Cased) Cased クラス Cased: abstract interface () = (...); パブリックインスタンス属性 isLower: abstract readonly Boolean; レスポンダのいずれかのアイテムがローア-ケースか否
か。
【1659】isUpper: abstract readonly Boolean; レスポンダのいずれかのアイテムがアッパ-ケースか否
か。
【1660】パブリックインスタンスオペレーション makeLower: abstract op() copied cased; 各々のアッパーケースのアイテムがそのアイテムのロウ
アケースの同等物に置き換えられたレスポンダのコピー
をリターンする。
【1661】makeUpper: abstract op() copied cased; 各々のローアケースのアイテムがそのアイテムのアッパ
ーケースの同等物に置き換えられたレスポンダのコピー
をリターンする。
【1662】4.11 キャラクタ(Character) オブジェクト(リファレンスされる) ・ プリミティブ(実行され変更されない) ・・ キャラクタ(ケースド、順序付けされる) クラス Character: シールされたインターフェース(Primitive, Cased, Ordered) =
(); アダプテーション isAfter そのユニコードのコードに従って1つのキャラクタが次
のキャラクタの後にある。
【1663】isBefore そのユニコードのコードに従って1つのキャラクタが別
のキャラクタの前にある。
【1664】isEqual 2つのキャラクタはそのユニコードのコードに従って同
等である。
【1665】変換 Bit ビット”0”は数字0を生じビット1は数字1を生ず
る。
【1666】Integer [0,65535]の範囲の整数は、そのユニコードの
コードのキャラクタを生ずる。
【1667】Octet オクテットは、オクテットを整数に最初に変換したのち
その整数をキャラクタに変換する結果を生ずる。
【1668】OctetString オクテットストリングは、オクテットストリングを最初
に整数に変換した後その整数をキャラクタに変換する結
果を生ずる。
【1669】String 1つのアイテムを持つストリングはそのアイテムに等し
いキャラクタを生ずる。
【1670】4.12 サイテイション(Citation) オブジェクト(リファレンスされる) ・ サイテイション(順序付けされる) クラス Citationインターフェース (Object, Ordered) = (...); 構造 initialize Unprotected op( title: Identifier!; author: Telename|Nil; majorEdition, minorEdition: Integer|Nil); レスポンダの本来の属性を同じような名前のアーギュメ
ント(アーギュメント”author”、”majorEditio
n”、”minorEdition”及び”title”)にする。
【1671】パブリックインスタンス属性 author Telename|Nil; レスポンダが割り当てられているかまたはそのようなコ
ンストレイントが課せられるならば、レスポンダによっ
て特定されたオーサーのテレネームであり、他の場合は
0である。
【1672】majorEdition Integer|Nil; レスポンダが割り当てられているかそれらのコンストレ
イントが課せられていれば、レスポンダによって特定さ
れたメイジャーエディションの番号であり、さもなけれ
ば0である。
【1673】minorEdition Integer|Nil; レスポンダが割り当てられているかまたはそのようなコ
ンストレイントが課せられた時、レスポンダによって特
定されたマイナーエディションの番号、他の場合には
0。
【1674】title Identifier!; レスポンダが特定するタイトルの識別子。
【1675】アダプテイション isAfter その”オーサー(author)”属性が、仲間であり、それ
らのものの”タイトル(title)”属性が、相等しく、
第1のサイテイションの ”majorEdition”属性が第2
のサイテイションの”majorEdition”属性の後にあるか
または両方のサイテイションの”majorEdition”属性が
相等しく第1のサイテイションの”majorEdition”属性
が第2のサイテイションのものの後にある場合にのみ、
あるサイテイションが別のサイテイションの後になる。
【1676】isBefore 2つのサイテイションの”オーサー(author)”属性が
同等であり、”タイトル(title)”属性が等しく、第
1のサイテイションの”majorEdition”属性が第2のサ
イテイションの”majorEdition”属性の前にあるかまた
は両方のサイテイションの”majorEdition”属性が等し
く、第1のサイテイションの”minorEdition”属性が第
2のサイテイションの”minorEdition”属性の前にある
場合にのみ、第1のサイテイションは、第2のサイテイ
ションの前になる。
【1677】isEqual 2つのサイテイションは、それらの”オーサー(autho
r)”属性が同等で他の固有の属性が等しいとき、等し
い。
【1678】4.13 サイティド(Cited) Cited クラス Cited: abstract interface () = (...); 構造 initialize: unprotected op (title: Idenntifier!; majorEdition, minorEdition: Integer); レスポンダの本来の属性を、その”オーサー”属性が現
在のプロセスの割り当てられたテレネームであり、それ
以外の属性が同じ様な名前のアーギュメント(アーギュ
メント”majorEdition”、”minorEdition”及び”titl
e”)であるサイテイションにする。
【1679】パブリックインスタンス属性 citation: リードオンリのプロテクトされたサイテイション; レスポンダの割り当てられたサイテイション。
【1680】4.14 クラス(Class) オブジェクト(リファレンスされる) ・ クラス(引用され、相互変換される)クラス Class: シールされたインターフェース(Object, Cited, Interc
hanged) =(...); 構成 initialize: 保護されていないop(); FeatureUnvaliableを投出する。 例外(”FeatureUnavaliable”)を投出する。
【1681】注:オペレーション”new”でなくオペレ
ーション”makeClasses”を用いてクラスを作り出す。
【1682】パブリックインスタンスオペレーション 変換 シールされたオペレーション(source: protected Obje
ct) copied Objectは、ConversionUnavailableを投出す
る。
【1683】オブジェクトがすでにそのクラスのインス
タンスでない場合、オブジェクト(アーギュメント”so
urce”)をそのクラスに変換することによって生じたレ
スポンダのインスタンス、または、他の場合にはそのオ
ブジェクトのコピー、をリターンする)。
【1684】オペレーションはソースクラスに最初に変
換方法を求め、それがダメな場合に目的点のクラスにそ
の方法を求める。オブジェクトが要求されたように変換
できない場合に例外が投出される(”ConversionUnavai
lable”)。
【1685】注:2つのステップは、特別の変換のため
の方法をインプリメントするために、ソースまたは目的
点クラスのうちどちらかのよりおそく定義された方を許
容またはパーミットする。
【1686】isInstance: シールされたop(instance: protected Object) Boolea
n; オブジェクト(アーギュメント”instance”)がレスポ
ンダのインスタンスであるか否かの表示をリターンす
る。
【1687】isMember: シールされたop(member: protected Object) Boolean; オブジェクト(アーギュメント、”member”)がインタ
ーフェースであるが必ずしもインプリメンテーション、
レスポンダのメンバ、ではないか否かの表示をリターン
する。
【1688】isSubclass: シールされたop(subclass: Class) Boolean; クラス(アーギュメント”subclass”)がレスポンダの
サブクラスであるか否かの表示をリターンする。
【1689】new: シールされたop(parameters: Object...) Objectは、Cl
assAbstract、Exception、objectUninitializedを投出
する。
【1690】初期化パラメータ(アーギュメント”para
meters”)によって定められたレスポンダの新しいイン
スタンスをリターンする。前記の署名にもかかわらず、
オペレーションの署名は、レスポンダによって定義され
たオペレーション”initialize”のそれである。
【1691】レスポンダが抽象的であるか(”ClassAbs
tract”)、クラス特異の問題が提起されるか(”Excep
tion”)または潜在的なオブジェクトがそれ自身のフィ
ーチャを使用するか(”ObjectUninitialized”)した
場合に、例外が投出される。
【1692】4.15 クラス定義(Class Definitio
n) オブジェクト(リファレンスされる) ・ クラス定義 クラス ClassDefinition: シールされたインターフェース = (...); 構成 initialize プロテクトされないop ( title:Identifier!; majorEdition, minorEdition: Integer; interface: Interface; implementation: Implementation|Nil); レスポンダの本来の属性を、同じような名前のアーギュ
メント(アーギュメント”implementation”、”interf
ace”、”majorEdition”、”minorEdition”、及び”t
itle”)にする。
【1693】パブリックインスタンス属性 implementation: Implementation|Nil; もし、インプリメンテーションがあれば、レスポンダが
定義するクラスのインプリメンテーションであり、その
他の場合には0である。
【1694】interface: Interface; レスポンダが定義するクラスのインターフェース。
【1695】majorEdition: Integer; レスポンダが定義するクラスの割り当てられたサイテイ
ションの”majorEdition”属性。
【1696】minorEdition: Integer; レスポンダが定義するクラスの割り当てられたサイテイ
ションの”minorEdition”属性。
【1697】title Identifier!; レスポンダが定義するクラスの割り当てられたサイテイ
ションの”title”属性。
【1698】パブリックインスタンスオペレーション makeClasses: op(definitions: protected ClassDefinition...) Lexion[Class] クラス例外を投出する。
【1699】レスポンダと他のクラス定義(アーギュメ
ント”definitions”)が集合的に定義するクラスのレ
キシコンをリターンする。各々の値は、そのタイトルが
関連されたキーに等しいクラスである。サイテイション
は次のように各々のクラスに割り当てられる。割り当て
られたサイテイションの”オーサー(author)”属性
は、現在のプロセスの割り当てられたテレネームであ
る。割り当てられたサイテイションの他の属性は、クラ
スのクラス定義によって定義された通りである。
【1700】クラスが作り出されない場合には例外が投
出される(”classException”)。
【1701】アダプテイション isEqual: 2つのクラスの定義はそれぞれの本来の属性に従って同
等である。
【1702】4.16 クラスの例外(Class Exceptio
n) オブジェクト(リファレンスされる) ・ 例外(変更なし) ・・ プログラミングの例外 ・・・ クラスの例外 クラス ClassException: abstract interface(ProgrammingException) = (); サブクラス ClassSealed: interface(ClassException) = (); 提案された新しいクラスは、シールされた直接スーパー
クラスを有する。
【1703】ClassUndefined: interface(ClassException) = (); 提案された新しいクラスは、定義されないクラス識別子
を使用する。
【1704】FeatureRedefined: interface(ClassException) = (); 提案された新しいクラスとそのインターフェーススーパ
ークラスの1つとは、同一の識別子によって表される本
来のフィーチャを有する。
【1705】FeatureSealed: interface(ClassException) = (); 提案された新しいクラスは、クラスのインターフェース
スーパークラスの1つによってシールされたフィーチャ
を実施する。
【1706】FeatureUndefined interface(ClassException) = (); 提案された新しいクラスは定義されていないフィーチャ
識別子を使用する。
【1707】MixinDisallowed: interface(ClassException) = (); 提案された新しいクラスは、フレーバが必要とされる場
合にミックスインを使用する。
【1708】superclassesInvalid: interface(ClassException) = (); 提案された新しいクラスは、インコンシステントな直接
スーパークラスを有する。
【1709】4.17 コレクション(Collection) オブジェクト(リフェレンスされる) ・ Collection クラス Collection: interface[itemClass: Class] = (...); サブジェクトクラスの各々のメンバのその各々のアイテ
ムがそれ自身メンバであるクラス(アーギュメント”it
emClass”)によってパラメータ化される。
【1710】構成 initialize: プロテクトされないop(item:itemClass...)は、ItemInv
alidを投出する。
【1711】レスポンダのアイテムをオブジェクトにす
る(アーギュメント”items”)。
【1712】提案されたアイテムが不適切である場合に
例外が投出される(”ItemInvalid”)。
【1713】パブリックインスタンス属性 length: read-only Integer; レスポンダの長さ。
【1714】パブリックインスタンスオペレーション clear: プロテクトされないop(); そのすべてのアイテムをレスポンダから取り除き廃棄す
る。
【1715】注: オペレーションはレスポンダの長さ
を0に減少させる。
【1716】examine: op(item: protected itemClass) itemClass|Nil; 少なくとも1つのそのようなアイテムがあれば、オブジ
ェクト(アーギュメント”item”)に等しいアイテムを
レスポンダに残してそれをリターンし、さもなければ0
をリターンする。いくつかのそのようなアイテムがあれ
ば選択された1つは定義されないものである。
【1717】exclude: プロテクトされないop (item: protected itemClass) i
temClass|Nil; 少なくとも1つのそのようなアイテムがあれば、オブジ
ェクトに等しいアイテム(アーギュメント”item”)を
レスポンダから除去してそれをリターンするかまたさも
ない場合には0をリターンする。いくつかのそのような
アイテムがある場合には選択された1つは定義されない
ものである。
【1718】include: プロテクトされないop (item:itemClass)は、ItemInva
lidを投出する。
【1719】オブジェクト(アーギュメント”item”)
をレスポンダに新しいアイテムとして含める。
【1720】提案されたアイテムがそのようなものとし
て不適切であれば例外が投出される(”itemInvali
d”)。
【1721】stream: op ( ) copied Stream[itemClass]; そのアイテムがレスポンダのアイテムであるストリーム
をリターンする。クラス”Collection”のサブクラス
は、ストリームがレスポンダのアイテムを生成させる順
序を定義することができれば、クラス”Collection”
は、オーダーを規定しないままにしておく。
【1722】ストリームがつくり出されたのちにレスポ
ンダが変更された場合には、新しく含められたアイテム
は、ストリームが以前にそれらのアイテムを作り出さ
ず、ストリームがもし以前にそれらを作り出さない限り
新しく除外されるアイテムを生成させない場合にのみ、
ストリームがこれらの新しい含められたアイテムを生成
させる。
【1723】注:ストリームがインスタンスであるクラ
ス”ストリーム”のサブクラスは定義されていない。
【1724】アダプテイション isEqual: 2つのコレクションは、それらのものの長さが等しくそ
れらのもののアイテムが対をなしており、各々の対のア
イテムが同一になるようにされている場合にのみ同等で
ある。コレクションのサブクラスはこの同一性の定義を
狭くすることができるが広くすることはできない。
【1725】4.18 コレクションの例外(collecti
on Exception) オブジェクト(リファレンスされない) ・ エクセプション(変更されない) ・・ プログラミングの例外 ・・・ Collectionの例外 クラス CollectionException: abstruct interface (Programming Exception) = (); サブクラス ItemDuplicated: interface(Collection Exception) = (); あるセットの1つの提案されたアイテムは他のものに等
しい。
【1726】ItemInvalid: interface(Collection Exception) = (); コレクションの提案されたアイテムは、コレクションの
コンストレイントを満たさない。
【1727】KeyDuplicated: interface(Collection Exception) = (); ディクショナリの1つの提案されたキーは、別なものに
等しい。
【1728】KeyInvalid: interface(Collection Exception) = (); ディクショナリの提案されたキーは、ディクショナリの
コンストレイントに適合しないかまたはディクショナリ
のキーに等しくなることを意図するオブジェクトはその
ようにしない。
【1729】ObjectsUnpaired: interface(Collection Exception) = (); ディクショナリの対をなしていると考えられるキー及び
値は奇数である。
【1730】PositionInvalid interface(Collection Exception) = (); リストまたはプロシージャにおいてある位置に等しくな
ることを意図するインテジャは、そのようにしない。
【1731】StackDepleted interface(Collection Exception) = (); スタックの長さはスタックの要求されたマニュプレーシ
ョンを阻止する。
【1732】4.19 コンストレインド(Constraine
d) Constrained クラス Constrained: abstract interface ()=(...); 構成 initialize プロテクトされないop (constraint: copied constrain
t|Nil); レスポンダの本来の属性を、0でない場合にコンストレ
イント(アーギュメント”constraint”)にし、その他
の場合には初期化パラメータを0のものにする。
【1733】パブリックインスタンス属性 constraint: リードオンリのプロテクトされたコンストレイント; ノミネートされたレポンダのプロパティに対するコンス
トレイント。
【1734】4.20 コンストラインドディクショナ
リ(Constrained Dictionary) オブジェクト(リファレンスされない) ・ コレクション ・・ セット ・・・ ディクショナリ ・・・・ コンストレインドディクショナリ(コンスト
レインド) クラス ConstrainedDictionary: interface[KeyClass, valueClass: Class] (Dictionary [keyClass, valueClass], Constrained) =
(); サブジェクトクラスの各々のメンバの各々のアイテムの
キー(アーギュメント”keyClass”)及び値(アーギュ
メント”valueClass”)がそれ自身メンバであるクラス
によってパラメータ化される。
【1735】構成 initialize: プロテクトされないop (constraint:copied Constrain
t; keysAndValues: Object ... /*key:keyClass;value:valueClass */) KeyDuplicated、KeyInvalid, ObjectsUnpairedを送出す
る。
【1736】キーの値の対(アーギュメント”keyAndVa
lues”)とレスポンダの”constraint”属性との間のレ
スポンダのアイテムの関連を、コンストレイントにする
(アーギュメント”constraint”)。
【1737】2つの提案されたキーが等しい(”keyDup
licated”)か、または提案されたキーがそのようなも
のとして不適切か(”keyInvalid”)またはオブジェク
トの数が奇数である(”ObjectUnpaired”)場合に例外
が投出される。
【1738】アダプテイション add コンストレイントを満たすキーのみが含められる。
【1739】constraint コンストレイントは、キーに対するものである。
【1740】include コンストレイントを満たすキーのみが含められる。
【1741】rekey コンストレイントを満たすキーのみが含められる。
【1742】set コンストレイントを満たすキーのみが含められる。
【1743】4.21 コンストレインドリスト(Cons
trained List) オブジェクト(リファレンスされる) ・ コレクション ・・ リスト(順序付けされる) ・・・ Constrained List (Constrained) クラス ConstrainedList: interface[itemClass: Class] (List [itemClass], Constrained) = (...); サブジェクトクラスの各々のメンバの各々のアイテム自
身がメンバであるクラス(アーギュメント”itemClas
s”)によってパラメータ化される。
【1744】構成 initialize: プロテクトされないop (constraint:copied Constrain
t; items:itemClass...) ItemInvalidを投出する。
【1745】レスポンダのアイテムであるオブジェクト
(アーギュメント”items”)、左から右にかけて増大
するその位置ならびにレスポンダの”constraint”属性
をコンストレイントにする(アーギュメント”constrai
nt”)。
【1746】提案されたアイテムが不適切であれば例外
が投出される(”ItemInvalid”)。
【1747】アダプテイション add コンストレイントを満たすオブジェクトのみが含められ
る。
【1748】constraint コンストレイントは、アイテムに対するものである。
【1749】include コンストレイントを満たすオブジェクトのみが含められ
る。
【1750】4.22 コンストレインドセット(Cons
trained Set) オブジェクト(リファレンスされる) ・ コレクション ・・ セット(検査される) ・・・ Constrained Set(コンストレインド) クラス ConstrainedSet: interface [itemClass:Class] (Set [itemClass], Constrained) =(...); サブジェクトクラスの各々のメンバの各々のアイテム自
身がメンバであるクラス(アーギュメント”itemClas
s”)によってパラメータ化される。
【1751】構成 initialize: プロテクトされないop (constraint: copied Constrain
t; item:itemClass...) ItemDuplicated, ItemInvalidを投出する。
【1752】レスポンダのアイテムであるオブジェクト
(アーギュメント”items”)及びレスポンダのコンス
トレイントである属性をコンストレイントにする(アー
ギュメント”constraint”)。
【1753】2つの提案されたアイテムが等しい場
合(”ItemDuplicated”)または提案されたアイテムが
そのようなものとして不適切な場合(”ItemInvali
d”)例外が投出される。
【1754】アダプテイション constraint: コンストレイントはアイテムに対するものである。
【1755】include: コンストレイントを満たすオブジェクトのみが含められ
る。
【1756】4.23 コンストレイント(Constrain
t) オブジェクト(リファレンスされる) ・ コンストレイント クラス Constraint: interface = (...); 構成 initialize: プロテクトされないop (classId, passage: Identifier!|Nil; isOptional, isInstance: Boolean|Nil)は、PassageInv
alidを投出する。
【1757】レスポンダの”ofClass”属性を0にし、
レスポンダの他の本来の属性を同じような名前のアーギ
ュメント(アーギュメント”classId”、”isInstanc
e”、”isOptional”、”passage”)とする。アーギュ
メントが0であれば、対応する属性は、それぞれクラ
ス”Object”、”false”、”false”または”byRef”
の識別子とされる。
【1758】提案された通路がそのようなものとして不
適切な場合には、例外が投出される(”PassageInvali
d”)。
【1759】パブリックインスタンス属性 classId: Identifier!; レスポンダのサブジェクトがメンバとなるべきクラスの
識別子。識別子は、レスポンダのコンテキストを与える
インターフェースまたはインプリメンテーションの属
性”vocabulary”に従って解釈される。
【1760】isInstance: Boolean; レスポンダのサブジェクトが属性”classId”が表すク
ラスのインスタンス(単なるメンバではない)となるか
否か。
【1761】isOptional: Boolean; 属性”classId”にかかわらず、レスポンダのサブジェ
クトが0となることがパーミットされるか否か。
【1762】ofClass: リードオンリ Class|Nil; 0でない場合、レスポンダのサブジェクトがメンバとな
るべきクラス。
【1763】passage: Identifier!は、PassageInvalidを投出する。; レスポンダのサブジェクトがどのようにパスされるかを
表す識別子。
【1764】提案された通路がそのようなものとして不
適切であれば例外が投出される(”PassageInvali
d”)。
【1765】アダプテイション isEqual 2つのコンストレイントはそれぞれの本来の属性に従っ
て相等しい。
【1766】4.24 コンタクト(Contact) オブジェクト(参照される) ・ コンタクト クラス Contact: interface = (...); 構成 initialize: プロテクトされないop (subject:Process|Nil; subjectNotes:Object|Nil); レスポンダの”subject”及び”subjectNotes”属性を
同じような名前のアーギュメント(アーギュメント”su
bject”及び”subjectNotes”)及びレスポンダの他の
本来の属性を、”subject”属性がプロセスであればサ
ブジェクトを記述するものに、またその他の場合には0
にする。
【1767】パブリックインスタンス属性 Subject: Process|Nil; レスポンダのサブジェクトまたは0。
【1768】subjectClass: リードオンリのプロテクトされたサイテイション|0; レスポンダのサブジェクトは1つのインスタンスである
クラス”Agent”またはクラス”Place”のサブクラスで
あるクラスの割り当てられたサイテイションは、”subj
ect”属性がプロセスであるかまたはそのクラスであ
り、”subject”属性が0であれば0である。
【1769】subjectName: リードオンリのプロテクトされたtelename|Nil; ”subject”属性がプロセスであれば、レスポンダのサ
ブジェクトの割り当てられたテレネームに〔またはその
テレネーム〕またはその他の場合には0である。
【1770】subjectNotes: Object|Nil; レスポンダのオブザーバによって保持されたオブジェク
ト。
【1771】アダプテイション isEqual: 2つのコンタクトは、それらのものの属性”subjectNam
e”に従って同等である。
【1772】4.25 コンタクティド(Contacted) Contacted クラス Contacted: abstract interface () = (...); 構成 initialize: レスポンダの属性”contacts”をクリアする。
【1773】プライベートインスタンスの属性 contacts: リードオンリ Set[Contact]; レスポンダが保持するコンタクトのセット。
【1774】4.26 ディクショナリ(Dictionary) オブジェクト(リファレンスされる) ・ コレクション ・・ セット ・・・ ディクショナリ クラス Dictionary: interface[keyClass, valueClass: Class] (set [Association [keyClass, valueClass]]) =
(...);。 サブジェクトクラスの各々のメンバの各々のアイテムの
キー(アーギュメント”keyClass”)及び値(アーギュ
メント”ValueClass”)自身がメンバであるクラスによ
ってパラメータ化される。
【1775】構成 initialize: プロテクトされないop (keysAndValues: Object... /*key:keyClass;value:valueClass*/) keyDuplucated、keyInvalid、ObjectsUnpairedを投出す
る。
【1776】キーの値の対の間のレスポンダのアイテム
の関連性を作る(アーギュメント”keyAndValues”)。
【1777】2つの提案されたキーが等しい場合(”ke
yDuplicated”)、提案されたキーがそのようなものと
して不適切な場合(”keyInvalid”)またはオブジェク
トの数が奇数の場合(”ObjectUnpaired”)例外が投出
される。
【1778】パブリックインスタンスオペレーション add: プロテクトされないop (key:keyClass; value: valueCl
ass) は、keyInvalidを投出する。
【1779】レスポンダには、新しい関連、第1のオブ
ジェクトに関係したもの(アーギュメント”key”)が
関連のキーとしてそして第2のオブジェクト(アーギュ
メント”value”)が関連の値としてそれぞれ含められ
る。
【1780】提案されたキーがそのようなものとして不
適切な場合またはレスポンダがすでに含めた関連の中に
あるキーに等しい場合(”keyInvalid”)例外が投出さ
れる。
【1781】drop: プロテクトされないop (key: protected keyClass) va
leuClassは、KeyInvalidを投出する。
【1782】キー(アーギュメント”key”)がオブジ
ェクトに等しいアソシエイション(関連)をレスポンダ
から除外して廃棄して、関連の値をリターンする。主張
されたキーがそのようなものとして不適切な場合には例
外が投出される(”KeyInvalid”)。
【1783】find: op (value: protected valueclass) keyClass|Nil; その値がオブジェクトに等しい関連(アーギュメント”
value”)をレスポンダに残し、関連のキーをリターン
する。レスポンダがいくつかのこのような関連を含む場
合、選択されたものは定義されない。レスポンダが0を
含む場合、0がリターンされる。
【1784】get: op(key: protected keyClass) valueClass KeyInvalidを送出する; そのキーがオブジェクト(アーギュメント”key”)に
等しい関連をレスポンダに残し、関連の値をリターンす
る。
【1785】主張されたキーがそのようなものとして不
適切な場合には、(”KeyInvalid”)例外が投出され
る。
【1786】rekey: プロテクトされないop (currentKey:protected keyClas
s; newKey: keyClass) は、KeyInvalidを投出する。
【1787】そのキーが第1のオブジェクト(アーギュ
メント”currentKey”)に等しい関連をレスポンダに残
し、その関連のキーを廃棄し、そのキーの代わりに、第
2のオブジェクト(アーギュメント”newKey”)を代替
する。このオペレーションはオペレーション”drop”及
び”add”によるかのように行う。
【1788】主張されるかまたは提案されたキーがその
ようなものとして不適切であるかまたは、この後者のキ
ーがレスポンダにすでに含まれている関連中のキーに等
しい場合に、例外が投出される(”KeyInvalid”)。
【1789】set: プロテクトされないop (key: protected keyClass; val
ue: valueClass) は、KeyInvalidを投出する。
【1790】そのキー(アーギュメント”key”)が第
1のオブジェクトに等しいアソシエーションをレスポン
ダが含む場合(アーギュメント”key”)、そのアソシ
エーションの代わりに、第2のオブジェクトを代替する
(アーギュメント”value”)。その他の場合には、レ
スポンダに新しいアソシエーションを含める。第1のも
のは、第1オブジェクト(アーギュメント”key”)を
アソシエーションのキーとして含むものであり、第2の
もの(アーギュメント”value”)はそれをアソシエー
ションの値として含むものである。
【1791】提案されたキーがそのようなものとして不
適切な場合には、例外が投出される(”KeyInvali
d”)。
【1792】transpose: プロテクトされないop (key 1, key 2: protected keyC
lass) は、KeyInvalidを送出する; 2つのキー(アーギュメント”key 1”及び”key 2”)
の代わりにレスポンダの値を転置する。
【1793】主張されたキーがそのようなものとして不
適切な場合には例外が投出される(”KeyInvalid”)。
【1794】アダプテイション include ただ1つのアソシエーションのみが含められる。あるア
ソシエーションは、アソシエーションに等しい現存のア
イテムを排除し、廃棄したのちに新しいアイテムとして
含められる。
【1795】isEqual その同じようなキーをもつ値が相等しい場合にのみ2つ
のディクショナリは同等である。
【1796】4.27 例外(Exception) オブジェクト(参照される) ・ 例外(変更なし) クラス Exception: abstract interface(Object, Unchanged) = (...); パブリックインスタンスオペレーション sealed op()を投出する。
【1797】レスポンダのためにその方法を失敗に終わ
らせることによって現在の方法の遂行を終了する。
【1798】アダプテイション isEqual 2つの例外は、同一のクラスのインスタンスである場合
にのみ相等しい。
【1799】4.28 実行される(Executed) Executed クラス Executed: abstract interface() = (); このクラスは、シールされている。
【1800】パブリックインスタンスオペレーション catch: シールされたop (exeption: Class) Exception|Nil は、例外を投出する。
【1801】レスポンダを遂行し、レスポンダが成功す
れば、0をリターンし、例外が供給されたクラスの1つ
のメンバであれば(アーギュメント”exception” )例
外をリターンし、レスポンダを失敗させる。レスポンダ
は、レスポンダのフレーム及びプロパティではなくリク
エスタのフレーム及びプロパティにアクセスする。
【1802】レスポンダが供給されたクラスのメンバで
はない例外を投出した場合に、例外が投出される(”Ex
ception”)。
【1803】注:クラスは、例外であるかまたはそのサ
ブクラスである。
【1804】do: シールされたop () は、例外を投出する。
【1805】レスポンダを遂行する。レスポンダはレス
ポンダのフレーム及びプロパティではなくリクエスタの
フレーム及びプロパティにアクセスする。
【1806】レスポンダがそのようにした場合、例外が
投出される(”Exception”)。
【1807】either: シールされたop (false: Executed; precondition: Boo
lean) は、例外を送出する。: プレコンディション(アーギュメント”preconditio
n”)が真であれば、レスポンダを遂行し、そうでなけ
れば遂行されるオブジェクト(アーギュメント”fals
e”)を遂行する。選択され実行されたオブジェクト
は、レスポンダのフレーム及びプロパティではなくリク
エスタのフレーム及びプロパティにアクセスする。
【1808】選択され実行されたオブジェクトがそのよ
うにする場合、例外が投出される(”Exception”)。
【1809】if: シールされたop (precondition: Boolean) は、例外を送出する。; プレコンディションが”真”である場合にのみレスポン
ダを遂行する(アーギュメント”precondition”)。レ
スポンダはそれ自身のものではなくリクエスタのフレー
ム及びプロパティにアクセスする。
【1810】レスポンダがそのようにする場合、例外が
投出される(”Exception”)。
【1811】loop: シールされたop () は、例外を投出する。
【1812】レスポンダを不特定回数遂行し、レスポン
ダが失敗すれば、進めることなく、例外を投出する。レ
スポンダはレスポンダのフレーム及びプロパティではな
く、リクエスタのフレーム及びプロパティにアクセスす
る。
【1813】レスポンダがそのようにする場合、例外が
投出される(”Exception”)。
【1814】repeat: シールされたop (repetitions: Integer) は、例外を送出する。; 要求された回数だけレスポンダを遂行し(アーギュメン
ト”repetitions”)、レスポンダが失敗すれば進める
ことなく例外を投出する。整数が負数であればオペレー
ションは効果を持たない。レスポンダは、レスポンダの
フレーム及びプロパティではなく、リクエスタのフレー
ム及びプロパティにアクセスする。
【1815】オペレーションは、レスポンダの各々の遂
行の前に、以前の遂行の数プラス1である整数をスタッ
クに保存する。
【1816】レスポンダがそのようにする場合例外が投
出される(”Exception”)。
【1817】注:オペレーションはそれがスタックに保
存するいかなる整数もポップしない。
【1818】while: シールされたop (precondition: Executed) は、Exception, ResultInvalid, ResultMissingを送出
する。
【1819】実行されるオブジェクトを繰り返し遂行し
(アーギュメント”precondition”)、スタックからブ
ーリアンをポップし、ブーリアンが真であれば、レスポ
ンダを遂行する。ブーリアンが偽であればオペレーショ
ンは成功する。実行されたオブジェクトが失敗すれば、
オペレーションは進めることなく例外を投出する。実行
されるオブジェクトはレスポンダのフレーム及びプロパ
ティではなく、リクエスタのフレーム及びプロパティに
アクセスする。
【1820】実行されたオブジェクトがそのようにする
場合(”Exception”)、ポップされるオブジェクトが
ブーリアンでない場合(”ResultInvalid”)またはポ
ップされるべきオブジェクトがスタックに無い場合(”
ResultMissing”)に例外が投出される。
【1821】4.29 実行の例外(Execution Except
ion) オブジェクト(参照される) ・ 例外(変更なし) ・・ プログラミングの例外 ・・・ カーネル例外 ・・・・ Execution Exception クラス ExecutionException: abstract interface(KernelException) = (); サブクラス ArgumentInvalid: interface (ExecutionException) = (); アーギュメントはアーギュメントのコンストレイントを
満たさない。
【1822】ArgumentMissing: interface (ExecutionException) = (); アーギュメントは、スタックにない。
【1823】AttributeReadOnly: interface (ExecutionException) = (); 属性は、リードオンリであるのセットできない。
【1824】ClassUnavailable: interface (ExecetionException) = (); クラスは、現在のプロセスの属性”privateClasses”で
も、現在のプレイスの属性”publicClasses”でもな
い。
【1825】EscalationInvalid: interface (ExecutionException)=(); フィーチャは、不適切にエスカレートされる。
【1826】FeatureUnavailable: interface (ExecutionException)=(); 識別子は、レスポンダのアクセス可能なフィーチャを表
さない。
【1827】InternalException: interface (ExecutionException)=(); エンジンは、命令セットを充分にインプリメントし得な
い。
【1828】PropertyUnderfined: interface (ExecutionException)=(); 識別子は、現在の方法に適切に検出可能を意味しない。
【1829】ReferenceProtected: interface (ExecutionException)=(); あるオブジェクトへのリファレンスはそのオブジェクト
の変更を防止しない。
【1830】ReferenceVoid: interface (ExecutionException)=(); リファレンスは、ボイドである。
【1831】ResponderMissing: interface (ExecutionException)=(); スタックがクリアされた時にあるフィーチャは、リクエ
ストされる。
【1832】ResultInvalid: interface (ExecutionException)=(); ある結果は、その結果のコンストレイントを満たさな
い。
【1833】ResultMissing: interface (Execution Exception)=(); ある結果は、スタックに無い。
【1834】VariableUnderfined: interface (Execution Exception)=(); 識別子は、変数を表さない。
【1835】4.30 フィーチャ(Feature) オブジェクト(参照される) ・ フィーチャ クラス Feature: abstract interface = (...); このクラスは、シールされる。
【1836】構成 initialize: プロテクトされないop (isPublic: Boolean|Nil; exceptions: Set[Identifier]|Nil); レスポンダの本来の属性を同じ名前のアーギュメンント
(アーギュメント”exceptions”及び”isPublic”)と
する。しかしアーギュメントが0であれば、対応する属
性はクリアされるかまたは”偽”とされる。
【1837】パブリックインスタンス属性 exceptions: Set[Identifier!]; レスポンダが定義するフィーチャによって投出された例
外がそのメンバであるクラスを表す識別子。識別子は、
レスポンダを含むインターフェースの属性”vocabular
y”に従って解釈される。
【1838】isPublic: ブーリアン; レスポンダが定義するフィーチャがパブリックであるか
否か、すなわちプライベートでないか否か。
【1839】4.31 ハッシュド(Hashed) Hashed クラス Hashed: abstract interface () = (...); パブリックインスタンス属性 hash: abstract read-only Integer; レスポンダのハッシュ 4.32 アイデンティファイヤ(Identifier) オブジェクト(参照される) ・ プリミティブ(実行され、変更されない) ・・ 識別子(順序有り) クラス Identifier: シールされたinterface (Primitive, Ordered) = (); アダプテイション isAfter 1つの識別子は、そのテキストに従って別の識別子の後
にある。
【1840】isBefore 1つの識別子は、そのテキストに従って別のものの前に
ある。
【1841】isEqual 2つの識別子は、そのテキストに従って同一である。
【1842】変更 String あるストリングは、識別子のテキストがその識別子を形
成するので適切である。
【1843】4.33 インプレメンテーション(Impl
ementation) オブジェクト(参照される) ・ Implementation クラス Implementation: シールされたinterface = (...); 構成 initialize: プロテクトされないop (superclasses:List[Identifie
r!]|Nil; vocabulary: Lexion〔Citation〕|Nil; property: List[Identifier!]|Nil; instanceMethods, setMethods, classMethods, fromMethods, toMethods: Lexicon[Method]|Nil; レスポンダの本来の属性を同じ名前のアーギュメント
(アーギュメント”classMethods”、”fromMethod
s”、”instanceMethods”、”properties”、”setMet
hods”、”superClasses”、”toMetjods”及び”vocab
ulary”)とする。アーギュメントが0であるが、対応
する属性は0であることが許されない場合に、対応する
属性はクリアされる。
【1844】パブリックインスタンス属性 classMethods: Lexicon[Method]; メソッド−許可されない”αSet”オペレーション 以外のオペレーション”αGet”を含むクラスオペレー
ション−レスポンダを組み込むクラスに対して固有のも
の。各々の値は、関連するキーが表すオペレーションを
遂行するための方法である。
【1845】fromMethods: Lexicon [Method]; レスポンダを組み込んだクラスに対して固有の方法−−
他のクラスから変更するための方法。各々の値は、関連
するキーが表すクラスから変更するための方法である。
【1846】注:クラス”Dictionary”の実施(インプ
リメンテーション)において、特定されるクラス”Lis
t”であれば、変換は、そのレスポンダがクラス”Dicti
onary”でありその署名が”List”オペレーション ”
(List : protected list) Dictionary”である変換で
ある。 instanceMethods: Lexicon [Method]; オペレーション”αセット”(属性”setMethods”)以
外のオペレーション”αゲット”を含むインスタンスオ
ペレーションのための−レスポンダを組み込んだクラス
に固有の方法。各々の値は、関連するキーを表すオペレ
ーションを遂行するための方法である。
【1847】properties: List [Identifier!]; レスポンダを組み込むクラスに固有のプロパティの識別
子。これらの識別子の順序は、開示された命令セットの
解釈において意味を持たない。しかしプロパティの順序
は、この開示のアペンディクスBに示された符号化規則
において大切である。
【1848】setMethods: [Lexicon [Method]; レスポンダを組み込んだクラスに固有の−”αSet”イ
ンスタンスオペレーションのための−方法。各々の値は
関連するキーの表すオペレーションを遂行する方法であ
る。
【1849】superclasses: List [Identifier!]: Nil; クラスのインターフェイスの直接スーパークラスと異な
っているならば、レスポンダを組み込んだクラスのイン
プリメンテーション直接スーパークラスの識別子であ
り、さもなければ0である。クラスの標準的な順序は、
その識別子の順序であり、最後のクラスはフレーバとな
るべきである。
【1850】toMethods: Lexicon [Method]; レスポンダを組み込んだクラスに固有の−他のクラスに
変換するための−方法。各々の値は関連するキーが表す
クラスに変換するための方法である。
【1851】注:クラス”Dictionary”のインプリメン
テーションにおいて、特定されるクラスがクラス”Lis
t”であれば、変換は、そのレスポンダがディクショナ
リであり、その署名が”List:op ( ) List ”である変
換である。
【1852】vocabulary: Lexicon [Citation] : Nil; クラスのインターフェースが参照するものでなければ、
レスポンダが参照するユーザによって特定されたクラス
であり、さもなければ0である。各々の値は関連するキ
ーの表すクラスへのサイテイションである。属性は、レ
スポンダの”fromMethods”、”superClass”、及び”t
oMethods”属性(他のものではない)の解釈を案内す
る。
【1853】アダプテイション isEqual 2つのインプリメンテーションはその本来の属性に従っ
て同一である。
【1854】4.34 整数(Integer) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・数(順序あり) ・・・Integer クラス Integer: シールされたインターフェース (Number)=(・・・・); パブリックインスタンスオペレーション modulus: op (divisor: Integer) Integer は、DivisionByzeroを投出する; レスポンダの算数の剰余、被除数と整数(アーギュメン
ト”divisor”)即ち除数とをリターンする。前者の符
号は結果を表す。
【1855】除数が0である場合に例外が投出され
る(”DivisionByZero”)。
【1856】quotient: op (divisor: Integer) Integer は、DivisionByZeroを投出する; レスポンダの算数の商、被除数と整数(アーギュメン
ト”divisor”)、除数とリターンする。
【1857】除数が0である場合、例外が投出され
る(”divitionByZero”)。
【1858】アダプテイション abs 結果は整数である。
【1859】add アーギュメントが実数であれば結果は実数であり、整数
であれば結果は整数である。
【1860】divide アーギュメントが実数であれば結果は実数であり、アー
ギュメントが整数であり結果が正しいと思われれば結果
は整数であり、さもなければ結果は実数である。
【1861】multiply オペレーション”add”について前述した通り。
【1862】negate 結果は整数である。
【1863】subtract オペレーション”add”について前述した通り。
【1864】変換 Bit ビット”0”及び”1”は其々0及び1を生ずる。
【1865】BitString ある整数の変換によって生成され得るビットストリング
は整数を生ずる。
【1866】Boolean ブーリアン”偽”及び”真”は其々0及び1を生ずる。
【1867】Character あるキャラクタは、そのキャラクタのユニコードコード
である[0,65535]中の整数を生ずる。
【1868】Octet オクテットはオクテットをオクテットストリングに最初
に変更し次にオクテットストリングを整数に変更するこ
との結果を生ずる。
【1869】OctetString ある整数を変換することによって生成させ得るオクテッ
トストリングは整数を生ずる。
【1870】Real 実数は、オペレーション”truncate”を遂行することに
よって結果した整数を生ずる。
【1871】String キャラクタテレスクリプトにおいてトークン”Intege
r”のためのシンタクティックルールに従うストリング
は、対応する整数を生ずる。
【1872】4.35 インテーチェンジド(Intercha
nged) 変更しない ・ Interchanged クラス Interchanged: abstract interface(Unchanged) = (...); パブリックインスタンス属性 digest: abstract readonly protected object : Nil; レスポンダ即ちクラスのこの特別のインスタンスが相互
変換可能であれば、レスポンダのダイジェストであり、
さもなければ0である。
【1873】4.36 インターフェース(Interfac
e) オブジェクト(参照される) ・ Interface クラス Interface: シールされたinterface = ( ・・・); 構成 initialize: プロテクトされないop (superclasses: List[Identifie
r!]:Nil; vocabulary: Lexicon [Citation]:Nil; instanceFeatures: Lexicon [Feature]:Nil; sealedInstanceFeatures: Set[Identifier!]:Nil; classFeatures: Lexicon [Feature]:Nil; sealedClassFeatures: Set[Identifier!:Nil; isAbstract: Boolean:Nil); レスポンダの固有の属性を同じ名前のアーギュメント
(アーギュメント”classFeatures”、”instanceFeatu
res”、”isAbstract”、”sealedClassFeatures”、”
sealedInstanceFeatures”、”superClass”及び”voca
bulary”)とする。しかし対応するアーギュメントが0
であれば、属性”superclasses”はクラス”Object”の
みの識別子のリストとされ、または、属性が属性”isAb
stract”、”superClasses”以外であれば、属性はクリ
アされる。
【1874】パブリックインスタンス属性 classFeatures: Lexicon [Features]; レスポンダを組み込むクラスに固有のクラスのフィーチ
ャ。各々の値は、関連するキーが表すフィーチャ定義で
ある。
【1875】instanceFeatures: Lexicon[Feature]; レスポンダを組み込むクラスに固有のインスタンスフィ
ーチャ。各々の値は、関連するキーが表すフィーチャ定
義である。
【1876】isAbstract: Boolean; レスポンダを組み込んだクラスがアブストラクトである
か否か。
【1877】sealedClassFeatures: Set [Identifier!]; クラスフィーチャの識別子。これらの識別子は、レスポ
ンダを組み込んだクラスに固有かまたはそのクラスによ
って受け継がれており、そのクラスによってシールされ
ている。
【1878】sealedInstanceFeatures: Set [Identifier!]; インスタンスフィーチャの識別子。これらの識別子は、
レスポンダを組み込んだクラスに固有であるかまたはこ
のクラスによって受け継がれて、このクラスによってシ
ールされている。
【1879】superclasses: List [Identifier!]; レスポンダを組み込んだクラスのインターフェースイミ
ーディエートスーパークラスの識別子。クラスの標準的
な順序は、その識別子の順序であり、最後のクラスはフ
レーバでなければならない。
【1880】vocabulary: Lexicon [Citation]; レスポンダが参照するユーザによって定義されたクラ
ス。
【1881】各々の値は関連するキーが表すクラスへの
サイテイションである。属性は、レスポンダの属性”ス
ーパークラス”(他のものではない)の解釈を案内す
る。
【1882】アダプテイション isEqual 二つのインターフェースは、その固有の属性に従って同
一である。
【1883】4 37. カーネルの例外(Kernel Exc
eption) オブジェクト(参照される) ・ 例外(変更されない) ・・ プログラミングの例外 ・・・ Kernel Exception クラス Kernel Exception: abstract interface (Programming Exception) = (); サブクラス ClassAbstract: interface(Kernek Exception) = (); オブジェクトの提案されたクラスは抽象的である。
【1884】ConversionUnavailable: interface(Kernel Exception) = (); オブジェクトの提案されない変換は定義されない。
【1885】CopyUnavailable: interface(Kernel Exception) = (); オブジェクトのプロパティはコピーできない。
【1886】LoopMissing: interface(Kernel Exception) = (); あるループは破断されまたはループがない場合には連続
している。
【1887】MarkMissing: interface(Kernel Exception) = (); スタックのアイテムはマークを含まない。
【1888】ObjectUninitialized: interface(Kernel Exception) = (); オペレーション”initialize:ド”をエスカレートする
前にあるオブジェクトはそのフィーチャの1つを使用す
ることを試みる。
【1889】PassaqeInvalid: interface(カーネル例外)=(); あるオブジェクトに提案された通路は不適切である。
【1890】SelectorDuplicated: interface(Kernel Exception) = (); 2つのセレクタは同一である。
【1891】4.38 レキシコン(Lexicon) オブジェクト(参照される) ・ コレクション ・・ セット ・・・ ディクショナリ ・・・・ コンストレインド ディクショナリ(コンス
トレインド) ・・・・・ Lexicon クラス Lexicon: interface[ValueClass: Class] (constrainedDictionary[Identifier, valueClass]) =
(・・・); サブジェクトクラスの各々のメンバの各々のアイテムの
値それ自身がメンバであるクラス(アーギュメント”va
lueClass”)によってパラメータ化される。
【1892】構成 initialize: プロテクトされないop(keysAndValues: Object・・・ /* key: Identifier!; value: valueClass */) KeyDuplicated, KeyInvalid, ObjectsUnpairedを送出す
る。; レスポンダのアイテムを、キーの値対の間のアソシエー
ションとする(アーギュメント”keyAndValues”)。
【1893】2つの提案されたキーが等しく、(”keyD
uplicated”)、提案されたキーがそれ自体として不適
切である(”keyInvalid”)か、またはオブジェクトの
数が奇数である(”ObjectsUnpaiered”)場合に例外が
投出される。
【1894】アダプテイション constraint 属性は、シールされている。属性”ofClass”、”class
Id”、”isInstance”、”isOptional”、及び”passag
e"属性はそれぞれ、”Identifier”クラス、 クラス”
Identifier”、”真”、”偽”及び”byCopy”の識別子
である。
【1895】変換 Dictionary そのキーがレキシコンのコンストレイントを満たすディ
クショナリはレキシコンを生ずる。
【1896】4.39 リスト(List) オブジェクト(参照される) ・ コレクション ・・ リスト(順序あり) クラス List: interface [itemClass: Class] (Collection[itemClass], Ordered) = (・・・); サブジェクトクラスの各々のメンバの各々のアイテムそ
れ自身がメンバであるクラス(アーギュメント”itemCl
ass”)によってパラメータ化される。
【1897】構成 initialize: プロテクトされないop (items: itemClass・・・); レスポンダのアイテムを、その位置が左から右にかけて
増大するオブジェクト(アーギュメント”items”)と
する。
【1898】パブリックインスタンスオペレーション add: プロテクトされないop (position: Integer; item: ite
mClass) は、ItemInvalid, PositionInvalidを送出する; 新しいアイテムとしてレスポンダ中にオブジェクト(ア
ーギュメント”item”)を含める。このアイテムは、そ
の位置が整数(アーギュメント”position”)に等しい
アイテムである。含められたアイテムの位置に等しいか
またはそれに後続する位置を持つ各々のアイテムの位置
は1つずつ増大する。
【1899】提案されたアイテムがそのようなものとし
て不適切である場合(”ItemInvalid”)、または提案
された位置がそのようなものとして不適切である場
合(”PositionInvalid”)例外が送出される。
【1900】drop: プロテクトされないop (position: Integer) itemCla
ss は、PositionInvalidを送出する。; その位置が整数に等しいアイテムをレスポンダから除い
てリターンする(アーギュメント”position”)。除去
されたアイテムの位置に続く位置の各々のアイテムの位
置は1つずつ減少する。
【1901】主張された位置がそのようなものとして不
適切な場合に例外が投出される(”PositionInvali
d”)。
【1902】find: op (initialPosition: Integer; item: protected ite
mClass) Integer: Nil は、PositionInvalidを投出する; オブジェクトに等しく(”item”)その位置が整数の前
にないアイテムの位置をレスポンダに残しリターンする
(”initioalPosition”)。レスポンダが幾つかのその
ようなアイテムを持つ場合、その位置が最小のものを選
ぶ。何も持たなければ0をリターンする。主張された位
置がそのようなものとして不適切な場合(”PositionIn
valid”)例外が投出される。
【1903】get: op (position: Integer) itemClass は、PositionInvalidを送出する; その位置が整数に等しいアイテムをレスポンダに残しリ
ターンする(アーギュメント”position”)。 主張さ
れた位置がそのようなものとして不適切な場合(”Posi
tionInvalid”)例外が投出される。
【1904】reposition: プロテクトされないop (currentPosition, newPositon:
Integer) は、PositionInvalidを送出する; その位置が第1の整数に等しいレスポンダのアイテムの
位置(アーギュメント”currentPosition”)を第2の
整数(アーギュメント”newPosition”)に変更する。
このオペレーションは、第2の整数がオペレーション”
drop”のリクエストされる後ではなく前に解釈されるこ
とを除いて、オペレーション”drop”及び”add”によ
るかのようにこれを達成する。
【1905】主張された位置がそのようなものとして不
適切な場合(”PositionInvalid”)例外が投出され
る。
【1906】set: プロテクトされないop (position: Integer; item: ite
mClass) は、ItemInvalid, PositionInvalidを送出する; アイテムがもしあれば、即ちその位置が整数に等しい
(アーギュメント”position”)新しいアイテムが附加
されていない場合、レスポンダからそのアイテムを除去
し、新しいアイテムとしてオブジェクト(アーギュメン
ト”item”)を同じ位置に含める。
【1907】提案されたアイテムがそのようなものとし
て不適切な場合(”ItemInvalid”)または提案された
位置がそのようなものとして不適切な場合(”Position
Invalid”)例外が投出される。
【1908】transpose: プロテクトされていないop (position1, position2:
Integer) PositionInvalidを送出する。; 2つの位置を占めるレスポンダのアイテム(アーギュメ
ント”position1”及び”position2”)を転置する。主
張された位置がそのようなものとして不適切な場合(”
PositionInvalid”)例外が投出される。
【1909】アダプテイション exclude オペレーションは、その位置が除外されたアイテムの位
置の後になる各々のオブジェクトの位置を1つだけ減少
させる。
【1910】include 新しく含められたアイテムの位置はリストの新しい長さ
である。
【1911】isEqual 2つのリストはその同じ位置にあるアイテムが同一であ
る場合にのみ同一である stream ストリームは位置の増大の順序にリストのアイテムを生
成させる。
【1912】変換 Procedure プロシージャは、そのアイテムの各々がプロシージャ中
の同じ位置のアイテムのコピーである同じ長さのリスト
を生ずる。
【1913】4.40 マーク(Mark) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・ Mark クラス Mark: シールされたインターフェース(Primitive)=(); アダプテイション isEaual いかなる2つのマークも同等である。
【1914】4.41 手段(Means) オブジェクト(参照される) ・ Means クラス Means: abstract interface=(); 4.42 ミーティングの例外(Meeting Exception) オブジェクト(参照される) ・ 例外(変更なし) ・・ Meeting Exception クラス MeetingException: abstract interface(Exception)=(); サブクラス MeetingDenied: interface(Meeting Exception)=(); ペティションにはペティショナにミーティングを拒絶す
る。
【1915】MeetingDuplicated: interface(Meeting Exception)=(); ペティショナとペティショニとは同一であるかまたはす
でにミーティングである。
【1916】MeetingInvalid: interface(Meeting Exception)=(); コンタクトはミーティングを表わさない。
【1917】PetitionExpired: interface(Meeting Exception)=(); ペティションには許容された時間内においてミーティン
グできない。
【1918】4.43 ミーティングプレイス(Meetin
g Place) オブジェクト(参照される) ・ プロセス(名前付けされている) ・・ プレイス(移動しない) ・・・ Meeting Place クラス MeetingPlace: abstract interface(Place) = (・・・); パブリックインスタンスオペレーション meet: プロテクトされないop (petition: copied Petition) C
ontact MeetingException, ProcessNotCurrent, StateImproper
を送出する。;オペレーションをリクエストしたエージ
ェントとペティション(アーギュメント”petition”)
が特定するエージェントとの間のミーティングを開始さ
せ、その”subject”属性が後者であるコンタクトをリ
ターンする。後者のエージェントは常にレスポンダを占
有していなければならない。
【1919】ミーティングが失敗に終わり(”MeetingE
xception”)、レスポンダが現在のプレイスでなく(”
ProcessNotCurrent”)またはリクエスタのステイト
が”meet”を排除する(”StateImProper”)場合に例
外が投出される。
【1920】part: プロテクトされない op (contact: Contact) は、MeetingInvalid, ProcessNotCurrent, StateImprop
erを送出する。; オペレーションをリクエストするエージェントとコンタ
クトのサブジェクト(アーギュメント”contact”)と
の間のミーティングを終了させ、コンタクトの”subjec
t”属性を0とする(属性がすでに0となっていない場
合)。サブジェクトはやはりレスポンダを占有していな
ければならない。コンタクトがミーティングのコンタク
トでなく(”MeetingInvalid”)、レスポンダが現在の
プレイスでなく(”ProcessNotCurrent”)またはリク
エスタのステイトがオペレーション”part”を除外する
(”StateImproper”)場合、例外が投出される。
【1921】partAll: プロテクトされないop () は、ProcessNotCurrent, StateImproperを送出する; リクエストするエージェントを含む全てのミーティング
を終了させた後エージェントをアイソレートする。レス
ポンダが現在のプレイスでなく(”ProcessNotCurren
t”)またはリクエスタのステイトがオペレーション”p
artAll”(”StateInproper”)を除外する場合、例外
が送出される。
【1922】4.44 メソッド(Method) オブジェクト(参照される) ・ Method クラス Method: シールされたinterface=(・・・); 構成 initialize: プロテクトされないop (procedure: Procedure:Nil; variables: List [Identifier!]:Nil); レスポンダの本来の属性を同じ名前のアーギュメント
(アーギュメント”procedure”及び”valiables”)と
する。しかしアーギュメントが0であれば対応する属性
はクリアする。
【1923】パブリックインスタンス属性 procedure: Procedure; レスポンダのプロシージャ。
【1924】variables: List [Identifier!]; レスポンダの変数の識別子。これらの識別子の順序は開
示された命令セットの解釈に関連して重要ではない。し
かしこの開示のアペンディクスBに示された符号化規則
においては変数の順序は大切である。
【1925】アダプテイション isEqual 2つの方法はその固有の属性に従って同一である。
【1926】4.45 その他の例外(Miscellaneous
Exception) オブジェクト(参照される) ・ 例外(変更されない) ・・ プログラミング例外 ・・・ Miscellaneous Exception クラス MiscellaneousException: abstract interface(ProgrammingException)=(); サブクラス PatternInvalid: interface(MiscellaneousException) =(); パターンの提案されたテキストはシンタクティックに誤
っている。
【1927】SeedInvalid: interface(MiscellaneousException) =(); ランダムストリームの提案されたシードが要求された範
囲にない。 4.46 モディファイヤ(Modifier) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・ Modifier クラス Modifier: シールされたinterface(Primitive)=(); アダプテイション isEqual 2つのモディファイアはそれらの値が同一である場合に
のみ同一である。
【1928】4.47 ネームド(Named) Named クラス Named: abstract interface()=(・・・); 構成 initialize レスポンダの”name”属性を新しい割り当てられたテレ
ネーム、現在のプロセスの仲間とする。
【1929】パブリックインスタンス属性 name: シールされたリードオンリのプロテクトされたテレネー
ム; レスポンダの割り当てられたテレネーム。
【1930】4.48 ニル(Nil) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・ Nil クラス Nil: シールされたinterface(Primitive)=(); アダプテイション isEqual いかなる2つの0も同一である。
【1931】4.49 ナンバ(Number) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・ Number (順序づけされる) クラス Number: abstract interface(Primitive, Ordered)=(・・・); このクラスはシールされている。
【1932】パブリックインスタンスオペレーション abs: abstract op () Number; レスポンダの絶対値をリターンする。
【1933】add: abstract op (number: Number) Number; 数(”ナンバ”)の算術及びレスポンダをリターンす
る。
【1934】Ceiling: abstract op () Integer; レスポンダよりも算術的に大きいかまたはこれに等しい
最小の整数をリターンする。
【1935】devide: abstract op (divisor: Number) Number は、DivisionByZeroを送出する。; レスポンダの算術商、被除数と数(アーギュメント”di
visor”)、除数とをリターンする。
【1936】除数が0である場合(”DivisionByZer
o”)例外が投出される。
【1937】Floor: abstract op() Integer; レスポンダよりも算術的に小さいかまたはこれに等しい
最大の整数をリターンする。
【1938】multiply: abstract op (number: Number) Number; 数(”number”)とレスポンダとの算術積をリターンす
る。
【1939】negate: abstract op () Number; レスポンダの算術ネガティブをリターンする。
【1940】round: abstract op () Integer; レスポンダに算術的に最も近い単一の整数またはレスポ
ンダに算術的に最も近い2つの整数の内の1つをリター
ンする。
【1941】subtract: abstract op (subtrahend: Number) Number; 被減数であるレスポンダと減数である数(アーギュメン
ト”subtrahend”)との間の算術差をリターンする。
【1942】truncate: abstract op () Integer; レスポンダを0に向かって算術的にトランケートするよ
うにレスポンダの分数部分を除くことによって形成され
た整数をリターンする。
【1943】アダプテイション isAfter 最初のものが第2のものよりも大きい場合にのみある数
は別の数の後になる。
【1944】isBefore 最初のものが第2のものよりも小さい場合にのみある数
は別のものの前になる。
【1945】isEqual 2つの数は数学的に等しい場合にのみ相等しい。
【1946】4.50 オブジェクト(Object) Object(参照される) クラス Object: abstract interface(Referenced)= (・・・); 構成 initialize: プロテクトされないop (); レスポンダ、潜在的なオブジェクト、をイニシアライズ
しレスポンダをオブジェクトとする。
【1947】finalize: プロテクトされないop (); レスポンダがオペレーション”ディスカード”によって
破壊されるため要求される。このオペレーションのため
の方法は、方法のクラスに関してオブジェクトを最終化
(ファイナライズ)する。
【1948】パブリックインスタンス属性 Class: シールされたリードオンリクラス。; レスポンダがクラス”Class”でなければ、レスポンダ
が1つのインスタンスであるクラスであり、レスポンダ
が実際にクラス”Class”であれば、クラス”Class”で
ある。
【1949】size: シールされたリードオンリ Integer; オクテットで表したレスポンダの大きさ、すなわち、レ
スポンダの破壊によって再びクレームされるべき近似的
な記憶量。
【1950】パブリックインスタンスオペレーション Copy: シールされたop () copied Object は、CopyUnavailableを送出する; レスポンダへのただ1つの参照を用いてオペレーション
がリクエストされた場合にはレスポンダをリターンし、
その他の場合にはレスポンダのコピーをリターンする。
【1951】コピーが使用不可能ならば(”CopyUnavai
lable”)例外が送出される。
【1952】isEqual: op(object: protected Object) Boolean; オブジェクト(アーギュメント”object”)がレスポン
ダに等しいか否かの表示をリターンする。レスポンダま
たはオブジェクトが、方法が固有でないクラスのメンバ
でない場合に、方法はこのオペレーションをエスカレー
トさせねばならない。クラス”Object”に固有の方法は
2つのものを、これらは同一のオブジェクトである場合
にのみ等しいとみなす。 select: シールされたop (associations: Object・・・ /* protected Object; Executed */ は、Exception, SelectorDuplicatedを送出する。; オブジェクト及び実行されるオブジェクトの対(アーギ
ュメント”associations”)から、多くとも1つの実行
されるオブジェクトを選択し遂行する。選択された1つ
は、レスポンダのフレーム及びプロパティではなくリク
エスタのフレーム及びプロパティにアクセスする。
【1953】オブジェクトがレスポンダに等しい場合、
そのオブジェクトと対となる実行されるオブジェクトが
選択される。その他の場合、オブジェクトが0であれ
ば、そのオブジェクトと対となる実行されるオブジェク
トが選択される。その他の場合にはいかなる実行される
オブジェクトも選択されない。
【1954】選択され実行されたオブジェクトがそのよ
うにする場合(”Exception”)または実行されるオブ
ジェクトと対をなす2つのオブジェクトが同等の場
合(”SelectorDupulicated)、例外が投出される。
【1955】インターナルインスタンスオペレーション getAttribute: シールされた op (identifier: Identifier)Object 投出された ClassUnabaliable, FeatureUnabalilable; 識別子(アーギュメント”アイデンティファイヤ(iden
tifier)”)によって示されるレスポンダの属性をリタ
ーンする。属性は属性について規定された次の通路に従
う。
【1956】識別子のクォリファイヤが表すクラスが存
在しない場合に(”クラスアンアベイラブル(ClassUna
vailable)”)またはリクエスタにアクセス可能なレス
ポンダの属性を識別子が表さない場合(”フィーチャア
ンアベイラブル(FeatureUnavailble)”)例外が投出
される。
【1957】getClass: シールドプライベート op (identifier: Identifier!)
Class throuws ClassUnabailable; 識別子(”アイデンティファイヤ(identifier)”)が
表すクラスを現在の方法にリターンする。 クラスが存
在しなければ、(”クラスアンアベイラブル(ClassUna
vailable)”)例外が投出される。
【1958】getProperty: シールドプライベート op (identifier: Identifier!)
Object throuws PropertyUndefined; 識別子(アーギュメント”アイデンティファイヤ(iden
tifier)”)によって表されまた現在の方法がそれに対
し固有であるクラスにとって固有なレスポンダのプロパ
ティをリターンする。レスポンダがプロテクトされてい
る場合にのみ、リターンされるリファレンスはプロテク
トされている。
【1959】識別子が不適切な時(”プロパティアンデ
ィファインド(PropertyUndefined)”)例外が投出さ
れる。
【1960】getVariable: シールドプライベート op (identifier: Identifier
!) Object throws VariableUndefiend; 識別子(アーギュメント”アイデンティファイヤ(iden
tifier)”)が表す現在の方法の変数はリターンする。
【1961】識別子が不適切ならば(”バリアブルアン
ディファインド(VariableUndefiend)”)例外が投出
される。
【1962】setAttribute: シールドされプロテクトされていない op (identifier:
Identifier; attribute: Object) throws ArgumentInvalid, AttributeReadOnly, ClassUnavailable, FeatureUnavailable; オブジェクト(アーギュメント”アトリビュート(attr
ibute)”)を、識別子(アーギュネント”アイデンテ
ィファイヤ(identifier)”)によって表されるレスポ
ンダの属性にする。オペレーションは抑制をもしそれが
存在すれば最初に廃棄する。オブジェクトは属性につい
て規定された通路に従う。
【1963】オブジェクトが属性のコンストレイントを
侵害し(”アーギュメントインヴァリット(ArgumentIn
valid)”)、属性がリードオンリであり(”アトリビ
ュートリードオンリ(AttributeReadOnly)”)、識別
子のクォリファイヤが表すクラスが存在しない(”クラ
スアンアベイラブル(ClassUnavailable)”)または識
別子がリクエスタに近接可能なレスポンダの属性を表さ
ない(”フィーチャアンアベイラブル(FeatureUnavail
able)”)場合に例外が投出される。
【1964】setProperty シールドされプライベートなプロテクトされていない
op (identifier:Identifier!; property:Object) throws PropertyUndefined; オブジェクト(アーギュメント”プロパティ(propert
y)”)を識別子(アーギュメント”アイデンティファ
イヤ(identifier)”)によって表され現在の方法がそ
れに対し固有のクラスに対して固有であるレスポンダの
プロパティになる。オペレーションはプロパティが存在
すれば最初にそのプロパティを廃棄する。
【1965】識別子が不適切な場合(”プロパティアン
ディファインド(PropertyUndefined)”)例外が投出
される。
【1966】setVariable: シールドされプライベートなプロテクトされていない
op (identifier:Identifier!; variable: Object) throws VariableUndefined; オブジェクト(アーギュメント”ヴァリアブル(variab
le)”)を識別子(アーギュメント”アイデンティファ
イヤ(identifier)”)が表す現在の方法の変数にす
る。オペレーションは、変数が存在すれば、最初にその
変数を廃棄する。
【1967】識別子が不適切であれば(”ヴァリアブル
アンディファインド(VariableUndefined)”)例外が
投出される。
【1968】4.51 オクテット(Octet) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・ ・ Octet(順序あり) Class Octet: シールドされたインタフェース (Primitive,Ordered) =
(); アダプテーション isAfter あるオクテットは別のオクテットの次にあるのは、それ
らのものの同様の番号のビットが等しくなく、第1のオ
クテットの最も高い番号のそのビットが第2のビットの
次にある場合にのみ生じる。
【1969】isBefore あるオクテットは別のオクテットの次にあるのは、それ
らのオクテットの同じ番号のビットが等しくない、第1
のオクテットの最も高い番号のそのようなビットが第2
のオクテットの前にある場合に生ずる。
【1970】isEqual 2つのオクテットは、どちらも他のものの前にない場合
にのみ相等しい。
【1971】Conversions Bit あるビットは、ビット0がそのビットに等しくそのビッ
ト1−7がさらに0であるオクテットを生ずる。
【1972】Character そのユニコードのコードが[0、127]にある整数で
あるキャラクタは、その整数を変換することによって生
ずるオクテットを生ずる。
【1973】Integer [−128、127]の範囲にある整数は、その整数の
2の補数の表示を形成するオクテットを生ずる。ビット
7は−128を表す、ビット”n”は、[0、6]の範
囲にある各々の”n”について、2n を表す。
【1974】OctetString その1つのアイテムがそのアイテムに等しいアイテムを
生ずるオクテット・ストリング。
【1975】4.52 オクテットストリング(Octet
String) オブジェクト(参照される) ・ コレクション ・・ リスト(順序あり) ・・・ コンストレインド・リスト(コンストレイン
ド) ・・・・ Octet String(実行) Class OctetString: シールされたインタフェース (ConstrainedList [Octe
t],Executed)= (...); Construction initialize: プロテクトされない op (segments: Object... /*Octet|protected OctetString! */); レスポンダ中のその位置は左から右にかけて増大するセ
グメントの連鎖(アーギュメント”セグメンツ(segmen
ts)”)にする。
【1976】アダプテーション constraint 属性はシールされている。属性の”ofClass”、”class
Id”、”isInstane”、”isOptional”及び”passage”
の各属性は、クラス”Octet”の識別子”Octet”、”tr
ue”、”false”及び”byCopy”である。
【1977】isAfter あるオクテットが別のオクテットの後にあるのは、全て
0のオクテットが最初に短い長さのオクテットストリン
グに付け加えられてその短いオクテットストリングの長
さが長いオクテットストリングの長さに等しくなった場
合にのみ生ずる。
【1978】isBefore あるオクテットが別のオクテットの前にあるのは、全て
0のオクテットが最初に短いオクテット・ストリングに
付け加えられてその短い長さのオクテットストリングの
長さが長い長さのオクテットストリングに等しくなった
場合にのみ生ずる。
【1979】Conversions Bit あるビットは、そのビットをオクテットに最初に変換し
た後オクテットをオクテットストリングに変換すること
によって生ずるオクテットストリングを生ずる。
【1980】BitString その長さが”n”であるビットストリングは、その長さ
が”i”であるオクテットストリングを生ずる。”n”
は、[8i、8i+7]の範囲にある。オクテットスト
リングの位置”k”にあるオクテットのビット”j”
は、(8k −j)≦nであれば、オクテットストリン
グの位置”k”にあるオクテットのビット”j”は、ビ
ットストリングの位置(8k −j)にあるビットに等
しく、さもなければ0に等しい。
【1981】Character その長さが2であるオクテットストリングを変換するこ
とによって生成させうるあるキャラクタは、そのオクテ
ットストリングを生ずる。
【1982】Integer 整数”n”(これより小さくないもの)について[−2
8n-1、28n-1)の範囲にある整数は、その長さが”n”
に等しいオクテットにオクテットストリングに生ずる。
2の補数の表示が用いられてその位置が1に等しいオク
テットのビットのは−28n-1を表し、オクテットストリ
ングの位置”i”にあるオクテットの1つおきのビッ
ト”j”は28(n-1)+jを表す。
【1983】Octet オクテットはその唯一つのアイテムがそのオクテットに
等しいオクテットストリングを生ずる。
【1984】String あるストリングは、2進テレスクリプトにおいてストリ
ングを符号化するための”キャラクターズ(character
s)”トークンを生ずる。
【1985】4.53 オペレーション(Operation) オブジェクト(参照される) ・ フィーチャ ・・ Operation Class オペレーション: シールされたインタフェース (Feature) = (・・・); Construction initialize: プロテクトされない op (arguments: List [Constrain
t]|Nil; result: Constraint|Nil; isPublic: Boolean|Nil; exceptions: Set [Identifier!]|Nil); レスポンダの属性を同じ名前のアーギュメント(アーギ
ュメント”アーギュメンツ(arguments)”、”エクセ
プションズ(exceptions)”、”イズパブリック(isPu
blic)”及び”リザルト(result)”)にする。しかし
アーギュメント”エクセプションズ(exceptions)”ま
たはアーギュメント”イズパブリック(isPublic)”が
0であれば対応する属性はクリアされるかまたは、”偽
(false)”にされる。
【1986】Public Instance Attributes arguments: List [constraint]|Nil; 数が変化しなければ、レスポンダが定義するオペレーシ
ョンの0またはそれ以上のアーギュメントに対するコン
ストレイントであり、さもなければ0である。この場合
各々は参照によってパスされマーク以外のどんなオブジ
ェクトでもあり得る。リストの最初のアイテムはスタッ
クの頂部にあるアーギュメントを拘束する。
【1987】result: Consraint|Nil; オペレーションが結果を持てばレスポンダが定義するオ
ペレーションの結果に対するコンストレイントであり、
さもなければ0である。
【1988】アダプテーション isEqual 2つのオペレーションの定義はフィーチャ及びオペレー
ションの定義に固有のそれぞれの属性に従って固有であ
る。
【1989】4.54 オーダード(Ordered) Ordered Class Ordered: アブストラクトインタフェース () = (・・・); パブリックインスタンスオペレーション isAfter: アブストラクト op (object:protected Ordered) Boole
an; レスポンダがオブジェクトの後にあるか否かの表示をリ
ターンする(アーギュメント”オブジェクト(objec
t)”)。
【1990】レスポンダ及びオブジェクトが、方法がそ
れに対し固有であるプラスのメンバでない場合に、その
方法はこのオペレーションをエスカレーションする。
【1991】isBefore アブストラクト op (Object:protected Ordered)Boolea
n; レスポンダがオブジェクトの前にあるか否かの表示をリ
ターンする(アーギュメント”オブジェクト(Objec
t)”)。
【1992】ある方法は、レスポンダまたはオブジェク
トが、その方法が固有のクラスのメンバでない場合この
オペレーションをエスカレートする。
【1993】max: op (object: Ordered) Ordered; レスポンダがオブジェクトの後にあれば(アーギュメン
ト”オブジェクト(object)”)レスポンダを、またそ
の他の場合にはオブジェクトをそれぞれリターンする。
【1994】min: op (object: Ordered) Ordered; レスポンダがオブジェクトの前にあれば(アーギュメン
ト”オブジェクト(object)”)レスポンダを、またそ
の他の場合にはオブジェクトをそれぞれリターンする。
【1995】4.55 パッケージ(Package) オブジェクト(参照される) ・ コレクション ・・ セット(検査される) ・・・ コンストレインド・セット(コンストレイン
ド) ・・・・ Package(引用され相互変換される) Class Package: インタフェース (ConstrainedSet [Class], Cited, Interchanged)= (・・・); Construction initialize: プロテクトされない op (title: Idntifier!; majorEdition, minorEdition: Integer;items: Class...) throws ItemDuplicated,ProcessNotPeer; レスポンダのクラス(アーギュメント”アイテムズ(it
ems)”)とし、レスポンダの”サイテイション(citat
ion)”属性を、その”オーサ(author)”属性が現在
のプロセスの割り当てられたテレネームでありその他の
属性が同じ名前のオアーギュメント(アーギュメント”
メージャーエディション(majorEdition)”、”マイナ
ーエディション(minorEdition)”及び”タイトル(ti
tle)”)であるサイテイションにする。
【1996】2つのクラスが同一である(”アイテムデ
ュープリケーティッド(ItemDuplicated)”)または現
在のプロセスがクラスの仲間でない(”プロセスノット
ピィア(ProcessNotPeer)”)である場合に例外が投出
される。
【1997】アダプテーション constraint 属性はシールされている。属性の”ofClass”、”clssI
d”、”isInstance”、”isOptional”及び”passage”
の各属性は、クラス”Class”、クラス”Class”、”tr
ue”、”false”、及び”byCopy”の識別子である。
【1998】4.56 パターン(Pattern) オブジェクト(参照される) ・ Pattern(Ordered) Class Pattern: インタフェース (object, Ordered) = (・・・); Construction initialize: プロテクトされていない op (text: copied String!) throws PatternInvalid; レスポンダのテキストをストリング(アーギュメント”
テキスト(text)”)にする。 提案されたテキストが
不適切である場合(”パターンインヴァリッド(Patter
nInvalid)”)例外が投出される。
【1999】パブリックインスタンスオペレーション find: op (string: protected String; position: Integer|N
il) List[Integer]|Nil throws PositionInvalid レスポンダにマッチする最長可能な最初のサブストリン
グについてストリングをサーチする(アーギュメント”
ストリング(string)”)。
【2000】このサーチは、整数が提供された場合に
は、所定の位置(アーギュメント”位置(positio
n)”)で、さもなければ、位置1においてそれぞれ開
始される。
【2001】オペレーションがマッチを生み出さない場
合には0を、その他の場合には2つの整数のリストをそ
れぞれリターンする。後者の場合第1整数は、マッチ中
の最初のキャラクタのストリング中の位置にある。第2
整数は、マッチ中の最後のキャラクタのストリング中の
位置よりも1だけ大きい。
【2002】提案された位置がそのようなものとして不
適切な場合、より詳しくは、0より小さいかまたは0に
等しい時(”ポジションインバリッド(PositionInvali
d)”)例外が投出される。
【2003】注:リスト中の2つの整数はオペレーショ
ン”サブストリング(substring)”のアーギュメント
として適切である。
【2004】substitute: op ( repetitions: Integer; string: unprotected String!; replacement: protectedString!) Integer; レスポンダにマッチする最長可能なサブストリングにつ
いて1の位置で始まる第1ストリング(アーギュメン
ト”ストリング(string)”)をサーチし、第2ストリ
ングのコピーで各々のマッチを取り替えることによって
(アーギュメント”リプレイスメント(replacemen
t)”)ストリングを変更する。
【2005】オペレーションは、整数(アーギュメン
ト”レペティションズ(repetitions)”)が0であれ
ば全てのマッチを見出だし、さもなければせいぜい同数
を見出だす。連続するマッチは重なり合わない。1つの
マッチが0の長さであれば、次のマッチのサアーチは次
の位置で始まる。オペレーションは実際に見出だされた
マッチの数をリターンする。
【2006】代替ストリングは各々の個別の代替に対し
て合わせることができる。アンドマーク(”&”)が、
逆スラッシュ(”\”)を直前に持つ代替ストリング中
に表れた場合、代替されるべきサブストリング自身は、
アンドマークに変えられ、変更された代替ストリングは
サブストリングに変えられる。
【2007】アダプテーション isEqual 2つのパターンはそのテキストに従って同一である。
【2008】Conversions String パターンのテキストとして適切なストリングはそのパタ
ーンを作り出す。
【2009】4.57 パーミット(Permit) オブジェクト(参照される) ・ Permit(順序あり) Class Permit: インタフェース(オブジェクト、順序あり) = (・・・); Construction initialize: プロテクトされてない op (age, charges, extent: Int
eger|Nil); レスポダの属性を同じ名前のアーギュメント(アーギュ
メント”エイジ(age)”、”チャージズ(charges)”
及び”エクステント(extent)”)とする。レスポンダ
の1つおきの属性を、属性がブーリアンであれば”真
(true)”にその他の場合は0にする。
【2010】Public Instance Attributes age: Integer|Nil; 最大値が課せられた場合レスポンダのサブジェクトの、
秒で計った最大のパーミットされるエイジであるか、さ
もなければ0である。
【2011】authenticity: Integer|Nil; 最大値が課せられた場合レスポンダのサブジェクトの最
大のパーミットされるオーセンティシティか、さもなけ
れば0である。
【2012】charges: Integer|Nil; 最大値が課せられた場合レスポンダのサブジェクトの、
テーブクリップで計った最大のパーミットされるチャー
ジであるか、さもなければ0である。
【2013】extent: Integer|Nil; 最大値が課せられた場合レスポンダのサブジェクトの、
オクテットで計った最大のパーミットされるサイズであ
るか、さもなければ0である。
【2014】priority: Integer|Nil; 最大値が課せられた場合レスポンダのサブジェクトの最
大のパーミットされるプライオリティであるか、さもな
ければ0である。
【2015】canCharge: Boolean; オペレーション”charge”を要求するのにレスポンダの
サブジェクトがパーミットされるか否か。
【2016】canCreate: Boolean; クラス”サブクラス(subclass)”のオペレーション”
new”を要求する上にレスポンダのサブジェクトがパー
ミットされるか否か。
【2017】canDeny: Boolean; 仲間のプロセスの能力を減少させるように仲間のプロセ
スの属性”ネイティブパーミット(nativepermit)”を
セットする上にレスポンダのサブジェクトがパーミット
されるか否か。
【2018】それと一致して、他の仕方でそのようにす
る資格が与えられている場合、レスポンダのサブジェク
トが、プロセス”リージョナルパーミット(regionalPe
rmit)”または”ローカルパーミット(localPermi
t)”の各属性をセットするようにパーミットされてい
るか否か。
【2019】canGo: Boolean; レスポンダのサブジェクトがオペレーション”go”をリ
クエストするようにパーミットされているか否か。
【2020】canGrant: Boolean; 仲間のプロセスの能力を増大させるように仲間のプロセ
スの属性”ネイティブパーミット(nativePermit)”を
セットする上にレスポンダのサブジェクトがパーミット
されているか否か。
【2021】それと一致して、他の仕方でそのようにす
る資格が与えられている場合、レスポンダのサブジェク
トが、プロセス”リージョナルパーミット(regionalPe
rmit)”または”ローカルパーミット(localPermi
t)”の各属性をセットするようにパーミットされてい
るか否か。
【2022】canRestart: Boolean; レスポンダのサブジェクトが再スタートするようにパー
ミットされているか否か。
【2023】canSend: Boolean; レスポンダのサブジェクトはオペレーション”センド
(send)”をリクエストするようにパーミットされてい
るか否か。
【2024】Public Instance Operations intersections op (permit: Permit) Permit; アーギュメント(アーギュメント”パーミット(permi
t)”)とレスポンダとの交点をリターンする。
【2025】アダプテーション isAfter 1つのパーミットが次のパーミットの後になるのは、こ
れらのパーミットが同一でなく第1のパーミットの固有
の属性が第2のパーミットのそれの前にある、第1のパ
ーミットの少なくとも1つの固有の属性が第2のものの
属性の後にある場合のみである。
【2026】isBefore 1つのパーミットが次のパーミットの前にあるのは、こ
れらのパーミットが同一でなく第1のパーミットの本来
の属性が第2のパーミットのそれの後にある、第1のパ
ーミットの少なくとも1つの固有の属性が第2のパーミ
ットの固有の属性の前にある場合のみである。
【2027】isEqual 2つのパーミットはそれらのものの固有の属性に従って
同一である。
【2028】4.58 ペティション(Petition) オブジェクト(参照される) ・ Petition Class Petition: インタフェース = (・・・); Construction initialize: プロテクトされていない op (agentName: Telename|Ni
l; agentClass: Citation|Nil; maximumWait: Integer|Nil); レスポンダの本来の属性を同じ名前のアーギュメント
(アーギュメンット”エージェントラス(agentClas
s)”、”エージェントネーム(agentName)”及び”マ
キシマムウェイト(maximumWait)”)とする。
【2029】Public Instance Attribute agentClass Citation|Nil; もしそのようなコンストレイントが課された場合、レス
ポンダが定義するミーティングのペティショニーがメン
バであるクラス”エージェント(agente)”のサブクラ
スであるクラスのサイテイションであるか、さもなけれ
ば0である。
【2030】agentName: Telename|Nil; そのようなコンストレイントが課せられるならば、レス
ポンダが定義するミーティングのペティショニーのテレ
ネームであるか、さもなければ0である。
【2031】maximumWait: integer|Nil; そのようなコンストレイントが課せられるならば、レス
ポンダが定義するミーティングが取り決められる時とミ
ーティングが取り決められる時との量で表された最大の
許容差が、さもなければ0である。供給される場合の整
数は負数ではない。
【2032】アダプテーション isEqual 2つのペティションは固有の属性に従って同一である。
【2033】4.59 ペティションド(Petitioned) Petitoned Class Petitioned: アブストラクトインタフェース () = (・・・); System Instance Operations meeting: プロテクトされない op (contact: Contact; petition: protected Petition) throws MeetingDenied; コンタクト(アーギュメント”コンタクト(contac
t)”)のサブジェクトがペティション(アーギュメン
ト”ペティション(petition)”)を用いてレスポンダ
に合う前に成功の内に遂行される。オペレーションが遂
行されている間、コンタクトのサブジェクトの属性は0
であり、オペレーションが成功した場合にのみ”サブジ
ェクト(subject)”にされる。
【2034】ミーティングは拒絶(”ミーティングディ
ナイド(MeetingDenied)”)された場合には例外が投
出される。クラスに固有のこのオペレーションの方法は
例外を投出する。
【2035】parting: プロテクトされない op (contact: Contact); コンタクト(アーギュメント”コンタクト(contac
t)”)のサブジェクトがレスポンダに合った道にリク
エストされる。エンジンは、オペレーションがリクエス
トされる前に、コンタクトの”サブジェクト(subjec
t)”を0にする。クラス”ペティションド(Petitione
d)”に固有の方法は効果を持たない。
【2036】4.60 プレイス オブジェクト(参照される) ・ プロセス(名前付けされる) ・・ Place(移動されない) Class Place: アブストラクトインタフェース (Process, Unmoved) =
(・・・); Construction initialize レスポンダの”アドレス(address)”属性を現在のプ
ロセスの仲間である新しく割り当てられたテレネームと
し、レスポンダの属性”パブリッククラシズ(publicCl
asses)”をクリアする。
【2037】Public Instance Attributes address: シールされたリードオンリのプロテクトされたテレアド
レス; レスポンダの割り当てられたテレアドレス publicClasses: シールされたリードオンリのセット[引用される]; レスポンダがここでその占有者に近接可能にするクラ
ス、パッケージまたは両方のセット。属性は、リクエス
タがプレイスである場合に、プロテクトされないリファ
レンスである、さもなければプロテクトされたリファレ
ンスである。
【2038】パブリックインスタンスオペレーション terminate: シールされたプロテクトされていない op (占有者: protected Telename) Boolean throws ProcessNotCurrent, ProcessNotPeer, StateImproper; 割り当てられたテレネーム(アーギュメント”オキュパ
ント(occupant)”)を有するレスポンダの占有者を終
了させ、そのようなプロセスが合ったか否かの指示をリ
ターンする。プロセスはプロセスの固有のパーミットを
強制的に使い果すことによって終了する。
【2039】レスポンダが現在のプレイスでない場
合(”プロセスノットカレント(ProcessNotCurren
t)”) 、現在のプロセスが占有者の仲間でない(”プ
ロセスノットピィア(ProcessNotPeer)”)またはリク
エスタの状態がオペレーション”ターミネート(termin
ate)”を排除する場合(”ステートインプロパ(State
Improper)”)例外が投出される。
【2040】システムインスタンスオペレーション entering: プロテクトされない op (contact: Contact; permit: protected Permit; ticket: protected Ticket|Nil) throws OccupancyDenied; コンタクト(アーギュメント”コンタクト(contac
t)”)のサブジェクトがレスポンダを占有する前に成
功の内に遂行される。コンタクトの”サブジェクト(su
bject)”の属性は、オペレーションがリクエストされ
る場合には0であるが、オペレーションが成功した場合
にのみサブジェクトとされる。
【2041】サブジェクトは、チケットとともに到着す
るエージェントが供給されれば、そのようなエージェン
ト(アーギュメント”チケット(ticket)”)であり、
0が供給されれば、レスポンダにおいて作り出されてい
るプロセスである。
【2042】パーミット(アーギュメント”パーミット
(permit)”)はサブジェクトの提案された最初のロー
カルパーミットである。
【2043】このオペレーションが成功した後、レスポ
ンダがコンタクトされるオブジェクトである場合にの
み、エンジンはレスポンダの”コンタクトされた(Cont
acted)”属性中にコンタクトを含める。
【2044】コンタクトのサブジェクトが占有を拒絶す
る場合(”オキュパンシディナイド(OcupancyDenie
d)”)にのみ例外が投出される。このクラスに固有の
オペレーションの方法は例外を投出させる。
【2045】注:チケットが供給された場合、パーミッ
トは同一であり、従ってチケットの属性”デスティネー
ションパーミット(destinationPermit)”を複製す
る。
【2046】exiting: プロテクトされていない op (contact: Contact; permit: protected Permit; ticket: protected Ticket|Nil); コンタクトのサブジェクト(アーギュメント”コンタク
ト(contact)”)は、1度リクエストされたら、レス
ポンダをもはや占有しない。コンタクトの”サブジェク
ト(subject)”の属性は、オペレーションが要求され
た時に0である。クラスの固有のオペレーションは効果
がない。
【2047】サブジェクトは、チケットとともにレスポ
ンダをさるエージェントを(アーギュメント”サブジェ
クト(subject)”)は供給された場合エージェントで
あり、エージェントが供給された場合、レスポンダ中に
おいて破壊されるプロセスである。パーミット(アーギ
ュメント”パーミット(permit)”)は、サブジェクト
の現在のローカルパーミットである。
【2048】このオペレーションが遂行された後、レス
ポンダがコンタクトされるオブジェクトである場合、エ
ンジンは、レスポンダの”contacted”属性からコンタ
クトを除外する。
【2049】4.61 プリミティブ(Primitive) オブジェクト(参照される) ・ Primitive(実行され変更されない) Class Primitive: アブストラクトインタフェース(オブジェクト、実行さ
れ、変更されない) =(・・・); このクラスはシールされる。
【2050】Construction initialize: プロテクトされていない op () throws FeatureUnavailable; 例外を投出する(”フィーチャアンアベイラブル(Feat
ureUnavailable)”)。
【2051】4.62 プリミティブエクセプション
(Primitive Exception) オブジェクト(参照される) ・ 例外(参照される) ・・ プログラミングの例外 ・・・ Primitive Exception Class PrimitiveException: アブストラクトインタフェース(プログラミングの例
外) = (); Subclasses DivisionByZero インタフェース (PrimitiveException) = (); 除数は0である。
【2052】4.63 プロシージャ(Procedure) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・ Procedure Classs Procedure: シールドインタフェース(プリミティブ) = (・・・); Adaptations isEqual 2つプロシージャは長さが等しくその同じ位置にあるア
イテムが同一である場合にのみ同一である。
【2053】Conversions List そのアイテムが実行されるオブジェクトのリストは、同
じ長さのプロシージャを作り出し、このプロシージャの
各々のアイテムは、同じ位置にあるもののコピーであ
る。
【2054】OctetString 2進テレスクリプトであるオクテットストリングは、そ
のアイテムが2進テレスクリプトによって符号化される
オブジェクトであるプロシージャを作り出す。
【2055】String キャラクタテレスクリプトであるストリングは、そのア
イテムがキャラクタ・テレスクリプトによって符号化さ
れるオブジェクトであるプロシージャを作り出す。
【2056】4.64 プロセス(Process) オブジェクト(リファレンスされる) ・ Process(Named) Class Process: アブストラクトインタフェース (Object, Named, Uncop
ied) = (・・・); このクラスはシールされる。
【2057】Construction initialize: op ( nativePermit: copied Permit; privateClasses: Set[Cited]|Nil) throws PermitViolated; レスポンダの属性”ネーム(name)”を、現在のプロセ
スの仲間であり、新しく割り当てられたテレネームズ、
レスポンダの属性を、同じ名前のアーギュメント(アー
ギュメント”ネイティブパーミット(nativePermi
t)”)、レスポンダの属性”プライベートクラシズ(p
rivateClasses)”を、アーギュメントが0でない場合
に、同じ名前のアーギュメント(アーギュメント”プレ
イベートクラシズ(privateClasses)”)とし、さもな
ければ、現在のプロセスの同じように特定された属性と
し、レスポンダの属性コンタクトを、クリアされたセッ
トとする。
【2058】現在のプロセスの内有効なパーミットがオ
ペレーション”permit”を禁止し、そのパーミットはそ
の他の点で不適切であり、またはオペレーション”ente
ring”が失敗(”パーミットヴァイオレイティッド(Pe
rmitViolated)”)した場合に、例外が投出される。
【2059】注:クラス”プロセス”のサブクラスに固
有のオペレーションの方法は、作り出されたものでな
く、作り出すプロセスを現在のプロセスと見る。
【2060】Public Instance Attributes brand: シールされたリードオンリのプロテクトされたオブジェ
クトはプロセスノットピアを投出させる。
【2061】レスポンダのブランド。
【2062】現在のプロセスがレスポンダの仲間でない
場合(”プロセスノットピア(ProcessNotPeer)”)例
外が投出される。
【2063】localPermit: シールされコピーされたパーミットは、FeatureUnavail
abe, PermitViolatedを投出する。
【2064】レスポンダのローカルパーミット リクエスタがレスポンダでもなくレスポンダが占有する
場合(”フォーチャアンアベイラブル(FeatureUnavail
able)”)またはプロセスモデルと合致しない仕方で属
性を設定する試みがなされた場合(”パーミットヴァイ
オレイティッド(PermitViolated)”)例外が投出され
る。
【2065】nativePermit: シールされコピーされたパーミットは、FeatureUnavail
able, PermitViolatedを投出する。
【2066】レスポンダの本来のパーミット。
【2067】リクエスタがレスポンダでもその仲間でも
ない(”フィーチャアンアベイラブル(FeatureUnavail
able)”)またはプロセスモデルと合致しない仕方で属
性を設定する努力がなされた場合(”パーミットヴァイ
オレイティッド(PermitViolated)”)例外が投出す
る。
【2068】permit シールされたリードオンリのコピーされたパーミット。
【2069】レスポンダの有効なパーミット。
【2070】regionalPermit シールされたコピーされたパーミットは、FeatureUnava
ilable, PermitViolatedを投出する。
【2071】レスポンダの地域的なパーミット。
【2072】リクエスタがレスポンダでもエンジンプレ
イスでもない(”フィーチャアンアベイラブル(Featur
eUnavailable)”)またはプロセスモデルと合致しない
仕方で属性を設定する試みがなされた場合(”パーミッ
トヴァイオレイティッド(PermitViolated)”)例外が
投出する。
【2073】privateClasses: シールされたリードオンリのセット[引用される]は、
ProcessNotPeerを投出する。
【2074】レスポンダが保持するクラス、パッケージ
または両方のセット。
【2075】現在のプロセスがレスポンダの仲間でない
場合(”プロセスノットピア(ProcessNotPeer)”)例
外が投出される。
【2076】パブリックインスタンスオペレーション charge: シールされた op (charges: Integer)は、PermitInadeq
uate, PermitViolatedを投出する。
【2077】整数の量によってレスポンダの実際のチャ
ージを増大させる(アーギュメント”チャージズ(char
ges)”)。
【2078】レスポンダの有効なパーミットが使い尽く
される(”パーミットインアデクェット(PermitInadeq
uate)”)かまたは現在のパーミットがオペレーショ
ン”チャージ”を禁止する(”パーミットヴァイオレー
ティッド(PermitViolated)”)場合、例外が投出され
る。
【2079】restrict: シールされた op (procedure: Procedure; permit: p
rotected Permit)は、Exception, PermitViolatd, ProcessNotCur
rentを投出する。 一時的なパーミット(アーギュメント”パーミット(pe
rmit)”)及びプロシージャのチャージが生ずる現在の
プロセスの結果する実効的なパーミットのもとに、プロ
シージャ、(アーギュメント”プロシージャ(procedur
e)”)を遂行する。
【2080】プロシージャがそのようにする場合(”エ
クセプション(exception)”)、プロシージャの遂行
が前述した実効的なパーミットを侵害する場合(”パー
ミットバイオレーティッド(PermitViolatd)”)また
はリクエスタが現在のプロセスでない場合(”プロセス
ノットカレント(ProcessNotCurrent)”)例外が投出
される。
【2081】sponsor シールされた op (procedure: Procedure; permit: p
rotected Permit)は、Exception, PermitViolatd, ProcessNotCur
rentを投出する。 一時的なパーミット(”パーミット(permit)”)及び
プロシージャのチャージが生ずるレスポンダのオーナー
の結果した実効的パーミットのもとに、プロシージャ
(アーギュメント”プロシージャ(procedure)”)を
遂行する。プロシージャはレスポンダのフレーム及びプ
ロパティでなくリクエスタのフレーム及びプロパティに
アクセスする。
【2082】プロシージャがそのようにする場合(”エ
クセプション(Exception)”)、プロシージャの遂行
が前述した実効的なパーミットを侵害している場合(”
パーミットバイオレーティッド(PermitViolatd)”)
またはリクエスタが現在のプロセスでない場合(”プロ
セスノットカレント(ProcessNotCurrent)”)例外が
投出される。
【2083】Private Instance Attributes age: シールされたリードオンリの整数。
【2084】レスポンダの秒で表した実際のエイジ。
【2085】charges: シールされたリードオンリの整数。
【2086】レスポンダの実際のテレクリックで示した
チャージ。
【2087】priority: シールドInteger|Nil; レスポンダの実際のプライオリティすなわちレスポンダ
の選択されたプライオリティ。
【2088】プライベートインスタンスオペレーション wait プロテクトされない op (seconds: Integer); 要求された秒数(アーギュメント”セカンズ(second
s)”)が経過するまでレスポンダをブロックする。整
数が負数である場合にはオペレーションは効果を持たな
い。
【2089】システムインスタンスオペレーション live: アブストラクト、プロテクトされない op (cause: Exce
ption|Nil)は、Exceptionを投出する。 生成させた後レスポンダを開始させるために0でリクエ
ストする(アーギュメント”コーズ(cause)”)。レ
スポンダが保持するパーミットの属性”キャンリスター
ト(canRestart)”が”真(true)”であれば、そのオ
ペレーションは、レスポンダが例外(アーギュメント”
コーズ(cause)”)によって失敗した場合に、レスポ
ンダを再スタートさせる前記例外とともにリクエストさ
れうる。
【2090】レスポンダが例外をキャッチしえなかった
場合(”エクセプション(Exception)”)例外が投出
される。
【2091】restricted op (permit: Identifier; isRelocated: oolean) PermitReduced|Nil; レスポンダの属性”nativePermit”、”regionalPermi
t”または”localPermit”が一度設定された後にレスポ
ンダの能力を減少させるように再び設定された場合にリ
クエストされる。識別子(アーギュメント”パーミット
(permit)”)はこれらの3つの属性の内どれか設定さ
れたものの識別子である。結果は0でない場合にエンジ
ンはレスポンダのスレッドにオペレーションの結果を投
出する。このクラスにおいて固有の方法は単に0をリタ
ーンする。
【2092】ブーリアン(アーギュメント”イズリロケ
ーティッド(isRelocated)”)は、オペレーションを
リクエストするようにエンジンを導いた事象がレスポン
ダが占有しているプレイスまたは、オペレーション”g
o”または”send”の遂行の間にオペレーションがリク
エストされた場合にはレスポンダの目的点以外のプレイ
ス例えばパーガトリィにレスポンダを送り届けるように
エンジンを導いたか否かを指示する。後者の場合オペレ
ーション”go”または”send”は、0でない場合に、現
在のオペレーションの結果を投出する。
【2093】注:レスポンダの新しく設定されたパーミ
ットが著しく制限的である場合に、このオペレーション
を遂行するレスポンダの能力は、プロセスの終了のルー
ルによって制限される。
【2094】アダプテーション copy ”コピーアンアベイラブル(Copy Unavailable)”のメ
ンバが投出される。
【2095】4.65 プロセスエクセプション(Proc
ess Exception) オブジェクト(参照される) ・ エクセプション(変更されない) ・・ プログラミングの例外 ・・・ Process Exception Class ProcessException: アブストラクトインタフェース(プログラミングの例
外) = (); Subclasses PermitInadequate: インタフェース(プロセスの例外) = (); あるプロセスは、別のプロセスに、この別のプロセスの
実効的なパーミットを使い尽くすようにチャージするよ
うに試みる。
【2096】ConditionUnavailable: インタフェース(プロセスの例外) = (); あるプロセスは、リゾースを専用的に使用することなく
リゾースの状態をマニピュレートする。
【2097】ConditionUndefined: インタフェース(プロセスの例外) = (); リゾースの状態を表すように意図される識別子はそのよ
うにしない。
【2098】PermitExhausted: インタフェース(プロセスの例外) = (); あるプロセスはプロセスが保持するパーミットを使い尽
くす。
【2099】PermitViolated: インタフェース(プロセスの例外) = (); あるプロセスはそれが保持するパーミットを侵害する。
【2100】ProcessNotCurrent: インタフェース(プロセスの例外) = (); あるプロセスは、あるクラスの現在のメンバのフィーチ
ャをリクエストする。
【2101】ProcessNotPeer: インタフェース(プロセスの例外) = (); あるオブジェクトは、そのオブジェクトの仲間でないプ
ロセスをマニピュレートする。
【2102】ResourceUnavailable: インタフェース(プロセスの例外) = (); リゾースの使用は、要求された秒の数において取得でき
ない。
【2103】StateImproper インタフェース(プロセスの例外) = (); プロセスは、リクエストを排除する状態にある間、ある
フィーチャをリクエストする。
【2104】4.66 プログラミングエクセプション
(ProgrammingException) オブジェクト(参照される) ・ 例外(変更されない) ・・ Programming Exception Class ProgrammingException: アブストラクト・インタフェース(例外) = (); 4.67 クオリファイドアイデンティファイヤ(Qual
ified Identifier) オブジェクト(参照される) ・ プリミティブ(実効され、変更されない) ・・ 識別子(順序あり) ・・・ Qualified Identifier Class QualifiedIdentifier: シールされたインタフェース(識別子) = (); 4.68 ランダムストリーム(RandomStream) オブジェクト(参照される) ・ ストリーム ・・ Random Stream Class RandomStream: インタフェース (Stream [Integer]) = (・・・); Construction initialize: プロテクトされてない op (seed: Integer) throws SeedInvalid; レスポンダのシードを整数(アーギュメント”シード
(seed)”)とし、レスポンダの属性”カレント(curr
ent)”を0とし、レスポンダの属性”ネクスト(nex
t)”を定義されないままにしておく。
【2105】提案されたシードがそのようなものとして
不適切な場合(”SeedInvalid”)例外が投出される。
【2106】アダプテーション current この属性は整数である。 next この属性は0ではなく整数である。
【2107】4.69 実数(Real) オブジェクト(参照される) ・ プリミティブ(実効され、変更されない) ・・ 数(順序あり) ・・・ Real Class Real: シールされたインタフェース(数) = (); アダプテーション abs 結果は実数である。
【2108】add 結果は実数である。 divide 結果は実数である。 multiply 結果は実数である。 negate 結果は実数である。 subtract 結果は実数である。 Conversions Bit あるビットは、そのビットを整数に最初に変換し次にそ
の実数を整数に変換する結果を生ずる。
【2109】BitString あるビットストリングは、そのビットストリングを最初
に整数に変換し次にその整数を実数に変換する結果を生
ずる。
【2110】Boolean ブーリアンは、そのブーリアンを整数に最初に変換し次
にその整数を実数に変換する結果を生ずる。
【2111】Character あるキャラクタは、そのキャラクタを整数に最初に変換
し次にその整数を実数に変換する結果を生ずる。
【2112】Integer 整数は、算術的にその整数に等しい実数を生ずる。
【2113】Octet オクテットは、そのオクテットを整数に最初に変換し次
にその整数を実数に変換する結果を生ずる。
【2114】OctetString オクテット・ストリングは、そのオクテット・ストリン
グを整数に最初に変換し次にその整数を実数に変換する
結果を生ずる。
【2115】String キャラクタテレスクリプトの実数のトークンのシンタッ
クルールに従うルールは、対応する実数を生ずる。
【2116】4.70 リファレンスド(Referenced) Referenced Class Referenced: アブストラクトインタフェース () = (・・・); このクラスはシールされる。
【2117】Public Instance Attributes isProtected シールされたリードオンリのブーリアン; レスポンダのリファレンスがプロテクトされているか否
か。
【2118】パブリックインスタンスオペレーション discard: シールド op (); レスポンダへのリファレンスが全く残っていない場合に
のみレスポンダを破壊する。
【2119】isSame: シールされた op (reference: Protected Referenced)
Boolean;。 リファレンスされたオブジェクト(アーギュメント”リ
ファレンス(reference)”)がレスポンダであるか否
かの指示をリターンする。
【2120】protect: シールされた op () protected Reference; プロテクトされたリファレンスをレスポンダにリターン
する。
【2121】ref: シールされプロテクトされていない op (); オペレーションをリクエストするために用いられたリフ
ァレンスそれ自体が保護されている場合にのみともにプ
ロテクトされるレスポンダへの2つのリファレンスをス
タックに保存する。
【2122】4.71 リソース(Resource) オブジェクト(参照される) ・ Resource Class Resource: インタフェース = (・・・); Constructin initialize: プロテクトされない op (conditon: Identifier!Nil; conditons:copied Set[Identifier!]Nil) throws ConditionUndefined; レスポンダの固有の属性を、同じ名前のアーギュメント
(アーギュメント”コンディション(conditon)”及
び”コンディションズ(conditons)”)とする。どち
らかのアーギュメントが0である場合、両方とも0でな
くてはならず、その場合に、属性”コンディションズ
(conditons)”は、属性”コンディション(condito
n)”に等しい1つの識別子を含む。問題の識別子は定
義されない。
【2123】個別の条件すなわち属性”条件”がセット
にない場合、すなわち属性”コンディションズ”にない
場合(”コンディションアンディファインド(Conditio
nUndefined)”)例外が投出される。
【2124】Public Instance Attributes condition: 識別子 throws ConditionUnavailable; レスポンダの条件の識別子。
【2125】現在のプロセスが属性を設定しようと試
み、レスポンダの排他的な使用が欠如している場合(”
コンディションアンアベイラブル(ConditionUnvailabl
e)”)には例外が投出される。
【2126】conditions: リードオンリのプロテクトされるセット[識別子] レスポンダの可能な条件のための識別子。
【2127】パブリックインスタンスオペレーション use: シールされプロテクトされない op (procedure: Proc
edure; exclusive: Boolean|Nil; maximumWait: Integer|Nil; conditions: copied Set [Identifier!]|Nil) ブーリアン ConditionUndefined, Exception, resourceUnavailable
を投出する。
【2128】レスポンダの使用を取得する、プロシージ
ャ(アーギュメント”プロシージャ(procedure)”)
を遂行し次にプロシージャが失敗してもレスポンダを放
棄する。
【2129】プロシージャはレスポンダのでなくリクエ
スタのフレーム及びプロパティにアクセスする。
【2130】ブーリアン(アーギュメント”エクスクル
ーシブ(exclusive)”)が存在し且つ”真”である場
合にのみ使用が排他的となる。もし0でなく、識別子の
セット(アーギュメント”コンディションズ(conditio
ns)”)が供給されたら、レスポンダが識別子が意味す
る状態の1つにある場合にのみ使用が許可される。
【2131】整数(アーギュメント”マキシマムウェイ
ト(maximumWait)”)が供給されたらオペレーション
は、その秒数よりも多くない時間レスポンダの使用に対
して待機する。その代わり0が供給されたら、オペレー
ションは要求されるだけの時間、おそらくは永久に待機
する。オペレーションの結果は、前者の場合に、指示さ
れた秒数を持ちレスポンダが利用できないままであるか
否かを指示する。
【2132】条件のセットがクリアされるかまたはレス
ポンダの属性”コンディション”(”コンディションア
ンディファインド(ConditionUndefined)”)のサブセ
ットに等しくない場合、プロシージャが例外を投出する
場合(”エクセプション(Exception)”)、またはレ
スポンダの使用が要求された秒数の間に取得できない場
合(”リゾースアンアベイラブル(ResourceUnavailabl
e)”)例外が投出される。
【2133】4.72 セレクタ(Selector) オブジェクト(参照される) ・ プリミティブ(実行され変更されない) ・・ Selector Class Selector: シールされたインタフェース(プリミティブ) = (); アダプテーション isEqual 2つの値が同一である場合にのみ2つのセレクタは同一
である。
【2134】4.73 セット(Set) オブジェクト(参照される) ・ コレクション ・・ Set(検査される) Class Set: インタフェース[itemClass: Class] (Collection[itemClass, Verifid) = (・・・); サブジェクトクラスの各々のメンバの各々のアイテムが
それ自身メンバであるクラス(アーギュメント”アイテ
ムクラス(itemClass)”) によってパラメータ化され
る。
【2135】レスポンダのアイテムをオブジェクトとす
る(アーギュメント”アイテムズ(items)”)。
【2136】2つの提案されたアイテムが同一である場
合(”アイテムデュプリケーティッド(ItemDuplicate
d)”)または提案されたアイテムがそのようなものと
して不適切である場合(”アイテムインヴァリッド(It
emInvalid)”)に例外が投出される。
【2137】パブリックインスタンスオペレーション difference: プロテクトされない op (set: protected Set [itemCla
ss]); セットの1つのアイテムに等しい各々のアイテム(アー
ギュメント”セット(set)”)をレスポンダから除外
して廃棄する。
【2138】intersection: プロテクトされない op (set: protected Set[itemClas
s]); セットの1つのアイテムに等しくない各々のアイテム
(アーギュメント”セット(set)”)をレスポンダか
ら除去し廃棄する。
【2139】union: プロテクトされない op (set: protected Set[itemClas
s]); レスポンダの現存するアイテムに等しくないセット(ア
ーギュメント”セット(set)”)の各々のアイテムへ
の参照をレスポンダに含める。
【2140】アダプテーション include オブジェクトに等しい現存するアイテムを最初に排除し
次に廃棄することによって、あるオブジェクトを新しい
アイテムとしてセットに含める。
【2141】verify セットのアイテムどの2つも同一でない場合にのみセッ
トはコンシステントである。
【2142】4.74 スタック(Stack) オブジェクト(参照される) ・ コレクション ・・ リスト(順序付けされる) ・・・ Stack Class Stack: インタフェース [itemClass: Class] (List [item]) =
(・・・); サブジェクト・クラスの各々のメンバの各々のアイテム
それ自身がメンバであるクラス(アーギュメント”アイ
テムクラス(itemClass)”)によってパラメータ化さ
れる。
【2143】パブリックインスタンスオペレーション pop: プロテクトされない op () itemClass throws StackDepleted; トップアイテムをレスポンダから除去しリターンする。
【2144】レスポンダがクリアされている場合(”ス
タックデプリーティッド(StackDepleted)”)に例外
が投出される。
【2145】push: プロテクトされない op (item: itemClass); オブジェクト(アーギュメン”アイテム(item)”)を
新しいアイテムとして頂部においてレスポンダに付加す
る。
【2146】pushItems: プロテクトされない op (item: protected List [itemC
lass]); リストのアイテム(アーギュメント”アイテムズ(item
s)”)への参照をレスポンダんプッシュする。リスト
の位置1においてアイテムへのリファレンスをレスポン
ダの頂部に置く。
【2147】roll: プロテクトされない op (shifts, items: Integer) throws ArgumentInvalid, StackDepleted; レスポンダの一番上のアイテムをシフトする。
【2148】シフトに参加するアイテムの数”I”は、
負数でない整数(アーギュメント”アイテムズ(item
s)”)によって与えられる。各々の参加するアイテム
がシフトされるべき位置の数は、整数でも負数でもよい
別の整数(アーギュメント”シフツ(shifts)”)によ
って与えられる。”P”はその絶対値である。参加する
アイテムは、この第2の整数が正数である場合レスポン
ダの頂部にシフトされ、さもなければレスポンダの底部
にシストされる。
【2149】レスポンダの頂部に向かって位置1だけ参
加するアイテムをシフトさせることは、1番最上部のア
イテムの位置を”アイテム”に変化させ他の参加する各
々のアイテムを位置を1だけ減少させることである。
【2150】レスポンダの底部に向かって参加アイテム
を位置1だけシフトさせることは、その位置が”I”で
あるアイテムを1番上にし、他の参加アイテムの各々の
位置を1だけ増大させることである。
【2151】”I”を与える正数が負である場合(”ア
ーギュメントインヴァリッド(ArgumentInvalid)”)
またはレスポンダの長さが”I”(”スタックデプリー
ティッド(StackDepleted)”)よりも小さい場合に例
外が投出される。
【2152】swap: プロテクトされない op () は、 StackDepleted;を投出する。
【2153】レスポンダの位置1及び2にあるアイテム
を転置する。
【2154】レスポンダの長さが2より小さい場合(”
スタックデプリーティッド(StackDepleted)”)例外
が投出される。
【2155】4.75 ストリーム(Steam) オブジェクト(参照される) ・ Stream Class Stream: アブストラクトインタフェース [itemClass: Class] =
(・・・); サブジェクトクラスの各々のメンバの各々のアイテムが
それ自身メンバであるクラス(アーギュメント”アイテ
ムクラス(itemClass)”)によってパラメータ化され
る。
【2156】パブリックインスタンスオペレーション current: アブストラクトのリードオンリの itemClass|Nil; レスポンダの属性”ネクスト(next)”が質疑された
が、0がリターンされず、全てのレスポンダのアイテム
が作り出された場合には、レスポンダが最後に作り出し
たアイテムであり、さもなければ0である。
【2157】isDone: アブストラクトなブーリアン。
【2158】レスポンダが全てのアイテムを作り出した
か否か。
【2159】next: アブストラクトなリードオンリのitemClass|Nil throws ReferenceProtected; もしレスポンダがそのアイテムの全てをすでに作り出し
ていた場合には、レスポンダの次のアイテムである、さ
もなければ0である。このオペレーションがリクエスト
されるごとにレスポンダは別のアイテムを作り出す。
【2160】レスポンダがプロテクトされている場
合(”リファレンスプロテクティッド(Referenceprete
cted)”)例外が投出される。
【2161】4.76 ストリング(string) オブジェクト(参照される) ・ コレクション ・・ リスト(順序付けされる) ・・・ コンストレインドリスト(コンストレインド) ・・・・ String(Cased&Executed) Class String: シールされたインタフェース (ConstrainedList [Character}, Cased, Executed) =(・
・・); Construction initialize プロテクトされない op (segments: Object・・・ /*Character|protcted String! */); レスポンダをその位置がレスポンダ内において左から右
に増大しているセグメント(アーギュメント”セグメン
ツ(segments)”)の連鎖にする。
【2162】パブリックインスタンスオペレーション substring: op (initialPositon, beyondFinalPosition: Integer) copied String throws PositionInvalid; 範囲に含まれる位置においてキャラクタを含むレスポン
ダのサブストリングのコピーをリターンする[”initia
lPosition”,”beyondFinalPosition”)。
【2163】主張された位置がそのようなものとして不
適切な場合(”ポジションインヴァリッド(PositionIn
valid)”)例外が投出される。
【2164】アダプテーション constraint 属性はシールされる。属性”ofClass”、”classI
d”、”isInstance”、”isOptional”及び”passage”
は、クラス”Character”、クラス”character”、”tr
ue”、”false”及び”byCopy”の識別子である。
【2165】isAfter 短い長さのストリングの長さは長い長さのストリングの
長さに等しくするに足る文字キャラクタをキャラクタが
最初に短な長さのストリングに付加されたかのようにあ
るストリングが次のストリングに続く。各々の付加され
たキャラクタは、そのユニコードのコードが正数0であ
るキャラクタである。
【2166】isBefore 短い長さのストリングの長さは長い長さのストリングの
長さに等しくするに足るキャラクタをキャラクタが最初
に短い長さのストリングに付加されたかのように、ある
ストリングが別のストリングの前方にある。各々の付加
されたキャラクタは、そのユニコードのコードが正数0
であるキャラクタである。
【2167】Conversions Bit あるストリングに変換しうるキャラクタに変換しうるビ
ットはそのストリングを生ずる。
【2168】CalendarTime カレンダ時間は、カレンダ時間によって表される時間を
記述するストリングを生ずる。
【2169】Character キャラクタは、その唯一つのアイテムがキャラクタに等
しいストリングを生ずる。
【2170】Identifier 識別子は、識別子のテキストに等しいストリングを生ず
る。
【2171】Integer ある整数は、キャラクタテレスクリプト中のトークン”
インテジャ(Integer)”のためのシンタクティックル
ールに従うストリングを生ずる。
【2172】Pattern あるパターンは、パターンのテキストに等しいストリン
グを生ずる。
【2173】Real ある実数は、キャラクタテレスクリプト中のトークン”
Real”のシンタクティックルールに従いストリングを生
ずる。
【2174】Telenumber テレナンバは、プラスサイン(”+”)、テレナンバの
国の属性、スペース(” ”)、及びテレナンバの属
性”テレホン(telephone)”の連鎖を生ずる。
【2175】Time 時間は、時間をひとまずカレンダ時間に変換し次にカレ
ンダ時間をストリングに変換する結果を生ずる。
【2176】4.77 テレアドレス(Teleaddress) オブジェクト(参照される) ・ Teleaddress Class Teleaddress: インタフェース = (・・・); Constructin initialize: プロテクトされる op (provider: OctetStrin!|Nil; location: String!Nil); レスポンダの属性”ルーティングアドバイス(routingA
dvice)”をクリアし、その他の本来の属性を同じ名前
のアーギュメント(アーギュメント”ロケーション(lo
cation)”及び”プロバイダ(provider)”)にする。
しかし後者のアーギュメントが0であれば、属性”プロ
バイダ(provider)”は、現在のプレイスの割り当てら
れたテレアドレスの属性とされる。
【2177】パブリックインスタンスオペレーション location: String!|Nil; レスポンダが割り当てられているかまたはそのようなコ
ンストレイントが課された場合、レスポンダによって表
されるプレイスのロケーションを表すストリング、さも
なければ0。
【2178】provider: OctetString!; オクテットストリングは、テレネームの属性”オーソリ
ティ(authority)”がそうするように、レスポンダが
表すプレイスを含む領域のプロバイダを表す。
【2179】routingAdvice: List [OctetString!]; オクテットストリングは、属性”プロバイダ(provide
r)”がそうするように、そして優先順位の減少する順
序に、移動領域のプロバイダを表す。
【2180】アダプテーション isEqual 2つのテレアドレスは、それぞれの固有の属性に従って
同一である。
【2181】4.78 テレネーム(Telename) オブジェクト(参照される) ・ Telename Clas Telename インタフェース = (・・・); Construction initialize プロテクトされない op (authority, identity: OctetString!|Nil); レスポンダの固有の属性を同じ名前のアーギュメント
(アーギュメント”オーソリティ(authority)”及
び”アイデンティティ(identity)”にする。しかし前
者のアーギュメントは0であれば、属性”オーソリティ
(identity)”が現在のプロセスの割り当てられたテレ
ネームの属性にされる。
【2182】Publc Instance Attributes authority: OctetString! レスポンダが表す名前付けされたオブジェクトのオーソ
リティを表すオクテットストリング。
【2183】identity: OctetString!|Nil; レスポンダが割り当てられているかそのようなコンスト
レントが課された場合には、レスポンダによって表され
る名前付けされたオブジェクトのアイデンティティを表
すオクテットストリングであり、さもなければ0であ
る。
【2184】アダプテーション isEqual 2つのテレネームは、それぞれの固有の属性に従って同
一である。
【2185】4.79 テレナンバ(Telenumber) オブジェクト(参照される) ・ Telenumber Class Telenumber インタフェース = (・・・); Construction initialize プロテクトされない op (countryAndTelephone: String
!; extension: String!|Nil); レスポンダの属性”エクステンション(extension)”
を、同じ名前のアーギュメント(アーギュメント”エク
ステンション(extension)”)とし、レスポンダの他
の固有の属性を、アーギュメント”カントリアンドテレ
ホン(countryAndTelephone)”に変換可能なテレナン
バの属性にする。
【2186】Public Instance Attributes country String!; レスポンダに表すインストルメントが含まれている国ま
たは他の地域的な領域にCCITTが割り当てるコー
ド。ストリングの各々のキャラクタは数字(”0”−”
9”)である。
【2187】extension: String!|Nil; レスポンダの属性”カントリ(country)”及び”テレ
ホン(telephone)”がそれ自身そのようにしない場
合、レスポンダが表すインストルメントを明瞭に特定す
るテレホンの内線であり、さもなければ0である。スト
リングの各々のキャラクタは、数字(”0”−”
9”)、ハイフン(”−”)またはスペース(””)で
ある。
【2188】telephone: String!; 属性”カントリ(country)”が表す国または他の地理
的な領域によってレスポンダが表すインストルメントに
割り当てられた番号。ストリングの各々のキャラクタ
は、数字(”0”−”9”)、ハイフン(”−”)また
はスペース(””)である。
【2189】アダプテーション isEqual 2つのテレネームは、全てのハイフン(”−”)及びス
ペース(” ”)が最初にそれらが除かれたかのように
同一であるそれらの固有の属性に従って同一である。
【2190】Conversions String あるテレナンバを変換することによって生じうるストリ
ングは、その属性”エクテンション”が0であり、テレ
ナンバを生ずる。
【2191】4.80 チケット オブジェクト(参照される) ・ チケットスタブ ・・ Ticket Class Ticket: インタフェース (TicketStub) = (・・・); Construction initialze: プロテクトされない op( destinationName: Telename|N
il; destinationAddrss: Teleaddress|Nil; destinationClass: Citation|Nil; maximumWait: Integer|Nil; way: Way|Nil; travelNotes: Object|Nil); レスポンダの属性”desiredWait”及び”destinationPe
rmit”を0にし、レスポンダの他の属性を同じ名前のア
ーギュメント(アーギュメント”destinationAddres
s”、”destinationClass”、”destinationName”、”
maximumWait”、”travelNotes”及び”way”)にす
る。
【2192】Public Instance Attributes desiredWait: Integer|Nil; そのようなコンストレイントが課せられた場合、レスポ
ンダが規定するトリップが完了されるべき時間とトリッ
プがリクエストされる時間との間の負数でない秒数の最
大の所望される差であり、その他の場合は0である。
【2193】destinationAddress Teleaddress|Nil; そのようなコンストレイントが課せられた場合、レスポ
ンダが定義するトリップの目的点のテレアドレスであ
り、さもなければ0である。
【2194】destinationClass: Citation|Nil; そのようなコンストレイントが課せられれば、レスポン
ダが定義するトリップの目的点が1つのメンバであるク
ラス”プレイス(place)”のサブクラスへのサイテイ
ションであり、さもなければ0である。
【2195】destinationName: Telenam|Nil; そのようなコンストレイントが課せられれば、レスポン
ダが定義するトリップの目的点のテレネームであるかま
たは、さもなければ0である。
【2196】destinatonPermit: Permit|Nil; ローカルパーミットがエージェントの現在の一時的なパ
ーミットと相違していれば、レスポンダを使用するエー
ジェントはエージェントの目的点において持つべきロー
カルパーミットであり、エージェントが持たなければ、
エージェントの固有のパーミットであり、さもなければ
0である。
【2197】maximumWait: integer|Nil; もしそのようなコンストレイントが課せられれば、レス
ポンダが定義するトリップが終了すべき時間とトリップ
が要求する時間との間の秒で表した最大のパーミットさ
れる差であり、またはさもなければ0である。整数はも
し供給されれば負数ではないものとする。
【2198】アダプテーション isEqual 2つのチケットはチケットの固有の属性及びチケットの
スタブに従って同一である。
【2199】4.81 チケットスタブ(Ticket Stu
b) オブジェクト(参照される) ・ Ticket Stub Class TicketStub インタフェース = (・・・); Construction initialize: プロテクトされない op (way: Way|Nil; travelNotes: Object|Nil); レスポンダの固有の属性を、同じ名前のアーギュメント
(アーギュメント”トラベルノート(travelNotes)”
及び”ウェイ(way)”)とする。
【2200】Public Instance Attributes travelNotes: Object|Nil; レスポンダを保持するエージェントの専用的な使用のた
めのオブジェクト。
【2201】way Way|Nil; もしそのようなコンストレイントが課せられれば、トリ
ップの目的点に向かって取るべき道でありさもなければ
0である。チケットスタブにおいてトリップの原点への
戻り道。
【2202】アダプテーション isEqual 2つのチケットスタブはそれぞれの固有の属性に従って
同一である。
【2203】4.82 タイム(Time) オブジェクト(参照される) ・ Time(順序付けされ、変更されない) Class Time: インタフェース (Object, Ordered, Unchanged) = (・・
・); Const1ruction initialize レスポンダを現在の時間すなわち現在のプレイスにおい
ての時間とする。
【2204】パブリックインスタンスオペレーション adjust: op (seconds: Integer) Time; レスポンダの後の要求された秒数(アーギュメント”セ
コンズ(seconds)”)であり、同一の恒久的オフセッ
ト及び季節的オフセットを特定する時間はリターンす
る。
【2205】注:整数が負数であればリターンされる時
間はレスポンダに先行する。
【2206】interval: op (subtrahend: Time) Integer; 被減数であるレスポンダと減数である時間(アーギュメ
ント”サブトライエンド(subtrahend)”)との間の秒
で表した算術差をリターンする。
【2207】注:結果は2つの絶対時間との間の距離を
表す。
【2208】Adaptations isAfter ある時間が別の時間の次になるのは、第2のものが特定
する絶対時間点に第1の特定する絶対時間点が後続する
場合にのみ生ずる。
【2209】isBefore ある時間が別の時間の前になるのは、第2のものが特定
する絶対時間点よりも第1のものが特定する絶対時間点
が先行する場合にのみ生ずる。
【2210】isEqual 2つの時間はどちらも他のものの前にない場合にのみ同
一である。
【2211】Conversions CalendarTime カレンダ時間は、同一の時点を表す時間と同一の恒久的
及び季節的オフセットとを生ずる。
【2212】4.83 トリップエクセプション(Tr
ip Exception) オブジェクト(参照される) ・例外(変更されない) ・・”Trip Exception” クラス TripException:アフ゛ストラクト・インタフェース (例外)=(・・・); Construction initialize:フ゜ロテクト されないop(ticketStub: TicketStub); レスポンダの固有の属性を同じ名前のアーギュメント
(アーギュメント”ticketStub”)とする。
【2213】Subclassess DestinationUnavailable:インタフェース (トリッフ゜の例外)=(); ネットワークが区画されているためトリップの目的点は
到達不可能である。従って、目的点は将来到達されうる
かもしれない。
【2214】DestinationUnknown:インタフェース (トリッフ゜の例外)=(); トリップの目的点は特定できないので到達不可能であ
る。
【2215】OccupancyDenied:インタフェース (トリッフ゜の例外)=(); トリップの目的点はエージェントの占有従って到達を拒
絶する。
【2216】TicketExpired:インタフェース (トリッフ゜の例外)=(); トリップに対するチケットの属性”maximumWait”によ
って要求された秒数内にはトリップの目的点には到達で
きない。
【2217】WayUnavailable:インタフェース (トリッフ゜例外)=(); トリップの出発点はトリップについて要求された航路が
欠如している。
【2218】Public Instance Attributes ticketStub: sealed TicketStub; 成功しなかったトリップから結果したチケット・スタ
ブ。
【2219】Adaptations isEqual 2つのトリップの例外はそれぞれの固有の属性に従って
同一である。
【2220】4.84 アンチェンジド(Unchan
ged) クラス Unchanged:アフ゛ストラクト・インタフェース ()=(); Adaptations copy 変更されないオブジェクトのコピーはオリジナルであ
る。
【2221】4.85 アネクスペクティドエクセプシ
ョン(Unexpected Exception) オブジェクト(参照される) ・例外(変更されない) ・・プログラミングの例外 ・・・カーネルの例外 ・・・・実行の例外 ・・・・・”Unexpected Exceptio
n” クラス UnexpectedException:インタフェース (実行の例外)=(・・・); Construction initializeフ゜ロテクト されないop(exception: Exception); レスポンダの固有の属性を同じ名前のアーギュメントと
する。(アーギュメント”Exception”) Public Instance Attributes exception: リードオンリの例外。
【2222】あるフィーチャが宣言しなかったが投出し
た、レスポンダの原因である例外。
【2223】4.86 アンムーブド(Unmove
d) クラス Unmovedアフ゛ストラクト・インタフェース ()=(); 4.87 ベリファイド(Verified) クラス Verifiedアフ゛ストラクト・インタフェース ()=(・・・); Public Instance Operations verify:アフ゛ストラクト op()フ゛ーリアン; レスポンダがコンシステントであるか否かの表示をす
る。
【2224】4.88 ウェイ(Way) オブジェクト(参照される) ・Way クラス Way:インタフェース =(・・・); Construction initialize:フ゜ロテクト されないop(ネーム: Telename|Nil; 手段: Means|Nil; オーセンティケータ: Authenticator|Nil); レスポンダの固有の属性を同じ名前のアーギュメント
(アーギュメント”authenticator”、”means”及び”
name”)とする。
【2225】Public Instance Attributes authenticator:オーセンティケータ |Nil; そのようなコンストレイントが課せられるならば、航路
が通過する領域に入るために用いられるためのオーセン
ティケータであり、さもなければ0である。
【2226】means: 手段|Nil; もしそのようなコンストレイントが課せられれば、航路
が通過する領域をアクセスするべき手段であり、さもな
ければ0である。
【2227】name:テレネーム |Nil; もしそのようなコンストレイントが課せられれば、航路
が通過する領域のテレネームであり、さもなければ0で
ある。
【2228】Adaptations isEqual 2つの航路はそれぞれの固有の属性に従って同一であ
る。
【2229】5 テレスクリプトシンタックス(TEL
ESCRIPT SYNTAX) ”telescript”はプロジージャの符号(エンコーディン
グ)である。一般にテレスクリプトの抽象的なシンタッ
クスと特にキャラクタ及び2進テレスクリプトの具体的
なシンタックスとはこのアペンディックスのこのセクシ
ョンにおいて定義される。
【2230】注:キャラクタ・テレスクリプト、人々に
よって、2進テレスクリプトは機械によって、例えばオ
ブジェクトをそれらの間に搬送する際に用いられる。2
進テレスクリプトは機能的の同等のキャラクタ・テレス
クリプトよりも常にオクテットで表した長さが著しくな
い。
【2231】5.1 テレスクリプト(Telescr
ipt) テレスクリプトは、第1にプリフェースをそして第2テ
レスクリプトが符号化するプロシージャを含む一連のト
ークンである。プリフェースは、テレスクリプトがそれ
に対して適合される命令セットのメージャーバージョン
及びマイナーバージョンを特定する。
【2232】テレスクリプトは、以下に示すシンタック
ティック・ルール及びそれに付随したセマンティック・
ルールに従う。BNFで表した規則は、ブラケットによ
って任意のトークンを囲む(”[”and”]”) Telescript ::=Preface Procedure Body ::=[ExecutedObject Body]ExecutedObject::=Bit|BitString|Boole an|Character|Identifier|Integer| Octet|OctetString|Mark| Modifier| Nil|Procedure|Mark| Real|Selector|String Bit ::=BitZero| BitOne Boolean ::=Booleanalse|BooleanTrue Modifier ::= ModifierDemarcate| ModifierGetClass| ModifierGetProperty| ModifierGetVariable| ModifierMention| ModifierSetAttribute| ModifierSetProperty| ModifierSetVariable| ModifierUseStack| Selector ::=SelectorBreak| SlectorClient| SlectorContinue| SlectorEscalate| SlectorPlace| SlectorProcess| SlectorSelf| SlectorSucceed テレスクリプトはそのための規定がシンタックティク・
ルールに含まれると考えられるコメントを含めうる。”
comment”はテレスクリプトが符号化するプロシージャ
に影響しないストリングである。1以上のコメントは、
スクリプトの第1トークンの前、その最後のトークンの
後そして任意の2つの隣接したトークンの間に出現しう
る。
【2233】注:あるコメントは、通常は、ヒトのテレ
スクリプトの1つの様相を通常記述する。
【2234】注:このアペンディックスに規定された命
令セットのメージャーバージョン及びマイナーバージョ
ンは、それぞれ0(”0”)及び八(”8”)と特定さ
れる。
【2235】5.2 キャラクタテレスクリプト(Ch
aracter Telescript) ”character telescript”はストリングとして符号化さ
れたプロシージャである。一般にテレスクリプトの抽象
的なシンタックティック・ルールは、特にこのセクショ
ンにおいてキャラクタ・テレスクリプトにおいて具体化
されている。
【2236】あるキャラクタ・テレスクリプト中の各々
のトークンは1以上の文字である。キャラクタ・テレス
クリプトは、トークン従ってキャラクタを連鎖化するこ
とによってそしてトークンの間にブレーク(brea
k)キャラクタを挿入することによって得られる。
【2237】ブレーク・キャラクタはスペース(”
”)、水平タブまたはラインフィードである。1以上
のそのようなキャラクタは、最初のトークンの前、最後
のトークンの後または2つの任意の隣接したトークンの
間に表れうる。最後の場合には2つの隣接したトークン
がどちらも”BinDigit”または”ヘックスディジットペ
ア”である場合を除いて、これら2つのトークンが数字
(”0”−”9”)及び文字からなる場合には少なくと
も1つのキャラクタは表れなければならない。
【2238】数字サイン(”#”)及びキーワード”te
lescript”でもって始まるターミナルは、ケース(大文
字−小文字)を感知しない。アッパーケース(大文字)
キャラクタがこのアペンディックスに表れるが、ローア
ーエース(小文字)キャラクタまたは2つのものの混合
がプログラミングにおいて使用されうる。
【2239】5.2.1 プリフエイスとコメント(P
reface and Comment) Preface プリフェースはこれらの規則に従う。
【2240】フ゜リフェース::=telscript Versionハ゛ーシ゛ョン ::=numerals :numerals 第1の”numerals”は、キャラクタ・テレスクリプトが
それに従うところの命令セットのメージャーバージョン
を特定し、第2の”numerals”はマイナーバージョンを
特定する。
【2241】Comment コメントはこの規則に従う。
【2242】Comment::=/*comment1*/|//comment2 注:コメントのためのシンタックス・ルールは、C++
プログラミング言語のものである。
【2243】5.2.2 エグゼキュートオブジェクツ
(Executed Objects) Bit ビットは、ビットの値を個別に符号化する次の規則に従
う。
【2244】BitZero::=#b'0' BitOne::=#b'1' BitString ビット・ストリングは次の規則に従う。
【2245】BitString:=#b"BinDigits" BitDigits:=[BinDigit BinDigits] i番目の”BinDigit”はビット・ストリングの位置”
i”においてのビットを表す。
【2246】Boolean ブーリアンは、ブーリアンの値を個別に評価するこれら
の規則に従う。
【2247】BooleanFalse::=#false BooleanTrue ::=#true Character キャラクタは次の規則に従う。
【2248】Character ::=#C'characters' ”characters”は1つの文字を表すものとする。各々の
キャラクタはそれ自身を表すが、クラス”String”に規
定した例外がある。
【2249】Identifier 特定子はこの規則に従う。
【2250】Identifier ::=identifier|] ”Identifier”は、識別子のテキストである。右の角括
弧[”]”]は、オペレーション”new”を表す。
【2251】Integer 整数は次の規則に従う。
【2252】Integer ::= [-]numerals Mark マークは次の規則に従う。
【2253】Mark ::=#mark|[ 注:左角括弧[”[”]は、右角括弧[”]”]ととも
に、コンベンションによって、可能な使用のために設け
られる(上記のトークン”Identifier”参照) Modifier モディファイヤはモディファイヤの値を個別に符号化す
る次の規則に従う。
【2254】ModifierDemarcate ::= @ ModifierGetClass ::= : ModifierGetProperty ::= % ModifierGetVariable ::= $ ModifierMention ::= ' ModifierSetAttribute ::= = ModifierSetProperty ::= =% ModifierSetVariable ::= =$ ModifierUseStack ::= - Nil 0は次の規則に従う。
【2255】Nil ::=#nil Octet オクテットは次の規則に従う。
【2256】Octet ::= #0’hexDig
itPair’ ”hexDigitPair”のMSBは、オクテットのビット7を
表し、次が0を表す。
【2257】OctetString オクテット・ストリングは次の規則に従う。
【2258】OctetString::=#0"HexDigitPairs" HexDigitPairs::=[hexDigitPair HexDigitPairs] 第1の”hexDigitPair”は、オクテット・ストリングの
位置1においてのオクテットを表し、第2のものは位置
2においてのオクテットを表し、以下同様である。
【2259】各々の”hexDigitPair”のMSBは、この
オクテットのビット7を表し、LSBはビット0を表
す。
【2260】Procedure オクテットは次の規則に従う。
【2261】Procedure::={Body} QualifiedIdentifier 有資格識別子は次の規則に従う。
【2262】QIdentifier::=identifier::identifier
第1のアイデンティファイヤはテキストを表し、 Real 実数は次の規則に従う。
【2263】Real::=Number[Exponent} Number::Integer・numerals| Integer・|・ numerals Exponent::=E Integer 実数の整数部分は、もし存在していれば、”Number”
の”Integer”であるか、さもなければ0である。実数
の分数部分は、もし存在していれば”numerals”である
か、さもなければ0である。
【2264】”Exponent”中の”Integer”は、もし存
在していれば10のえき乗である。
【2265】Selector セレクタは、セレクタの値を個別に符号化する次の規則
に従う。
【2266】SelectorBreak ::= #break SelectorClient ::= #client SelectorContinue ::= #continue SelectorEscalate ::= #escalate|^ SelectorPlace ::= #here SelectorProcess ::= #process SelectorSelf ::= #self|* SelectorSucceed ::= #succeed ストリングは次の規則に従う。
【2267】String::=[#C]"characters" ”characters”は0またはそれ以上のキャラクタを表
す。各々のキャラクタはそれ自身を表すが、例外として
逆スラッシュ(”\”)及び4つの16進デジットを
(0”−”9”,”A”−”F”)が、そのユニコード
・コードがデジットの表す符号のない整数であるキャラ
クタ、指示されたキャラクタについて表A.6に示した
キャラクタ対を表す。
【2268】
【表6】 5.2.3 他の非ターミナル(Other Non−
terminals) characters 0またはそれ以上のキャラクタは各々プリミティブ・キ
ャラクタまたはスペース(” ”)を表す。引用
符(”)は逆スラッシュ(”\”)によって先行され
る。逆スラッシュは、上記のトークン”String”の下に
見いだされる表中のキャラクタ・シークエンスの一部分
であるかまたは4つの16進デジットに先行するものと
する。
【2269】comment1 スラッシュ(”*/”)が直後に続いていないアステリ
スクを含まない0またはそれ以上のキャラクタ。
【2270】注:”comment1”は特別な意味なしに”/
*”または”//”を包括することができるので、”co
mment2”を包括しうる。
【2271】comment2 ライン・フィードを含まない0またはそれ以上のキャラ
クタ。
【2272】注:”comment2”は特別な意味なしに”/
*”、”*/”または”//”を包括しうるので、”co
mment1”を包括しうる。”comment2”は、同じ行におい
て他のトークンによって後続されることはできないが、
それは”comment2”がこれらを含むものと考えられるか
らである。
【2273】hexDigitPair 16進デジットの対(”0”−”9”,”A”−”
F”) identifier 識別子のテキストと同様に拘束(コンストレイン)され
たキャラクタ。
【2274】numerals 1以上の数字(”0”−”9”) Binary Telescript ”binary telescript”はオクテット・ストリングとし
て符号化されたプロシージャである。一般にテレスクリ
プトの抽象的なシンテック・ルールは、特にこのセクシ
ョンにおいて2進テレスクリプトについて具体化されて
いる。
【2275】2進テレスクリプト中の各々のトークンは
1以上のオクットである。2進テレスクリプトは、トー
クン従ってオクテットを連鎖させることによって得られ
る。
【2276】5.3.1 プリフエイスとコメント(P
reface and Comment) Preface プリフェースは次の規則に従う。
【2277】Preface::=Verson Version::=unsignedNumber unsignedNumber 第1及び第2の”unsignedNumber”は、キャラクタ・テ
レスクリプトがそれに従う命令セットのマージャーバー
ジョン及びマイナーバージョンをそれぞれ特定する。
【2278】Comment コメントは次の規則に従う。
【2279】Comment::= tab unsignedNumber Characte
rs ”unsignedNumber”は文字として入力されるべきオクテ
ットの数である。
【2280】5.3.2 エグゼキューティドオブジェ
クト(Executed Objects) Bit ビットはビットの値を個別に符号化する次の規則に従
う。
【2281】BitZero ::= tag BitOne ::= tag BitString ビット・ストリングは次の規則に従う。
【2282】BitString ::= tag unsignedNumber unsig
nedNumber Octets Octets ::=[octet Octets] 第1の”unsignedNumber”は、最後のオクテットのビッ
ト・ストリングの各ビットの、範囲[1,8]中の数で
ある。このオクテット中の他のビットは意味を持たない
ので定義されない。第2の”unsignedNumber”は、トー
クン・オクテット中のトークン”Octets”の発生回数”
n”である。オクテットが[1,n]において番号付け
されていれば、ビット・ストリング中のその位置が”
i”であるビットは、番号(1+(i−1)/8)の番
号を有するオクテットのビット(7−((i−1)mo
d 8)である。
【2283】Boolean ブーリアンはブーリンの値を個別に符号化するこれらの
規則に従う。
【2284】BooleanFalse ::= tag Boolean True ::= tag Character キャラクタはこれらの規則に従う。一般的及び特別の符
号化が規定されている。後者は8ビットのキャラクタに
ついて用いる。
【2285】Character ::=GeneralCharacter| SpecialCharacter GeneralCharacter::=tag octet octet SpecialCharacter::=tag octet 1または2のオクテットは、キャラクタのユニコード・
コードであるキャラクタを符号化する。特別な符号化に
おいて整数のMSB及びLSBがオクテットのMSB及
びLSBである。一般的な符号化において整数のMSB
及びLSBは、それぞれ第1のオクテットのMSBと第
2のオクテットのLSBである。
【2286】Identifier 識別子は次の規則に従う。1つの一般的な符号化及び2
つの特殊な符号化が規定されている。後者の1つは識別
子のテキストが予め規定されたクラスまたはフィーチャ
の識別子のテキストに等しい場合にのみ使用する。
【2287】Identifier::=GeneralID| PredefinedClassID| PredefinedFeatureID GeneralID::=tag unsignedNumber characters PredefinedClassID::=tag unsignedNumber PredefinedFeatureID::=tag unsignedNumber 一般的な符号化において”unsignedNumber”及び”char
acters”は直接にテキストを表す。前者は、後者として
認識されるべきペットのオクテットの数である。特別の
符号化において、”unsignedNumber”、セクションの
5.4の表の1つから引き出されるコードによって、識
別子のテキストを関節に表している。
【2288】Integer整数は次の規則に従う。1つの一
般的な符号化といくつかの特殊な符号化が規定されてい
る。後者は、−1,0及び+1で用いる。
【2289】 Integer::=GeneralInteger|SpecialInteger GeneralInteger::=tag signedNumber SpecialInteger::=IntegerMinusOne| Integerzero| IntegerPlusOne IntegerMinusOne::=tag IntegerZero::=tag IntegerPlusOne::=tag サインドナンバは整数である。
【2290】Mark マークは次の規則に従う。
【2291】Mark::=tag Modifier モディファイヤは、モディファイヤの値を個別に符号化
する次の規則に従う。
【2292】ModifierDemarcate ::= tag ModifierGetClass ::= tag ModifierGetProperty ::= tag ModifierGerVariable ::= tag ModifierMention ::= tag ModifierSetAttribute ::= tag ModifierSetProperty ::= tag ModifierGerVariable ::= tag Nil 0は次の規則に従う。
【2293】Nil ::= tag Octet オクテットは次の規則に従う。
【2294】Octet ::= tag octet ”octet”のMSBはオクテットのビット7,LSBビ
ット0,を表す。 OctetStringオクテット・ストリング
は次の規則に従う。
【2295】 OctetString::=tag unsignedNumber Octets Octet::=[octet Octets] ”アンサインドナンバ”は、”オクテット”中の”オク
テット”の発生回数である。”Octets”中の第1”Octe
t”は、オクテット・ストリングの位置1においてのオ
クテットを表し、第2の”Octet”は、位置2において
のオクテットを表し以下同様である。各々の”Octet”
のMSBは、そのオクテットのビット7を表し、LSB
はビット0を表す。
【2296】Procedure プロシージャは次の規則に従う。
【2297】Procedure::=tag unsignedNumber Body ”unsignedNumber”は、各々プロシージャのアイテムを
表す”Body”中の”エギュゼキューティッドオブジェク
ト”の発生回数を符号化する。アイテムは、プロシージ
ャにおいて位置の増大する順序において示されている。
【2298】QualifiedIdentifier 有資格識別子は次の規則に従う。
【2299】 QIdentifier::=tag Identifier Identifier 第1の”Identifier”は、テキストを、第2のものはク
ォリファイヤをそれぞれ表す。
【2300】Real 実数は、次の規則に従う。
【2301】Real::=tag signedNumber signedNumber 第1の”signedNumber”は、仮数”m”を表し、第2の
ものは指数”e”を表す。実数は、m x 10cであ
る。
【2302】Selector セレクタはセレクタの値を個別に符号化する次の規則に
従う。
【2303】SelectorBreak ::=tag Selector Client ::=tag Selector Continue ::=tag Selector Escalate ::=tag Selector Place ::=tag Selector Process ::=tag Selector Self ::=tag Selector Succeed ::=tag String ストリングは次の規則に従う。
【2304】 String::=tag unsignedNumber characters ”unsignedNumber”は、キャラクタとして認識されるべ
きオクテットの数である。オクテットのシンタックス及
びセマンティックスは、ISO/IEC10646[10646]コンパク
ション・メソッド5に従うが、例外として、これらによ
って表されたキャラクタは、ユニコードのキャラクタに
制限される。
【2305】注:ストリングがASCIIキャラクタの
みを含む場合、”characters”はそのASCII表示を
1オクテットについて1キャラクタで表し、各々のオク
テットのビット7は0である。
【2306】5.3.3 他の非ターミナル(Othe
r Non−terminals) characters 0またはそれ以上のオクテット number 1から5までについて、”N”は整数”I”を符号化す
るオクテットである。”I”の符号化”E”は数の使用
が、”I”が負数でないことを主張するならば、定義さ
れてなくその他の場合には2の補数である。与えられ
た”I”,”N”は可及的に小さくする。
【2307】”E”は次のようにして定められる。
【2308】・ 最初のオクットの値が[0,BF16
の範囲であれば、”N”は1であり、”E”のMSB及
びLSBは、その単一のオクテットのそれぞれビット7
及びビット0である。
【2309】・ 第1のオクテットがEO16,E216
E416またはE616であれば、”N”は、2、3、4ま
たは5であり、”E”のMSB及びLSBは、第1オク
テットが0016とされた場合に最初のオクテットのビッ
ト7及び最後のオクテットのビット0となる。
【2310】・ 最初のオクテットがE116、E316
E516またはE716であった場合、Nは、2、3、4ま
たは5であり、”E”のMSB及びLSBは、第1オク
テットがFF16とされた場合に最初のオクテットがビッ
ト7及び最後のオクテットのビット0となろう。
【2311】注:[C016、DF16]及び[E816、F
16]の各範囲内の第1オクテットの値は留保されてい
る。
【2312】octet 1オクテット。
【2313】signedNumber ”I”が正または負であることができ、従ってが符号を
持ち(上記参照)場合の”number”。
【2314】注:”N”が1であれば、”I”は[−6
4、127]の範囲内にある。
【2315】”N”が2であれば、”I”は[-128,127]
の範囲内にある。
【2316】”N”が3であれば、”I”は[-32768,32
767]の範囲内にある。
【2317】”N”が4であれば、”I”は[-8388608,
8388607]の範囲内にある。
【2318】”N”が5であれば、”I”は[-21474836
48,2147483647]の範囲内にある。
【2319】tag タグの意味は次のセクションに与えられる場合の”sign
edNumber”。
【2320】unsignedNumber ”I”は負数でなく、従って”E”が符号を持たない場
合(上記参照)の”number”。
【2321】注:”N”が1であれば、”I”は[0,19
1]の範囲内にある。
【2322】”N”が2であれば、”I”は[0,255]の
範囲内にある。
【2323】”N”が3であれば、”I”は[0,65535]
の範囲内にある。
【2324】”N”が4であれば、”I”は[0,1677721
5]の範囲内にある。
【2325】”N”が5であれば、”I”は[0,4294967
295]の範囲内にある。
【2326】5.4 数値コード 2進テレスクリプトは次の数字コードで使用する。
【2327】5.4.1 プレデファインディドクラシ
ーズ 表A.7は、クラス”Executed”の予め規定されていな
いサブクラスへの識別コードを割り当てる。
【2328】
【表7】 表A.8は、他の予め規定されていないメイジャークラ
スへの識別コードを割り当てる。
【2329】
【表8】
【2330】
【表9】
【2331】
【表10】 表A.9は、予め規定されていないマイナークラスへの
識別コードを割り当てる。
【2332】
【表11】
【2333】
【表12】
【2334】
【表13】 5.4.2 プレデファインディドフィーチャーズ(Pr
edefined Features) 表A.10は、予め規定されたオペレーションへの識別
コードを割り当てる。
【2335】
【表14】
【2336】
【表15】
【2337】
【表16】
【2338】
【表17】 表A.11は、予め規定された属性への識別コードを割
り当てる。
【2339】
【表18】
【2340】
【表19】
【2341】
【表20】
【2342】
【表21】
【2343】
【表22】 注:”イズインスタンス(isInstance)”は、オペレー
ションでもあるので、属性としてはリストされていな
い。
【2344】表A.12は通路の形式へのコードを割り
当てる。
【2345】
【表23】 5.4.3 エグゼキューティドオブジェクトエンコー
ディング(Execute Object Encodings) 表A.13は、汎用の符号化に対するコードを割り当て
る。
【2346】
【表24】 注:これらのタグは、対応する予め規定されたクラスに
対するコードである。
【2347】表A.14は、基本的な性質の特殊な目的
の符号化に対するコードを割り当てる。
【2348】
【表25】 表A.15は、モディファイヤの特別な目的の符号化へ
のコードを与える。
【2349】
【表26】 表A.16は、セレクターの特別な目的の符号化のため
のコードを与える。
【2350】
【表27】 6. モジュールのシンタックス(Syntax of Module) ここに用いられている”module”は、1以上のインタフ
ェースを符号化するストリング、これらのインタフェー
スがその一部分であるクラスの識別子ならびに、最後
に、モジュール自身の識別子である。
【2351】”Identifier”定義用語は、セクション6
全体を通じて、全体としてのインスタンスではなく、ク
ラス”Identifier”の1つのテキストを暗黙の内に参照
する。
【2352】注:以下に説明するように構成されたモジ
ュールは、ハイテレスクリプトのモジュールでもある。
この表現を偽とするいかなる下記の規則もドキュメンテ
ーションの誤りである。
【2353】6.1 一般的な構造 モジュールは、以下に述べるシンタックティックルール
及びそれに付随するセマンティックルールに従う一連の
トークンである。BNFで表した場合、これらの規則
は、オプショナルなトークンをブラケットで囲んでいる
(”[”及び”]”)。さらに、モジュールは、キャラ
クタテレスクリプトにおいてパーミットされた種類のコ
メントも含みうる。これらのコメントに対する規定は、
モジュールを支配するシンタクティックルールに含まれ
ると考えられる。
【2354】各々のトークンは1以上のキャラクタであ
る。モジュールは、トークンに従ってキャラクタを連鎖
化することによって、そしてキャラクタテレスクリプト
によってパーミットされた種類のブレークキャラタをト
ークンとの間に挿入することによって得られる。
【2355】キーワード例えば”module”は、ケース
(大文字、小文字)に感知する。アッパーケース(大文
字)キャラクタは、以下に一般にモジュールを記述する
ために用いられ、ローアーケース(小文字)キャラクタ
は、このアペンディックス全体及びセクション7を通じ
てモジュールを作成するために用いられる。
【2356】6.2 詳細な構造 モジュールは次の詳細な構造を表す。
【2357】6.2.1 モジュール(Module) Module モジュールは次の規則に従う。
【2358】Module::=identifier:MODULE= (Interfaces) Interface::=identifier:Interface; [Interfaces] モジュールはそのモジュールを開始させる識別子によっ
て表され、インタフェースを符号化する。これらの各々
は、その識別子が識別子の直前にあるクラスのインタフ
ェースである。
【2359】どのインタフェースも、インタフェースの
特別のクラスのメンバに所属するオペレーション”init
ialize”を規定することができる。さらに何も述べられ
ていなくても、ある定義が内在されている。すなわち、
問題のクラスがミックスインであれば、”initialize:
op ();”であり、さもなければクラスのインタフェース
スーパークラスの中のフレーバの定義である。
【2360】6.2.2 インターフェース(Interfac
e) Interface インタフェースは次の規則に従う。
【2361】 Interface :: = [SEALED | ABSTRACT] INTERFACE "["FormalParameters"]"] [Superclasses] = ( [Definitions]) FormalParameters :: = ParameterGroup[; FormalParamterGroup :: = Identifiers : CLASS Superclasses :: = ( [ClassSpecifications] ) Definitions :: = DefinitionGroup ; [Definitions] DefinitionGroup :: = [Access] [Responder] Identifiers : Definition Access :: = PUBLIC | PRIVATE | SYSTEM Responder :: = INSTANCE | CLASS Identifier :: = identifier [, Identifiers] Definition :: = SEALED | [SEALED | ABSTRACT] Feature インタフェースの符号化はパラメータ化することができ
る。この符号化において、各々の識別子である1以上
の”formal class parameters” が導入され、インタフ
ェースがクラス識別子に要求する多くのプレースにおい
て使用することができる(下記のトークン”ClassSpeci
fier”参照)。インタフェースは、クラス”object”の
識別子がその代わりに用いられたかのようである。同じ
ように定義された公式のクラスパラメータは、その導入
部分においてグループ化される。
【2362】各々識別子によって表されたゼロまたはそ
れ以上のフィーチャはシールされるかまたは定義され
る。同じようにシールされるかまたは定義されたフィー
チャの識別子はグループ化される。第1のそのようなグ
ループに、”Access”または”Responder”が存在しな
い場合、”PRIVATE”または”INSTANCE”はそれぞれそ
こに存在しているものと見做される。”Access”また
は”Responder” がどれかの後のグループに存在しない
場合、前のグループに存在するキーワードは、次のグル
ープに存在すると見做される。
【2363】インタフェースは次の通りである。属性”
classFeatures” または”instanceFeatures”は、それ
ぞれ”CLASS”または”INSTANCE” についてグループに
定義されたフィーチャを含む。属性”isAbstract”
は、”ABSTRACT”が存在している場合にのみ”true”で
ある。属性”sealedClassFeatures”または”sealedIns
tanceFeatures”は、それぞれ”SEALED”、”CLASS”ま
たは”INSTANCE”とグループを成している識別子を含
む。属性”superclasses”は、トークン”Superclasse
s”が存在してれば、このトークン”Superclasses”が
定める識別子であり、さもなければクラス”Object”の
みの識別子である。クラスの属性中の位置は、そのスペ
シファイヤが左から右に移るに従って減少する。属性”
vocabulary”はクリアされる。
【2364】インタフェースは、”SEALED”が存在して
いる場合にのみシールされる。
【2365】6.2.3 フィーチャ Feature フィーチャの定義は次の規則に従う。
【2366】Feature :: = Attribute | Operation Attribute 属性の定義は次の規則に従う。
【2367】Attribute :: = [READONLY] Constraint [THROWS Identifiers] 属性の定義は次の通りである。属性”constraint”は与
えられたコンストレイントである。属性”exceptions”
は、”THROWS”が存在していれば、存在する識別子を含
み、さもなければいかなる識別子も含まない。属性”is
Public”は、属性の定義を含む定義グループのためのキ
ーが”PUBLIC”または”CLASS” である場合にのみ”tr
ue”である。属性”isSet”は”READONLY” が存在しな
い場合にのみ真である。
【2368】属性の定義の上記のモジュール符号化はそ
れが定義する属性の署名とも時に言われる。
【2369】オペレーション オペレーションの定義は次の規則に従う。
【2370】Operation :: = [UNPROTECTED] op ( ArgumentsAttribute) [Constraint] [THROWS Identifiers] 定義オペレーションは次の通りである。属性”argument
s”は示された通りである。属性”exceptions”は、”T
HROWS” が存在してれば存在している識別子であり、さ
もなければ識別子を含まない。しかし、”UNPROTECTE
D”が存在していれば、属性は、クラス”Reference Pro
tected”の識別子をさらに付加的に表す。これは、レス
ポンダを変更するオペレーションがレスポンダの保護さ
れたリファレンスを使用してリクエストされた場合に投
出される。属性”isPublic”は、定義オペレーションを
含む定義グループが”PUBLIC”または”CLASS”(上記
のトークン”Interface”参照)である場合にのみ”tru
e”である。属性”result”は存在していればコンスト
レイントでありさもなければゼロである。
【2371】定義オペレーションの前述したモジュール
の符号化は、定義オペレーションが定義するオペレーシ
ョンの署名としばしば呼ばれる。
【2372】ArgumentsAttribute属性”arguments”は
次の規則に従う。
【2373】 ArgumentsAttribute :: = [Arguments] [・・・」 Arguments :: = ArgumentGroup [; Arguments] ArgumentGroup :: = Identifiers : Constraint ゼロまたはそれ以外のアーギュメントはそれらのものの
コンストレイントによって記述される。各々のそのよう
なアーギュメントは、識別子によって表される。同じよ
うに拘束されるアーギュメントの識別子はグループ分け
される。1以上のアーギュメントグループと省略符号(・
・・) の両方が存在していれば、最後のグループは唯1つ
のアーギュメントを含むものとされるが、ゼロまたはそ
れ以上のアーギュメントを含むものと見做される。
【2374】属性”arguments”は、省略符号(・・・)が存
在していなければ、ゼロまたはそれ以上の記述されたア
ーギュメントに対するコンストレイントのリストであ
り、さもなければゼロである。記述されるアーギュメン
トへのコンストレイントのリスト中の位置は、それらの
ものの識別子が左から右に移動するにつれて増大する。
【2375】6.2.4 コンストレイント Constraint コンストレイントは次の規則に従う。
【2376】Constraint :: = [COPIED | PROTECTED | UNPROTECTED] ClassSpecifier ["|" NIL] コンストレイントは次の通りである。属性”classId”
は、トークン” ClassSpecifier”が定める識別子であ
る。属性”isInstance”は、感嘆符(”!”)がトーク
ン”ClassSpecifier”(下記参照)とともに存在してい
る場合にのみ”true”である。属性”isOptional”
は、”NIL”が存在している場合にのみ”true”であ
る。属性”ofClass”はゼロである。属性”passage”
は、”COPIED”、”PROTECTED”、”UNPROTECTED”また
はこれらのどれもが存在していない時に、”byCop
y”、”byProtectedRef”、”byUnprotectedRef”また
は”byRef”となる。
【2377】ClassSpecifier クラススペシファイヤは次の規則に従う。
【2378】ClassSpecifier :: = identifier [!] [”[" ClassSpecifiers ”]"] ClassSpecifiers :: = ClassSpecifier [, ClassSpecifiers] 識別子は、公式のプラスのパラメータであるかまたはク
ラス”C”の識別子である。後者の場合、”C”のイン
タフェースの符号化”E”がパラメータされた場合にの
み、(”[”及び”]”)の間に、”C”が有する公式
のクラスパラメータと同数の実際のクラスパラメータ
(各々のクラススペシファイヤである)が後続する。”
C”のこの特別の使用は、”E”中の公式のクラスパラ
メータの各々の使用が対応して位置された実際のクラス
パラメータの使用であるかのように行なわれる。
【2379】6.2.5 他の非ターミナル identifier クラス”Identifier”の1つのインスタンスのテキスト
として拘束されたキャラクタ。
【2380】7 プレデファインドモジュール 予め定義されたクラスのインタフェースは、以下に詳細
に示されこのアペンディックスを通じて断片的に示され
るモジュールによって規定される。命令セットの内部フ
ィーチャはモジュールに表れない。
【2381】参照の目的のために用意されたこのセクシ
ョンすなわちセクション7は、このアペンディックスの
他の場所に見られる記述と重複する。
【2382】注:予め定義されたインタフェースの定義
は、ハイテレスクリプトモジュールを形成する。これを
可能にするために、いくつかのローテレスクリプト識別
子は、”_x”が後置されることによって、ハイテレス
クリプトにおいて留保されたワードであるアイデンティ
ファイヤを避けるようにする。
【2383】 Telescript: module=( Agent: abstract interface (Process) = ( private go: unprotected op (ticket: copied Ticket) TicketStub throws PermitViolated, StateImproper, TripException; send:unprotected op (tickets: copied List [Ticket]) TicketStub|Nil thouws PremitViolated, StateImproper, TripException; ); Association: sealed interface [keyClass, valueClass: Class] (Object, Odered) = ( public key: keyClass; value: valueClass; system initialize: unprotected op ( key: keyClass; value: valueClass); ); Attribute: sealed interface (Feature) = ( public constraint: Constraint; isSet: Boolean; system initialize: unprotected op ( constraint: Constraint|Nil; isSet, isPublic: Boolean|Nil; exceptions: set [Identifier!]|Nil); ); Authenticator: abstract interface = (); Bit: sealed interface(Primitive, Ordered) = (); BitString: sealed interface(ConstrainedList [Bit],Executed) = ( public constraint: sealed; system initialize: unprotected op (segments; Object ... /* Bit|protected BitString! */); ); Boolean: sealed interface(Primitive, Ordered) = ( public and, or: op (boolean: Boolean) Boolean; not: op () Boolean; ); CalendarTime: interface = ( public day, dst, hour, minute, month, second, year, zone: Integer|Nil; dayOfWeek, dayOfYear, readonly Integer|Nil; globalize, localize: unprotected op (); normalize: unprotected op () Boolean; ); Cased: abstract interface () = ( public isLower, isUpper: abstract readonly Boolean; makeLower, makeUpper: abstract op () copied Cased; ); Character: sealed interface (Primitive, Cased, Oedered) = (); Citation: interface (object, Odered) = ( public author: Telename|Nil; majorEdition, minorEdition: Integer|Nil; title: Identifier!; system initialize: unprotected op ( title: Identifier!; author: Telename|Nil; majorEdition, minorEdition: Integer|Nil); ); Cited: abstract interface () = ( public citation: readonly protected Citation; system initialize: unprotected op ( title: Identifier!; majorEdition, minorEdition: Integer); ); Class: sealed interface (Object, Cited,interchanged) = ( public convert: sealed op (source: protected Object) copied Object throws ConversionUnavailable; isInstance: sealed op (instance_x: protected Object) Boolean; isMember: sealed op (member: protected Object) Boolean; isSubclass: sealed op (subclass: Class) Boolean; new: sealed op (parameters: Object ...) Object throws ClassAbstract, Exception, ObjectionUnitialized; system initialize: unprotected op () throws FeatureUnavailable; ); ClassDefinition: sealed interface = ( public implementation: Implementation|Nil; interface_x: Interface; majorEdition, minorEdition: Integer; makeClasses: op (definitions: protected ClassDefinition ...) Lexicon [Class] throws ClassException; title: Identifier!; system initialize: unprotected op (title: Identfier!; majorEdition, minorEdition:Interger; interface_x:Interface; implementation: Implementation|Nil); ); ClassException: abstract interface (ProgrammingException) = (); ClassSealed: interface (ClassException)=(); ClassUndefined: interface (ClassException)=(); FeatureRedefined: interface (ClassException) = (); FeatureSealed; interface (ClassException) = (); FeatureUndefined; interface (ClassException) = (); MixinDisallowed: interface (ClassException) = (); SuperclassesInvalid: interface (ClassException) = (); Collection: interface [itemClass: Class] = ( public clear: unprotected op (); examine: op (item: protected itemClass) itemClass|Nil; exclude: unprotected op (item: protected itemClass) itemClass|Nil; include: unprotected op(item: itemClass) throws ItemInvalid; length: readonly Integer; stream; op () copied Stream [itemClass]; system initialize: unprotected op (items: itemClass ...) throws ItemInvalid; ); Collection abstract interface (ProgrammingException) = (); Exception: ItemDuplicated: interface (CollectionException) = (); ItemInvalid: interface (CollectionException) = (); KeyDuplicated: interface (CollectionException) = (); KeyInvalid: interface (CollectionException) = (); ObjectsUnpaired: interface (CollectionException) = (); PositionInvalid: interface (CollectionException) = (); StackDepleted: interface (CollectionException) = (); Constrained: abstract interface () = ( public constraint: readonly protected Constraint; system initialize: unprotected op ( constraint: copied Constraint|Nil); ); Constrained interface [keyClass, valuClass: Class] Dictioncary: (Dictionary [keyClass, valuClass], Constrained)= ( system initialize: unprotected op ( constraint: copied Constraint; keysAndValues: Object ... /* key: keyClass; value: valueClass */) throws keyDuplicated, KeyInvalid, ObjectsUnpaird; ); ConstrainedList: interface [itemClass: Class] (List [itemClass], Constrained) = ( system initialize: unprotected op ( constraint: copied Constraint; items: itemClass ...) throws ItemInvalid; ); ConstrainedSet: interface [itemClass: Class] (Set [itemClass], Constrained) = ( system initialize: unprotected op ( constraint: copied Constraint; items: itemClass ...) throws ItemInvalid; ItemImvalid; ); Constraint: interface = ( public classed: Identifier!; isInstance, isOptional: Boolean; ofClass: readonly Class|Nil; passege: Identifier! throws PassageInvalid; system initialize: unprotected op ( classId, passage: Identifier!|Nil; isOptional, isInstance: Boolean|Nil) throws PassageInvalid; ); Contact: interface = ( public subject: Process|Nil; subjectClass: readonly protected Citation|Nil; subjectName: readonly protected Telename|Nil; subjectNotes: Object|Nil; system initialize: unprotected op ( subject: Process|Nil; subjectNotes: Object|Nil); ); Contacted: abstract interface () = ( private contacts: readonly Set [Contact]; ); Dictionary: interface [keyClass, ValueClass: Class] (Set [Association [keyClass, valueClass]]) = ( public add: unprotected op (key; keyClass; value: valueClass) throws KeyInvalid; drop: unprotected op (key: protected keyClass) valueClass throws KeyInvalid; find: op (value: protected valueClass) keyClass|Nil; get: op (key: protected keyClass) valueClass throws keyInvalid; rekey: unprotected op ( currentkey: protected keyClass; newKey: keyClass) throws keyInvalid; set: unprotected op ( key: protected keyClass; value: valueClass) throws keyInvalid; transpose: unprotected op (key1, key2: protected keyClass) throws keyInvalid; system initialize: unprotected op (keysAndValues: Object ...) /* key: keyClass; value: valueClass */) throws KeyDuplicated, KeyInvalid, ObjectsUnpaired; ); Exception: abstract interface (Objects, Unchanged) = (public throw_x: sealed op (); ); Executed: abstract interface () = ( public catch_x: sealed op (exception: Class) Exception|Nil throws Exception; do_x, loop_x: sealed op () throws Exception; either: sealed op (false_x: Executed; precondition: Boolean) throws Exception; if_x: sealed op (precondition: Boolean) throws Exception; repeat_x: sealed op (repetitions: Integer) throws Exception; while_x: sealed op (precondition: Executed) throws Exception, ResultInvalid, ResultMissing; ); Execution abstract interface (KernelException) = (); EXception: ArgumentInvalid: interface(ExecutionException) =(); ArgumentMissing: interface(ExecutionException) =(); AttributeReadOnly: interface (ExecutionException) =(); ClassUnavailable: interface(ExecutionException) =(); EscalationInvalid: interface(ExecutionException) =(); FeatureUnavailable: interface(ExecutionException) =(); InternalException: interface(ExecutionException) =(); Property Undefined: interface(ExecutionException) =(); ReferenceProtected: interface(ExecutionException) =(); ReferenceVoid: interface(ExecutionException) =(); ResponderMissing: interface(ExecutionException) =(); ResultInvalid: interface(ExecutionException) =(); ResultMissing: interface(ExecutionException) =(); VariableUndefined: interface(ExecutionException) =(); Feature: abstract interface = ( public exceptions: Set [Identifier!]; isPublic: Boolean; system initialize: unprotected op ( isPublic: Boolean|Nil; exception:Set [Identifier!]|Nil); ); Hased: abstract interface() = ( public hash: abstract readonly Interger; ); Indentifier: sealed interface (Primitive, Ordered) = (); Implementation: sealed interface = ( public classMethods, fromMethods, instanceMethods, setMethods, toMethods: Lexicon [Method]; properties: List [Idenntifier!]; superclasses: List [Identifier!]|Nil; vocabulary: Lexicon [Citation]|Nil; system initilize: unprotected op ( superclasses: List [Identifier!]|Nil; vocabulary: Lexicon [Citation]|Nil; properties: List [Identifier!]|Nil; instanceMethods, setMethods, classMethods, formMethods, toMethods: Lexicon [Methods]|Nil); ); Integer: sealed interface (Number) = ( public modulus, quotient: op (divisor: Integer) Interger throws DivisionByZero; ); Interchanged: abstract interface (Unchanged) = ( public digest: abstract readonly protected Object|Nil; ); Interface: sealed interface = ( public classFeatures, instanceFeatures: Lexicon [Feature]; isAbstract: Boolean; sealedClassFeatures, sealedInstanceFeatures: Set [Identifier!]; superclasses: List [Identifier!]; vocabulary: Lexicon [Citation]; system initialize: unprotected op ( superclasses: List [Identifier!]|Nil; vocabulary: Lexicon [Citation]|Nil; instanceFeatures: Lexicon [Feature]|Nil; sealedInstanceFeatures: Set [Identifier!]|Nil; classFeatures: Lexicon [Feature]|Nil; sealedclassFeatures: Set [Identifier!]|Nil; isAbstract: Boolean|Nil); ); Kernel Exception: abstract interface (ProgrammingException) = (); Classabstract:interface (KernelException) = (); ConversionUnavailable: interface (KernelException) = (); CopyUnavailable: interface (KernelException) = (); LoopMissing:interface (KernelException) =(); MakeMissing:interface (KernelException) =(); ObjectUninitialized: interface (KernelException) = (); PassageInvalid: interface (KernelException) = (); SelectorDuplicated: interface (KernelException) = (); Lexicon: interface [valueClass: Class] (ConstrainedDictionary [Identifier, valueClass]) = ( public constraint: sealed; system initialize: unprotected op (keysAndValues: Object ... /* key: Indentifier!; value: valueClass */) throws KeyDuplicated, KeyInvalid, ObjectsUnpaired; ); List: interface [itemClass: Class] (Collection [itemClass], Ordered) =( public add: unprotected op (position: Interger; item: itemClass) throws ItemInvalid, PositionInvalid; drop: unprotected op (position: Integer) itemClass throws positionInvalid; find: op ( initialPosition: Integer; item: protected itemClass) Interger|Nil throws PositionInvalid; get: op (position: Integer) itemClass throws PositionInvalid; reposition: unprotected op (currentPosition, newPosition: Integer) throws PositionInvalid; set: unprotected op (position: Interger; item: itemClass) throws ItemInvalid, PositionInvalid; transpose: unprotected op (position1, position2: Integer) throws PositionInvalid; system initialize: unprotected op (items: itemClass ...); ); Mark: sealed interface (Primitive) = (); Means: abstract interface = (); MeetingException: abstract interface(Exception) = (); MeetingDenied: interface (MeetingException) = (); MeetingDuplicated: interface (MeetingException) = (); MeetingInvalid: interface (MeetingException) = (); PetitiononExpried: interface (MeetingException) = (); MeetingPlace: abstract interface (Place) = ( public meet: unprotected op (petition: copied Petition) Contact throws MeetingException, ProcessNotCurrent, StateImproper; part: unprotected op (contact: Contact) throws MeetingInvalid, ProcessNotCurrent, StateImproper; partAll: unprotected op () throws ProcessNotCurrent, StateImproper; ); Method: sealed interface = ( public procedure: Procedure; variables: List [Identifier!]; system initialize: unprotected op ( procedure: Procedure|Nil; variables: List [Identifier!]|Nil); ); Miscellaneous abstract interface (ProgrammingException) = (); Exception: PatternInvalid: interface (MiscellaneousException) = (); SeedInvalid: interface (MiscellaneousException) = (); Modifier: sealed interface (Primitive) = (); Named: abstract interface () = ( public name: sealed readonly protected Telename; ); Nil: sealed interface (Primitive) = (); Number: abstract interface (Primitive, Ordered =( public abs, negate: abstract op() Number; add, multiply: abstract op (number: Number) Number; ceiling, floor, round, turncate: abstract op () Integer; divide: abstract op (divisor: Number) Number throws DivisionByZero; sybtract: abstract op (subtrahend: Number) Number; ); Object: abstract interface (Referenced) = ( public class: sealed readonly Class; copy: sealed op () copied Object throws CopyUnavailable; isEqual: op (object: protected Object) Boolean; select: sealed op (association: Object ... /* protected Object; Executed */ throws Exception, SelectorDuplicated; size: sealed readonly Integer; system finalize, initialize: unprotected op(); ); Octet: sealed interface (Primitive, Ordered) = (); OctetString: sealed interface (ConstrainedList [Octet], Excuted) = ( public constraint: sealed; system initialize: unprotected op (segments: Object ... /* Octet|protected OctetString! */); ); Operation: sealed interface (Feature) = ( public arguments: List [Constraint] |Nil; result: Constraint|Nil; system initialize: unprotected op( arguments: List [Constraint]|Nil; result: Constraint|Nil; isPublic: Boolean|Nil; exceptions: Set [Identifier]|Nil); ); Ordered: abstract interface () = ( public isAfter, isBefore: abstract op (object: protected Ordered) Boolean; max, min: op (object: Ordered) Ordered; ); Packege: interface (ConstrainedSet [Class], Cited, Interchanged) = ( public costraint: sealed; system initialize: unprotected op ( title: Identifier!; majorEdition, minorEdition: Integer; items: Class ...) throws ItemDuplicated, ProcessNotPeer; ); Pattern: interface (Object, Ordered) = ( public find: op (string: protected String!; position: Integer|Nil) List[Integer]|Nil) throws PositionInvalid; substitute: op ( repetitions: Integer; string: upprotected String!; replacement: protected String!) Integer; system initialize: unprotected op (text: copied String!) throws PatternInvalid; ); Permit: interface (Object, Ordered) = ( public age, authenticity, charges, extent, priority: Integer|Nil; canChange, canCreate, canDeny, canGo, canGrant, canRestart, canSend: Boolean; intersect: op (permit: Permit) Permit; system initialize: unprotected op (age, charges, extent: Integer|Nil); Petition: interface = ( public agentClass: Citation|Nil; agentName: Telname|Nil; maximumWait: Integer|Nil; system initialize: unprotected op ( agentName: Telename|Nil; agentClass: Citation|Nil; maximumWait: Integer|Nil; ); Petitioned: abstract interface () = ( system meeting: unprotected op ( contact: Contact; petition: protected Petition) throws MeetingDenied; parting: unprotected op (contact: Contact); ); Place: abstract interface (Process, Unmoved) = ( public address: sealed readonly protected Teleaddress; publicClasses: sealed readonly Set [Cited]; terminate: sealed unprotected op ( occupant: protected Telename) Boolean throws ProcessNotCurrent, ProcessNotPeer, StateImproper; system entering: unprotected op ( contact: Contact; permit: protected Permit; ticket: protected Ticket|Nil) throws OccupancyDenied; exiting: unprotected op ( contact: Contact; permit: protected Permit; ticket: protected Ticket|Nil); ); Primitive: abstract interface (Object, Excuted, Unchanged) = ( system initialize: unprotected op () throws FeatureUnavailable; ); Primitive abstract interface (ProgrammingException) = (); Exception: DivisionByZero: interface (PrimitiveException) = (); Procedure: sealed interface (Primitive) = (); Process: abstract interface (Object, Named, Uncopied)=( public brand: sealed readonly protected Object throws ProcessNotPeer; localPermit: sealed copied permit throws FeatureUnavailable, PermitVoilated; nativePermit: sealed copied Permit throws FeatureUnavailable, PermitVoilated; permit: sealed readonly copied Permit; throws ProcessNotPeer; regionalPermit: sealed copied Permit throws FeatureuUnavailable, PermitVoilated; private age: sealed readonly Integer; charges: sealed readonly Integer; contacts: sealed readonly Set[Process]; priority: sealed Integer|Nil; privateClasses: sealed readonly Set[Cited]; public charge: sealed op (charges: Integer) throws PermitInadequate, PermitViolated; restrict_x: sealed op ( procedure: Procedure; permit: protected permit) throws Exception, PermitViolated, ProcessNotCurrent; sponsor_x: sealed op ( procedure: Procedure; permit: protected permit) throws Exception, PermitViolated, ProcessNotCurrent; wait: unprotected op (seconds: Integer); system initialize: op ( nativePermit: copied Permit; privateClasses: Set [Cited]|Nil) throws PermitViolated; live: abstract unprotected op (cause: Exception|Nil) throws Exception; restricted: op (permit: Identifier; isRelocated: Boolean) PermitReduced|Nil; ); Process- abstract interface (ProgrammingException) = (); Exception: PermitInadequate: interface (ProcessException) = (); ConditionUnavailable: interface (ProcessException) = (); ConditionUndefined: interface (ProcessException) = (); PermitExhausted: interface (ProcessException) = (); PermitViolated: interface (ProcessException) = (); ProcessNotCurrent: interface (ProcessException) = (); ProcessNotPeer: interface (ProcessException) = (); ResourceUnavailable: interface (ProcessException) = (); StateImproper: interface (ProcessException) = (); Programming abstract interface (Exception) = (); Exception: Qualified sealed interface (Identifier) = (); Identifier: RandomStream: interface (Stream [Integer]) = ( system initialize: unprotected op (seed: Integer) throws SeedInvalid; ); Real: sealed interface (Number) = (); Referenced: abstract interface () = ( public discard: sealed op (); isProtected: sealed readonly Boolean; isSame: sealed op (reference: protected Referenced) Boolean; protect: sealed op () protected Referenced; ref_x: sealed unprotected op (); ); Resource: interface = ( public contition: Indentfier! throws ConditionUnavailable; conditions: readonly protected Set [Identifier!]; use: sealed unprotected op( procedure: Procedure; exclusive: Boolean|Nil; maximumWait: Integer|Nil; conditions: copied Set [Identifier!]|Nil) Boolean throws ConditionUndefined, Exception, ResourceUnavalable; system initialize: unprotected op( condition: Identifier!|Nil; conditions: copied Set [Identifier!]|Nil) throws ConditionUndefined; ); Selector: sealed interface (Primitive) = (); Set: interface [itemClass: Class] (Collection [itemClass], Verified) = ( public difference, intersection, union: unprotected op (set: protected Set [itemClass]); system initialize: unprotected op(items: itemClass ...) throws ItemDuplicated, ItemInvalid; ); Stack: interface [itemClass: Class] (List [itemClass]) = ( public pop: unprotected op () itemClass throws StackDepleted; push: unprotected op (item: itemClass); pushItems: unprotected op ( items: protected List [itemClass]); roll: unprotected op (shifts, items: Integer) throws ArgumentInvalid, StackDepleted; swap: unprotected op () throws StackDepleted; ); Stream: abstract interface [itemClass: Class] = ( public current: abstract readonly itemClass|Nil; isDone: abstract Boolean; next: abstract readonly itemClass|Nil throws ReferenceProtected; ); String: sealed interface (ConstrainedList [Character], Cased, Executed) = ( public constraint: sealed; substring: op (initialPosition, beyondFinalPosition: Integer) copied String throws PositionInvalid; system initialize: unprotected op (segments: Object ... /* Character|protected String! */); ); Teleaddress: interface = ( public location: String!|Nil; provider: OctetString!; routingAdvice: List [OctetString!]; system initialize: unprotected op ( provider: OctetString!|Nil; location: String!|Nil); ); Telename: interface = ( public authority: OctetString!; identity: OctetString!|Nil; system initialize: unprotected op ( authority, identity: OctetString!|Nil); ); Telenumber: interface = ( public coutry, telephone: String!; extension: String!|Nil; system initialize: unprotected op ( countryAndTelephone: String!; extension: String!|Nil); ); Ticket: interface (TicketStub) = ( public desiredWait, maximumWait: Integer|Nil; destinationAddress: Teleaddress|Nil; destinationClass: Citation|Nil; destinationName: Telename|Nil; destinationPermit: Permit|Nil; system initialize: unprotected op ( destinationName: Telename|Nil; destinationAddress: Teleaddress|Nil; destinationClass: Citation|Nil; maximumWait: Integer|Nil; way: Way|Nil; travelNotes: Object|Nil); ); TicketStub: interface = ( public travelNotes: Object|Nil); way: Way|Nil; system initialize: unprotected op ( way: Way|Nil; travelNotes: Object|Nil); ); Time: interface (Object, Ordered, Unchanged) = ( public adjust: op (seconds: Integer) Time; interval: op (subtrahend: Time) Integer; ); TripException: abstract interface (Exception) = ( public ticketStub: sealed TicketStub; system initialize: unprotected op (ticketSub: TicketStub); ); DestinationUnavailable: interface (TripException) = (); DestinationUnknown: interface (TripException) = (); OccupancyDenied: interface (TripException) = (); TicketExpired: interface (TicketException) =(); WayUnvailable: interface (TripException) = (); Unchanged: abstract interface () = (); Unexpected: interface (ExecutionException) = ( Exception: public exception: readonly Exception; system initialize: unprotected op ( exception: Exception); ); Unmoved: abstract interface () = (); Verified: abstract interface () = ( public verify: abstract op () Boolean; ); Way: interface = ( public authenticator: Authenticator|Nil; means: Means|Nil; name: Telename|Nil; system initialize: unprotected op ( name: Telename|Nil; means: Means|Nil; authenticator: Authenticator|Nil); ); ) /*Telescript */ 8 プレデファインドクラスグラフ 以下のダイアグラムは、予め定義されたクラスを含むク
ラスグラフの一部分を示している。あるクラスのイミー
ディエイトサブクラスはその直下にインデントされてい
る。アンダーラインされたクラスは抽象的である。括弧
(”(”及び”)”)はミックスインを囲んでいる。
【2384】オブジェクト(参照される) ・ アソシエーション(順序あり) ・ オーセンティケータ ・ カレンダ時間 ・ サイテイション(順序あり) ・ クラス(引用され、相互変換される) ・ クラス定義 ・ コレクション ・・ リスト(順序あり) ・・・ コンストレインドリスト(コンストレインド) ・・・・ ビットストリング(実行済み) ・・・・ オクテットストリング(実行済み) ・・・・ ストリング(ケースされ、実行される) ・・・ スタック ・・ セット(検査済み) ・・・ コンストレインドセット(コンストレインド) ・・・・ パッケージ(引用され、相互変換される) ・・・ ディクショナリ ・・・・ コンストレインドディクショナリ(コンスト
レインド) ・・・・・ レキシコン ・ コンストレイント ・ コンタクト ・ 例外(変更なし) ・・ Meeting Exception ・・ Programming Exception ・・・ Class Exception ・・・ Collection Exception ・・・ Kernel Exception ・・・・ Execution Exception ・・・・・ Unexpected Exception ・・・ Miscellaneous Exception ・・・ Primitive Exception ・・・ Process Exception ・・ Trip Exception ・ Feature ・・ 属性 ・・ オペレーション ・ インプリメンテーション ・ インタフェース ・ Means ・ 方法 ・ パタン(順序あり) ・ パーミット(順序あり) ・ ペティション ・ Primitive (Executed & Unchanged) ・・ ビット(順序あり) ・・ ブーリアン(順序あり) ・・ キャラクタ(Cased & Ordered) ・・ アイデンティファイヤ(順序あり) ・・・ 有資格識別子 ・・ マーク ・・ モディファイヤ ・・ ゼロ ・・ Number (Ordered) ・・・ 整数 ・・・ 実数 ・・ オクテット(順序あり) ・・ プロジージャ ・・ セレクター ・ Process (Named) ・・ Agent ・・ Place (Unmoved) ・・・ Meeting Place ・ リソース ・ Stream ・・ ランダムストリーム ・ テレアドレス ・ テレネーム ・ テレナンバ ・ チケットスタブ ・・ チケット ・ タイム(順序あり、変更なし) ・ ウェイ Cased Cited Constrained Contacted Executed Hashed Named Ordered Petitioned Referenced Unchanged ・ Interchanged Unmoved Verified アペンディックスB 1. 序文 1.1 構成 1.2 参考文献 2 符号化の概念 2.1 テレパーセル 2.2 オブジェクトエンコーディング 2.2.1 形式 2.2.2 規則 2.2.3 パレット 2.2.4 エンコーディングクラス 2.2.5 エンコーディングアトリビュート 2.3 アトリビュートエンコーディング 2.3.1 形式 2.3.2 規則 2.4 リファレンスエンコーディング 2.4.1 形式 2.4.2 規則 3. エンコーディングスペシフィケーション 3.1 コンバーション 3.2 テレパーセル 3.3 オブジェクトエンコーディング 3.3.1 エグゼキューティドオブジェクト 3.3.2 プレデファインドオブジェクト 3.3.3 ユーザデファインドオブジェクト 3.3.4 プロテクティドオブジェクト 3.3.5 パレット 3.4 アトリビュートエンコーディング 3.4.1 ブーリアン 3.4.2 ダイアルストリング 3.4.3 整数 3.4.4 アイテム 3.4.5 リスト 3.4.6 オクテットストリング 3.4.7 スタック 3.4.8 ストリング 3.5 リファレンスエンコーディング 3.5.1 ゼネラルリファレンス 3.5.2 ボイディドリファレンス 3.5.3 インターチェンジリファレンス 3.5.4 クラスリファレンス 3.5.5 プロシージャリファレンス 4. エンコーディングクラシーズと属性 4.1 コンベンションズ 4.2 エンコーディンググループ 4.2.1 キャッチフレーム 4.2.2 コレクションストリーム 4.2.3 ダイヤルストリング 4.2.4 フレーム 4.2.5 ゴーフレーム 4.2.6 プレデファインドフレーム 4.2.7 プロシージャフレーム 4.2.8 リピートフレーム 4.2.9 レストリクトフレーム 4.2.10 センドフレーム 4.2.11 ユースフレーム 4.2.12 ユースデファインドフレーム 4.2.13 ホワイルフレーム 4.3 エンコーディングアトリビューツ 4.3.1 エージェント 4.3.2 キャッチフレーム 4.3.3 コレクション 4.3.4 コレクションストリーム 4.3.5 ディクショナリ 4.3.6 リスト 4.3.7 パターン 4.3.8 プロシージャフレーム 4.3.9 ランダムストリーム 4.3.10 リピートフレーム 4.3.11 レストリクトフレーム 4.3.12 センドフレーム 4.3.13 スタック 4.3.14 タイム 4.3.15 ユースフレーム 4.3.16 ユースデファインドフレーム 4.3.17 ホワイルフレーム 5.1 コンベンションズ 5.2 ランゲージクラシーズ 5.2.1 エージェント 5.2.2 アソシエーション 5.2.3 アトリビュート 5.2.4 カレンダタイム 5.2.5 サイテイション 5.2.6 クラス 5.2.7 クラスデフィニション 5.2.8 コレクション 5.2.9 コンストレインドディクショナリ 5.2.10 コンストレインドリスト 5.2.11 コンストレインドセット 5.2.12 コンストレイント 5.2.13 コンタクト 5.2.14 ディクショナリ 5.2.15 インプリメーション 5.2.16 インターフェース 5.2.17 レキシコン 5.2.18 リスト 5.2.19 メソッド 5.2.20 ミックスイン 5.2.21 オペレーション 5.2.22 パッケージ 5.2.23 パターン 5.2.24 パーミット 5.2.25 ペティション 5.2.26 ランダムストリート 5.2.27 リソース 5.2.28 セット 5.2.29 スタック 5.2.30 テレアドレス 5.2.31 テレネーム 5.2.32 テレナンバ 5.2.33 チケット 5.2.34 チケットタブ 5.2.35 タイム 5.2.36 トリップエグセプション 5.2.37 アンエクスペクティドエクセプション 5.2.38 ウェイ 5.3 エンコーディングクラシーズ 5.3.1 キャッチフレーム 5.3.2 コレクションストリーム 5.3.3 プレデファインドフレーム 5.3.4 リピートフレーム 5.3.5 レストリクトフレーム 5.3.6. センドフレーム 5.3.7 ユースフレーム 5.3.8 ユースデファレンドフレーム 5.3.9 ホワイルフレーム 1.序文 この開示のアペンデックスAのセクション1は、本発明
の主な要素を紹介し、その説明は引用によってこのアペ
ンディックスの一部とされる。アペンディックスAのセ
クションの1.4.3に示されたコンベンションは、こ
のアペンディックスでも同じように用いられている。
【2385】1.1 構成 このアペンディックスは3つのセクションに分けられ
る。セクション1はこの序である。セクション2は符号
化規則の主なコンセプトを紹介する。このセクション3
は命令セットで用いられているもの以上に、符号化にお
いて用いられている予め定義されたクラス及び属性を定
義する。
【2386】1.2 参考文献 このアペンディックスは、次の別の文書に依存している
[10646] Information technology--Universal Coded Character
Set(UCS), ISO/IEC DIS10646, International Organiza
tion for Standardization and InternationalElectrot
echnical Commission, 1990. [Telescript] この開示のアペンディックスA。
【2387】[Unicode] The Unicode Standard: orldwide Character Encoding,
Volume 1, Version 1.0, The Unicode Consortium, Ad
dison-Wesley, 1991. 2 符号化の概念 テレパーセルはこのアペンディックスのこのセクション
において構想される。サブセクションは、オブジェク
ト、属性及び参照の符号化ではなくテレパーセルに向け
られる。
【2388】2.1 テレパーセル(Teleparcel) ”テレパーセル(teleparcel)”は、テレパーセルの”
サブジェクト (subject)”であるオブジェクト、サブ
ジェクトの成分及びそれらのものの成分の全てを回帰的
に符号化する。サブジェクトまたはコンポネーントのク
ラスは、予め定義されていてもユーザによって定義され
ていてもよい。
【2389】注:テレパーセルは、その標準的な形式に
おいてのテレスクリプトオブジェクトである。
【2390】注:テレパーセルは、オブジェクトを2つ
のエンジンの間に搬送する手段である。ソースエンジン
は、オブジェクトをテレパーセルに変換しそれを目的点
のエンジンに搬送する。目的点のエンジンは、テレパー
セルをオブジェクトに変換することによって、ソースに
おいて消費されたものと同じオブジェクトを目的点にお
いて作り出す。
【2391】注:テレパーセルのサブジェクトは、典型
的には排他的ではなくてもエージェントである。このよ
うな場合、テレパーセルは、エージェントと、エージェ
ントが所有する全てのオブジェクトと、エージェントの
現在の実行状態を形成するものを含めて包括する。
【2392】2.2 オブジェクトエンコーディング
(Object Encoding) ”オブジェクトエンコーディング(object encodin
g)” はオブジェクトとそのオブジェクトへの参照を符
号化する。
【2393】2.2.1 形式 オブジェクトは、以下の形式の内のどれか1つを取る。
【2394】Executed ”エグゼキューティドオブジェクトエンコーディング
(executed object encoding)”は実行されるオブジェ
クトを符号化する。
【2395】Predefined ”プリディファインドオブジェクトエンコーディング
(predefined object encoding)”は、そのクアスが予
め定義された実行されていないオブジェクトを符号化す
る。
【2396】User-defined ”ユーザーディファインドオブジェクトエンコーディン
グ(user-defined object encoding)”は、そのクアス
がユーザー定義されるオブジェクトを符号化する。
【2397】Protected ”プロテクティッドオブジェクトエンコーディング(pr
otected object encoding)”は、任意のオブジェクト
を符号化する。
【2398】オブジェクトの符号化は、そのオブジェク
トへの参照も符号化する。参照は、オブジェクトが参考
されてないかまたはオブジェクトの符号化形式が保護さ
れている場合にのみ保護される。
【2399】2.2.2 規則 あるオブジェクト及び参照に対するオブジェクトの符号
化の形式は、以下の規則に従って選択されるものとす
る。これらの規則はここで示した順序で適用される。
【2400】1.参照が保護され、オブジェクトが変更
されない場合に、プロテクティッドオブジェクトエンコ
ーディングが選択される。
【2401】2.オブジェクトが実行される場合、実行
されるオブジェクトの符号化が選択される。
【2402】3.オブジェクトのクラスが予め定義され
ているならば、予め定義されたオブジェクトの符号化が
選択される。
【2403】4.(その他の場合には)ユーザによって
定義されたオブジェクトの符号化が選択される。
【2404】2.2.3 パレット オブジェクトの符号化は、オブジェクトの符号化に含め
ることを支配する予め定義された属性及び規則のセット
である”エンコーディングパレット”に依存することが
できる。
【2405】予め定義されたオブジェクトまたはユーザ
によって定義されたオブジェクトの符号化は、符号化さ
れたオブジェクト”O”が1つの例である予め定義され
たクラスによって定められた”1次”パレットに依存す
る。あるオブジェクトは、オブジェクトが予め定義され
たクラスのインプリメンテーションメンバであるがその
予め定義されたサブクラスのインプリメンテーションメ
ンバではない場合にのみ、その予め定義されたクラス
の”0”である。
【2406】ユーザによって定義されたオブジェクトの
符号化は、”O”が1つの例である予め定義されたクラ
スのインスタンスが引用も、制約もまた名前付けもされ
ていないのに、”0”が引用され制約されまた名前付け
されている場合にのみ、”二次”パレット(このアペン
ディックスのセクション5.2.20に定める)に依存
する。
【2407】あるパレットにおいて各々の予め定義され
た属性は、命令的または恣意的と表示される。”命令的
(optional)”属性は、パレットに依存する符号化にお
いて表され、”恣意的な(mandatory)”属性は表現さ
れてもよいが必ずしもその必要はない。符号化の目的の
ためにある数を各々の恣意的な属性に割り当てる。
【2408】注:いかなるオブジェクトもミックスイン
ではない。
【2409】2.2.4 エンコーディングクラス(En
coding Classses) エンコーディングパレットは、このアペンディックスの
セクション4.2に記述されたように符号化クラスを容
認する。”符号化クラス(encoding class)”は、−−
この開示のアペンディックスAに記述されたクラスであ
る”言語クラス(language classes)”を超えた−−予
め定義されたクラスであり、符号化の目的のために命令
セットを指示するが、命令セットの一部ではない。
【2410】注:符号化クラスの唯1つの目的は、符号
化特性を定義することである。このクラスはイニシャラ
イゼーションパラメータ、オペレーション、アダプテー
ションまたは変更を持たない。
【2411】2.2.5 エンコーディングアトリビュ
ート(Encoding Attributes) 符号化パレットは、このアペンディックスのセクション
4.3に記述された符号化属性を容認する。”符号化属
性(encoding attribute)”は、−−この開示のアペン
ディックスAに記述された”言語属性(language attri
butes) ”を超えた−−予め定義された属性であり、符
号化目的のための命令セットを指示するが、命令セット
の一部分ではない。各々の符号化属性は、システムイン
スタンス属性である。
【2412】注:符号化属性は、ユーザが定義したクラ
スのインタフェースが同一の識別子を属性に与えること
を排除しない。
【2413】2.3 アトリビュートエンコーディング ”属性の符号化(attribute encoding)”は予め定義さ
れた属性とこの属性の参照を符号化する。
【2414】2.3.1 形式 属性の符号化は次の形式のいずれかを取る。
【2415】Boolean ”ブーリアン属性符号化(boolean attribute encodin
g)”はクラス”ブーリアン(Boolean)”のインスタン
スを符号化する。
【2416】Dial String ”ダイアルストリングアトリビュートエンコーディング
(dial string attribute encoding)”はクラス”ダイ
アルストリング(Dial String)”のインスタンスを符
号化する。
【2417】Integer ”インテジャアトリビュートエンコーディング(intege
r attribute encoding)”はクラス”インテジャ(Inte
ger)”の1つの例を符号化する。
【2418】Item ”アイテム属性符号化(Item attribute encoding)”
は、オブジェクトまたはオブジェクトへの参照を符号化
する。
【2419】List ”リストアトリビュートエンコーディング(list attri
bute encoding)”はクラス”リスト(List)”のイン
スタンスを符号化する。
【2420】Octet String ”オクテットストリングアトリビュートエンコーディン
グ(octet string attribute encoding)”はクラス”
オクテットストリング(Octet String)”の1つの例を
符号化する。
【2421】Stack ”スタックアトリビュートエンコーディング(stack st
tribute encoding)”はクラス”スタック(Stack)”
の1つの例を符号化する。
【2422】String ”ストリングアトリビュートエンコーディング(string
attribute encoding)”はクラス”ストリング(Strin
g)”の1つのインスタンスを符号化する。
【2423】2.3.2 規則 属性の属性符号化の形式は、次の規則に従って選択さ
れ、これらの規則は次の順序で適用される。
【2424】1.アイテム属性以外の属性の符号化は、
その属性が必要なクラスの1つのインスタンスである場
合に選択される。
【2425】2.(他の場合には)アイテム属性符号化
が選択される。
【2426】2.4 リファレンスエンコーディング
(Reference Encoding ) ”リファレンスエンコーディング(reference encodin
g)”はオブジェクトの符号化によって符号化されるオ
ブジェクトへのリファレンスを符号化する。
【2427】2.4.1 形式 リファレンスのエンコーディングは以下の形式の1つを
取る。
【2428】一般化 ”ジェネラルリファレンスエンコーディング(general
reference encoding)”は、リファレンスの符号化の開
始からオブジェクトの符号化の開始までオクテットで表
した”オフセット(offset)”によってオブジェクトを
表す(プロテクトされるかまたはプロテクトされない)
リファレンスを符号化する。オフセットは、オブジェク
トの符号化がリファレンスの符号化の後になるか先にな
るかに従ってそれぞれ正または負となる。オフセットは
負とし、正のオフセットは留保される。
【2429】Voided ”ボイデェッドリファレンスエンコーディング(voided
reference encoding)”は、ボイドされるリファレン
スを符号化する。
【2430】Interchange ”インターチェンジリファレンスエンコーディング(in
terchange referenceencoding)”は、オブジェクトの
ダイジェストと、オブジェクトが1つの例であるインス
タンスへのサイテイションによって、相互変換されたオ
ブジェクトを表すリファレンスを符号化する。
【2431】Class ”クラスリファレンスエンコーディング(class refere
nce encoding)”は、クラスが予め定義されていれば、
クラスの数値コードによってまたクラスがユーザによっ
て定義されていればクラスへのサイテイションによっ
て、クラスを表すリファレンスを符号化する。
【2432】Procedure ”プロシージャリファレンスエンコーディング(proced
ure reference encoding)”は、ユーザによって定義さ
れたクラスのインプリメンテーションにあるプロシージ
ャへのリファレンスを符号化する。プロシージャリファ
レンスの符号化は予め定義されたフレームFの”プロシ
ージャ(procedure)” 属性のみをエンコードするため
に用いられるべきである。プロシージャリファレンスの
符号化は、”F”が1つのアイテムである”フレーム
(frames)”の”F”の直下において、プロシージャフ
レーム”B”の”プロシージャ(procedure)”の属性
中のプロシージャの位置を、整数によって表現する。こ
の整数は、整数が1に等しいかこれより大きい場合に、
位置自身でありまたは、他の場合には、非減数である位
置と減数であるFの属性”位置(position)”との算術
差に1を足した値に等しい。
【2433】2.4.2 規則 あるオブジェクトへのリファレンスのリファレンス符号
化の形式は、次のルールに従って選択されるものとし、
これらの規則は次に示す順序で適用されるものとする。
【2434】1.ボイドされたリファレンスの符号化は
リファレンスがボイドにされた場合選択されねばならな
い。
【2435】2.オブジェクトが予め定義されたクラス
である場合、クラスリファレンス符号化を選択しなけれ
ばならない。
【2436】1.リファレンスがボイドされた場合、ボ
イドされたリファレンスエンコーディングを選択する。
【2437】2.オブジェクトは予め定義されたクラス
である場合、クラスリファレンス符号化を選択する。
【2438】3.オブジェクトがテレパーセルの目的点
に存在していると推定されるのではなくて、テレパーセ
ルの一部分として符号化されている場合、一般的なリフ
ァレンス符号化を選択する。
【2439】4.オブジェクトがユーザによって定義さ
れたクラスであるかまたはユーザによって定義されたク
ラスインプリメンテーションのプロシージャである場合
それぞれクラスリファレンス符号化かまたはプロシージ
ャリファレンス符号化を選択する。
【2440】5.(その他の場合は)相互変換リファレ
ンス符号化を選択する。
【2441】注:オブジェクトが、テレパーセルの目的
点に存在していると推定されるのではなく、テレパーセ
ルの一部分として符号化されている場合にのみ、規則3
が適用される。
【2442】3 エンコーディングスペシフィケーショ
ン(ENCODING SPECIFICATIONS) テレパーセルはこのアペンディックスのこのセクション
において定義される。サブセクションは、テレパーセ
ル、オブジェクト、属性及びリファレンス符号化に向け
られる。
【2443】3.1 コンバージョン テレパーセルはその各々がゼロまたはそれ以上のオクテ
ットである一連のトークンである。テレパーセルはトー
クンを連鎖化することによって得られたオクテットスト
リングである。
【2444】テレパーセルは、下記のシンタクティック
ルール及び付随するセマンティックルールに従う。BNF
(Backus-Naur又はBackus normal form)に与えられた規
則は、任意のトークンを括弧(”[”及び”]”)によ
って囲む。
【2445】表B.1は、オブジェクト及びリファレン
ス符号化の形式にコードを割り当てる。これらのコード
は下記のセクションにおいてタグとして用いられる。
【2446】
【表28】 注:下記のセクションは、この開示のアペンディックス
Aのセクション5.1及び5.3のコンベンションに従
う。
【2447】3.2 テレパーセル(Teleparcel) テレパーセルは次の規則に従う。
【2448】Teleparcel ::= unsignedNumber unsigned
Number Object 第1及び第2の”アンサインドナンバ(unsignedNumbe
r)”は、テレパーセルがそれに準拠する符号化規則の
メイジャーバージョン及びマイナーバージョンの数をそ
れぞれ符号化する。”オブジェクト(Object)”は、テ
レパーセルのサブジェクト、サブジェクトのコンポーネ
ントとを符号化する。
【2449】注:このアペンディックスが規定する符号
化規則のメージャーバージョン及びマイナーバージョン
の数はそれぞれ0及び5である。
【2450】3.3 オブジェクトエンコーディング
(Object Encoding) オブジェクト符号化は定義された形式が反映する次の規
則に従う。
【2451】Object ::= ExecutedObject | Pred
efinedObject | UserDefinedObject | ProtectedObject 3.3.1 エグゼキューティドオブジェクト(Execut
ed Object) 実行されるオブジェクトの符号化は、この開示のアペン
ディックスAのセクション5.1及び5.3に述べた規
則に従う。
【2452】”エグゼキューティッドオブジェクト(Ex
ecutedObject)”の第1トークンであるタグは、実行さ
れたオブジェクトを特定し、クラスのコードを2回符号
化することによってオブジェクトのクラスを明らかにす
る。
【2453】注:実行されるオブジェクトは、2進テレ
スクリプトと同様に符号化される。
【2454】3.3.2 プレデファインドオブジェク
ト(Predefined Object) 予め定義されたオブジェクトの符号化は次の規則に従
う。
【2455】PredefinedObject ::= tag Palette タグがオブジェクトを予め定義されたものとして特定
し、クラスのコードを2回符号化することによってオブ
ジェクトのクラスを明らかにする。”パレット(Palett
e)”は、そのオブジェクトが1つの例であるクラスに
ついて、1次符号化パレットに依存する。
【2456】3.3.3 ユーザデファインドオブジェ
クト(User-defined Object) ユーザによって定義されたオブジェクトの符号化は次の
規則に従う。
【2457】UserDefinedObjct ::= [Palette Mixins]
tag Item Item Palette Mixins ::= tag 第1の”タグ(tag)”はクラスのコードの2倍に1を
足したコードを符号化することによって、オブジェクト
が1つの例であるクラスを明らかにする。
【2458】第1の”アイテム(Item)”は、オブジェ
クトのクラスを符号化し第2の”アイテム(Item)”は
そのクラスのユーザによって定義されたインプリメンテ
ーションスーパークラスにその標準的な順序でアイテム
を対応しているリストを符号化する。各々のアイテムそ
れ自身はリスト、すなわち、クラスインプリメンテーシ
ョンの属性”プロパティ(properties)”の識別子の順
序によるアイテムが対応するクラスに固有のインスタン
スのプロパティのリストである。最後の1以上のプロパ
ティは省略できその場合はゼロが意味される。
【2459】第1の”パレット(Palette)”は、2次
符号化パレットに依存し、”ミキシン(Mixins)”が存
在する場合にのみ存在する。第2の”パレット(Palett
e)”は、オブジェクトがその一例であるクラスについ
て1次パレットに依存する。
【2460】3.3.4 プロテクティドオブジェクト
(Protected Object) プロテクトされるオブジェクトの符号化は次の規則に従
う。
【2461】 ProtectedObject ::= tag ProtectedObjectItself ProtectedObjectItself ::= ExecutedObject | PredefinedObject | UserDefinedObject ”タグ(tag)”は、プロテクトされるリファレンスを
特定する。”ExecutedObject”、”PredefinedObject”
または”UserDefinedObject”はこのオブジェクトを符
号化する。
【2462】3.3.5 パレット(Palette) 符号化パレット符号化は次の規則に従う。
【2463】 Palette ::= Attributes [Mask Attributes] Mask ::= unsignedNumber Attributes ::= [Attribute Attributes] 第1の”パレット(palette)”は、パレットを定義す
る表にリストされている順序で、パレットが不可欠と宣
言する0以上の属性を符号化する。表は、”アトリビュ
ート(Attributes:以下、単にアトリビュートとだけ記
す)”の発生回数を固定させる。
【2464】パレットはどれかの属性を任意であると宣
言した場合にのみ、”Mask”及び第2の”アトリビュー
ト”が存在する。第2の”アトリビュート”は、ゼロま
たはそれ以上の任意の属性を符号化する。”Mask”
は、”アトリビュート”の発生回数を固定する。
【2465】”Mask”は、どの任意の属性が第2の”ア
トリビュート”を符号化するかを示す整数を符号化す
る。パレットの表は、範囲[1,n]中の任意の属性の
番号を定める。第2の”アトリビュート”は、整数の表
示2i-1 を加重した値は1になる場合にのみ番号”i”
が属性の符号化を含む。実際に符号化された属性は、”
i”の増大する順序で、第2の”アトリビュート”中に
表れる。”n”によって論理的に必要とされるが”Mas
k”から物理的に不在であるビットはゼロと見なされ
る。物理的に存在しているが論理的に必要とされないビ
ットは無視される。
【2466】3.4 アトリビュートエンコーディング
(Attribute Encoding) 属性符号化は規定された形式を反映する次の規則に従
う。
【2467】Attribute ::= Boolean | DialStri
ng |Integer|Item | List | OctetString |String 3.4.1 ブーリアン(Boolean) ブールアン属性の符号化は次の規則に従う。
【2468】Boolean:: = empty ブーリアンが”true”の時にのみブーリアン属性符号化
が存在する。
【2469】注:符号化の存在は符号化を網羅するマス
クによって示される。
【2470】注:従ってパレットのブーリアン属性は必
然的に任意である。
【2471】3.4.2 ダイアルストリング(Dial S
tring) ダイアルストリング符号化は次の規則に従う。
【2472】DialString ::= OctetString ”OctetString”は、ダイヤルストリング”D”によっ
て決定し、同じ長さであるニブルのリスト”L”によっ
て決定する、オクテットストリング”O”をエンコード
する。
【2473】”L”のニブルは、同じ位置にある”D”
のキャラクタによって定められた範囲[0,14]中の
整数を符号なしで符号化する。数(”0”−”9”)は
0−9を、ダッシュ(”−”)は13を定め、スペース
(” ”)は14を定める。位置2i−1または2iに
ある”L”のニブル(”i”は少なくとも1である)
は、位置”i”の”O”のオクテットのそれぞれビット
7−3または3−0を占める。ビット7または3はそれ
ぞれMSBであり、ビット4または0はそれぞれLSB
である。”D”の長さ従って”L”が奇数である場合に
のみ、”O”の最後のオクテットのビット3−0は同じ
仕方で15を符号化する。
【2474】注:従ってダイヤルストリングは、2進化
十進数(BCD)の形で符号化される。
【2475】3.4.3 整数(Integer) 整数属性符号化は次の規則に従う。
【2476】Integer ::= signedNumber ”サインドナンバ(signedNumber)”は整数を符号化す
る。
【2477】注:これは整数の2進テレスクリプト符号
化であるが、例外として、符号化を整数の一般的な符号
化として特定する最初のトークンは存在しない。
【2478】3.4.4 アイテム(Item) アイテム属性符号化は次の規則に従う。
【2479】Item ::= Objct | Reference ”オブジェクト(Object)”または”リファレンス(Re
ference)”は、それぞれオブジェクトまたはオブジェ
クトへのリファレンスを符号化する。
【2480】3.4.5 リスト(List) リスト属性符号化は次の規則に従う。
【2481】List ::= unsignedNumber Items Items ::= [Item Items] ”アンサインドナンバ(unsignedNumber)”及び”アイ
テム(Items)”は一緒にリストを符号化する。前者は
後者の”アイテム(Item)” の発生回数を符号化し、
後者は増大する位置の順序でリスト中のアイテムを符号
化する。
【2482】3.4.6 オクテットストリング(Octe
t String) オクテットストリング属性符号化は次の規則に従う。
【2483】OctetStrin ::= unsignedNumber Octets ”アンサインドナンバ(unsignedNumber)”及び”オク
テット(Octets)”は、この開示のアペンディックスA
のセクション5.3.2に規定されたオクテットストリ
ングを符号化する。
【2484】注:これはオクテットストリングの2進テ
レスクリプト符号化であるが例外として、オクテットス
トリングの符号化を特定する最初のトークンが存在しな
い。
【2485】3.4.7 スタック(Stack) スタック属性符号化はリスト属性符号化と同一の規則に
従うが、例外として、スタックのアイテムは位置の減少
する順序で符号化される。
【2486】3.4.8 ストリング(String) ストリング属性符号化は次の規則に従う。
【2487】 String ::= unsignedNumber characters ”アンサインドナンバ(unsignedNumber)”及び”キャ
ラクターズ(characters)”は、この開示のアペンディ
ックスAのセクション5.3.2に規定されたストリン
グを一緒に符号化する。
【2488】注:これはストリングの2進テレスクリプ
ト符号化であるが、例外として、符号化をストリングの
ものとして特定する最初のトークンが存在しない。
【2489】3.5 リファレンスエンコーディング
(Reference Encoding) リファレンス符号化は、規定された形式を反映する次の
規則に従う。
【2490】 3.5.1 ゼネラルリファレンス(General Referenc
e) 一般的なリファレンスの符号化は次の規則に従う。プロ
テクトされないリファレンスに対してはある符号化が定
義され、プロテクトされるリファレンスについては別の
符号化が定義される。
【2491】 GeneralReference ::= UnprotectedReference | ProtectedReference UnprotectedReference ::= tag signdNumber ProtectedReference ::= tag signedNumber ”タグ(tag)”は、一般的なリファレンスをそのよう
なものとして特定し、またプロテクトされないものもし
くはプロテクトされるものとして特定する。”サインド
ナンバ(signedNumber)”は、リファレンスの符号化か
らリファレンスされるオブジェクト符号化までオフセッ
トを符号化する。
【2492】3.5.2 ボイディドリファレンス(Vo
ided Reference) ボイドされたリファレンスの符号化は次の規則に従う。
【2493】VoidReference ::= tag ”タグ”は、ボイドされたリファレンスをそのようなも
のとして特定する。
【2494】3.5.3 インターチェンジリファレン
ス(Interchange Reference) 相互変換リファレンス符号化は次の規則に従う。
【2495】 InterchangeReference ::= tag Item Item ”タグ(tag)”は、相互変換リファレンスをそのよう
なものとして特定する。第1の”アイテム(Item)”
は、相互変換されたクラスへのサイテイションを符号化
する。第2の”アイテム(Item)”は、相互変換された
オブジェクトのダイジェストを符号化する。
【2496】3.5.4 クラスリファレンス(Class
Reference) クラスリファレンス符号化は次の規則に従う。予め定義
されたクラスについてはある符号化が定義され、ユーザ
によって定義されるクラスに対しては符号化が定義され
る。
【2497】 ClassReference ::= PredefindClassReference | UserDefinedClassReference PredefinedClassReference ::= tag unsignedNumber UserDefinedClassReference ::= tag Item ”タグ(tag)”は、クラスリファレンスをそのような
ものとして特定し、またクラスを予め定義されたものも
しくはユーザによって定義されたものとして特定する。
クラスが予め定義されていた場合、”アンサインドナン
バ(unsignedNumber)”は、この開示のアペンデックス
Aのセクション5.4.1またはこのアペンディックス
の下記の表B.2によるクラスに割り当てられるコード
に符号化される。
【2498】クラスがユーザによって定義されていれ
ば、”アイテム(Item)”はクラスのサイテイションを
符号化する。
【2499】3.5.5 プロシージャリファレンス
(Procedure Reference) プロシージャリファレンス符号化は次の規則に従う。
【2500】 ProcedureReference ::= tag signedNumber ”タグ(tag)”は、プロシージャのリファレンスをそ
のようなものとして特定する。”サインドナンバ(sign
edNumber)”は先に述べたようにプロシージャの位置を
特定する。
【2501】4 エンコーディングクラシーズと属性
(ENCODING CLASS AND ATTRIBUTES) テレスクリプトの符号化クラス及び属性はこのアペンデ
ィックスのこのセクションに定義されている。あるサブ
セクションは第1にクラスの符号化にそして次に属性の
符号化にそれぞれ向けられる。
【2502】4.1 コンベンションズ(Convention
s) Encoding Classes 符号化クラスは1つのグループを形成する。このグルー
プを規定する以下のセクションは、この開示のアペンデ
ィックスAのセクション3.2のコンベンションに従
う。
【2503】表B.2は、符号化クラスへの識別子のコ
ードを割り当てる。
【2504】
【表29】 注:クラス”フレーム(Frame)”及び”プロシージャ
フレーム(ProcedureFrame)”は、抽象的であるためコ
ードを必要としない。クラス”ダイヤルストリング(Di
al String)”はそのインスタンスがそれ自身の符号化
を持つためコードを必要としない。
【2505】注:符号化クラスの唯1つの目的が符号化
属性を規定することにあるので、このアペンディックス
は、アペンディックスAがそのようなセクション例えば
セクション4.2を各々の言語クラスに向けているにも
かかわらず、各々の符号化クラスに大きな部分を割いて
いない。
【2506】Encoding Attributes 符号化属性はある言語及び符号化クラスに固有である。
符号化属性を定義する以下のセクションは、そのような
属性がそれに対して固有である各々の予め定義されたク
ラスに1つのサブセクションを割いている。これらのク
ラスはアルファベット順序と考えられる。符号化属性の
定義は、この開示のアペンディックスAのセクション
4.1に定めたコンベンションに従う。
【2507】注:識別子のコード..... 識別子のコードは、符号化属性に割り当てられる必要は
ない。
【2508】4.2 エンコーディンググループ(Enco
ding Group) オブジェクト(参照される) ・ コレクション ・・ リスト(順序付けされる) ・・・ コンストレインドリスト(コンストレインド) ・・・・ ストリング(ケースド、実行される) ・・・・・ Dial String ・ Frame ・・ Procedure Frame ・・・ Predefined Frame ・・・・ Catch Frame ・・・・ Repeat Frame ・・・・ Restrict Frame ・・・・ Use Frame ・・・・ While Frame ・・・ User-defined Frame ・・ Go Frame ・・・ Send Frame ・ Stream ・・Collection Stream 4.2.1 キャッチフレーム(Catch Frame) Attributes exception ”キャッチフレーム(catch frame)”は、そのサブジ
ェクトメソッドが”キャッチ(catch)”の方法であ
り、その”プロシージャ(procedure)”の属性はオペ
レーションのレスポンダである、予め規定されたフレー
ムである。
【2509】キャッチフレームの固有の属性は、オペレ
ーションのアーギュメントであるクラスである(属性”
エクセプション(exception)”)。
【2510】4.2.2 コレクションストリーム(Co
llection Stream) Attributes position source ”コレクションストリーム(collection stream)”
は、そのアイテムがコレクションのアイテムであるスト
リームである。
【2511】コレクションストリームの固有の属性は、
ストリングのソース(属性”ソース(source)”)及び
ストリングの現在の位置(属性”ポジション(positio
n)”)である。”ソース(source)”は、そのアイテ
ムがコレクションストリームによって生ずるコレクショ
ンである。”カレントポジション(current positio
n)”は、コレクションストリームのソースを符号化す
る属性”アイテム(items)”中の位置である。
【2512】コレクションストリームは、ストリームの
現在の位置においてそのアイテムを最後に作り出し、現
在の位置の前方の位置(複数)においてなんらかのアイ
テムをすでに作り出し、そして現在の位置の後方の位置
(複数)においてさらに別のアイテムをこれから作り出
す。
【2513】注:コレクションストリームは、”ストリ
ーム(stream)”オペレーションがコレクションによっ
て遂行された時のその”ストリーム(stream)”オペレ
ーションの結果である。
【2514】4.2.3 ダイヤルストリング(Dial S
tring) ”ダイヤルストリング(dial string)”は、その各々
のアイテムが数字(”0”−”9”)、ハイフン(”
−”)またはスペース(” ”)であるストリングであ
る。
【2515】注:ダイヤルストリングはテレナンバにお
いて用いられる。
【2516】4.2.4 フレーム(Frame) ”フレーム(frame)”は、予め定義されるかまたはユ
ーザによって定義された方法、フレームの”サブジェク
トメソッド(subject method)”の遂行の現在の状態を
記録するオブジェクトである。
【2517】4.2.5 ゴーフレーム(Go Frame) ”ゴーフレーム(go frame)”はトリップを行なうこと
を課するフレームである。方法は、オペレーション”g
o”または”send”のための予め定められた方法であ
り、前者のオペレーションは、このクラスのあるインス
タンスの場合であり、後者のオペレーションは、このク
ラスのサブクラスのインスタンスの場合である。
【2518】4.2.6 プレデファインドフレーム
(Predefined Frame) ”プレディファインドフレーム(predefined frame)”
は、そのサブジェクトメソッドが予め定義されており、
従ってそのプロシージャがその方法ではないプロシージ
ャフレームである。このクラスのあるインスタンスのサ
ブジェクトメソッドは、オペレーショオン”do”、”ei
ther”、”if”、”loop”または”select”のための方
法である。
【2519】注:前記のオペレーションの内のどれが適
用されるかは、その実行によってオペレーションがリク
エストされた識別子を吟味することによって定められ
る。
【2520】4.2.7 プロシージャフレーム(Proc
edure Frame) Attributes position procedure ”プロシージャフレーム(procedure frame)”は、プ
ロシージャの遂行を課するフレームである。
【2521】プロシージャフレームの固有の属性は、遂
行されているプロシージャ(属性”プロシージャ(proc
edure)”)と、プロシージャの現在の位置(属性”位
置(position)”) である。プロシージャの”カレン
トポジション(current posittion)”は、エンジンの
現在実行中のアイテムの現在の位置である。
【2522】注:プロシージャはサブジェクトプロシー
ジャの属性”プロシージャ(procedure)”であるか、
その方法がインプリメントするフィーチャのレスポンダ
であるか、またはフィーチャのアーギュメントである。
【2523】4.2.8 リピートフレーム(Repeat F
rame) Attributes repetitions repetitionsSoFar ”リピートフレーム(repeate frame)”は、そのサブ
ジェクトメソッドがオペレーション”リピート(repeat
e)”の方法であり、その属性”プロシージャ(procedu
re)”がそのオペレーションのレスポンダである、予め
規定されたフレームである。
【2524】リピートフレームの固有の属性は、開始さ
れた現在の遂行(属性”レピティションズソーファ(re
petitionsSoFar)”)、及び最初にリクエストされた数
(属性”レピティションズ(repetitions)”)を含む
フレームの属性”プロシージャ(procedure)”の遂行
の数である。
【2525】4.2.9 レストリクトフレーム(Rest
rict Frame) Attributes permit ”レストリクトフレーム(restrict frame)”は、その
サブジェクトメソッドがオペレーション”restrict”の
ための方法であり、その属性”プロシージャ(procedur
e)”がオペレーションのアーギュメントである予め定
義されたフレームである。
【2526】レストリクトフレームの固有の属性は、サ
ブジェクトメソッドのエンジンによる遂行の開始時にサ
ブジェクトが持ったパーミット(属性”permit”)であ
る。
【2527】4.2.10 センドフレーム(Second F
rame) Attributes tickets ”センドフレーム”は、そのサブジェクトメソッドがオ
ペレーション”send”のための予め定義された方法であ
るゴーフレームである。
【2528】センドフレームの固有の属性は、最初にオ
ペレーションのアーギュメントにあった1またはそれ以
上のチケット(属性”tickets”)を含む。
【2529】4.2.11 ユースフレーム(Use Fram
e) Attributes resource ”ユーズフレーム(use frame)”は、そのサブジェク
トメソッドがオペレーション”ユース(use)”の方法
であり、その属性”プロシージャ(procedure)”がオ
ペレーションのアーギュメントの1つである予め定義さ
れたフレームである。
【2530】ユーズフレームの固有の属性は、オペレー
ションのレスポンダ(属性”resource”)である。
【2531】4.2.12 ユースデファインドフレー
ム(User-defined frame)Attributes responder stack variables ”ユーザディファインドフレーム(user-defined fram
e)”は、そのプロシージャがフレームのサブジェクト
メソッドのプロシージャであるプロシージャフレームで
ある。サブジェクトメソッドはユーザによって定義さ
れ、必然的に、インプリメンテーションの属性”インス
タンスメソッズ(instanceMethods)”または”セット
メソッズ(setMethods)”の値である。 ユーザによっ
て定義されたフレームの固有の属性は、その方法のレス
ポンダ(属性”responder”)、スタック(属性”stac
k”)、及び変数(属性”variables”)であり、後者
は、方法の属性”variables”においての識別子の順序
である。
【2532】レスポンダは、ユーザによって定義された
フレームがその属性”frames”の1つのアイテムである
エージェントである。
【2533】注:”I”(もしあれば)が、エージェン
トの属性”frames”中のユーザによって定義されたフレ
ームの下方のフレーム”B”(もしあれば)の属性”プ
ロシージャ(procedure)”中の1つのアイテムである
とする。特に、”I”が、属性”プロシージャ”中のそ
の位置が”B”の属性”位置”であるアイテムであると
する。”I”は(a)存在せず、サブジェクトメソッド
はオペレーション”live”のためのものであり、(b)
モディファイヤ”セットアトリビュート(setAttribut
e)”によって先行される1つの識別子であり、サブジ
ェクトメソッドはインプリメンテーションの属性”セッ
トメソッズ(setMethods)”中の1つの値であり(c)
このように先行されない1つの識別子であり、サブジェ
クトメソッドは、インプリメンテーションの属性”イン
スタンスメソッズ(instanceMethods)”中の1つの値
であり、または(d)セレクタ”エスカレート(escala
te)”であり、サブジェクトメソッドは上記(b)また
は(c)に示した通りとする。
【2534】4.2.13 ホワイルフレーム(While
Frame) Attributes isPrecondition precondition ”ホワイルフレーム(while frame)”は、そのサブジ
ェクトメソッドがオペレーション”while”のための方
法であり、その属性”プロシージャ(procedure)”が
そのオペレーションのレスポンダである予め定義された
フレームである。
【2535】ホワイルフレームの固有の属性は、オペレ
ーションのアーギュメント(属性”プレコンディション
(precondition)”)である実行されるオブジェクト
と、レスポンダでなくアーギュメントが遂行されている
か否か(属性”イズプレコンディション(isPreconditi
on)”)を明らかにする。ホワイルフレームの属性”位
置(position)”は、2つのプロシージャの内のどちら
が遂行されているかに所属する。
【2536】4.3 エンコーディングアトリビューツ
(Encoding Attribute) 符号化属性は次のように定義される。
【2537】4.3.1 エージェント(Agent) 次の符号化属性がこのクラスに固有である。
【2538】frames sealed Stack[Frame]!; レスポンダの継続中のフレーム。底部のフレームのサブ
ジェクトメソッドは、オペレーション”live”のための
ユーザによって定義された方法である。トップフレーム
のサブジェクトメソッドは、オペレーション”go”また
は”send”のための作り付けられた方法である。ゼロま
たはそれ以上の他のフレームがある。
【2539】nativePermit: sealed copied Permit|Nil; レスポンダの固有のパーミットのレスポンダの保持する
パーミットと相似していれば、レスポンダの固有のパー
ミットであり、その他の場合にはゼロである。
【2540】4.3.2 キャッチフレーム(cath fra
me) 次の符号化属性はこのクラスに固有である。
【2541】exception: sealed Class; レスポンダのサブジェクトメソッドを遂行しているクラ
ス(クラス”エクセプションException”またはそのサ
ブクラス)。
【2542】4.3.3 コレクション(Collection) 次の符号化属性はこのクラスに固有である。
【2543】items: sealed List[Object]!; レスポンダのアイテム。特別のどのアイテムの位置も定
義されていない。
【2544】4.3.4 コレクションストリーム(Co
llection Stream) 次の符号化属性はこのクラスに固有である。
【2545】position: sealed Integer|Nil; レスポンダがアイテムが生産してないかそのアイテムの
全てを生産してない場合にはレスポンダ中の現在の位置
であり、さもなければゼロである。
【2546】source: sealed Collection[Object]|Nil; レスポンダがそのアイテムの全てを生産していなけれ
ば、レスポンダのソースでありさもなければゼロであ
る。
【2547】4.3.5 ディクショナリ(Dicitionar
y) 次の符号化属性はこのクラスに固有である。
【2548】associations: sealed List[Object]!; レスポンダのアイテムを形成するキー及び値。リストの
位置2i−1及び2iにあるアイテムは、それぞれキー
とその組み合わされた値である。特別のどれかのキー値
対の位置は規定されていない。
【2549】4.3.6 リスト(List) 次の符号化属性はこのクラスに固有である。
【2550】items: sealed List[Object]!; レスポンダのアイテム。
【2551】4.3.7 パターン(pattern) 次の符号化属性はこのクラスに固有である。
【2552】text: シールされコピーされたストリング。
【2553】レスポンダのテキスト。
【2554】4.3.8 プロシージャフレーム(Proc
edure Frame) 次の符号化属性はこのクラスに固有である。
【2555】sealed Integer; レスポンダの属性”プロシージャ(procedure)”中の
現在の位置。
【2556】procedure: sealed Procedure; その実行をレスポンダが課するプロシージャ。
【2557】4.3.9 ランダムストリーム(Random
Stream) 次の符号化属性はこのクラスに固有である。
【2558】seed: sealed Integer; レスポンダがいかなる論理も形成していない場合、レス
ポンダのシードであり、さもなければレスポンダが最後
に生産したアイテムである。
【2559】4.3.10 リピートフレーム(Repeat
Frame) 次の符号化属性はこのクラスに固有である。
【2560】repetitions: sealed Integer; オペレーション”repeat”のアーギュメントを介した、
レスポンダのサブジェクトメソッドについて要求された
レスポンダの属性”プロシージャ(procedure)”の遂
行の回数。
【2561】repetitionsSoFar: sealed Integer; これまでに開始された、現在の遂行を含めてレスポンダ
の属性”プロシージャ(procedure)”が遂行された回
数。
【2562】4.3.11 レストリクトフレーム(Re
strict Frame) 次の符号化属性はこのクラスに固有である。
【2563】permit: sealed copied Permit; レスポンダのサブジェクトメソッドの遂行の開始時にお
いてサブジェクトが保持したパーミット。
【2564】4.3.12 センドフレーム(Send Fra
me) 次の符号化属性はこのクラスに固有である。
【2565】tickets: sealed List[Ticket]!; レスポンダのサブジェクトメソッドのアーギュメントと
して供給されたリスト中の1以上のチケット。どの特別
のチケットの位置も規定されていない。
【2566】4.3.13 スタック(Stack) 次の符号化属性はこのクラスに固有である。
【2567】items: sealed Stack[Object]!; レスポンダのアイテム。
【2568】4.3.14 タイム(Time) 次の符号化属性はこのクラスに固有である。
【2569】dst: sealed Integer; クラス”タイム(time)”の”ニュー(new)”をリク
エストし、その結果をカレンダー時間に変換することに
よる、生成されえたカレンダー時間の属性”dst”、い
つどこでレスポンダが生成されたか。
【2570】second: sealed Integer; レスポンダがするのと同じ絶対時間点、”T”を表す
が、その属性”セカンド(second)”のみがゼロにセッ
トされた場合に時間”T0 ”を表すべき正常化されてい
ないカレンダー時間の属性”セカンド(second)”。
【2571】注:T0 は、全ての時間がそれに対して計
られる時間である。T0 は、グレゴリー暦記の分の開始
に合致する。従ってこの属性は、TをT0 から隔てる秒
数である。この属性は厳密には時間がT0 の後にあるか
前にあるかによってそれぞれ正または負になる。
【2572】zone: sealed Integer; クラス”タイム(time)”の”ニュー(new)”をリク
エストしその結果をカレンダー時間に変換することによ
って、生産されえたカレンダー時間の属性”zone”、い
つどこでレスポンダが生成されたか。
【2573】4.3.15 ユースフレーム(Use Fram
e) 次の符号化属性はこのクラスに固有である。
【2574】resouce: sealed Resource; レスポンダのサブジェクトメソッドを遂行するリソー
ス。
【2575】4.3.16 ユースデファインドフレー
ム(User-defined Frame) 次の符号化属性はこのクラスに固有である。
【2576】responder: sealed Object; レスポンダのサブジェクトメソッドのレスポンダ。
【2577】stack: sealed Stack[Object]!; レスポンダのサブジェクトメソッドのスタック。
【2578】variables: sealed List[Object]!; レスポンダのサブジェクトメソッドの変数。
【2579】4.3.17 ホワイルフレーム(While
Frame) 次の符号化属性はこのクラスに固有である。
【2580】isPrecondition: sealed Boolean; レスポンダの属性”プロシージャ”でなくその属性”プ
レコンディション(precondition)”が遂行されている
か否か。
【2581】precondition: sealed Executed; オペレーション”repeat”のアーギュメント。
【2582】ENCODING PALLETTES テレスクリプトの符号化パレットはアペンディックスの
このセクションに定義されている。あるセクションは言
語のクラスにまた別のセクションは符号化クラスにそれ
ぞれ割かれている。あるネットワークのエンジンは次の
ことについて一致しなければならない。(i)割り当て
られたテレアドレスの属性”プロバイダ(provider)”
が選択された方法。(ii)割り当てられたテレネーム
の属性”オーソリティ(authority)” が選択される方
法。これらの方法の各々の1つの実施例は、この開示の
マイクロフィルムアペンディックスGに含まれたコンピ
ュータソフトウェアにインプリメントされている。
【2583】5.1 コンベンションズ(Convention
s) ノンエンプティ(空でない)の1次パレットを用いてそ
の例が符号化された各々の予め定義されたフレーバー
に、1つのサブセクションが以下に向けられる。第1に
言語フレーバーが次に符号化フレーバーがアルファベッ
ト順序で検討される。別のミックスインと題された余分
のサブセクションは、その1つの二次パレットに向けら
れる。
【2584】ほとんど各々のパレットは、その物が以下
のようにラベルされ、その行が予め定められた属性を次
のように定義する、表を用いて定義される。
【2585】・ #.属性が命令的であれば”M”であ
り、属性が任意であれば属性に割り当てられた数字。
【2586】・ 属性。属性の識別子 ・ センダー。アペンディックスAのセクションA.
2.4のノーテーションを用いて定義されたアトリビュ
ートの形式。その形式が”ブーリアン(Boolean)”で
あり、その2つのインスタンスの内の1つのみがパーミ
ットされれば、”ブーリアン(Boolean)”の代わり
に”真(true)”または”偽(false)”で表れる。
【2587】・ レシーバ。送出しているエンジンが符
号化から属性を除かない場合はダッシュ(”−”)であ
り、送っているエンジンが属性を除かなければ、受ける
エンジンが要求するべき形式のインスタンスである。
【2588】5.2 ランゲージクラシーズ(Language
Classes) 言語クラスのための符号化パレットは次のように定義さ
れる。
【2589】注:ある言語クラスがこのセクションにな
いのは次のように説明される。あるオブジェクトの属性
クラス及びイズプロテクティッドはその符号化には表れ
るが属性としては表れない。オブジェクトはそのsize属
性を計算する。あるプレースは移動できず従って符号化
されない。あるプロセスのクラスはそのプロセスがエー
ジェントまたはクラスでない限りユーザによって定義さ
れない。あるストリングはその属性”カレント(curren
t)”、”イズダン(isDone)”及び”ネクスト(nex
t)”を計算する。
【2590】5.2.1 エージェント(Agent) このクラスの例は表B.3の1次パレットを用いて符号
化される。
【2591】
【表30】 1 この属性は、エージェントがある領域内において
移送されるならば、送り側のエンジンによって供給さ
れ、さもなければ受け側のエンジンによって供給され
る。
【2592】2 エージェントの属性”パーミット
(permit)”の属性”プライオリティ(priority)”。
【2593】5.2.2 アソシエーション(Associat
ion) このクラスの例は表B.4に示した1次パレットを用い
て符号化される。
【2594】
【表31】 5.2.3 アトリビュート(Attribute) このクラスの例は表B.5に示した1次パレットを用い
て符号化される。
【2595】
【表32】 1 あるクラスにおいてこれは”セット(set)[ク
ラス(class)]”である。各々のクラスはクラス”エ
クセプション(Exception)”またはそのサブクラスで
ある。
【2596】5.2.4 カレンダタイム(Calender T
ime) このクラスの例は表B.6に示した1次パレットを用い
て符号化される。
【2597】
【表33】 5.2.5 サイテイション(Citation) このクラスの一例は表B.7に示した1次パレットを用
いて符号化される。
【2598】
【表34】 5.2.6 クラス(Class) このクラスの例は表B.8に示した1次パレットを用い
て符号化される。
【2599】
【表35】 5.2.7 クラスデフィニション(Class Definitio
n) このクラスの一例は表B.9に示した1次パレットを用
いて符号化される。
【2600】
【表36】 5.2.8 コレクション(Collection) このクラスの例は表B.10に示した1次パレットを用
いて符号化される。
【2601】
【表37】 5.2.9 コンストレインドディクショナリ(Constr
ained Dictionary) このクラスの例は表B.11に示した1次パレットを用
いて符号化される。
【2602】
【表38】 5.2.10 コンストレインドリスト(Constrained
List) このクラスの一例は表B.12に示した1次パレットを
用いて符号化される。
【2603】
【表39】 5.2.11 コンストレインドセット(Constrained
Set) このクラスの一例は表B.13に示した1次パレットを
用いて符号化される。
【2604】
【表40】 5.2.12 コンストレイント(Cnstraint) このクラスの一例は表B.14に示した1次パレットを
用いて符号化される。
【2605】
【表41】 1 属性”クラスアイディ(classId)”及び”オブ
クラス(ofClass)”は、内在的及び外在的にそれぞれ
存在し、前者は後者の属性”サイテイション(citatio
n)”の属性”タイトル(title)”である。定義クラス
及び他の場所において、属性”クラスアイディ(classI
d)”及び”オブクラス(ofClass)”はそれぞれ外在的
及び内在的に存在し後者はゼロである。クラスまたはク
ラス定義において、コンストレイントは、属性定義の属
性”コンストレイント(constraint)”でありまたは、
定義オペレーションの属性”アーギュメント(argument
s)”の1つのアイテムである。これらのどの場合にお
いてもそのフィーチャの定義は、インタフェースの属
性”クラスフィーチャーズ(classFeatures)”また
は”インスタンスフィーチャーズ(instanceFeature
s)”中の値である。最後に、そのインタフェースは、
クラスまたはクラス定義の属性”インタフェース(inte
rface)”である。
【2606】5.2.13 コンタクト(Cntact) このクラスの一例は表B.15に示した1次パレットを
用いて符号化される。
【2607】
【表42】 5.2.14 ディクショナリ(Dictionary) このクラスの例は表B.16に示した1次パレットを用
いて符号化される。
【2608】
【表43】 5.2.15 インプリメンテイション(Implementati
on) このクラスの17例は表B.1に示した1次パレットを
用いて符号化される。
【2609】
【表44】 1 あるクラスにおいてこれは”Dictionary[Clas
s、Method]”である。
【2610】2 あるクラスにおいてこれは”List
[Class]”である。
【2611】5.2.16 インターフェース(Interf
ace) このクラスの一例は表B.18に示した1次パレットを
用いて符号化される。
【2612】
【表45】 1 レシーバは、ある識別子のリスト、クラス”オブ
ジェクト(Object)”のもの、を供給する。あるクラス
においてこれは”List[Class]”であり、レシーバ
は、1つのクラスすなわちクラス”オブジェクト(Obje
ct)”のリストを供給する。
【2613】5.2.17 レキシコン(Lexicon) このクラスの一例は、クラス”ディクショナリ(Dictio
nary)”を符号化した1次パレットを用いて符号化され
る。
【2614】注:レキシコンの属性”コンストレイント
(constraint)”は命令セットによって固定されてい
る。
【2615】5.2.18 リスト(List) このクラスの一例は表B.19に示した1次パレットを
用いて符号化される。
【2616】
【表46】 5.2.19 メソッド(Method) このクラスの一例は表B.20に示した1次パレットを
用いて符号化される。
【2617】
【表47】 5.2.20 ミックスイン(Mix-in) 2次パレットは表B.21のものである。
【2618】
【表48】 注:ハッシュドオブジェクトの属性”ハッシュ(has
h)”及び相互変換されたオブジェトの属性”ダイジェ
スト(digest)”はオブジェクトによって計算される。
【2619】5.2.21 オペレーション(Operatio
n) このクラスの一例は表B.22に示した1次パレットを
用いて符号化される。
【2620】
【表49】 1 あるクラスにおいてこれは、”Set[Class]”で
ある。各々のクラスはエクセプションであるかまたはそ
のサブクラスである。
【2621】5.2.22 パッケージ(Package) このクラスの一例は表B.23に示した1次パレットを
用いて符号化される。
【2622】
【表50】 注:パッケージの属性”コンストレイント(constrain
t)”は命令セットによって固定されている。
【2623】5.2.23 パターン(Pttern) このクラスの一例は表B.24に示した1次パレットを
用いて符号化される。
【2624】
【表51】 5.2.24 パーミット(Permit) このクラスの一例は次表に示した1次パレットを用いて
符号化される。
【2625】
【表52】 5.2.25 ペティション(Petition) このクラスの一例は表中の1次パレットを用いて符号化
される。
【2626】
【表53】 5.2.26 ランダムストリーム(Random Stream) このクラスの一例は表B.27に示した1次パレットを
用いて符号化される。
【2627】
【表54】 5.2.27 リソース(Resource) このクラスの一例は表B.28に示した1次パレットを
用いて符号化される。
【2628】
【表55】 1 属性”コンディションズ(conditions)”は、属
性”コンディション(condition)”に等しい1つの識
別子を含む。この識別子は定義されていない。
【2629】注:サブジェクトがそのトリップを開始し
た時にリソースの使用を待っていたサブジェクト以外の
どのプロセスも、後に残されてしまったので、もはやリ
ソースを待っていない。
【2630】5.2.28 セット(Set) このクラスの一例は、クラス”コレクション(Collecti
on)”の一例がそれによって符号化された1次パレット
を用いて符号化される。
【2631】5.2.29 スタック(Stack) このクラスの一例は表B.29に示した1次パレットを
用いて符号化される。
【2632】
【表56】 5.2.30 テレアドレス(Teleaddress) このクラスの一例は表B.30に示した1次パレットを
用いて符号化される。
【2633】
【表57】 5.2.31 テレネーム(Telename) このクラスの一例は表B.31に示した1次パレットを
用いて符号化される。
【2634】
【表58】 5.2.32 テレナンバ(Telenumber) このクラスの一例は表B.32に示した1次パレットを
用いて符号化される。
【2635】
【表59】 5.2.33 チケット(Ticket) このクラスの一例は表B.33に示した1次パレットを
用いて符号化される。
【2636】
【表60】 5.2.34 チケットスタブ(Ticket Stub) このクラスの一例は表B.34に示した1次パレットを
用いて符号化される。
【2637】
【表61】 5.2.35 タイム(Time) このクラスの一例は表B.35に示した1次パレットを
用いて符号化される。
【2638】
【表62】 5.2.36 トリップエグセプション(Trip Excepti
on) このクラスの一例は表B.36に示した1次パレットを
用いて符号化される。
【2639】
【表63】 5.2.37 アンエクスペクティドエクセプション
(Unexpected Exception) このクラスの一例は表B.37に示した1次パレットを
用いて符号化される。
【2640】
【表64】 5.2.38 ウェイ(Way) このクラスの一例は表B.38に示した1次パレットを
用いて符号化される。
【2641】
【表65】 5.3 エンコーディングクラシーズ(Encoding Class
es) 符号化クラスのための符号化パレットは以下に定義され
る。
【2642】5.3.1 キャッチフレーム(Catch Fr
ame) このクラスの一例は表B.39に示した1次パレットを
用いて符号化される。
【2643】
【表66】 5.3.2 コレクションストリーム(Collection Str
eam) このクラスの一例は表B.40に示した1次パレットを
用いて符号化される。
【2644】
【表67】 5.3.3 プレデファインドフレーム(Predefined F
rame) このクラスの一例は表B.41に示した1次パレットを
用いて符号化される。
【2645】
【表68】 5.3.4 リピートフレーム(Repeat Frame) このクラスの一例は表B.42に示した1次パレットを
用いて符号化される。
【2646】
【表69】 5.3.5 レストリクトフレーム(Restrict Frame) このクラスの一例は表B.43に示した1次パレットを
用いて符号化され
【2647】る。
【0000】
【2648】
【表70】 5.3.6 センドフレーム(Send Frame) このクラスの一例は表B.44に示した1次パレットを
用いて符号化され
【2649】る。
【0000】
【2650】
【表71】 5.3.7 ユースフレーム(Use Frame) このクラスの一例は表B.45に示した1次パレットを
用いて符号化され
【2651】る。
【0000】
【2652】
【表72】 5.3.8 ユースデファインドフレーム(Use-Define
d Frame) このクラスの一例は表B.46に示した1次パレットを
用いて符号化され
【2653】る。
【0000】
【2654】
【表73】 1 このフレームがその属性フレームの1つのアイテ
ムであるエージェント。
【2655】5.3.9 ホワイルフレーム(While Fr
ame) このクラスの一例は表B.47に示した1次パレットを
用いて符号化され
【2656】る。
【0000】
【2657】
【表74】 アペンディックスC (同ページの2〜579ページの20行目まで訳ぬけ) 1. 序 2. インターフェース概念 2.2 ネットワーク 2.3 エンジン 2.4 プラネットフォーム 2.5 リージョン 2.6 アウトポスト 2.7 ドメイン 2.8 トランスファ 2.9 トランスファユニット 2.10 テスティネーション 2.11 トランスファグループ 2.12 ウェイ 2.13 ミーンズ 2.14 リザベイション 2.15 ランク 3. コミィニケーションクラシーズ 3.1 リザベイション 3.2 リザーバブルミーンズ 3.3 PSTNミーンズ 3.4 エグジスティングコネクションミーンズ 4. テレスクリプトにおけるインターフェース 4.1 エンジン 4.2 プラットフォーム 4.3 デスティネーション 4.4 フェイラー 5. ルーティング 6. C++におけるインターフェース 7. テレスクリプトのインターフェースオブジ
ェクト 7.1 インターフェースコンベンション 7.2 Tsキャラクタ 7.3 Tsデスティネーション 7.4 Tsデスティネーションリスト 7.5 Tsエグジスティングコネクションミーン
ズ 7.6 Tsインテジャ 7.7 インテジャリスト 7.8 Tsミーンズ 7.9 Tsオブジェクトスペシファイヤ 7.10 Tsオクテット 7.11 Tsオクテッツ 7.12 TsPSTNミーンズ 7.13 Tsリザーバブルミーンズ 7.14 Tsリザーベイション 7.15 Tsストリング 7.16 Tsテレアドレス 7.17 Tsテレネーム 7.18 Tsテレナンバ 7.19 Tsウェイ 1. 序 概観 このアペンディックスは、テレスクリプトエンジンがそ
の上で走るプラットホームからテレスクリプトエンジン
が得ることができる”communication services”を定義
する。2つのエンジンは、テレスクリプトのオペレーシ
ョン”go”及び”send”によって要求された、1つのエ
ンジンの1つの場所から別のエンジンの別の場所へ”ag
ent”の表示を移送させるためにこれらのサービスを使
用する。
【2658】このアペンディックスは、2つの主な部分
からなる。第1に、このアペンディックスは、エンジン
とプラットフォームとの間のインタフェースを記述する
ためにテレスクリプトを用いて、テレスクリプトエンジ
ンが抽象的な仕方で必要とするコミニュケーションサー
ビスを記述する。第2にこのアペンディックスがこれら
のサービスを提供するC++”Application
Programming Interface”(A
PI)にドキュメンテーションを与える。
【2659】このアペンディックスは7つのセクション
に分けられる。セクション1はこの序である。セクショ
ン2はインタフェースの基本的なコンセプトを記述す
る。セクション3は多少の追加的なテレスクリプトクラ
スを記述する。セクション4はテレスクリプトのインタ
フェースを記述する。セクション5はトランスファーを
一層詳細に説明する。セクション6はインタフェースを
インプリメントするC++APIを記述する。セクショ
ン7はAPIにおいて使用されるテレスクリプトクラス
のC++表示を記述する。
【2660】参考文献 このアペンディックスがこの開示のアペンディックスA
に依存する。
【2661】2. インターフェースの概念 このアペンディックスのこのセクションは、テレスクリ
プトコミニュケーションおよぼコミニュケーションイン
タフェースがない基本的なコンセプトを記述する。ここ
に記述されるオブジェクトの多くは、テレスクリプトの
命令セットまたはエンジンのコミニュケーションインタ
フェース中に直接の表示を持つ。2.1テレネーム(T
elename) テレスクリプトとプレイスの間、特にエンジンの間のオ
ブジェクトの運動を支持する。テレスクリプトの世界の
各々のプレイスには別々の”telename”が割り当てられ
ている。”telename”は2つの属性すなわち”authorit
y”と”identity”を持つ。
【2662】テレスクリプトは割り当てられたものであ
ってもそうでなくてもテレネームを支持する。テレスク
リプトエンジンによってオブジェクトに組み合わされ
た”assigned telenames”は、次にオーソリティとアイ
デンティティの両方を含んでいる。”assigned”されて
いないテレネームは、1以上のテレスクリプトオブジェ
クトを特定することを意図している。”assigned”され
ていないテレネームは、その属性アイデンティティを省
略することができ、その場合にはテレネームは実際にい
くつかのオブジェクトを特定する。
【2663】2.2 ネットワーク(Network) テレスクリプト”Network”は1以上の領域を含む。ネ
ットワークはその領域の全てを完全に相互接続できず、
これらの領域の任意の2つの間の”point-to-point”情
報の伝達は可能ではないことがありうる。しかしネット
ワークが任意の2つの領域の間の情報の”store-and-fo
rward”伝達を提供しうる程度に領域が相互接続され
る。
【2664】2.3 エンジン(Engine) ”engine”は、テレスクリプトの命令セットのアブスト
ラクションをインプリメントするコンピュータプロセス
である。エンジンは他のエンジンと通信することによっ
て部分的にこれを行なう。エンジンは割り当てられたテ
レネームによって表される。
【2665】2.4 プラットフォーム(Platfo
rm) ”platform”は、1以上のエンジンを支持するハードウ
ェアおよびソフトウェアのコレクションである。プラッ
トフォームは同一のプラットフォームおよびそのプラッ
トフォームが接続された他のプラットフォーム上にあっ
てエンジンが他のエンジンと通信することを可能にす
る。
【2666】2.5 リージョン(Region) ”region”は個人または団体によって操作されるエンジ
ンおよび支持プラットフォームを含む。
【2667】1つの領域は、その領域が含むプラットフ
ォームを完全に相互接続する。従って領域は任意の2つ
のプラットフォームの間の情報をポイントからポイント
に伝達することを可能にする。各々の領域は領域へのア
クセスおよび領域から離去することを可能にする1以上
のプラットフォームを含む。領域が相互接続されて1つ
のネットワークを形成するのはこれらのプラットフォー
ムによる。ある領域は属性アイデンティティが省略され
たテレネームによって表される。
【2668】2.6 アウトポスト(Outpost) ある領域は別の領域中にアウトポストを有しうる。”Ou
tpost”は、ある領域からアウトポスト領域まで交信を
ルーティングする、その領域中のプレイスである。
【2669】2.7 ドメイン(Domain) ”domain”は他の領域中のそのアウトポストの全てを含
んだ1つの領域である。
【2670】2.8 トランスファ(Transfe
r) ”transfer”は、1つのエンジンすなわち”source eng
ine”から別のエンジンすなわち”destination engin
e”へのトランスファユニットへの伝送である。
【2671】トランスファユニットは、トランスファを
ルーティングするために用いることができる”destinat
ion”を特定する。さらに、トランスファについて使用
されるルートおよび”transport”に影響することがで
きるウェイを設けることができる。
【2672】2.9 トランスファユニット(Tran
sfer Unit) ”transfer Unit”はトランスファにおいてエンジンの
間に伝達される。トランスファユニットはオクットスト
リングと目的点(デスティネーション)とから成る。こ
れらはエンジンの間において端部間に伝送される唯一の
データアイテムである。
【2673】”originating platform”へのトランスフ
ァを特定し目的点においてのトランスファを受けること
に、別のデータが関与する。
【2674】2.10 デスティネーション(Dest
ination) ”destination”はトランスファユニットの最終的な目
的点を記述する。
【2675】2.11 トランスファグループ(Tra
nsfer Group) テレスクリプト”send”オペレーション(アペンディッ
クスAに記載される)は同一のオクテットストリングが
いくつかの目的点に供与されることに結果する。”tran
sfer group”は、トランスファユニットとそれに組み合
わされた目的点と、伝送されているオクテットストリン
グの1つのコピーからなるコレクションである。
【2676】トランスファユニットは論理的にそのコン
ポーネントトランスファユニットを表している。プラッ
トフォームは単一のトランスファグループを複数のより
小さなトランスファグループおよび/または単一のトラ
ンスファユニットに分解することができる。
【2677】2.12 ウェイ(Way) ”way”は、1つの領域またはエンジンと交信する手段
と、それをするために用いられる”authenticating inf
ormation”とを特定する。 エンジンからのトランスフ
ァは、トランスファの通信要求を規定するウェイすなわ
ち”way out”を特定することができる。到来するトラ
ンスファはエンジンにウェイすなわち”way back”を供
与し、このウェイはオリジナルソースに向かう次のトラ
ンスファの戻り口として使用することができる。
【2678】2.13 ミーンズ(Means) ”means”は、トランスファたとえば有線もしくは無線
ネットワークに使用される搬送の形式を特定する。ミー
ンズは、”quality of service”パラメータまたは”P
STN”コネクションのためのテレフォンナンバのよう
な搬送に特異のデータを収容する。
【2679】”reservavle means”は、留保が尊重され
る搬送形式を特定する。
【2680】2.14 リザベイション(Reserv
ation) ”reservation”は、トランスファの結果としてプラッ
トフォームによって設立されたコネクションがある期間
の間保持されることの要求である。リザベイションは、
多重にトランスファのためにあるコネクションが使用さ
れることを許容するためのヒントである。
【2681】リザベイションは、トランスファが留保可
能な手段を有するウェイを特定する時にのみ意味を持
つ。
【2682】2.15 ランク(Rank) あるトランスファは”privileged”と考えることができ
る。”rank”はプリビィレッジ(特典)の表示である。
それは、整数であり、値0は特権のないことを意味す
る。0でない値の意味はソース領域特異である。領域間
のトランスファにおいてランクは、変更または無視する
ことができるヒントと見做すことができる。
【2683】3. コミュニケーションクラシーズ(C
ommunication Classes) このセクションは、この開示のアペンディックスAに存
在していない別のテレスクリプトクラスを定義する。
【2684】3.1 リザベイション(Reserva
tion) オブジェクト ・Reservation クラス Reservation インタフェース () = (・・・); Public Instance Attributes id;インテシ゛ャ。 プラットフォームによって作り出された留保のための識
別子 3.2 リザーバブルミーンズ(Reservable
Means) オブジェクト ・ミーンズ ・・Reservable Means クラス ReservableMeans:アフ゛ストラクト・インタフェース ()=(・・・); Public Instance Attributes reservation: リザーベイション。
【2685】プラットフォームによって作り出されたリ
ザベーションのための識別子。
【2686】3.3 PSTNミーンズ(PSTN M
eans) オブジェクト ・ミーンズ ・・留保可能なミーンズ ・・・PSTN Means クラス PSTNMeans:インタフェース (ReservableMeans)=(・・・); Public Instance Attributes telephoneNumber; テレナンバ このトリップのために使用されるテレホンナンバ。
【2687】3.4 エグジスティングコネクションミ
ーンズ(Existing Connection M
eans) オブジェクト ・ミーンズ ・・留保可能なミーンズ ・・・Existing Connection Me
ans クラス ExistingConnectionMeans:インタフェース (ReservableMeans)=(・・・); Public Instance Attributes connectionID:オクテット。 あるコネクションを特定するためにプラットフォームが
使用しうる識別子。
【2688】4. テレスクリプトにおけるインターフ
ェース(INTERFACE INTELESCRIP
T) このセクションではエンジンとそのプラットフォームと
の間のインタフェースは、実際にはそうでないがあたか
も両方ともテレスクリプトオブジェクトであるかのよう
に特定される。この定義は族と考えられることが意図さ
れている。すなわちこの定義は、エンジンおよびプラッ
トフォームをインプリメントするために使用された特別
のプログラミング言語とは無関係であることが意図され
ている。
【2689】以下のテレスクリプトクラスの定義はこの
インタフェースにおいて用いられる。これらの定義につ
いてはアペンディックスAおよびこのアペンディックス
のセクション3参照。
【2690】Integer List OctetString Telename Teleaddress Way Reservation 4.1 エンジン(Engine) オブジェクト ・Engine クラス Engine:インタフェース ()=(・・・); Public Instance Operations transferIn: op( octets: OctetString; destinations: List[Destination]; rank: Integer; way: Way; timeAdjust: Integer) throws TransferInFailed; 単一のトランスファグループに組み合わされた1以上の
トランスファユニットをエンジンに配送する。トランス
ファユニットはオクテット、デスティネーションおよび
ランクによって表される。ウェイバック(アーギュメン
ト”way”)は、オペレーション”transferOut”を遂行
したエンジンのテレネームを含む。ウェイバックは、戻
りトリップを行なうために使用しうる既存のコネクショ
ンミーンズを提供しうる。
【2691】アーギュメント”timeAdjust”は、ソース
プラットフォームのクロックがデスティネーションプラ
ットフォームのクロックに遅れる秒の数である。レスポ
ンダは、ソースエンジンのクロックに対して生成された
ある時間を調整するためにこの情報を使用することがで
きる。
【2692】エンジンがトランスファユニットを受ける
ことができない場合には、例外”TransferInFailed”が
投出される。
【2693】transferFailed: op(フェイリヤ : Failure;オクテット : OctetString;テ゛スティネーションス゛ :List[Destination];ランク : Integer;ウェイ : Way;タイムアシ゛ャスト : Integer) throws TransferFailedFailed; 単一のトランスファグループに組み合わされた1以上の
フェイルズがトランスファユニットをエンジンに配送す
る。このオペレーションのためのパラメータは、オペレ
ーション”transferIn”のものと同じであるが、フェイ
リヤーの理由が付け加えられている(アーギュメント”
failure”)。トランスファグループのためのソースエ
ンジンにおいて”transferOutComplete”が受け入れら
れる前にオペレーション”transferFailed”が生じ得る
ことは可能である。
【2694】フェイリヤが”invalidMeans”であればレ
スポンダは可能ならばソースエンジンとなる。
【2695】フェイルしたトランスファユニットをレス
ポンダが受けることができない場合には、例外が投出さ
れる(”transferFailedFailed”)。
【2696】transferOutFailed: op( 理由: Failure;ク゛ルーフ゜ : Integer;フェイリヤース゛ : List[Integer]|Nil) unknownTransferGroup, UnknownTransferUnitを送出す
る; トランスファグループ中の1以上のトランスファユニッ
ト(アーギュメント”groupID”)がフェイルしてい
る。フェイリヤの原因はアーギュメント”リーズン”に
与えられる。フェイルした特別のユニットは、オペレー
ショントランスファオウトの遂行において与えられた目
的点のオリジナルリストへのインテジャインデックスの
リスト(アーギュメント”failure”)によって特定さ
れる。このリストは1で始まり、この1は、トランスフ
ァユニットの最初のユニットを特定する。
【2697】リストが与えられない場合すなわちアーギ
ュメント”failure”の値が0の場合、グループ中の各
々のトランスファはフェイルしている。これはオリジナ
ルグループのその他のユニットを列挙するリストに相当
する。レスポンダがアーギュメント”groupID”(”Unk
nownTransferGroup”)によって表されたオペレーショ
ン”transferOut”を以前に遂行しなかった場合、また
は、アーギュメント”failure”のアイテムの1つがこ
のトランスファグループのためのデスティネーションリ
ストへの適切なインデックスでない場合(”UnknownTra
nsferUnit”)例外が投出される。
【2698】transferOutComplete: op(groupID: Integer; serialNumber: Integer) throws UnknownTransferGruop; 特別のトランスファグループ(アーギュメント”groupI
D”)に組み合わされたオペレーション”transferOut”
が完成しなかったことを示す。特に、このグループのた
めの別の”transferOutFailed”オペレーションはあり
えない。このグループ中のトランスファユニットに組み
合わされたいかなるリゾースもレリースすることができ
る。
【2699】アーギュメント”groupID”(”UnknownTr
ansferGroup”)によって表されるオペレーションtr
ansferOutをレスポンダが以前に遂行しなかっ
た時は、例外が投出される。
【2700】4.2 プラットフォーム(Platfo
rm) オブジェクト ・Platform クラス Platform:インタフェース ()=(・・・); Construction initialize op(エンシ゛ン: Telename); 名前付けされたエンジン(アーギュメント”engine”)
によって使用されるレスポンダをイニシャライズする。
【2701】Public Instance Operations transferOut: op(オクテット:テ゛スティネーション : List [Destination];ランク : Integer;ウェイ : Way|Nil; desiredDuration: Integer; maximumDuration: Integer;ク゛ルーフ゜ ID: Integer InvalidDestination, InvalidWayを送出する; アーギュメン”octets”、”destinations”および”ra
nk”によって定義されたトランスファグループを1以上
のデスティネーションエンジンに配送することを要求す
る。グループはグループid(アーギュメント”groupI
D”)によって特定される。このオペレーションは、こ
のグループを構成するトランスファユニットに”transf
erIn”、”transferOutFailed”または”transferFaile
d”が後にリファレンスすることに結果する。
【2702】ランク(アーギュメント”rank”)は、こ
のトランスファが特権を持つか否かを特定する。
【2703】アーギュメント”way”が0でなくない場
合にはトランスファをルーティングするために使用され
る。
【2704】トランスファの望ましい持続期間は、秒
(アーギュメント”desiredDuration”)によって特定
される。これはトランスファについて望ましい最大の持
続時間である。望ましい持続時間の値が0であること
は、このトランスファに望ましい持続時間が組み合わさ
れていないことを意味する。
【2705】トランスファのための最大の許容持続時間
は秒で特定される(アーギュメント”maximumDuratio
n”)。これはトアンスファについて許可された最大時
間である。オペレーション”transferOut”の後前記秒
数の間オペレーション”transferOutComplete”が起き
なかった場合の効果は、このグループについてオペレー
ション”failTransfer”が遂行されたかのような効果と
なる。最大持続時間の値0は、このトランスファに最大
持続時間が組み合わされていないことを意味する。
【2706】デスティネーションリストが不適切である
か(”invalidDestination”)アーギュメント”way”
が供給されたら、0でないアトリビュートを持たない場
合(”invalidway”)例外が投出される。
【2707】failTransfer: op(groupID: Integer) throws UnknownTransferGroup; グループid(アーギュメント”groupID”)によって
特定されたトランスファグループ中の全ての継続中のト
ランスファユニットがフェイルすることをリクエストす
る。
【2708】あるトランスファグループ中のフェイルす
る全部のトランスファリミットでないこともありうる。
このオペレーションの結果としてフェイルしたトランス
ファユニットは、1以上のオペレーション”transferOu
tFailed”とそれに続く”transferComplete”とを生ず
るであろう。
【2709】前回の”transferOut”においてブループ
idが使用されなかった場合(オペレーション”Unknow
nTransferGroup”)例外が投出される。
【2710】makeReservation op(持続時間:Integer) Reservation throws CannotReserve; 新しい持続時間(アーギュメント”duration”)秒のリ
ザベーションをリターンする。リザベーションは次のオ
ペレーション”transferOut”のために留保可能な手段
においてリザーベイションが使用される場合、活性とな
る。
【2711】リザベーションが終了した時、リザーベイ
ションがもはや有効でなくなり、そのリザーベイション
を使用することを試みるトランスファはフェイルする。
リザベーションは、もはや必要とされない時に、オペレ
ーション”resetReservation”によってキャンセルすべ
きである。プラットフォームは未使用のリザベーション
に対して最大のライフタイムを課することができる。
【2712】レスポンダがリザーベイションを供与でき
ない時は例外”CannotReserve”が投出される。
【2713】resetReservation: op(リサ゛ーヘ゛イション: Reservation, duration: Integer) thr
ows UnknownReservation, InvalidReservation; 現存のリザーベイション(アーギュメント”reservatio
n”)の持続時間は秒の持続時間に変更される。このオ
ペレーションが呼び出された時にリザーベイションが活
性である場合の効果は、新しい持続時間のリザーベイシ
ョンとともにオペレーション”transferOut”がまさに
行なわれたかのような効果となる。
【2714】持続時間を0にセットするとリザーベイシ
ョンはキャンセルされる。キャンセルされたリザーベイ
ションはもはや有効ではなくなる。リザーベイションが
以前のオペレーション”makeReservation”(”unknown
Reservation”)によって得られたものでないかまたは
リザーベイションがもはや有効でない(”invalidReser
vation”)例外が投出される。
【2715】4.3 デスティネーション(Desti
nation) オブジェクト ・Destination クラス Destination:インタフェース ()=(・・・); Construction initialize op(ネーム : Telename|Nil;アト゛レス : Teleaddress|Nil;テ゛ータ : OctetString|Nil; リスポンダの固有の属性を同じ名前のアーギュメント
(アーギュメント”name”、”address”および”dat
a”)とする。
【2716】あるデスティネーションの全ての属性が0
であれば、デスティネーションは不適切である。
【2717】Private Instance Attributes address:テレアト゛レス |Nil;テ゛スティネーション のアト゛レス。 data:オクテットストリンク゛ |Nil;トランスファ・ユニット に組み合わされたエンシ゛ン特有のテ゛ータ。 name:テレネーム |Nil; デスティネーションのネーム。
【2718】4.4 フェイラー(Failure) オブジェクト ・Failure クラス Failure:インタフェース ()=(・・・); Private Instance Attributes reason: 整数(インテシ゛ャ) トランスファのフェイリヤの理由。この理由はテーブル
C.1に示されたインテジャの列記として表される。
【2719】
【表75】 プラットフォームは余分のフェイリヤタイプを供与しう
る。
【2720】5. ルーティング(ROUTING) あるトランスファユニットのオペレーション”transfer
Out”は典型的に異なったエンジンにおいての同一のユ
ニットのオペレーション”transferIn”に結果する。ト
ランスファはソースプラットフォームにおいてフェイル
した場合、トランスファユニットは、ソースエンジンに
おいてのオペレーション”transferOutFailed”ととも
にフェイルする。トランスファユニットはソースプラッ
トフォームから成功の内にトランスファされたが、デス
ティネーションエンジンにおいての成功したオペレーシ
ョン”transferIn”opn に加わらない場合、それ
は、”transferFailed”opn とともにエンジンに対し
てフェイルする。
【2721】トランスファグループの”transferOut”
opn は、コンポーネントトランスファユニットのN個
の”transferOut”opn と論理的に同等である。望ま
しいランクの値、最大持続時間およびウェイは、全ての
トランスファについて同一である。デスティネーション
のリストは、opn ”transferIn”を含むことができ、
1以上のデスティネーションエンジンにおいて生ずる。
【2722】典型的には、あるプラットフォームは、あ
るグループ中のデスティネーションのリストを検査し、
デスティネーションエンジンにおいて”transferIn”o
pnの最小の数を持ったユニットを供給しようと試み
る。これは同一のエンジンに予定されたトランスファユ
ニットが、1つのグループとして搬送され配送されるこ
とを意味する。
【2723】Routing Algorithm ”transferOut”opn の遂行においてあるウェイが供
与された場合、プラットフォームはそのウェイを、トラ
ンスファのルーティングのために使用する。ウェイが供
与されなかった場合プラットフォームはデスティネーシ
ョンエンジンを定めなければならない。トランスファユ
ニットに組み合わされたネームおよびアドレスに従って
デスティネーションエンジンを定めるためのステップは
次の通りである。
【2724】<start> 名前が存在するがアドレスが存在しない場合 <use the name> アドレスが存在するがネームが存在しない場合、プロバ
イダが現在の領域である場合 対応するネームを見いだすかまたは<フェイル> デスティネーショのネームアトリビュートをネームにセ
ットし <start> さもなければ ネームとアドレスがともに存在していれば、 プロバイダが現在の領域である場合 <use the name> さもなければ <use the address>。
【2725】<use the name>: オーソリティが現在の領域である場合、 アイデンティティからデスティネーションエンジンを定
めるかまたは<フェイル>。
【2726】さもなければ ロケーションからデスティネーションエンジンを定めま
たは<フェイル>。 さもなければ オーソリティのアウトポストを含むエンジンにルーティ
ングするかまたは<フェイル>。
【2727】<use the address> プロバイダが知られていれば プロバイダのアウトポストを含むエンジンにルーティン
グする。
【2728】さもなければ ルーティングアドバイス中の各々のプロバイダについて それが現在の領域であれば それをルーティングアドバイスから除去する さもなければ プロバイダが知られていれば プロバイダのアウトポストを含むエンジンにルーティン
グする。
【2729】もうルーティングがなければ、<フェイル
>。
【2730】<fail>: プロバイダが現在の領域であれば トランスファをフェイルする。
【2731】さもなければ デフォールトエンジンがある場合 それにルーティングする。
【2732】さもなければ トランスファをフェイルする。
【2733】6.C++におけるインターフェース(I
NTERFACE IN C++) このセクションはエンジン−プラットフォームインタフ
ェースのC++インプリメンテーションを記述する。イ
ンタフェースはセクション4のテレスクリプト仕様に由
来する。
【2734】ここに提示されるインタフェースは、必然
的に現在のテレスクリプトエンジンのインプリメンテー
ションのいろいろな様相を反映している。特にC++A
PIは、族インタフェースに表れないエンジン上のオペ
レーションを含む。
【2735】Interface description エンジンオブジェクトはC++クラス”CI”によって
表される。エンジンオブジェクトに対するオペレーショ
ンは、CIのメンバ機能として供与される。
【2736】プラットフォームオブジェクトはCIのサ
ブクラスによって表される。プラットフォームのプロバ
イダはCIのサブクラスであり、プラットフォームオペ
レーションを表すCIの仮想的な機能をインプリメント
する。
【2737】エンジンとプラットフォームとの両方に対
するオペレーションにおいてパラメータとして表れるテ
レスクリプトオブジェクトは、テレスクリプトオブジェ
クトの限定された表現をインプリメントするある数のC
++クラスによって表される。例えば、”TsInteger”
がAPIに表れる時にはいつでもテレスクリプト”Inte
ger”を表すクラス”TsInteger”がある。これらのテレ
スクリプトインタフェースオブジェクトの完全な説明は
このアペンディックスの次のセクションにおいてなされ
る。
【2738】インタフェースのテレスクリプト表現にお
いて特定される例外は、列記された形式としてAPIに
おいてインプリメントされ、この列記された形式は、エ
ンジンおよびプラットフォームの両方の全てのオペレー
ションからリターンされる。
【2739】エンジンとプラットフォームとの間に交わ
されたデータエレメントのストレージは、オペレーショ
ンの呼び出し者によって所有される。ストレージはオペ
レーションが完全になされた時に再請求しうる。これに
対する唯一の例外はオペレーション”transferOut”で
ある。エンジンは対応するオペレーション”transferOu
tComplete”が遂行され終わるまではトランスファアウ
トのエレメントを再請求しない。
【2740】Tasks エンジンは、非先取(non−preemptive)
スケジューラとともに別のスレッドとして走る多重の共
働タスクとしてインプリメントされる。CIクラスの1
つの例は、エンジン中の1つのスレッドとして走らせ
る。クラスCIのサブクラスは、ファンクション”main
()”を供与し、このファンクションは、1度呼び出さ
れ、プラットフォーム上に余分なオペレーションがまだ
指示されていない場合にはリターンされねばならない。
【2741】”main()”は、継続中のオペレーション”
transferIn”がない場合にエンジンスケジューラにイー
ルド(yield)することが期待される。”main()”
は”wait()”を呼び出すことによってこれを行なう。”
wait()”はCIがそのためにイールドすることを意図し
ているミリ秒の数であるアーギュメントを取る。典型的
にはエンジンは少なくともその時間量が経過するまでは
CIのタスクを再スケジュールしない。”wait()”に対
する0のアーギュメントは、CIがイールドしているが
エンジンスケジューラによって可及的早く再スケジュー
ルされることを望むことを意味している。
【2742】”wait()”へのアーギュメント−1は、C
Iが不特定にブロックすることを望んでいるという意味
を持っている。この場合CIは、CIが再スケジュール
されることを望むならば、エンジン上に”satisfy()”
を呼び出すことが期待されている。”satisfy()”は、
エンジンがスレッドをスケジュールすると直ちに、ウェ
イトにブロックされたスレッドの実行を再開させる。こ
の後者のスキームは、新しいコミュニケーションのリク
エストがなかった場合に非同期的なイベントとして供与
されたCIインプリメンテーションにおいて適切であろ
う。
【2743】ある動作中のシステムにおいては、CIイ
ンプリメンテーションは、エンジンスケジューラにイー
ルドすることを望み、ファイルデスクリプタが準備状態
になった時に再スケジュールされることを望むかもしれ
ない。オペレーション”waitfd”は、待機されるファイ
ルデスクリプタを特定し、タイムアウトとともに多重フ
ァイルデスクリプタについてセレクトするために、”wa
it()”とともに使用されうる。
【2744】opn ”transferOut”の遂行は、呼び出
したテレスクリプトプロセスのスレッドにおいて実行さ
れるのであり、CIタスクのスレッドとして行なわれる
のではない。
【2745】エンジンおよびプラットフォームによるプ
ラットフォームは、必要ならばその後にスケジュールさ
れるワークの待ち行列を作る(queing)ことによ
って比較的速やかに実行されねばならない。エンジンと
プラットフォームの両方は長時間にわたってブロックす
べきではない。
【2746】極端な場合には、オペレーション”transf
erOut”の量がCIによって供与されたバッファリング
を上回ることがある。
【2747】CI クラス Construction CI: CI(TsTelename *name); 新しいCIオブジェクトを構成する。”name”はこのC
Iを使用するエンジンのテレネームである。
【2748】-CI: 仮想的 -CI() このCIをシャットダウンし破壊する。
【2749】main: 仮想的なlong main()=0; CIのメインループ。これは構成後ある時間がしてから
呼び出される。CIは、このファンクションの実行の
間、例えば”wait()”とともにエンジンに対してイール
ドすべきである。
【2750】Engine Operations transferIn: TsStatus transferIn (TsOctets *bagOfBits,TsDestina
tionList *destList,unsigned int rank, TsWay *wayBa
ck, int timeAdjust); 1以上のトランスファユニットをエンジンに移送する。
【2751】transferFailed: TsStatus transferFailed(TsFailue failure, TsOctets
*bagOfBits, TsDestinationList* destList, unsigned int rank, TsWay *wayBack, int timeAdjust); 1以上のフェイルしたトランスファユニットをエンジン
にトランスファする。
【2752】transferOutFailed: TsStatus transferOutFailed (TsFailure failure,unsi
gned int groupId, TsIntegerList *list); このエンジンからのopn ”transferOut”の以前の実
行においてフェイルした1以上のトランスファユニット
を特定する。
【2753】transferOutComplete: TsStatus transferOutComplete (unsigned int groupI
d, unsigned int transferSN); トランスファグループ(アーギュメント”groupId”)
のトランスファが完成したことを表す。このグループ中
の全てのトランスファユニットに組み合わされたストー
レッジは再請求しうる。
【2754】Platform Operations transferOut: 仮想的なTsStatus transferOut(TsOctets *bagOfBits, TsDestinationList *destList, Unsigned int rank, TsWay *wayOut, unsigned int desiredDuration, unsigned int maximumDuration, unsigned int groupId)=0; このトランスファグループ中のトランスファユニットを
それぞれの目的点に転送する(アーギュメント”destLi
st”)。
【2755】failTransfer: virtual TsStatus failTransfer (unsigned int gruopI
d)=0; トランスファ グループ(アーギュメント”groupI
D”)に組み合わされた全てのトランスファユニットを
フェイルさせる。
【2756】makeReservation: virtual TsStatus makeResevation (unsigned int dura
tion, TsReservation*reservation)=0; 指定された持続時間(アーギュメント”duration”)と
ともに新しいリザベイション(アーギュメント”reserv
ation”)をリクエストする。
【2757】resetReservation: virtual TsStatus resetReservation (TsReservation r
eservation, unsignedint duration)=0; リザベイションの持続時間を新しい持続時間(アーギュ
メント”duration”)にリセットする。持続時間0は、
リザベイションをキャンセルする効果を持つ。
【2758】Task Operations wait: void wait (long msec); ”msec”ミリ秒の間現在のエンジンスロットをイールド
する。この機能は、このスレッドが再スケジュールされ
た時にリターンされる。アーギュメント”msec”が0で
あれば、エンジンスケジューリングポリシーが許容する
限り早くスレッドを再スケジュールする。アーギュメン
ト”msec”が−1であれば、”satisfy()”(下記参
照)が呼び出されるかまたは”waitfd()”と指定された
ファイルディスクリプタが準備状態となるまで、”wait
fd”へのこの呼び出しはリターンされない。
【2759】satisfy: void satisfy(); CIスレッドが呼び出し”wait()”においてブロックさ
れた場合、CIスレッドを再スケジュールする。
【2760】waitfd: void waitfd (int fd, short mask); ”mask”によって指定された読み込みまたは書き込みの
ためにファイルディスクリプタ”fd”が準備状態になっ
た場合、後のコール(呼び出し)”wait()”がリターン
されることを指定する。”mask”は、ファイルデスクリ
プタがそれぞれ読み込み可能および書き込み可能である
ことを選択する値”POLLIN”および”POLLOUT”のOR
を取ることによって構成されたビットマスクである。”
mask”が0であることは、このファイルデスクリプタが
オペレーション”wait()”にもはや影響すべきでないこ
とを意味する。
【2761】waitresult: short waitresult (int fd); 前回の呼び出し”wait()”の間にファイルディスクリプ
タ”fd”が準備段階になっているか否かをテストするた
めに使用しうるビットマスクをリターンする。そのこと
の結果は、ビット”POLLIN”および”POLLOUT”が”wai
tfd()”において指定されていればこれらのビットを有
するビットマスクがセットされ、ファイルデスクリプタ
がそれぞれリードおよびライトについて準備状態となる
ことである。
【2762】stop: void stop(); このCIについて全ての”transferOut”opn をエン
ジンによってスロットルさせる。opn ”go”または”
send”を実行しているテレスクリプトエージェントはブ
ロックさせうるようなそれ以上のトランスファはこのC
Iにはリクエストされない。CIは別のトランスファを
待ち行列とすることによってCIによるデータを失った
場合にこのオペレーションを引き起こすべきである。
【2763】start: void start(); もはやopn をスロットルすべきでないことをエンジン
に通報する。
【2764】7. テレスクリプトのインターフェース
オブジェクト(TELESCRIPTINTERFAC
E OBJECTS) 外部システムすなわち他のテレスクリプトエンジンまた
はテレスクリプトに基づかない通信システムとの通信を
可能にするため、テレスクリプトエンジンは、プラット
フォームまたはテレスクリプトエンジン自身に内在する
オペレーティングシステムによって供給される通信サー
ビスに依存しなければならない。テレスクリプトエンジ
ンは、これらのサービスにアクセスするために、情報が
テレスクリプトアブストラクションに流入したりそれか
ら流出したりすることを可能とするためのメカニズムを
指示していなければならない。詳細には、このメカニズ
ムは、内在するコミュニケーションサービスにとって理
解可能なこれらのオブジェクトの対応する表現とキーテ
レスクリプトオブジェクトとの間の変換を可能とするも
のでなくてはならない。
【2765】テレスクリプトエンジンインタフェースク
ラスは、このニードを充たすC++クラスのセットのた
めのアブストラクトデフィニション(抽象的な定義)を
供与する。この供与される定義は、C++クラスが十分
に定義されていなく、テレスクリプトエンジンの機能性
についての最初の要求の言葉で記述されているため抽象
的である。
【2766】これらのクラスの内部的な機構および内在
する通信サービスとの関係について完全な自由がこれら
のクラスのインプリメンターに任せられている。
【2767】7.1 インターフェースコンベンション
(Interface Conventions) テレスクリプトエンジンインタフェースクラスのインプ
リメンテーションは、クラスインタフェースを通過する
データアイテムの使用についての1組みのコンベンショ
ンに従わねばならない。これらのコンベンションは、オ
ーナーシップの規則の言葉で表現され、ここにオーナー
シップは、ある与えられたデータピースを変更する権利
およびそれを破壊する責任とともに定義される。
【2768】他に指定がなければ、テレスクリプトエン
ジンインタフェースクラスのインプリメンテーション
は、次のインタフェースコンベンションに従わねばなら
ない。
【2769】リファレンスまたはポインタアーギュメン
トを受け入れる全ての機能に対して、参照されまたは指
示されたデータのオーナーシップはコーラー(呼び出し
た者)から呼び出されたオブジェクトに移行し、そのた
めオブジェクトは、適切な時にデータを変更する権利お
よびそのデータを破壊する責任を持つ。
【2770】リファレンスまたはポインタの値をリター
ンする全ての機能に対して、参照または指示されたデー
タのオーナーシップは、呼び出されたオブジェクトによ
って保持される。しかしオブジェクトは、オブジェクト
を変更しうるファンクションへの次のコールがなされる
までは参照され/指示されたデータが勝手に変えられな
いことを保証する。
【2771】オブジェクトは破壊された時それがオーナ
ーシップを有する全てのデータを破壊する。
【2772】7.2 Tsキャラクタ(TsChara
cter) ”TsCharacter”タイプのデフィニションは、この開示
のアペンディックスAに定められたように、テレスクリ
プトキャラクタクラスの限定されたC++表現を供与す
る。
【2773】”TsCharacter”タイプのインプリメンテ
ーションは、全てのASCIIキャラクタを収容するこ
とができることが望まれている。これは最初の要求であ
る。好ましくは、 ”TsCharacter”タイプのインプリ
メンテーションは全てのユニコードキャラクタを含むこ
とができる。
【2774】7.3 Tsデスティネーション(TsD
estination) ”TsDestination”クラスはこのアペンディックスのセ
クション4に規定されたように、テレスクリプトデステ
ィネーションクラスのC++表現を供与する。”TsDest
ination”クラスのインプリメンテーションは、最小
で、次の機能性を供与するものとする。
【2775】クラス TsDestination ( public: TsDestination(TsTeleaddress*teleaddress, TsTelenam
e * telename, TsOctets * data); -TsTeleaddress(); const TsTeleaddress * getTeleaddress()const; const
TsTelename * getTelename () const; const TsOctets
* getData () const;); Construction TsDestination: TsDestination (TsTeleaddress * teleaddress, TsTele
name * telename, TsOctets * data) は、新しい”TsDestination”オブジェクトを構成す
る。
【2776】teleaddress 新しい”TsDestination”オブジェクトのテレアドレス
の値を形成するべき”TsTeleaddress”オブジェクトへ
のポインタまたは、デスティネーションオブジェクトが
テレアドレスの値を持たない場合、0ポインタ。
【2777】telename 新しい”TsTelename”オブジェクトのテレネーム値を形
成するべき”TsDestination”オブジェクトへのポイン
タまたは、デスティネーションオブジェクトがテレネー
ムの値を持たない場合、0ポインタ。
【2778】data 新しい”TsDestination”オブジェクトのデスティネー
ションオブジェクトの値を形成するために”TsOctets”
オブジェクトへのポインターか、または、デスティネー
ションオブジェクトがデスティネーションデータの値を
持たない場合、0ポインタ。
【2779】Destruction -TsDestination: -TsDestination() ”TsDestination”オブジェクトを破壊する。”TsDesti
nation”オブジェクトと、そのオブジェクトがオーナー
シップの責任を持つ全てのデータが破壊される。
【2780】Data Access getTeleaddress: const TsTeleaddress*getTeleaddress()const ”TsDestination”オブジェクトのテレアドレスの値へ
のポインタをリターンするかまたは、デスティネーショ
ンオブジェクトがテレアドレスの値を持たない場合、0
ポインタをリターンする。
【2781】getTelename: const TsTelename*getTelename()const ”TsDestination”オブジェクトのテレネームの値への
ポインタをリターンするか、または、デスティネーショ
ンオブジェクトがテレネームの値を持たない場合、0ポ
インタをリターンする。
【2782】getData: const TsOctets * getData()const ”TsDestination”オブジェクトのデスティネーション
データの値へのポインタをリターンするか、または、デ
スティネーションオブジェクトがデスティネーションデ
ータの値を持たない場合、0ポインタをリターンする。
【2783】7.4 Tsデスティネーションリスト
(TsDestinationList) ”TsDestinationList”クラスは、クラス”destinatio
n”のオブジェクトを収容するように拘束された、この
開示のアペンディックスAに規定されたテレスクリプト
クラス”List”のC++表現を供与する。”TsDestinat
ionList”クラスのインプリメンテーションは最小でも
次の機能性を供与しなければならない。
【2784】{ public: TsDestinationList(); -TsDestinationList(); const TsDestination*nextDestination();void rese
t(); size_t destinationCount()const; void appendDestination(TsDestination*destination); }; Construction TsDestinationList: TsDestinationList() エンプティの”TsDestinationList”オブジェクトを構
成する。
【2785】Destruction -TsDestination-List: -TsDestinationList() ”TsDestinationList”オブジェクトを破壊する。”TsD
estinationList”オブジェクトおよびそのオブジェクト
がオーナーシップの責任を持つ全てのデータが破壊され
る。
【2786】Data Access appendDestination: void appendDestination(TsDestination*destination) ”TsDestination”オブジェクトの形の単一のデスティ
ネーションを、”TsDestinationList”オブジェクト内
に含まれるデスティネーションのリストに付加する。
【2787】destination ”TsDestination”オブジェクト中のデスティネーショ
ンのリストに付加されるべきデスティネーションを伝え
る”TsDestination”オブジェクトへのポインタ。
【2788】nextDestination: const TsDestination*nextDestination() ”TsDestination”オブジェクトの形のデスティネーシ
ョンへのポインタをリターンするか、または0ポインタ
をリターンする。”nextestination()”機能は多重の呼
び出しを通じて、”TsDestinationList”オブジェクト
に含まれる1組のデスティネーションを、それらが収容
されている順序でリターンする。最後のデスティネーシ
ョンがリターンされた後、リセットファンクションの次
の呼び出しまで、”nextestination()”機能は0ポイン
タをリターンする。
【2789】reset: void reset() ”nextestination()”機能の次の呼び出しによって、”
TsDestinationList”オブジェクト中に含まれる最初の
デスティネーションをリターンさせる。
【2790】destinationCount: size_t destinationCount() const ”TsDestinationList”オブジェクト中に現在含まれる
デスティネーションの数をリターンする。
【2791】7.5 Tsエグジスティングコネクショ
ンミーンズ(TsExistingConnectio
nMeans) ”TsExistingConnectionMeans”クラスは、このアペン
ディックスのセクション3に規定されたように、テレス
クリプト”TsExistingConnectionMeans”クラスのC+
+表現を供与する。”TsExistingConnectionMeans”ク
ラスのインプリメンテーションは最小でも次の機能を供
与しなければならない。
【2792】クラス TsExistingConnectionMeans:publi
c TsReservableMeans { public: TsExistingConnectionMeans (const TsReservation&reservation, TsOctets*conne
ctionId); -TsExistingConnectionMeans(); const TsOctets * getConnectionId ()const; }; Construction TsExisting-ConnectionMeans: TsExistingConnectionMeans(const TsReservation& res
ervation, TsOctets *connectionId) 新しい”TsExistingConnectionMeans”オブジェクトを
構成する。
【2793】reservation 新しい”TsExistingConnectionMeans”オブジェクト
の”TsReservableMeans”スーパークラスコンポーネン
トのリザーベイションの値を形成するべき”TsReservat
ion”オブジェクトへのリファレンス。
【2794】connectionId 新しい”TsExistingConnectionMeans”オブジェクトの
コネクションの識別子の値を形成するべき”TsOctets”
オブジェクトへのポインタ。
【2795】Destruction -TsExisting-ConnectionMeans: -TsExistingConnectionMeans() ”TsExistingConnectionMeans”オブジェクトを破壊す
る。”TsExistingConnectionMeans”オブジェクトおよ
びこのオブジェクトがオーナーシップの責任を持つ全て
のデータが破壊される。
【2796】Data Access getConnectionId: const TsOctets * getConnectionId() const ”TsExistingConnectionMeans”オブジェクトに含まれ
るコネクション識別子の値へのポインタがリターンされ
る。
【2797】7.6 Tsインテジャ(TsInteg
er) ”TsInteger”タイプのデフィニションは、テレスクリ
プトクラス”Integer”の限定されたC++表現を与え
る。
【2798】”TsInteger”タイプのインプリメンテー
ションは、範囲−2147483648から+2147
483647の範囲にある値を保持することができなけ
ればならない。
【2799】7.7 インテジャリスト(TsInte
gerList) ”TsintegerList”クラスは、クラス”integer”のオブ
ジェクトを収容するように拘束された、この開示のアペ
ンディックスAに定義されたテレスクリプトクラス”Li
st”のC++表現を供与する。”TsInteger”クラスの
インプリメンテーションは最小でも次の機能を供与しな
ければならない。
【2800】この場合には、CIは、”stop()”を呼び
出し、これは、opn ”transferOut”へのその後の全
ての呼び出しを阻止する効果を持つであろう。”star
t()”への後の呼び出しは、出力を取り、ブロックの結
果として停止されねばならなかったエンジンタスクをお
そらくは再スケジュールする。
【2801】クラス TsIntegerList { public: TsIntegerList(); -TsIntegerList(); const TsInteger*nextInteger(); void reset(); size_t integerCount () const; void appendInteger(TsInteger Integer);}; Construction TsIntegerList: TsIntegerList() 新しい”TsIntegerList”オブジェクトを構成する。
【2802】この構成の後”appendInteger()”機能が
呼び出されるまでに、新しく作り出されたインテジャリ
ストは空となる。
【2803】Destruction -TsIntegerList: -TsIntegerList() ”TsIntegerList”オブジェクトを破壊する。
【2804】”TsIntegerList”オブジェクトおよびそ
のオブジェクトがオーナーシップの責任を持つ全てのデ
ータが破壊される。
【2805】appendInteger; void appendInteger(TeInteger integer) ”TsIntegerList”オブジェクトの形の単一のインテジ
ャを、Tsインテジャリストオブジェクトに含まれたイ
ンテジャのリストに付加する。
【2806】integer ”TsIntegerList”オブジェクトに含まれるインテジャ
のリストに付加されるべきインテジャの値。
【2807】nextInteger: const TsInteger * nextInteger() Tsインテジャリスト/オブジェクトの形のインテジャ
(整数)へのポインタをリターンするかまたは0ポイン
タをリターンする。”nextInteger()”機能は多数回の
呼び出しを通じて、”TsIntegerList”オブジェクトに
含まれるインテジャのセットを、それらが収容されてい
る順序でリターンする。最後の整数がリターンされた
後、リセットファンクションが次に呼び出されるまで
に”nextInteger()”機能によって、0ポインタをリタ
ーンする。
【2808】reset: void reset() ”nextInteger()”の次の呼び出しによって、”TsInteg
erList”オブジェクトに含まれる最初の整数をリターン
させる。
【2809】integerCount: size_t integerCount () const ”TsIntegerList”オブジェクトに現在含まれる整数の
数をリターンする。
【2810】7.8 Tsミーンズ(TsMeans) ”TsMeans”クラスは、この開示のアペンディックスA
に規定されたテレスクリプトクラス”Means”のC++
の表現を供与する。”TsMeans”のインプリメンテーシ
ョンは、最小でも次の機能を供与しなければならない。
【2811】クラス TsMeans { public: typedef enum { TsMeansType_PSTN=0, TsMeansType_ExistingConnection=1, }Type; virtual -TsMeans()=0; Type type () const; protected: TsMeans (Type type); }; Construction TsMeans; TsMeans(Type meansType) 新しい”TsMeans”オブジェクトを構成する。
【2812】meanType 新しい”TsMeans”オブジェクトのミーンズ形の値を指
定する列記。
【2813】Destruction -TsMeans: 仮想的な -TsMeans() ”TsDestination”オブジェクトを破壊する。”TsDesti
nation”オブジェクトとそのオブジェクトがオーナーシ
ップの責任を持つ全てのデータが破壊される。
【2814】Data Access type: Type type () const ”TsMeans”オブジェクトのミーンズ形の値をリターン
する。
【2815】7.9 Tsオブジェクトスペシファイヤ
(TsobjSpecifier) ”TsObjSpecifier”は、各々が1つのプロトコールを表
すオブジェクトのクラスのC++表現を与え、このプロ
トコールを他のプロトコールから識別する。一例とし
て、”TsObjSpecifier”によって表されるクラスの1つ
のメンバは、セキュリティを与える特定の1つの方法を
表すように使用することができる。”TsObjSpecifier”
クラスのインプリメンテーションは、最小でも、次の機
能を供与しなければならない。
【2816】クラス TsObjSpecifier { public: TsObjSpecifier(TsInteger objId, TsOctets * namingAuthority); -TsObjSpecifier(); TsInteger getObjId () const; const TsOctets * getNamingAuthority () const; }; Construction TsObjSpecifier: TsObjSpecifier(TsInteger objId, TsOctets * namingA
uthority) 新しいTsオブジェクトスペシファイヤオブジェクトを
構成する。
【2817】objId 新しい”TsObjSpecifier”オブジェクトのオブジェクト
識別子の値を形成するべき整数の値。
【2818】naming Authority 新しい”TsObjSpecifier”オブジェクトのネーミングオ
ーソリティを形成するべき”TsOctets”オブジェクトへ
のポインタか、または、新しい”TsObjSpecifier”オブ
ジェクトがネーミングオーソリティの値を含まない場
合、0ポインタ。
【2819】Destruction -TsObjSpecifier: -TsObjSpecifier () ”TsObjSpecifier”オブジェクトを破壊する。”TsObjS
pecifier”オブジェクトとそのオブジェクトがオーナー
シップの責任を持つ全てのデータが破壊される。
【2820】Data Access getObjId: TsInteger getObjId () const ”TsObjSpecifier”オブジェクトに含まれるオブジェク
ト識別子の値がリターンされる。
【2821】getNaming-Authority: const TsOctets * getNamingAuthority () const ”TsObjSpecifier”オブジェクトに含まれるネーミング
オーソリティの値を伝える”TsOctets”オブジェクトへ
のポインタをリアするか、または、 ”TsObjSpecifie
r”オブジェクトがネーミングオーソリティの値を含ま
ない場合、0ポインタをリターンする。
【2822】7.10 Tsオクテット(TsOcte
t) Tsオクテットタイプがこの開示のアペンディックスA
に規定されたテレスクリプトクラス”octet”のC++
表現を供与する。
【2823】”TsOctets”タイプはC++符号なしch
arとして定義される。
【2824】7.11 Tsオクテッツ(TsOcte
ts) ”Octets”クラスは、この開示のアペンディックスAに
規定されたテレスクリプトクラス”octets”のC++表
現を与える。”TsOctets”のインプリメンテーション
は、最小でも、次の機能を与えなければならない。 クラス TsOctets { public: enum Copy Ownership{makeCopy, ownCopy, borrowCop
y}; TsOctets(size_tsize); TsOctets(size_t size, const TsOctet * data, CopyOw
nership ownership=makeCopy); -TsOctets ();const TsOctet*nextSeg(int&segSize);
void reset(); size_t size()const; void appendSeg(size}t size, const TsOctet* data); }; Construction TsOctets: TsOctets ”size_t size,TsOctete*data,CopyOwnership
ownership) ”TsOctet”オブジェクトの単一の列から”TsOctets”
オブジェクトを構成する。
【2825】size 新しい”TsOctets”オブジェクトに含まれるオクテット
の数。
【2826】data 新しい”TsOctets”オブジェクトに含まれるべきオクテ
ットの列すなわち”TsOctet”オブジェクトへのポイン
ター。この列中のエレメントの数は、”サイズ”の値に
等しいかまたはこれよりも大きくなければならない。
【2827】注:”サイズ”が0である場合、呼び差し
者(コーラー)によって0の長さの列が供与されねばな
らない。
【2828】ownership オクテットの列を新しい”TsOctets”オブジェクトに組
み込む方法を特定した列記。可能な値は次の通りであ
る。
【2829】”makeCopy”:オクテットの列中
のデータは、別の物理的なコピーの作成によって新し
い”TsOctets”オブジェクトに組み込まねばならない。
この構成に続いてコーラーは、元のオクテット列の完全
なオーナーシップを保持している。
【2830】特定されたオーナーシップアーギュメント
が”makeコピー”である場合、コーラーによって供与さ
れたオクテット列は、静的に、動的にまたは自動的に割
り当てられることができる。
【2831】”ownCopy”:オクテット列中のデ
ータは、インプリメンテーションの裁量によって、供与
されるオクテット列自身の組み込みを介して直接に新し
い”TsOctets”オブジェクトに組み込むことができる。
コーラーはこの構成に続いて、供与されたオクテット列
のオーナーシップを新しい”TsOctets”オブジェクトに
引き渡す。
【2832】特定されたオーナーシップのアーギュメン
トが”オウンコピー”である場合、コーラーによって供
与されたオクテット列は動的に割り当てられなければな
らない。
【2833】”borrowCopy”:オクテット列
中のデータは、供与されたオクテット列自身の組み込み
を介して、インプリメンテーションの裁量で、新しい”
TsOctets”オブジェクトに直接に組み込むことができ
る。”TsOctets”オブジェクトが構成された後、その破
壊まで、コーラーは、供与されたオクテット列自身の組
み込みを介して、インプリメンテーションの裁量で、新
しい”TsOctets”オブジェクトに直接に組み込むことが
できる。”TsOctets”オブジェクトが構成された後その
破壊までコーラは、供与されたオクテット列の列に対す
るコーラのオーナーシップを新しい”TsOctets”オブジ
ェクトにローンする。この期間の間コーラも、”TsOcte
ts”オブジェクトも、オクテット列を変更したり破壊し
たりしない。”TsOctets”オブジェクトが開始された
ら、オクテット列の完全なオーナーシップは再びコーラ
に戻される。
【2834】特定されたオーナーシップのアーギュメン
トが”ボローコピー”である場合、コーラによって供与
されたオクテット列は、静的に、動的にまたは自動的に
割り当てることができる。
【2835】TsOctets: TsOctets (size_t eventualSize) ”appendSeg()”機能を用いて、データを付加する準備
として、空の”TsOctets”オブジェクトを構成する。こ
れについては以下に説明される。 eventualS
ize 新しい”TsOctets”オブジェクトに時に含められるべき
最大数のオクテット。
【2836】Destruction -TsOctets: -TsOctets() ”TsOctets”オブジェクトを破壊する。”TsOctets”オ
ブジェクトおよびそのオブジェクトがオーナーシップが
責任を持つ全てのデータは破壊される。
【2837】Data Access appendSeg: void appendSeg (size_t size, TsOctet * data, CopyOwnership ownership) オクテット列すなわち”TsOctets”オブジェクトの列
を、”TsOctets”オブジェクト中にすでに存在している
オクテットのセットに付加する。
【2838】注:”TsOctets”以外のコンストラクタに
よって、すなわち、前記コンストラクタ機能のアーギュ
メント”イベンチュアルサイズ”によって、サイズ”イ
ベンチュアルサイズ”コンストラクタによって、作り出
された”TsOctets”オブジェクトに対してこの機能を呼
び出す効果は、インプリメンテーションによって規定さ
れる。さらにコンストラクタの”イベンチュアルサイ
ズ”パラメータに宣言された以上のデータを付加する効
果もインプリメンテーションによって規定される。
【2839】size ”TsOctets”オブジェクトに付加されるべきオクテット
の数。
【2840】data ”TsOctets”オブジェクトに付加されるべきオクテット
すなわち”TsOctet”オブジェクトの列へのポインタ。
列中のエレメントの数は、”size”の値に等しいかこれ
より大きくなければならない。
【2841】注:”size”が0である場合、0の長さの
列がコーラによって供与されねばならない。
【2842】ownership: オクテット列を”TsOctets”オブジェクトに組み込む方
法を特定する列記。可能な値およびその対応する意味
は、”TsOctets(size_t size, TsOc
tet * data, CopyOwnership
ownersip)”機能について説明したものと同
一である。
【2843】nextSeg: const TsOctet * nextSet (size_t & segSize) オクテット列およびサイズの値または0ポインタをリタ
ーンする。”nextSeg”ファンクションは、多数回の呼
び出しを通じて、”TsOctets”オブジェクトに含まれる
1つの列をその出現の順序で一緒に伝えるオクテット列
セグメントのコレクションをリターンする。その最後の
セグメントのリターンの後、”reset”ファンクション
が次に呼び出されるまでに、”nextSeg”ファンクショ
ンは、0ポインタをリターンし、”segSize”パラメー
タの値は変更しないままにしておく。
【2844】注:リターンされるセグメントの全数およ
び各々の個別のセグメントのサイズはインプリメンテー
ションに依存する。
【2845】segSize リターンされるセグメントの大きさとともに更新される
べき符号なしの整数の値へのリファレンス。
【2846】reset: void reset() ”TsOctets”オブジェクト中に含まれる最初のオクテッ
トのセグメントを”nextSeg”ファンクションの次の呼
び出しによってリターンさせる。
【2847】size: size_t size () const ”TsOctets”オブジェクトに現在含まれるオクテットの
全数をリターンする。
【2848】7.12 TsPSTNミーンズ(TsP
STNMeans) ”TsPSTNMeans”クラスは、このアペンディックスのセ
クション3に規定されたテレスクリプトクラス”PSTNMe
ans”のC++表現を供与する。”TsPSTNMeans”クラス
のインプリメンテーションは最小でも次の機能を有しな
ければならない。
【2849】クラス TsPSTNMeans: public TsReservabl
eMeans{ public: TsPSTNMeans(const TsReservation & reservation. TsTelenumber * telenumber); -TsPSTNMe
ans (); TsTelenumber * getTelenumber () const; }; Construction TsPSTNMeans: TsPSTNMeans(const TsReservaton & reservation, TsTe
lenumber * telenumber) 新しい”TsPSTNMeans”オブジェクトを構成する。
【2850】reservation 新しい”TsPSTNMeans”オブジェクトの”TsReservableM
eans”スーパークラスコンポーネントのリザーベイショ
ンの値を形成するべき”TsReservation”オブジェクト
へのリファレンス。
【2851】telenumber 新しい”TsPSTNMeans”オブジェクトのテレナンバの値
を形成するべき”TsTelenumber”オブジェクトへのポイ
ンタ。
【2852】Destruction -TsPSTNMeans: -TsPSTNMeans() ”TsPSTNMeans”オブジェクトを破壊する。”TsPSTNMea
ns”オブジェクトおよびそのオブジェクトがオーナーシ
ップ責任を持つ全てのデータが破壊される。
【2853】Data Access getTelenumber: const TsTelenumber * getTelenumber () const ”TsPSTNMeans”オブジェクトに含まれるテレナンバの
値をポインタにリターンする。
【2854】7.13 Tsリザーバブルミーンズ(T
sReservableMeans) ”TsReservableMeans”クラスは、このアペンディック
スのセクション3に定義されたテレスクリプトクラス”
ReservableMeans”のC++表現を与える。”TsReserva
bleMeans”クラスのインプリメンテーションは最小でも
次の機能を与えなければならない。
【2855】クラス TsReservableMeans: public TsMeans{ protected: TsReservableMeans(TsMeans::Type type, const TsRese
rvation & reservation); virtural -TsReservableMean
s(); public: TsReservaton & getReservation () const; }; Construction TsReservableMeans: TsReservableMeans(TsMeans:: Type type const TsRes
ervation & reservation) 新しい”TsReservableMeans”オブジェクトを構成す
る。
【2856】type 新しい”TsReservableMeans”オブジェクトの”TsMean
s”スーパークラスコンポーネントのミーンズ形の値を
特定する列記。
【2857】reservation 新しい”TsReservableMeans”オブジェクトに含まれる
べきリザーベイションの値を伝える”TsReservation”
オブジェクトへのリファレンス。Destruction-TsReserv
able-Means: 仮想的な-TsReservableMeans() ”TsReservableMeans”オブジェクトを破壊する。”TsR
eservableMeans”オブジェクトおよびこのオブジェクト
がオーナーシップの責任を持つ全てのデータを破壊す
る。
【2858】Data Access getReservation: const TsReservation & getReservation () const ”TsReservableMeans”オブジェクト内に含まれるリザ
ーベイションの値へのリファレンスをリターンする。
【2859】7.14 Tsリザーベイション(TsR
eservation) ”TsReservation”クラスはこのアペンディックスのセ
クション3に定義されたテレスクリプトクラス”Reserv
ation”のC++表現を与える。”TsReservation”クラ
スのインプリメンテーションは最小でも次の機能を与え
なければならない。
【2860】クラス TsReservation { public: TsReservation(TsInteger id = 0); -TsReservation(); TsInteger id () const; }; Construction TsReservation: TsReservation (TsInteger id = 0) 新しい”TsReservation”オブジェクトを構成する。
【2861】id 新しい”TsReservation”オブジェクトのリザーベイシ
ョン識別子の値を形成するべき”TsInteger”。
【2862】Destruction -TsReservation: -TsReservation() ”TsReservation”オブジェクトを破壊する。”TsReser
vation”オブジェクトおよびこのオブジェクトがオーナ
ーシップの責任を持つ全てのデータが破壊される。
【2863】Data Access id: TsInteger id () const ”TsReservation”オブジェクトのリザーベイション識
別子の値をリターンする。
【2864】7.15 Tsストリング(TsStri
ng) Tsストリングクラスは、この開示のアペンディックス
Aに定義されたテレスクリプトクラス”String”のC+
+表現を与える。”TsString”クラスのインプリメンテ
ーションは最小でも次の機能を与えなければならない。
Issue: This needs to be extended to support non-ASCII character sets. クラス TsString { public: TsString (const TsCharacter * string ); -TsString
(); const TsCharacter * getString () const; size_t siz
e () const; }; Construction TsString: TsString(const TsCharacter*string) 新しい”TsString”オブジェクトを構成する。
【2865】string 新しい”TsString”オブジェクトに含まれるべきキャラ
クタのストリングを伝える、0キャラクタによって終了
される”TsCharacter”列へのポインタ。
【2866】Destruction -TsString: -TsString() ”TsString”オブジェクトを破壊する。”TsString”オ
ブジェクトおよぼそのオブジェクトがオーナーシップの
責任を持つ全てのデータが破壊される。
【2867】Data Access getString: const TsCharacter*getString ()const ”TsString”オブジェクトに含まれるキャラクタストリ
ングへのポインタをリターンする。
【2868】size: size_t size () const ”TsString”オブジェクトに現在含まれるキャラクタの
数をリターンする。
【2869】7.16 Tsテレアドレス(TsTel
eaddress) ”TsTeleaddress”クラスは、この開示のアペンディッ
クスAに定義されるテレスクリプトクラス”TsTeleaddr
ess”のC++表現を供与する。”TsTeleaddress”クラ
スのインプリメンテーションは最小でも次の機能を供与
しなければならない。
【2870】クラス TsTeleaddress { public: TsTeleaddress (TsOctets * provider, TsString * loc
ation); -TsTeleaddress(); const TsOctets*getProvider()const; const TsString
*getLocation()const; const TsOctets*getnextRoutingAdvice ();void rese
t(); int routingAdviceCount () const; void appendRoutingAdvice (TsOctets*advice);}; Construction TsTeleaddress: TsTeleaddress(TsOctets*provider, TsString*locatio
n) 新しい”TsTeleaddress”オブジェクトを構成する。
【2871】この構成の後に、新しく作り出されたテレ
アドレスオブジェクト中に含まれるルーティングアドバ
イスのエレメントのリストは空となるであろう。
【2872】provider 新しい”TsTeleaddress”オブジェクトのプロバイダの
値を形成するべき”TsOctets”オブジェクトへのポイン
タかまたは、新しいテレアドレスオブジェクトがプロバ
オダの値を含まない場合には、0ポインタ。
【2873】location 新しい”TsTeleaddress”オブジェクトのロケーション
の値を形成するべき”TsString”オブジェクトへのポイ
ンタかまたは、新しいテレアドレスオブジェクトがロケ
ーションの値を含まない場合には、0ポインタ。
【2874】Destruction -TsTeleaddress: -TsTeleaddress() ”TsTeleaddress”オブジェクトを破壊する。”TsTelea
ddress”オブジェクトおよびそのオブジェクトがオーナ
ーシップの責任を持つ全てのデータが破壊される。
【2875】Data Access appendRouting-Advice: void appendRoutingAdvice (TsOctets * advice) ”TsOctets”オブジェクトに含まれるルーティングアド
バイスのリストに、ルーティングアドバイスの単一のエ
レメントを、”TsOctets”オブジェクトの形で付加す
る。
【2876】advice ”TsTeleaddress”オブジェクトのルーティングアドバ
イスのリストに付加されるべきルーティングアドバイス
のエレメントを伝える”TsTeleaddress”オブジェクト
へのポインタ。
【2877】getProvider const TsOctets * getProvider()const ”TsTeleaddress”オブジェクトのプロバイダ値へのポ
インタをリターンするか、または、”TsTeleaddress”
オブジェクトがプロバイダの値を持たない場合には、0
ポインタをリターンする。
【2878】getLocation: const TsString*getLocation()const ”TsTeleaddress”オブジェクトのロケーションの値へ
のポインタをリターンするかまたは、”TsTeleaddres
s”オブジェクトがロケーションの値を持たない場合に
は0ポインタをリターンする。
【2879】nextRoutingAdvice: const TsOctets*nextRoutingAdvice() ルーティングアドバイスのエレメントへのポインタを”
TsOctets”オブジェクトの形でリターンするかまたは0
ポインタをリターンする。”nextRoutingAdovice()”は
多重の呼び出しを通じて、”TsTeleaddress”オブジェ
クトに含まれるルーティングアドバイスのエレメントの
セットをそれらのエレメントが収容されていた順序でリ
ターンする。
【2880】最後のルーティングアドバイスエレメント
のリターンの後、リセットファンクソンが次に呼び出さ
れるまで”nextRoutingAdovice()”機能は、0ポインタ
をリターンする。
【2881】reset: void reset() ”TsTeleaddress”オブジェクトに含まれるルーティン
グアドバイスの最初のエレメントを、”nextRoutingAdo
vice()”のファンクションの次の呼び出しによってリタ
ーンする。
【2882】routingAdvice-Count: size_t routingAdviceCount () const ”TsTeleaddress”オブジェクトに現在含まれているル
ーティングアドバイスのエレメントの数をリターンす
る。
【2883】7.17 Tsテレネーム(TsTele
name) ”TsTelename”クラスは、この開示のアペンディックス
Aに定義されたテレスクリプトクラス”TsTelename”の
C++表現を供与する。”TsTelename”クラスのインプ
リメンテーションは、最小でも次の機能を供与しなけれ
ばならない。
【2884】クラス TsTelename { public: TsTelename (TsOctets * authority, TsOctets * identity); -TsTelename(); const TsOctets*getAuthority()const; const TsOctet
s*getIdentity()const}; Construction TsTelename: TsTelename(TsOctets*Authority, TsOctets*identity) 新しい”TsTelename”オブジェクトを構成する。
【2885】authority 新しい”TsTelename”オブジェクトの値を形成するべき
オクテットストリングへのポインタ。
【2886】identity 新しい”TsTelename”オブジェクトのアイデンティティ
の値をオクテットストリングへのポインタまたは、”Ts
Telename”オブジェクトがアイデンティティの値を含ま
ない場合、0ポインタ。
【2887】Destruction -TsTelename: -TsTelename() ”TsTelename”オブジェクトを破壊する。”TsTelenam
e”オブジェクトおよびこのオブジェクトがオーナーシ
ップの責任を持つ全てのデータが破壊される。
【2888】Data Access getAuthority: const TsOctets*getAuthority()const ”TsTelename”オブジェクトに含まれるオーソリティの
値へのポイントをリターンする。
【2889】getIdentity: const TsOctets*getIdentity()const ”TsTelename”オブジェクトに含まれるアイデンティテ
ィの値へのポイントをリターンするかまたは、”TsTele
name”オブジェクトがアイデンティティの値を持たない
場合、0をリターンする。
【2890】7.18 Tsテレナンバ(TsTele
number) ”TsTelenumber”クラスは、この開示のアペンディック
スAに定義されたテレスクリプトクラス”Telenumber”
のC++表現を与える。”TsTelenumber”クラスのイン
プリメンテーションは最小でも次の機能を与えなければ
ならない。
【2891】クラス TsTelenumber { public: TsTelenumber (TsString * country, TsString * telephone, TsString * extension); -TsTelenumber(); const TsString*getCountry()const; const TsString*getTelephone()const; const TsString * getExtension()const;}; Construction TsTelenumber: TsTelenumber(TsString*country, TsString*telephone,
TsString* extension) 新しい”TsTelenumber”オブジェクトを構成する。
【2892】country 新しい”TsTelenumber”オブジェクトの国のコードの値
を形成するべき”TsString”オブジェクトへのポインタ
か、または”TsTelenumber”オブジェクトが国のコード
の値を含まない場合、0ポインタ。
【2893】注:供与された”TsString”オブジェクト
に含まれる値は、CCITTが国または他の地理学的な
領域に割り当てる数値コードのセットに制限される。
【2894】telephone 新しい”TsTelenumber”オブジェクトのテレホンナンバ
の値を形成するべき”TsString”オブジェクトへのポイ
ンタまたは、”TsTelenumber”オブジェクトはテレホン
ナンバの値を含まない場合には、0ポインタ。 注:供
与された”TsString”オブジェクトに含まれる値を形成
するべきキャラクタは、数字(”0”−”9”)、ハイ
フン(”−”)およびスペースキャラクタ(” ”)に
制限される。
【2895】extension 新しい”TsTelenumber”オブジェクトの内線番号の値を
形成するべき”TsString”オブジェクトへのポインタま
たは、”TsTelenumber”オブジェクトは内線番号の値を
含まない場合には、0ポインタ。
【2896】注:供与された”TsString”オブジェクト
に含まれる値を形成するキャラクタは、数字(”0”
−”9”)、ハイフン(”−”)およびスペースキャラ
クタ(” ”)に制限される。
【2897】Destruction -TsTelenumber: -TsTelenumber() ”TsTelenumber”オブジェクトを破壊する。”TsTelenu
mber”オブジェクトおよびこのオブジェクトがオーナー
シップの責任を持つ全てのデータが破壊される。
【2898】Data Access getCountry: const TsString * getCountry()const 新しい”TsTeleaddress”オブジェクトの国コードの値
へのポインタをリターンするかまたは、”TsTeleaddres
s”オブジェクトが国のコードの値を含まない場合に
は、0ポインタをリターンする。
【2899】getIdentity: const TsOctets*getIdentity()const ”TsTeleaddress”オブジェクトのテレホンナンバの値
へのポインタをリターンするか、または、”TsTeleaddr
ess”オブジェクトがテレホンナンバの値を含まない場
合には、0ポインタをリターンする。
【2900】getExtension: const TsString*getExtension()const ”TsTeleaddress”オブジェクトの内線番号の値へのポ
インタをリターンするか、または、”TsTeleaddress”
オブジェクトが内線番号の値を含まない場合には0ポイ
ンタをリターンする。
【2901】7.19 Tsウェイ(TsWay) ”TsWay”クラスは、この開示のアペンディックスAに
定義されたテレスクリプトクラス”Way”のC++表現
を供与する。”TsWay”クラスのインプリメンテーショ
ンは最小でも次の機能を与えなければならない。
【2902】クラス TsWay { public: TsWay (TsTelename * name, TsMeans * means, TsObjSpecifier * secRegimeId); -TsWay(); const TsTelename * getName() const; const TsMeans
* getMeans () const;const TsObjSpecifier * getSecR
egimeId () const; }; Construction TsWay: TsWay(TsTelename * name, TsMeans * means, TsObjSpecifier * secRegimeId) 新しい”TsWay”オブジェクトを構成する。
【2903】name 新しい”TsWay”オブジェクトのエンジン/領域テレネ
ームの値を形成するべき”TsTelename”オブジェクトへ
のポインタ、または、新しい”TsWay”オブジェクトが
エンジン/領域テレネームを含まない場合には、0ポイ
ンタ。
【2904】means 新しい”TsWay”オブジェクトの平均値を形成するべ
き”TsMeans”オブジェクトへのポインタまたは、新し
い”TsWay”オブジェクトが平均値を持たない場合に
は、0ポインタ。
【2905】secRegineId 新しい”TsWay”オブジェクトのセキュリティレジーム
の識別値を形成するべき”TsObjSpecifier”オブジェク
トへのポインタ、または、新しい”TsWay”オブジェク
トはセキュリティレジームの識別値を含まないが平均値
を持たない場合には、0ポインタ。
【2906】Destruction -TsWay: -TsWay() ”TsWay”オブジェクトを破壊する。”TsWay”オブジェ
クトおよびそのオブジェクトがオーナーシップの責任を
持つ全てのデータが破壊される。
【2907】Data Access getName: const TsTelename * getName () const ”TsWay”オブジェクトに含まれるエンジン/領域テレ
ネームの値へのポインタをリターンするかまたは、”Ts
Way”オブジェクトはエンジン/領域テレネームを含ま
ない場合には、0ポインタをリターンする。
【2908】getMeans: const TsMeans * getMeans () const Tsウェイオブジェクトに含まれる平均値へのポインタ
をリターンするか、または、”TsWay”オブジェクトは
平均値を含まない場合には、0ポインタをリターンす
る。
【2909】getSecRegimeId: const TsObjSpecifier * getSecRegimeId () const ”TsWay”オブジェクトに含まれるセキュリティレジー
ムの識別子の値へのポインタをリターンするか、また
は、”TsWay”がセキュリティレジームの識別子の値を
含まない場合には、0ポインタをリターンする。
【2910】アペンディックスD 1. 序 1.1 パーミットの変更 1.2 他の変更 2 テレスクリプト概念 2.1 プレイス間の伝送モデル 2.1.1 トラベルドプレイス 2.1.2 ショッピングボックス 2.1.3 オープンドオブジェクト 2.1.4 オープンドシッピングボックス 2.1.5 パーツボックス 2.1.6 チケットの使用 2.1.7 エンジンの役割 1. 序 このアペンディックスは、オブジェクトのインターチェ
ンジおよびパーガトリィを含むように広く解釈される、
プレイスからプレイスへのトランスファ(移送)のメカ
ニズムを記述する。
【2911】このアペンディックスはこの開示のアペン
ディックスAと同様に構成されている。
【2912】プレイスからプレイスへの移送のメカニズ
ムは、アペンディックスAの命令セットに対するいくつ
かの他の変更および付加を必要とし、これらは以下のサ
ブセクションに記述される。
【2913】1.1 パーミットの変更(Permit
Changes) ”go”またはオペレーション”send”が成功しても失敗
しても、オペレーション”entering”によってエージェ
ントがリクエストしたものよりもより許容的な最初のロ
ーカルパーミットがエージェントに許容される。
【2914】オペレーション”go”またはオペレーショ
ン”send”がフェイルしたとして、オペレーション”en
tering”によってエージェントを導入することができる
とともに、エージェントには、エージェントがリクエス
トしたよりもより許容的でない最初のローカルパーミッ
トが許容される。
【2915】現在の領域がプロセスに供与するパーミッ
トである、リードオンリパブリックインスタンス属性”
regionalPermit”をクラス”Process”に付加する。
【2916】プロセスのローカルパーミットに代わる新
しい”changePermit”オペレーションによって、プレイ
スの”ターミネート”オペレーションを変える。このオ
ペレーションはプレイス自身または問題のプロセスの仲
間の要求によって行なわれる。
【2917】クラス”Process”にシステムインスタン
スオペレーション”Permitchanged”を付加する。この
オペレーションは、あるプレイスが占有者のローカルパ
ーミットを変更する時にはいつでも、例えばオペレーシ
ョン”entering”が上記のようにする際に、または猶予
期間とともにもしくは猶予期間なしに占有者を排除する
ためにエンジンによって要求される。
【2918】permitChanged: op()PermitChanged|Nil; レスポンダのローカルパーミットが例えばレスポンダが
入るプレイスもしくはすでに占有しているプレイスによ
って変更された場合にいつでも、能力を付加しまたは能
力を除くために要求される。オペレーションの結果が0
でなく例外であれば、エンジンはレスポンダの実行スレ
ッドに例外を投出する。
【2919】クラス”Process”に固有のこのオペレー
ションのための方法は単に0をリターンする。
【2920】クラス”ExecutionException”にサブクラ
ス”Permitchanged”を付加する。このサブクラスの投
出数は、現在のプロセスのローカルパーミットが変更さ
れたことを意味する。
【2921】PermitChanged: interface (ExecutionException)=(); 注:プロセスの正しいローカルパーミットが厳格に制限
的である場合に、この例外をキャッチしてそれから回復
するプロセスの能力は、プロセスの終了の規則によって
制限される。
【2922】1.2 他の変更(Other Chan
ges) オペレーション”go”またはオペレーション”send”が
フェイルした場合、プレイスからプレイスへの移送モデ
ルに記述されているように、エージェントは、そのイン
タチェンジされた失われているオブジェクトの1個以上
を見いだすことができる。
【2923】例えば、デスティネーションがエージェン
トにリクエストされたエージェントをパーミットするこ
とを許容しないことによってオペレーションがフェイル
したとしても、”go”または”send”オペレーションに
よってエージェントをその目的点に到達させることがで
きる。さらにオペレーション”entering”はこの場合に
も存在している。
【2924】単にシステムフィーチャでなく予め定義さ
れるかまたはユーザによって定義されたフィーチャをエ
ンジンによってリクエストする。
【2925】エンジンによってリクエストされたフィー
チャのための、ユーザによって定義された方法は、あた
かもフィーチャがシステムフィーチャであるかのよう
に、クライエントおよびプロセスが0であることを見い
出だす。
【2926】現在の領域がプロセスの意図されたオーソ
リティにおいて持つ信用の程度をドキュメンテーション
する、リードオンリパブリックインスタンス属性”auth
enticity”をクラス”Process”に付加する。この属性
はアペンディックスAの4.57に定義されている。
【2927】クラス”Process”は、プロセスが作り出
された時点である、リードオンリパブリックインスタン
ス属性”creationTime”を付加する。
【2928】プロセスの属性”brand”を廃棄する。
【2929】注:その代わりある領域は、クラス”Perm
it”のサブクラスを定義し、その1つのインスタンスを
プロセスの属性”regionalPermit”として供給すること
ができる。
【2930】2 テレスクリプト概念(TELESCR
IPT CONCEPTS) 2.1 プレイス間の伝送モデル(Place−to−
place Transfer Model) 命令セットは、このセクションが定義する”プレイスか
らプレイスへの移行モデル(place-to-place transfer m
odel)”を実現する。
【2931】2.1.1 トラベルドプレイス(Tra
veled Places) ”Traveled”プレイスは、シッピングボックスがそれを
通って移送されるプレイスである。
【2932】Transfer シッピングボックスの”origin”である1つのプレイス
からシッピングボックスの”destination”である1以
上のプレイスにボックスの内容物を”transfer”するよ
うにネットワークがあるシッピングボックスのコーボレ
ートに委託した、トラブルされるプレイス(複数)。ト
ラブルされるプレイスは、異なった方向にシッピングボ
ックスの内容物を搬送しなければならない時にはいつで
も、新しいシッピングボックスを作り出す。
【2933】シッピングボックスの内容物をそのオリジ
ンからそのデスティネーションのどれか1つにトランス
ファするのは、4つのステップで行なわれ、その最後の
2つすなわちトランスファインおよびトランスファアウ
トは、単一のトランスファ内において反復することがで
きる。
【2934】Submission トランスファはシッピングボックスの”submission”に
よって開始される。シッピングボックスが結果として最
初にトランスファインされるトラブルされるプレイスは
その”source”である。
【2935】Delivery トランスファは、シッピングボックスの”delivery”で
終了する。サブミットされたシッピングボックスには配
送される場所がその”destination”である。
【2936】シッピングボックスの配送は”normal”ま
たは”abnormal”である。前者の場合シッピングボック
スの目的点は、サブミッションにおいて特定された通り
であり、シッピングボックスの内容物の全ての臨界の部
分が存在している。第2の場合には、ネットワークは、
シッピングボックスのための別途の予め規定されたデス
ティネーションを持っており、シッピングボックスの内
容物のある臨界な部分が存在していないことがある。例
外はこの異常性を説明する。
【2937】Transfer In シッピングボックスは、トラブルされたプレイスに”tr
ansferred in”される。トランスファインは、あるプレ
イス(トラブルされるプレイスでも他の場所でもよい)
からのシッピングボックスのサブミッションの結果であ
るか、または、トラブルされたプレイス(シッピングボ
ックスがトランスファインされるトラブルされる場所と
同一でも異なっていてもよい)からのシッピングボック
スのトランスファアウトの結果である。
【2938】シッピングボックスがそれから来たプレイ
スは、シッピングボックスの”previous hop”である。
【2939】Transfer Out シッピングボックスは、トラブルされるプレイスから”
transferred out”される。トランスファアウトは、ト
ラブルされるプレイス(シッピングボックスがそれから
トランスファアウトされたトラブルされる場所と同一で
も異なっていてもよい)へのシッピングボックスのトラ
ンスファインの結果であるか、プレイス(トラブルされ
るプレイスでもその他のプレイスでもよい)へのシッピ
ングボックスの配送の結果である。
【2940】シッピングボックスがそれに向かう場所
(単数もしくは複数)はシッピングボックスの”next h
op”である。
【2941】2.1.2 ショッピングボックス(Sh
ipping Boxes) ”Shipping Boxes”は、別のものすなわちその”conten
ts”を保持し、そのオブジェクトをプレイスからプレイ
スへと移送させるために使用することができる1つのオ
ブジェクトである。
【2942】Peek トラブルされるプレイスは、シッピングボックスの内容
物であるオブジェクトに”peek”することができる。す
なわち、トラブルされるプレイスは、下記の制限に従っ
て、オブジェクトの属性を取得することができる。
【2943】シッピングボックスは、シッピングボック
スの内容物へのプロテクトされるリファレンスを用いて
シッピングボックスの内容物の属性を取得する。ユーザ
によって定義された方法が関与していれば、方法は、あ
たかも属性がシステムの属性であるかのように、”clie
nt”、”here”および”Process”が0であることを見
い出だす。またある属性をピークすることは、その予め
定められた通路を無視し、どの場合にも、属性のオリジ
ナルでなく属性のコピーをリターンする。
【2944】Poke トラブルされるプレイスは、シッピングボックスの内容
物であるオブジェクトに”poke”することができる。す
なわち、トラブルされるプレイスは、下記の制限に従っ
て、オブジェクトの属性をセットすることができる。し
かし、トラブルされるプレイスは、トラブルされるプレ
イスが適当に特権を持っている場合にのみこれを行ない
うる。
【2945】シッピングボックスは、シッピングボック
スの内容物への保護されないリファレンスを用いて、そ
の内容物の属性をセットする。ユーザによって定義され
た方法が関与していれば、その方法は、あたかも属性が
システムの属性であるかのように、方法は、”clien
t”、”here”および”Process”が0であることを見い
出だす。さらに、属性においてポーキングすると、どん
な場合にも、提案された属性のオリジナルでなくそのコ
ピーを用いて、予め定められた通路が無視される。
【2946】前記の特権は次のようにして割り当てられ
る。あるエンジンプレイスは、たとえ命令セットがリー
ドオンリとして定義していても、属性”authentication
State”または”regionalPermit”をセットすることが
できる。”regionalPermit”属性の先取的なセッティン
グは、シッピングボックスの異常な配送を規定する。
【2947】注:トラブルされるプレイスは、シッピン
グボックスの内容物のオペレーションをリクエストする
ことはできない。
【2948】Rebox トラブルされるプレイスは、シッピングボックスを”re
box”することができる。トラブルされるプレイスは、
シッピングボックスは異なる方向に移送されねばならな
い場合にそれを行なう。エンジンは、シッピングボック
スから特定の目的点のチケットを除去し、それらを0に
よって代替し、現存のものと内容が同一の新しいシッピ
ングボックスにそれを付け替える。
【2949】Redirect トラブルされるプレイスは、シッピングボックスを”re
direct”することができる。トラブルされるプレイス
は、そのトランスファの間に例外が生じた場合にこれを
行なう。エンジンは、シッピングボックスへの例外を付
着させ、シッピングボックスの目的点チケットの中から
0を除去し、単一の特定されるチケットを各々の残存す
る目的点チケットに変えることができる。
【2950】2.1.3 オープンドオブジェクト(O
pened Objects) ”Opened”オブジェクトは、その0以上の部分がマニピ
ュレート可能なオブジェクトである。
【2951】Parts オブジェクトの各々の”part”は開放されていてもいな
くても、そのダイジェストが0でないインターチェンジ
ドオブジェクトである。開放されるオブジェクトの一部
分は、そのパートのクラスおよびダイジェストの別のオ
ブジェクトに、開放されるオブジェクトに大きく影響す
ることなく代替することができる。
【2952】Presence 開放されていてもいなくてもあるオブジェクトの各々の
部分は、”present”または不在である。一般にある部
分の”absence”は、オブジェクトの使用を制限する
が、オブジェクトのプレイスからプレイスへの移送を一
層効率的にする。あるオブジェクトはその時点において
存在しないそれ自身の一部分へのリファレンスを使用し
ようと試みた場合、エンジンは”Reference Void”を投
出する。
【2953】注:典型的なプラクティスにおいては、シ
ッピングボックスの内容物の一部はシッピングボックス
の委託点(サブミッション)において存在し再びシッピ
ングボックスの配送点において存在するが、作用を最適
にするために、シッピングボックスのトランスファの他
のステップの全部または一部では存在しない。
【2954】Criticality 開放されていてもいなくても、オブジェクトの各々の部
分は、臨界であるかまたは非臨界である。オブジェクト
は、オブジェクトの”non-critical”部分の1以上が存
在していなくても使用されるように設計されているが、
オブジェクトの”critical”なパートが、どれか存在し
ていない場合にはそうではない。
【2955】注:あるオブジェクトの臨界の部分の不在
は、そのオブジェクトを収容したシッピングボックスの
正常な配送を妨げるが、非臨界な部分の不在はそうはし
ない。
【2956】注:典型的なプラクティスにおいて、オブ
ジェクトの全ての部分はあらゆる場所で臨界である。時
にはあるオブジェクトのある部分は、そのオブジェクト
が臨界なプレイスにいる間のみ臨界である。
【2957】2.1.4 オープンドシッピングボック
ス(Opened ShippingBoxes) ”Opened Shipping Boxes”は、そのパーツが操作され
るボックスである。開放されるシッピングボックスの部
分はシッピングボックスの内容物の部分である。
【2958】2.1.5 パーツボックス(Parts
Boxes) ”Parts Boxes”は、その部分が明文でかまたは任意に
特定することができる開放されたオブジェクトである。
パーツボックスは次の4つの目的に用いられる。
【2959】Manipulating Parts 開放されたオブジェクトの部分はパーツボックスによっ
てマニピュレートされる。これによってマニピュレーシ
ョンを行なうオブジェクトにパーツが直接近接可能でな
いことが保証される。例えばパーツボックス中のパーツ
は、開放されたオブジェクトに含めることができ、開放
されたオブジェクトの指定された部分は、コピーされる
かまたはパーツボックスに移すことができる。パーツ自
身はパーツボックス中にある間も検査できない。
【2960】注:これによってインターチェンジされた
オブジェクトによって表される知的所有権が保護され
る。
【2961】Storing Parts 開放されたシッピングボックスが委託されたトラブルさ
れるプレイスは、これらのシッピングボックスに含まれ
る部品のための貯蔵所としてパーツボックスを使用する
ことができる。パーツボックスは小さなデータボックス
であり、プレイスからプレイスへのトランスファにおい
てリゾースとして役立つ。
【2962】注:これによってトラブルされるプレイス
のインプリメンテーションが簡単になる。
【2963】Taking Parts シッピングボックスの内容物がパーツボックスを含む場
合、パーツボックスの臨界の部分が特定的にシッピング
ボックスのパーツボックスから除かれる。そのためシッ
ピングボックスに関与するトラブルされるプレイスはこ
れらのパーツを調べることも除外することもできない。
このような除外が表す最適化は試みられない。
【2964】注:これによって、プレイスからプレイス
へのトランスファを支持するエージェントは、インター
チェンジされるオブジェクトをトラベルされるプレイス
の間に移動させることができ、システム全体がシステム
の(この場合は誤った方向の)最適化の努力によってこ
の運動を避けようと試みることはない。
【2965】Leaving Parts シッピングボックスの内容物がパーツボックスを含む場
合、パーツボックスの非臨界の部分は特異的に、シッピ
ングボックスに含められる。このようにしてあるエージ
ェントは、インターチェンジされたオブジェクトが非臨
界であることを宣言することができ、その後にこの部分
が必然的にエージェントに不随することなく、トリップ
を行なうことができる。後にパーツボックスからパート
を取り除くことによって、エージェントは、そのパート
が臨界であることを宣言する。その場合、パーツが不在
ならば、エンジンはそのパーツをローカルに見い出す
か、またはエンジンは、そのパーツがエージェントによ
って使用されている場合、”Reference Void”を投出す
る。
【2966】注:エージェントはこれによって、そのイ
ンターチェンジされたオブジェクトのあるものがそこに
存在することを主張することなく、それらのオブジェク
トのあるものが使用される場所を訪問することができ
る。
【2967】2.1.6 チケットの使用(The U
se of Tickets) チケットは後述するように、シッピングボックスがそれ
を通って移送される複数のプレイスを規定する。”plac
e attributes”はこのセクション全体を通じて、”dest
inationName”、”destinationAddress”および”desti
nationClass”の各属性である。以下に特に説明しない
他のチケット特性は無視される。
【2968】Source チケットはシッピングボックスのソースを規定するため
に用いられる。チケットの場所の属性(ソースを特定す
る)は、割り当てられたテレネーム、割り当てられたテ
レアドレスおよび割り当てられたサイテーションであ
る。チケットの”way”の属性は、0でなければ、ソー
スが必要に応じて到達するべきウェイを指定する。
【2969】Destination チケットは、シッピングボックスの各々の目的点を規定
するために用いられる。チケットの場所の属性は、問題
の目的点を特定する。チケットの属性”way”は、0で
なければ、その目的点が到達するべきウェイを指定す
る。”desiredWait”および”maximumWait”の各属性
は、シッピングボックスがその目的点に向かって移送さ
れている間シッピングボックスに供与されるべきサービ
スの品質を与える。
【2970】Previous Hop チケットは、シッピングボックスのプリビアスホップを
規定するために用いられる。チケットの属性”destinat
ionName”、”destinationAddress”および”destinati
onClass”(プリビアスホップを特定する)はそれぞれ
割り当てられたテレネーム、割り当てられたテレアドレ
スおよび割り当てられたサイテーションである。チケッ
トの属性”way”は0でなければ、シッピングボックス
がプリビアスホップからトランスファされたウェイを規
定する。
【2971】Next Hop チケットは、シッピングボックスのネクストホップを規
定するために用いられる。チケットの属性プレイスはネ
クストホップを特定する。チケットの属性”way”は0
でなければ、ネクストホップが到達されるべきウェイを
指定する。
【2972】2.1.7 エンジンの役割(The E
ngine’s Role) トラブルされるプレイスは、シッピングボックスの移送
とその目的点への配送とを、制御するのでなく、容易に
するものとして見ることが適切である。エンジン自身が
次のようにこのプロセスにおいて手助けをする。
【2973】Transfer In トラブルされるプレイスはシッピングボックスにおいて
トランスファされる時はいつでもエンジンはそのシッピ
ングボックスが開放されたものかそれともそうでないか
をすでに定めている。典型的なプラクティスではエンジ
ンはボックスごとにでなく統一的にこの決定を行なう。
従って一般に、あるトラブルされるプレイスは、シッピ
ングボックスの内容物の一部分の相互変換を付託されて
いるが他のものはそうではない。
【2974】Transfer Out トラブルされるプレイスがシッピングボックス”A”を
トランスファアウトする時はいつでもエンジンは次のこ
とを行なう。第1にエンジンは”A”をリボックスし、
新しいシッピングボックス”B”に移行し、またエンジ
ンがシッピングボックスを配送することができるどの目
的点へもチケットを移動させる。エンジンはトランスフ
ァアウトが配送を許容するものである場合にのみチケッ
トを”B”に移動させる。第2にエンジンは、”A”を
再びリボックスし、全ての残存するチケットを別の新し
いシッピングボックス”C”に移動させる。第3にエン
ジンは、非同期的に”C”をトランスファし、”B”を
配送することを試みる。
【2975】Expiration トラブルされるプレイスがシッピングボックス”A”の
どれかの目的点チケットを消滅させることを可能とする
時、エンジンは次のことを行なう。このようなチケット
は、その最大期間が到達した時に”消滅(expires)”
する。エンジンは、第1に、”A”をリボックスし、消
滅したチケットを新しいシッピングボックス”B”に移
動させる。第2にエンジンは、”B”を、エンジンによ
って選択されたプレイスに再指向させ、異常の結果とし
て、”Ticket Expired”をレコードする。第3にエンジ
ンは、”B”を、エンジンによって選択されたプレイス
にトランスファアウトし、これは、トラブルされたプレ
イスがそれを行なったかのように行なわれる。
【2976】Discard デスティネーションチケットがそれに対し固定されてい
るシッピングボックス”A”の最終化を惹起させるよう
に、このシッピングボックス”A”をあるトラブルされ
るプレイスが無視する時はいつでも、エンジンが次のこ
とを行なう。第1にエンジンは、”A”をリボックス
し、全てのデスティネーションチケットを新しいシッピ
ングボックス”B”に移動させる。第2にエンジンは”
A”を破壊する。第3にエンジンは、トラブルされるプ
レイスがそれを行なったかのように、エンジン自身が選
択したプレイスに、”B”を非同期的にトランスファア
ウトする。
【2977】2.1.8 ルーティングにおけるエンジ
ンの役割 エンジンは、シッピングボックスの第2ホップを選択
し、シッピングホップの第2ホップから最後のホップま
でを拘束し、さらにシッピングボックスの最初のホップ
を、ある領域内のホップの任意の順序において制限する
ことによって、シッピングボックスがそれにそって移送
されるルートを制限する。
【2978】First Regional Hop ある領域のエンジンは、その領域に入るシッピングボッ
クスが、その領域内の別のトラベルされるプレイスにト
ランスファインされたりその領域内において移送された
りする前に、エンジンプレイスにトランスファインされ
ることを保証するように互いに共同する。
【2979】Second Hop エンジンは、シッピングボックスのソースから、シッピ
ングボックスのセカンドホップすなわちシッピングボッ
クスが最初にトランスファインされるトラブルされるプ
レイスを次のようにして選択する。
【2980】第2のホップは、シッピングボックスのサ
ブミッションボックス(もしそれがトラブルされるプレ
イスであれば)であるかまたはさもなければサブミッシ
ョンプレイスのスーパープレイスである。いくつかのス
ーパープレイスがトラブルされるプレイスである場合他
のものを全く含まないものが選択される。
【2981】注:従って”submission”は、シッピング
ボックスがトラブルされるプレイスに到達するまでシッ
ピングボックスがそのオリジン及び次々のスーパープレ
イスを通ってフォール(fall)させるものとして理解す
ることができる。
【2982】Second-to-last Hop エンジンは次のようにして、シッピングボックスの終わ
りから2番目のホップすなわちシッピングボックスが最
後にトランスファアウトされたトラブルされるプレイス
を、シッピングボックスの全ての目的点に対してコンス
トレイントする。
【2983】終わりから2番目のホップは、目的点それ
自身であるか、そのスーパープレイスの1つである。こ
れはシッピングボックスの目的点の各々について個別に
そうなる。
【2984】注:従って”delivery”は、シッピングボ
ックスがその各々の目的点として資格を持つものに到達
するまで連続するサブプレイスを通ってシッピングボッ
クスをライズ(rise)させるものと理解することができ
る。
【2985】最後から2番目のホップが与えられた場
合、もしいくつかのプレイスがシッピングボックスの目
的点の1つとして資格を持つならば、エンジンはシッピ
ングボックスをそれらの内の1つに配送しようと試み、
アペンディックスAのセクション2.5.4に示した順
序でそれらに接近する。
【2986】最後から2番目のホップが与えられたとし
て、どのプレイスもシッピングボックスの目的点の1つ
として資格がなくまたはどのプレイスもシッピングボッ
クスの引き渡しを受け付けない場合には、エンジンはシ
ッピングボックスをエンジン自身が選んだ1つのプレイ
スにトランスファアウトする。
【2987】Non-delivery エンジンはあるシッピングボックスが最終的に配送不可
能であることをシステムエラーとして処理しこのシステ
ムエラーをエンジンは現行のOAMポリシーに従って取
り扱う。
【2988】注:エンジンは、他の仕方では引き渡しの
できないシッピングボックスのために最後によるプレイ
スとして”purgatory” を供給することができる。この
プレイスは占有者のローカルパーミットを著しく制限す
ることができる。
【2989】2.1.9 ゴーの実行(Implementing G
o) クラス”agent”に固有の”go” の方法は、エージェン
ト及びエージェントが所有するオブジェクトを内容とす
るシッピングボックスを用いて次のようにオペレーショ
ンをインプリメントする。
【2990】Submission エンジンは、オペレーションについてのエージェントの
リクエストを肯定した後、エージェントを含むシッピン
グボックスを作り出しそしてサブミット(submit)す
る。従ってシッピングボックスの最初のホップすなわち
そのオリジンは、エージェントがオペレーションを要求
した時にエージェントが占有していたプレイスである。
【2991】Delivery エンジンはオペレーションを終了することによってシッ
ピングボックスを配送する。従ってシッピングホップの
ラーストホップすなわちその唯1つの目的点は、エージ
ェントがそのオペレーションを完了した時にエージェン
トが占有しているプレイスである。
【2992】オペレーションは、シッピングボックスが
例外を記述せずシッピングボックスの非臨界的な部分の
みが不在な時に成功しその他の場合には失敗する。オペ
レーションが失敗すれば、オペレーションは、シッピン
グボックスが記録する例外を投出(シッピングボックス
がその例外を記録していれば)しさもなければエンジン
自身が選んだ例外を投出する。
【2993】2.1.10 センドの実行(Implementi
ng Send) クラス”agent”に固有のオペレーション”send”の方
法は、オペレーション”go”がインプリメントされるの
と同じ仕方で”send”オペレーションをインプリメント
するが2つの違いがある。第1にシッピングボックス
は、移送するべきクローンと同じ数の目的点を持つ。第
2にシッピングボックスの内容物は、オペレーションを
リクエストしたエージェントの代表的なクローンであ
る。クローンの割り当てられたテレネームの属性”iden
tity”は、委託の時には0であるが各々のクローンが配
送されるにつれて異なった仕方でセットされる。
【2994】3 テレスクリプトクラスの外観 3.1 プレイス間の伝送グループ オブジェクト(参照される) ・ Parts Box(開放) ・ Shipping Box(移動しない) ・・ Opened Shipping Box(開放) Opened Traveled 3.1.1 開放(Opened) オペレーション clearParts examineParts excludeParts getClasses getDigests getNumber includeParts ”opened”オブジェクトは、そのパーツが操作可能なあ
るオブジェクトである。 開放されたオブジェクトの固
有のオペレーションは、指定された基準を充たすパーツ
のナンバ(オペレーション” getNumber”)、クラース
(オペレーション”getClasses”)、及びダイジェスト
(オペレーション”getDigests”)を明らかにし、新し
いパーツを含め(オペレーション”includeParts”)、
現存するパーツを排除し(オペレーション”excludePar
ts”)特定の基準を充たす全ての現存のパーツを排除し
(オペレーション”clearParts”)そして特定のパーツ
の検査の準備をする(オペレーション”examinePart
s”)。
【2995】3.1.2 開放されたシッピングボック
ス ”opened shipping box”はそのパーツがマニピュレー
ト可能なシッピングボックスである。
【2996】3.1.3 パーツボックス オペレーション includeParts ”parts box”はそのパーツが指定されるとともにマニ
ピュレートもすることができるオブジェクトである。
【2997】パーツボックスの固有のオペレーションは
新しいパーツを含む(オペレーション”includePart
s”)。
【2998】3.1.4 シッピングボックス Attributes destinations exception source time オペレーション peek poke rebox redirect ”shipping box”は、プレイスの間をトランスファする
ことができるオブジェクトである。
【2999】シッピングボックスの固有の属性は、シッ
ピングボックスが委託された時間(属性”time”)とシ
ッピングボックスのソースへのチケット(属性”sourc
e”)と、シッピングボックスの目的点へのチケット
(属性”destinations”)と、シッピングボックスの移
送の間に遭遇することのある例外(属性”exceptio
n”)である。
【3000】シッピングボックスの固有のオペレーショ
ンは、シッピングボックスの内容物の特定された属性を
取得(オペレーション”peek”)または設定(オペレー
ション”poke”)し、例外の場合にシッピングボックス
を再指向(オペレーション”redirect”)させ、いくつ
かのネクストホップを許容するようにシッピングボック
スをレボックスする(オペレーション”rebox”)。
【3001】3.1.5 トラベルド(Traveled) オペレーション transferOut transferredIn ”traveled”オブジェクトは、シッピングボックスを移
送させる。
【3002】トラブルされたプレイスの固有のオペレー
ションは、シッピングボックスをトランスファアウトし
(オペレーション”transferOut”) シッピングボック
スのトランスファインに作用する(オペレーション”tr
ansferredIn”)。
【3003】4 テレスクリプトクラスの詳細 4.1 開放(Opened) Opened Class Opened: シールされたアブストラクトなインタフェース() = (・・
・); パブリックインスタンスオペレーション clearParts: プロテクトされない op (isCritical: Boolean|Nil); ブーリアン(アーギュメント”isCritical”)が規定す
る規格を充たすレスポンダの現在のパーツの全てをレス
ポンダから除去して廃棄する。下記オペレーション”ge
tClasses”参照。
【3004】examineParts: op ( ofClass: Class; digests: protected Set [Object]) PartsBox|Nil; そのクラス(アーギュメント”ofClass”) 及びダイジ
ェスト(アーギュメント”digests”) が指定されてい
る現在のパーツをレスポンダに残し、リターンする。オ
ペレーションはパーツを含むパーツボックス(もしあれ
ば)をリターンするかさもなければ0をリターンする。
【3005】excludeParts: プロテクトされない op (ofClass: Class; digests: protected Set[Object]) PastsBox|Nil; そのクラス(アーギュメント”ofClass”) 及びダイジ
ェスト(アーギュメント”digests”) が指定されてい
る現在のパーツをリスポンダから除去しリターンする。
オペレーションはパーツ(もしあれば)を含むパーツボ
ックスをリターンするかさもなければ0をリターンす
る。
【3006】getClasses: op (isPresent, isritical: Boolean|Nil) protected Set [Class]; ブーリアン(アーギュメント”isPresent”及び”isCri
tical”) が規定する基準(後述する)を充たすリスポ
ンダのパーツのクラスをリターンする。
【3007】第1のブーリアンによって規定される第1
の基準は、ブーリアンが真であればパーツは存在し、ブ
ーリアンが偽であればパーツは存在せず、アーギュメン
トが0であればその両方であるということである。第2
のブーリアンによって規定される第2の基準は、ブーリ
アンが真であればパーツは臨界であり、ブーリアンが偽
であればパーツは非臨界であり、アーギュメントが0で
あればその両方である、ということである。
【3008】getDigests: op(ofClass: Class; isPresent, isCritical: Boolean|
Nil) protected Set [Object] 指定されたクラス(アーギュメント”ofClass”)であ
り、ブーリアン(アーギュメント”isPresent”及び”i
sCritical”)が規定する基準(前記オペレーション”g
etClasses”参照) を充たすレスポンダのパーツのダイ
ジェストをリターンする。
【3009】getNumber: op(isPresent, isCritical: Boolean|Nil) Integer; ブーリアン(”isPresent”及び”isCritical”) が規
定するクリテリア(前記オペレーション”getClasses”
参照)を充たすレスポンダのパーツの番号をリターンす
る。
【3010】includeParts: プロテクトされない op (parts:protcted PartsBox); リスポンダのパーツにクラス及びダイジェストが適合す
るパーツボックスのパーツ(アーギュメント”part
s”) をリスポンダに含める。オペレーションは、最初
に、そこにすでに存在している適合したパーツをレスポ
ンダから排除し、除去する。
【3011】4.2 開放されたシッピングボックス オブジェクト(参照される) ・ シッピングボックス(移動しない) ・・ Opened Shipping Box(開放) Class OpenedShippingBox: シールドインタフェース (ShippingBox, Opened) = (); 4.3 パーツボックス オブジェクト(参照される) ・ Parts Box(開放) Class PartsBox: シールドインタフェース(オブジェクト、開放される)
= (・・・); Construction initialize: プロテクトされない op ( criticalParts, noncriticalParts: Set [Interchanged]|Nil); 相互変換されたオブジェクトの2つのセットを、レスポ
ンダの臨界の(アーギュメント”criticalParts”)パ
ーツ及び非臨界の(アーギュメント”non-critical”)
パーツ(全て最初に存在している)とする。しかしセ
ットの代わりに0が存在していれば、セットはクリアさ
れたものと推定する。
【3012】Public Instance Operations ”includeParts": プロテクトされない op (ハ゜ーツ:protected PartsBox); パーツボックスのパーツ(アーギュメント”parts”)
をリスポンダに含める。各々のパーツはリスポンダに存
在していると見做される。各々のパーツは、それがパー
ツボックスにおいてそのように考えられている場合にの
みレスポンダ中において臨界であると見做される。オペ
レーションは最初に、すでにそこに存在している適合す
るパーツをレスポンダから排除しそして廃棄する。
【3013】4.4 シッピングボックス オブジェクト(参照される) ・ Shipping Box(移動しない) Class ShippingBox: シールドインタフェース(オブジェクト、移動しない)
= (・・・); Construction initialize プロテクトされない op () FeatureUnavailableを送出; 例外を送出("FeatureUnavailable")。
【3014】注:シッピングボックスはオペレーショ
ン”new”を使用することなくオペレーション”go”ま
たは”send”によって作り出される。
【3015】Public Instance Attributes destination: リードオンリのプロテクトされる List [Ticket|Nil]; リスポンダの目的点及び0またはそれ以上の0(オペレ
ーション”rebox” を用いて他のシッピングボックスに
移動したチケットに変えられる)を規定するチケット。
【3016】exception リードオンリ TripException|Nil; 実際にトリップの例外に遭遇した場合に、リスポンダを
移送する間に遭遇したトリップの例外さもなければ0。
【3017】source リードオンリのプロテクトされるチケット。
【3018】リスポンダのソースを規定するチケット。
【3019】time: リードオンリのタイム。
【3020】リスポンダが委託された時間。
【3021】パブリックインスタンスオペレーション peek: op(identifier: Identifier!) copiedObject CopyUnavailable, FeatureUnavailableを送出する; 識別子(アーギュメント”identifier”)が表すレスポ
ンダの内容物の属性をリターンする。
【3022】リクエスタにとって近接可能なリスポンダ
の内容の属性を識別子が表さない場合(”FeatureUnava
ilable”)または属性のコピーが利用できない場合(”
CopyUnavailable”)例外が投出される。
【3023】poke: プロテクトされない op (identifier:Identifier!; at
tribute: copiedObject) ArgumentInvalid, AttributeReadOnly, FeatureUnavail
ableを送出する; オブジェクト(アーギュメント”attribute”)を識別
子(アーギュメント”identifier”)が表すレスポンダ
の内容物の属性にする。オペレーションは最初に属性
(もし存在すれば)を廃棄する。
【3024】オブジェクトは属性のコンストレイントに
違反しているか(”ArgumentInvalid”)、属性がリー
ドオンリであるか(”AttributeReadOnly”)または識
別子がリクエスタにとって近接可能なリスポンダの内容
物の属性を表さない場合(”FeatureUnavailable”)例
外が投出される。
【3025】rebox プロテクトされない op (チケット:protected Set[Intege
r]) ShippingBox thows PositionInvalid; その内容がリスポンダのものと同一である新しいシッピ
ングボックスを作り出してリターンし、リスポンダの属
性”destinations”中の指定された位置にあるチケット
(”tickets”) を新しいシッピングボックスに移動
し、それらを0で代替する。
【3026】指定された位置がそのようなものとして不
適切であれば(”PositionInvalid”)例外が投出され
る。
【3027】redirect: プロテクトされない op (例外:TripException; newDestination: copied Ticket|Nil); レスポンダの”destinations”属性から各々のニルアイ
テムを除去し、残っている各々のアイテムを、もしあれ
ばチケット(アーギュメント”newDestination”)で置
き換え、例外(アーギュメント”exception”)をレス
ポンダの属性”exception”にする。
【3028】アダプテーション copy Throws Copy Unavailable. finalize モデルによって規定されたようにレスポンダをレポック
スする。
【3029】4.5 トラベルド(Traveled) Traveled Class Traveled: アブストラクトインタフェース () = (・・・); プライベートインスタンスオペレーション transferOut: プロテクトされない op (shippingBox: unprotected hi
ppingBox; suggestedNextHop: protected Ticket|Nil; canDeliver: Boolean); 0でなければ、チケット(アーギュメント”suggestedN
extHop”)によって規定されるプロセスに、さもなけれ
ばエンジンによって選択されるプレイスに、シッピング
ボックス(アーギュメント”shippingBox”) をトラン
スファアウトする。たとえチケットが存在していても、
チケットは、次のホップがチケットによって規定される
プレイスであることを要求するのではなく示唆する。
【3030】ブーリアン(アーギュメント”canDelive
r”)、エンジンがそのようにすることができるならば
エンジンがシッピングボックスを自由に配送することが
できるか否かを指示する。
【3031】システムインスタンスオペレション transferredIn: アブストラクトのプロテクトされていない op (shippin
gBox:unprotectedShippingBox; previousHop: protected Ticket); シッピングボックス(アーギュメント”ShippingBo
x”) がチケット(アーギュメント”previousHop”)
によって規定されたプレイスからトランスファインされ
る時にリクエストされる。
【3032】マイクロフィルムアペンディックスGのコ
ンピュータプログラムは、カリフォルニア、マウンテン
ビュー、シリコングラフィックスから入手されるアイリ
スインディゴコンピュータシステムのようなワークステ
ーションを備えた、ユニックスオパレーティングシステ
ムIRIX4.0.5、コンパイラ及びリンカを用い
て、1次実施例に従ってコンパイルされリンクされた。
第2実施例によれば、マイクロアペンディックスGのコ
ンピュータプログラムは、MPW C++コンパイラを
用いてコンパイルされ、MPWリンカを用いてリンクさ
れた。これら両者は、カリフォルニア州クッパーチノ、
アップルコンピュータINC.から入手され、やはりア
ップルコンピュータINCから入手されるアップルマッ
キントッシュ(登録商標)コンピュータにおいて使用す
ることができる。使用される特別なコンピュータ言語及
びコンピュータシステムは本発明の重要な要素ではな
い。この開示に基づいて、同業者は、いろいろのコンピ
ュータ言語及び/又はいろいろのコンピュータシステム
を用いて本発明を実施することができる。
【図面の簡単な説明】
【図1】従来技術によるコンピュータシステムの構造を
示す図である。。
【図2】リモートプロシージャコーリングを使用した従
来技術による方法のフローチャートである。
【図3】リモートプロシージャコーリングを具体化する
従来技術によるネットワークを示す図である。
【図4】リモートプログラミングを使用する従来技術に
よる方法のフローチャートである。
【図5】リモートプログラミングを具体化する従来技術
によるネットワークを示す図である。
【図6】本発明に従って構成されたネットワークを通る
エージェントプロセスの運動を示す図である。
【図7】本発明に従って構成されたネットワークを通る
エージェントプロセスの運動を示す図である。
【図8】本発明の原理に従って形成されたコンピュータ
システムにおいて実行されるプロセス(複数)を示す図
である。
【図9】本発明の原理に従って形成されたコンピュータ
システムにおいて実行されるプロセス(複数)を示す図
である。
【図10】本発明の一実施例によるクラス階層の一部を
示す図である。
【図11】本発明に従って形成されたネットワークを通
るエージェントプロセスの運動を示す図である。
【図12】本発明に従って形成されたネットワークを通
るエージェントプロセスの運動を示す図である。
【図13】本発明に従って形成されたネットワークを通
るエージェントプロセスの運動を示す図である。
【図14】本発明の一局面に従って形成されたネットワ
ークを通るエージェントプロセスのクローン(複数)の
運動を示す図である。
【図15】本発明の一局面に従って形成されたネットワ
ークを通るエージェントプロセスのクローン(複数)の
運動を示す図である。
【図16】本発明の一局面に従って形成されたネットワ
ークを通るエージェントプロセスのクローン(複数)の
運動を示す図である。
【図17】本発明の一局面に従って形成されたネットワ
ークを通るエージェントプロセスのクローン(複数)の
運動を示す図である。
【図18】本発明の一局面に従って形成されたネットワ
ークを通るエージェントプロセスのクローン(複数)の
運動を示す図である。
【図19】オペレーション”meet”を使用することによ
る2つのエージェントプロセスの間の相互作用を示す図
である。
【図20】オペレーション”meet”のオペレーションを
使用することによる2つのエージェントプロセスの間の
相互作用を示す図である。
【図21】オペレーション”meet”使用することによる
2つのエージェントプロセスの間の相互作用を示す図で
ある。
【図22】オペレーション”meet”を使用することによ
る2つのエージェントプロセスの間の相互作用を示す図
である。
【図23】オペレーション”meet”を使用することによ
る2つのエージェントプロセスの間の相互作用を示す図
である。
【図24】オペレーション”meet”を使用することによ
る2つのエージェントプロセスの間の相互作用を示す図
である。
【図25】本発明の一局面に従って形成されたプレイス
プロセスの相互作用を示す図である。
【図26】本発明の一局面に従って形成されたプレイス
プロセスの相互作用を示す図である。
【図27】本発明の一局面に従って形成されたプレイス
プロセスの相互作用を示す図である。
【図28】本発明の一局面に従って形成されたプレイス
プロセスの相互作用を示す図である。
【図29】本発明の一局面に従って形成されたプレイス
プロセスの相互作用を示す図である。
【図30】本発明に従って構成されたコンピュータネッ
トワークの構成を示す図である。
【図31】図30に示したネットワークの別の表現形態
を現す図である。
【図32】図30に示したネットワークの別の表現形態
を現す図である。
【図33】本発明の一実施例によるエージェントプロセ
スのクラス関係を示す線図である。
【図34】本発明に従って形成されたネットワークの構
造を示すと共に、ネットワークを通るあるエージェント
プロセスの運動を示す図である。
【図35】オペレーション”go”の遂行による本発明の
コンピュータネットワーク内のエージェントプロセスの
運動のそれぞれ直前及び直後においての本発明に従って
形成されたエージェントプロセスの状態を示す図であ
る。
【図36】オペレーション”go”の遂行による本発明の
コンピュータネットワーク内のエージェントプロセスの
運動のそれぞれ直前及び直後においての本発明に従って
形成されたエージェントプロセスの状態を示す図であ
る。
【図37】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図38】パーミットを含むエージェントプロセスの構
造を示す図である。
【図39】図38のパーミットの構造を示す図である。
【図40】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図41】本発明に従って形成されたネットワークの構
造を示すと共に、ネットワークを通るあるエージェント
プロセスの運動を示す図である。
【図42】本発明の一実施例によるコード化エージェン
トの構造を示す図である。
【図43】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図44】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図45】テレアドレス、サイテイション、テレネーム
及びウェイを含む図35のチケットの構造を示す図であ
る。
【図46】図45のウェイの構造を示す図である。
【図47】本発明の一実施例によって形成されたディク
ショナリを示す図である。
【図48】本発明の一実施例によって形成されたファイ
ンダの構造を示す図である。
【図49】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図50】本発明に従って形成されたネットワークの構
造を示すと共に、ネットワークを通るあるエージェント
プロセスの運動を示す図である。
【図51】本発明に従って形成されたネットワークの構
造を示すと共に、ネットワークを通るあるエージェント
プロセスの運動を示す図である。
【図52】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図53】本発明に従って形成されたネットワークの構
造を示すと共に、ネットワークを通るあるエージェント
プロセスの運動を示す図である。
【図54】オペレーション”go”の遂行による本発明に
従うネットワークを通るエージェントプロセスの運動の
ためのステップを示すフローチャートである。
【図55】本発明の一実施例によるオペレーション”en
tering”の動作の遂行においてなされるステップを示す
フローチャートである。
【図56】それぞれオペレーション”entering”の直前
及び直後のエージェントプロセスの状態を示す図であ
る。
【図57】それぞれオペレーション”entering”の直前
及び直後のエージェントプロセスの状態を示す図であ
る。
【図58】オペレーション”exiting”の遂行のそれぞ
れ直前及び直後のプロセスの状態の一部を示す図であ
る。
【図59】オペレーション”exiting”の遂行のそれぞ
れ直前及び直後のプロセスの状態の一部を示す図であ
る。
【図60】本発明の一局面に従うネットワークを通るエ
ージェントプロセスの移動においての各ステップを示す
フローチャートである。
【図61】本発明の一局面に従うネットワークを通るエ
ージェントプロセスの移動においての各ステップを示す
フローチャートである。
【図62】図60〜図62に示したステップにおいて使
用されるインターチェンジ(相互変換)されたオブジェ
クトのレポジトリの構造を示す。
【図63】本発明の一局面に従うネットワークを通るエ
ージェントプロセスの移動においての各ステップを示す
フローチャートである。
【図64】本発明の原理によって形成されたコンピュー
タネットワークを示す図である。
【図65】それぞれオペレーション”send”の遂行の直
前及び直後のエージェントプロセスの状態の一部を示す
図である。
【図66】それぞれオペレーション”send”の遂行の直
前及び直後のエージェントプロセスの状態の一部を示す
図である。
【図67】オペレーション”send”の直後においてのエ
ージェントプロセスのクローンの状態を示す図である。
【図68】オペレーション”send”の遂行においてエー
ジェントプロセスのクローンの形成のそれぞれ前後にお
いてのエンジンプロセスの状態を示す図である。
【図69】オペレーション”send”の遂行においてエー
ジェントプロセスのクローンの形成のそれぞれ前後にお
いてのエンジンプロセスの状態を示す図である。
【図70】オペレーション”send”の遂行においてエー
ジェントプロセスの各クローンがコンピュータネットワ
ークのそれぞれのコンピュータシステムに移行した、図
25のコンピュータネットワークを示す図である。
【図71】デイファードクローニングと称される本発明
の別の局面に従ってあるエージェントプロセスのクロー
ンがそれを通って移動するコンピュータネットワークを
示す図である。
【図72】ニル(零)及びチケットリストを含む送フレ
ームの構造を示す図である。
【図73】本発明の一局面に従って形成されたエージェ
ントプロセスのコード化クローンの構造を示す図であ
る。
【図74】デイファードクローニングと称される本発明
の別の局面に従ってあるエージェントプロセスのクロー
ンがそれを通って移動するコンピュータネットワークを
示す図である。
【図75】デイファードクローニングと称される本発明
の別の局面に従ってあるエージェントプロセスのクロー
ンがそれを通って移動するコンピュータネットワークを
示す図である。
【図76】デイファードクローニングと称される本発明
の別の局面に従ってあるエージェントプロセスのクロー
ンがそれを通って移動するコンピュータネットワークを
示す図である。
【図77】デイファードクローニングと称される本発明
の別の局面に従ってあるエージェントプロセスのクロー
ンがそれを通って移動するコンピュータネットワークを
示す図である。
【図78】オペレーション”meet”の遂行のそれぞれ直
前及び直後においてのあるプロセスの状態を示す図であ
る。
【図79】オペレーション”meet”の遂行のそれぞれ直
前及び直後においてのあるプロセスの状態を示す図であ
る。
【図80】オペレーション”meet”の遂行においてとら
れるステップのフローチャートである。
【図81】コンタクトのセットを含むエージェントプロ
セスの状態の一部を示す図である。
【図82】オペレーション”meeting ”の遂行のそれぞ
れ直前及び直後においてのあるプロセスの状態を示す図
である。
【図83】本発明の一実施例に従うオペレーション”me
eting ”の遂行においてとられる各ステップを示すフロ
ーチャートである。
【図84】オペレーション”meeting ”の遂行のそれぞ
れ直前及び直後においてのあるプロセスの状態を示す図
である。
【図85】本発明の一局面に従って相互作用する2つの
エージェントプロセスの状態を示す図である。
【図86】オペレーション”part”の遂行のそれぞれ直
前及び直後においてのあるエージェントプロセスの状態
の一部を示す図である。
【図87】オペレーション”part”の遂行のそれぞれ直
前及び直後においてのあるエージェントプロセスの状態
の一部を示す図である。
【図88】オペレーション”part”の遂行の直後におい
ての、図85に示したエージェントプロセスの状態を示
す図である。
【図89】本発明による第2のエージェントプロセスと
の相互作用の間の第1のエージェントプロセスの状態の
一部を示す図である。
【図90】本発明による第2のエージェントプロセスと
の相互作用の間の第1のエージェントプロセスの状態の
一部を示す図である。
【図91】本発明による第2のエージェントプロセスと
の相互作用の間の第1のエージェントプロセスの状態の
一部を示す図である。
【図92】本発明による第2のエージェントプロセスと
の相互作用の間の第1のエージェントプロセスの状態の
一部を示す図である。
【図93】本発明による第2のエージェントプロセスと
の相互作用の間の第1のエージェントプロセスの状態の
一部を示す図である。
【図94】本発明による第2のエージェントプロセスと
の相互作用の間の第1のエージェントプロセスの状態の
一部を示す図である。
【図95】本発明の一実施例による図89〜94に示す
相互作用の間の第2のエージェントプロセスの各行程を
示すフローチャートである。
【図96】本発明の一局面に従うクラス定義の構造を示
す図である。
【図97】本発明の一実施例に従って形成されたクラス
オブジェクトの構造を示す図である。
【図98】本発明の第2の実施例に従って形成されたク
ラスオブジェクトの構造を示す図である。
【図99】本発明に従って形成されたインターフェース
オブジェクトの構造を示す図である。
【図100】セット、識別子及びブーリアンを含むフィ
ーチャ定義の構造を示す図である。
【図101】コンストレイント及びブーリアンを含む属
性定義の構造を示す図である。
【図102】コンストレイントを及びリスト(コンスト
レイントを含む)を含むオペレーション定義の構造を示
す図である。
【図103】コンストレイントの構造を示す図である。
【図104】2つのリスト及び6つのレキシコンを含む
インプリメンテーションオブジェクトの構造を示す図で
ある。
【図105】プロシージャ及びリスト(識別子を含む)
を含む方法の構造を示す図である。
【図106】図105のプロシージャの構造を示す図で
ある。
【図107】サイティイション(テレネーム、2つのイ
ンテジャ(整数)及び識別子を含む)の構造を示す図で
ある。
【図108】サイティイションをそれぞれ含む2つの引
用(サイト)されたオブジェクトの構造を示す図であ
る。
【図109】オペレーション”do”の遂行においての各
ステップを示すフローチャートである。
【図110】1つの整数及び1つのプロシージャを含む
予め定義されたフレームの構造を示す図である。
【図111】スタック(ユーザーフレームを含む)を含
むプロセスの実行状態を示す図である。
【図112】図111のユーザーフレームの状態を示す
図である。
【図113】ユーザ定義されたオペレーションの遂行に
おいての各ステップを示す単一のフローチャートであ
る。
【図114】ユーザ定義されたオペレーションの遂行に
おいての各ステップを示す単一のフローチャートであ
る。
【図115】スタック(フレームを含む)を含むプロセ
スの実行状態を示す図である。
【図116】第2のフレーム及び図115のプロセスの
実行状態を示す図である。
【図117】最初に述べたフレームと第2のフレームと
を含むスタックを含む図115、図116のプロセスの
実行状態を示す図である。
【図118】本発明に従うクラス階層からの方法及びフ
ィーチャ定義を選択する上の各ステップを示すフローチ
ャートである。
【図119】リストがその一メンバであるクラスの階層
を示す図である。
【図120】リストクラスが一メンバであるクラス(複
数)の階層を示す図である。
【図121】あるオブジェクトのイニシアリゼイション
のための各ステップを示すフローチャートである。
【図122】オペレーション”if”の遂行のための各ス
テップを示すフローチャートである。
【図123】オペレーション”either”の遂行のための
各ステップを示すフローチャートである。
【図124】オペレーション”select”の遂行のための
各ステップを示すフローチャートである。
【図125】オペレーション”select”の遂行の直後に
おけるプロセスの実行状態を示す図である。
【図126】オペレーション”select”の遂行の直後に
おけるプロセスの実行状態を示す図である。
【図127】オペレーション”select”の遂行の動的状
態を示すあらかじめ定義されたフレームの状態を示す図
である。
【図128】オペレーション”while ”の遂行において
とられるステップを示すフロチャートである。
【図129】オペレーション”catch ”のそれぞれ直前
及び直後においてのあるプロセスの実行状態の一部を示
す図である。
【図130】オペレーション”catch ”のそれぞれ直前
及び直後においてのあるプロセスの実行状態の一部を示
す図である。
【図131】オペレーション”catch ”の遂行のための
各ステップを示すフロチャートである
【図132】オペレーション”loon”の遂行のための各
ステップを示すフロチャートである。
【図133】実行されたオブジェクトと2つの整数とを
含むレピートフレームの構造を示す図である。
【図134】オペレーション”repeat”の遂行のための
各ステップを示すフロチャートである。
【図135】スタック(ユーザー定義フレーム、予定義
フレーム、レピートフレム及び第2のユーザー定義フレ
ームを上部から下部にかけて含む。)を含むプロセスの
実行状態を示す図である。
【符号の説明】
100 コンピュータネットワーク 102AB コミュニケーションリンク 120A、120B コンピュータシステム 150A エージェント 220A、220B プレイス 1306 チケット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリストファー エス. ヘルゲッサン アメリカ合衆国 カリフォルニア州 94070, マウンテン ビュー, バーシ ティ コート 1025 (72)発明者 ダグラス エイ. ステードマン アメリカ合衆国 カリフォルニア州 94070, マウンテン ビュー, ラッサ ム ストリート #83, 2250

Claims (165)

    【特許請求の範囲】
  1. 【請求項1】 エージェントクラス及びプレイスクラス
    を含む複数のオブジェクト指向クラスを定義し、 前記オブジェクト指向クラス、該オブジェクト指向クラ
    スのサブクラス及び go オペレーションを含む、コンピ
    ュータプロセスのためのインストラクションを形成し、
    該コンピュータネットワーク中のプロセッサによって前
    記インストラクションをインタープリートし、 前記 go オペレーションに応答して、エージェントプロ
    セスがプレイスプロセスに転送され、前記エージェント
    プロセスが、前記エージェントクラスの1つのメンバで
    あり、前記プレイスプロセスは前記プレイスクラスの1
    つのメンバであることを特徴とするコンピュータネット
    ワークにおけるリモートプログラミングの実施方法。
  2. 【請求項2】 前記エージェントプロセスにおいて前記
    go オペレーションを形成することを特徴とする請求項
    第1項記載のリモートプログラミングの実施方法。
  3. 【請求項3】 前記プレイスのサブプレイスを形成し、 前記サブプレイスは前記プレイスクラスの1つのメンバ
    であり、前記プレイスは前記サブプレイスの1つのスー
    パープレイスであることを特徴とする請求項第1項記載
    のリモートプログラミングの実施方法。
  4. 【請求項4】 前記エージェントプロセスをオブジェク
    トのオーナーとして指定することを特徴とする請求項第
    1項記載のリモートプログラミングの実施方法。
  5. 【請求項5】 前記オブジェクト中にダイジェストを形
    成することを特徴とする請求項第4項記載のリモートプ
    ログラミングの実施方法。
  6. 【請求項6】 前記オブジェクトの代わりに前記プレイ
    スプロセスにおいて第2のオブジェクトを相互変換し、 前記第2のオブジェクトは、前記ダイジェストと同等の
    第2のダイジェストを有し、 前記第1のオブジェクトは前記プレイスプロセスに転送
    されないことを特徴とする請求項第5項記載のリモート
    プログラミングの実施方法。
  7. 【請求項7】 前記プレイスプロセスをチケット手段に
    よって指定することを特徴とすることを請求項第1項記
    載のリモートプログラミングの実施方法。
  8. 【請求項8】 前記チケット手段を前記エージェントプ
    ロセス内において形成することを特徴とする請求項第7
    項記載のリモートプログラミングの実施方法。
  9. 【請求項9】 前記チケット手段中において前記プレイ
    スプロセスのアドレスを形成することを特徴とする請求
    項第7項記載のリモートプログラミングの実施方法。
  10. 【請求項10】 前記アドレスがテレアドレスであるこ
    とを特徴とする請求項第9項記載のリモートプログラミ
    ングの実施方法。
  11. 【請求項11】 前記チケット手段中において前記プレ
    イスプロセスのネームを形成することを特徴とする請求
    項第7項記載のリモートプログラミングの実施方法。
  12. 【請求項12】 前記ネームがテレネームであることを
    特徴とする請求項第11項記載のリモートプログラミン
    グの実施方法。
  13. 【請求項13】 クラスオブジェクトのクラスを規定
    し、 クラスオブジェクトを形成し、 前記クラスオブジェクトは、(i)クラスオブジェクト
    の前記クラスの1つのメンバであり、(ii)前記オブ
    ジェクト指向クラスの選択された1つのもののサブクラ
    スである第1のクラスを規定し、 前記第1のクラスの1つのメンバであるオブジェクトを
    形成し、 前記エージェントプロセスは、前記オブジェクトを所有
    し、前記エージェントプロセスを前記プレイスプロセス
    に転送することが、前記オブジェクト及び前記クラスオ
    ブジェクトを前記プレイスプロセスに転送することを含
    むことを特徴とする請求項第1項記載のリモートプログ
    ラミングの実施方法。
  14. 【請求項14】 エージェントクラスとプレイスクラス
    とを含む複数のオブジェクト指向クラスを定義し、 前記オブジェクト指向クラス、前記オブジェクト指向ク
    ラスのサブクラス及びsend オペレーションを含むコン
    ピュータプロセスのためのインストラクションを形成
    し、前記コンピュータのネットワーク中のプロセッサに
    おいて前記インストラクションをインタープリートする
    際に、 前記 send オペレーションに応答してエージェントプロ
    セスの1つのクローンが1つのプレイスプロセスに転送
    され、前記クローン及び前記エージェントプロセスは、
    各々前記エージェントクラスの1つのメンバであり、前
    記プレイスプロセスは前記プレイスクラスの1つのメン
    バであることを特徴とするコンピュータネットワークに
    おけるリモートプログラミングの実施方法。
  15. 【請求項15】 前記 send オペレーションを前記エー
    ジェントプロセス中において形成することを特徴とする
    請求項第14項記載のリモートプログラミングの実施方
    法。
  16. 【請求項16】 前記プレイスのサブプレイスを形成
    し、 前記サブプレイスは前記プレイスクラスの1つのメンバ
    であり、前記プレイスは前記サブプレイスの1つのスー
    パープレイスであることを特徴とする請求項第14項記
    載のリモートプログラミングの実施方法。
  17. 【請求項17】 前記エージェントプロセスをオブジェ
    クトのオーナーとして指定することを特徴とする請求項
    第14項記載のリモートプログラミングの実施方法。
  18. 【請求項18】 前記クローンの転送が前記プロセスの
    コピーを前記プレイスプロセスに転送することを特徴と
    する請求項第17項記載のリモートプログラミングの実
    施方法。
  19. 【請求項19】 前記オブジェクト中にダイジェストを
    形成することを特徴とする請求項第18項記載のリモー
    トプログラミングの実施方法。
  20. 【請求項20】 前記オブジェクトと異なる第2のオブ
    ジェクトを前記プレイスプロセスにおいて前記コピーと
    相互変換し、前記プレイスプロセスにおいて前記第2の
    オブジェクトは、前記ダイジェストと同等の第2のダイ
    ジェストを持ち、前記コピーは前記プレイスプロセスに
    転送されないことを特徴とする請求項第19項記載のリ
    モートプログラミングの実施方法。
  21. 【請求項21】 前記プレイスプロセスをチケット手段
    によって指定することを特徴とする請求項第14項記載
    のリモートプログラミングの実施方法。
  22. 【請求項22】 前記エージェントプロセス中において
    前記チケット手段を形成することを特徴とする請求項第
    21項記載のリモートプログラミングの実施方法。
  23. 【請求項23】 前記プレイスプロセスのアドレスを前
    記チケット手段中において形成することを特徴とする請
    求項第21項記載のリモートプログラミングの実施方
    法。
  24. 【請求項24】 前記アドレスがテレアドレスであるこ
    とを特徴とする請求項第23項記載のリモートプログラ
    ミングの実施方法。
  25. 【請求項25】 前記チケット手段中において前記プレ
    イスプロセスの1つのネームを形成することを特徴とす
    る請求項第21項記載のリモートプログラミングの実施
    方法。
  26. 【請求項26】 前記ネームがテレネームであることを
    特徴とする請求項第25項記載のリモートプログラミン
    グの実施方法。
  27. 【請求項27】 本発明は、前記 send オペレーション
    に応答して前記エージェントプロセスの第2のクローン
    を第2のプレイスプロセスに転送し、前記第2のクロー
    ンは、前記クローンとは異なり、前記エージェントクラ
    スの1つのメンバであり、前記第2のプレイスプロセス
    は前記プレイスプロセスの1つのメンバであることを特
    徴とする請求項第14項記載のリモートプログラミング
    の実施方法。
  28. 【請求項28】 前記第1のクローンを前記第1のプレ
    イスプロセスに転送し、前記第2のクローンを前記第2
    のプレイスプロセスに転送するためには、前記コンピュ
    ータネットワークの複数のコンピュータの内の単一のコ
    ンピュータに前記第1及び第2のクローンを転送するこ
    とを必要であることを定め、 前記第1のクローンを前記単一のコンピュータに転送
    し、 前記単一のコンピュータにおいて前記第1のクローンか
    ら前記第2のクローンを形成することを特徴とする請求
    項第27項記載のリモートプログラミングの実施方法。
  29. 【請求項29】 前記単一のコンピュータから前記プレ
    イスプロセスに前記第2のクローンを転送し、 前記単一のコンピュータから前記第2のプレイスプロセ
    スに前記第2のクローンを転送することを特徴とする請
    求項第28項記載のリモートプログラミングの実施方
    法。
  30. 【請求項30】 エージェントクラスを含む複数のオブ
    ジェクト指向クラスを定義し、 前記オブジェクト指向クラス、前記オブジェクト指向ク
    ラスのサブクラス及びmeet オペレーションを含むコン
    ピュータプロセスのためのインストラクションを形成
    し、 前記コンピュータネットワーク中の1つのプロセッサに
    おいて前記インストラクションをインタープリートし、 ミーティングプレイスプロセスが前記 meet オペレーシ
    ョンに応答して、第2のエージェントプロセスへの第1
    のエージェントプロセスのアクセスを供与し、前記第1
    のエージェントプロセスへの前記第2のエージェントプ
    ロセスのアクセスも供与し、さらに、前記第1及び第2
    のエージェントプロセスが前記エージェントクラスのメ
    ンバであることを特徴とするコンピュータにおけるコン
    ピュータのプロセス間通信方法。
  31. 【請求項31】 前記ミーティングプレイスプロセスが
    前記複数のオブジェクト指向クラス中のプレイスクラス
    の1つのメンバであり、前記第1及び第2のエージェン
    トプロセスが前記ミーティングプレイスプロセスを占有
    することを特徴とする請求項第30項記載のコンピュー
    タのプロセス間通信方法。
  32. 【請求項32】 第2のプレイスプロセスを形成し、 第2のプレイスプロセスは前記プレイスクラスの1つの
    メンバであり、前記第2のプレイスプロセスは前記ミー
    ティングプレイスプロセスの1つのサブプレイスであ
    り、前記ミーティングプレイスは前記第2のプレイスの
    スーパープレイスであることを特徴とする請求項第31
    項記載のコンピュータのプロセス間通信方法。
  33. 【請求項33】 エージェントクラス、プレイスクラス
    及びチケットクラスを含む複数のオブジェクト指向クラ
    スを定義し、 各々が前記プレイスクラスの1つのメンバである、前記
    コンピュータネットワーク中の複数のプレイスプロセス
    を形成し、 前記エージェントクラスの1つのメンバであって前記複
    数のプレイスプロセス中の第1のプレイスプロセスを占
    有する、エージェントプロセスを形成し、 前記チケットクラスの1つのメンバであり、前記複数の
    プレイスプロセス中の前記第1のプレイスプロセスから
    第2のプレイスプロセスへの前記エージェントプロセス
    の移動を含むトリップを定義するチケットを形成するこ
    とを特徴とするコンピュータネットワークにおけるプロ
    セスの運動制御方法。
  34. 【請求項34】 プレイスプロセスとパーミットクラス
    とを含む複数のオブジェクト指向クラスを定義し、 前記プレイスクラスの1つのメンバであるプロセスを形
    成し、前記パーミットクラスの1つのメンバであって前
    記プロセスの1以上の能力を指定するパーミットを形成
    することを特徴とするコンピュータネットワーク中のプ
    ロセスの能力制御方法。
  35. 【請求項35】 前記プロセスクラス中に go オペレー
    ションを定義し、 前記プロセスが前記 go オペレーションを遂行しうるか
    否かを前記パーミット中において指定することを特徴と
    する請求項第34項記載のプロセスの能力制御方法。
  36. 【請求項36】 前記プロセスクラス中に send オペレ
    ーションを定義し、 前記プロセスが前記 send オペレーションを遂行しうる
    か否かを前記パーミット中において指定することを特徴
    とする請求項第34項記載のプロセスの能力制御方法。
  37. 【請求項37】 前記プロセスクラス中において charg
    e オペレーションを定義し、 前記プロセスが前記 charge オペレーションを遂行しう
    るか否かを前記パーミット中において指定することを特
    徴とする請求項第34項記載のプロセスの能力制御方
    法。
  38. 【請求項38】 前記プロセスクラス中にterminate オ
    ペレーションを定義し、 前記プロセスが前記terminate オペレーションを遂行し
    うるか否かを前記パーミット中において指定することを
    特徴とする請求項第34項記載のプロセスの能力制御方
    法。
  39. 【請求項39】 前記プロセスが前記プロセスと異なっ
    た第2のプロセスを作り出すことができるか否かを前記
    パーミット中において指定し、 該第2のプロセスは前記プロセスクラスの1つのメンバ
    であることを特徴とする請求項第34項記載のプロセス
    の能力制御方法。
  40. 【請求項40】 オブジェクト指向プレイスクラスを定
    義し、 前記パーミット中に前記プロセスが前記プレイスプロセ
    スの複数のメンバを作り出すことができるか否かを前記
    パーミット中において指定することを特徴とする請求項
    第34項記載のプロセスの能力制御方法。
  41. 【請求項41】 前記プロセスが失敗した時に前記プロ
    セスが再スタートされるか否かを前記パーミット中にお
    いて指定することを特徴とする請求項第34項記載のプ
    ロセスの能力制御方法。
  42. 【請求項42】 前記プロセスに割り当てられた処理量
    を前記パーミット中において指定することを特徴とする
    請求項第34項記載のプロセスの能力制御方法。
  43. 【請求項43】 前記プロセスが終了する時間を前記パ
    ーミット中において指定することを特徴とする請求項第
    34項記載のプロセスの能力制御方法。
  44. 【請求項44】 前記プロセスクラス中において制限オ
    ペレーションを定義し、 前記クラス、前記クラスのサブクラス及び前記制限オペ
    レーションを含むコンピュータプロセスのためのインス
    トラクションを形成し、 前記コンピュータネットワーク中のプロセッサにおいて
    前記インストラクションをインタープリートし、 前記パーミットと異なる第2のパーミットが前記制限オ
    ペレーションに応答して形成され、 前記第2のパーミットは前記パーミットクラスの1つの
    メンバであり、前記プロセスの前記1以上の能力の1つ
    のグループを指定し、 前記第2のパーミットによって指定された1以上の能力
    の前記グループに前記プロセスを制限することを特徴と
    する請求項第34項記載のプロセスの能力制御方法。
  45. 【請求項45】 コンピュータにおいて、 クラス(複数)の1つのクラスとサイテーション(複
    数)の1つのクラスを含む、複数のオブジェクト指向ク
    ラスを定義し、 前記複数のクラスの前記クラスのメンバである1以上の
    クラスオブジェクトを形成し、 前記第1のクラスオブジェクトを指定するとともに、前
    記クラスオブジェクトの内のどれが前記第1のオブジェ
    クトに対して後方にコンパティブルであるかを指定する
    サイテーションを前記クラスオブジェクト内の第1のも
    のの中に形成することを含む、インストラクションセッ
    トの種々のバージョンのプロセス(複数)をインタープ
    リートする方法。
  46. 【請求項46】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、 各々がゼロ又はそれ以上のエージェントプロセスのため
    の前記コンピュータ内の1つのもののある場所である複
    数のプレイスプロセスを前記コンピュータネットワーク
    中に用意し、 前記複数のプレイスプロセス中の目的点プレイスプロセ
    スへのエージェントプロセスのトリップをチケット手段
    によって指定し、 前記エージェントプロセス中の send オペレーションに
    応答して前記エージェントプロセスの1つのクローンを
    前記目的点プレイスプロセスに転送することを特徴とす
    る通信プロセス。
  47. 【請求項47】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、 前記複数のプレイスプロセス中の第2の目的点プレイス
    プロセスへの前記第2のエージェントプロセスの前記ト
    リップと異なる第2のトリップを第2のチケット手段に
    よって指定することを特徴とする請求項第46項記載の
    通信プロセス。
  48. 【請求項48】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記第1のトリップを行な
    う前記クローンと前記第2のトリップを行なう第2のク
    ローンとがどちらも前記コンピュータの内の単一のコン
    ピュータに転送されるべきことを定め、 前記第1のクローンを前記単一のコンピュータに移動さ
    せ、前記単一のコンピュータ中に、前記第1のクローン
    と異なる前記第2のクローンを形成することを特徴とす
    る請求項第47項記載の通信プロセス。
  49. 【請求項49】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記第1のクローンを前記
    目的点プレイスプロセスに転送することを特徴とする請
    求項第48項記載の通信プロセス。
  50. 【請求項50】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記第2のクローンを前記
    第2の目的点プレイスプロセスに転送することを特徴と
    する請求項第48項記載の通信プロセス。
  51. 【請求項51】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記エージェントプロセス
    中の go オペレーションに応答して、前記チケット手段
    によって指定される前記目的点プレイスプロセスに前記
    エージェントプロセスを転送することを特徴とする請求
    項第46項記載の通信プロセス。
  52. 【請求項52】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記チケット手段中のネー
    ムによって前記目的点プレイスプロセスを指定すること
    を特徴とする請求項第46項記載の通信プロセス。
  53. 【請求項53】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記ネームがテレネームで
    あることを特徴とする請求項第52項記載の通信プロセ
    ス。
  54. 【請求項54】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記チケット手段中のアド
    レスによって前記目的点プレイスプロセスを指定するこ
    とを特徴とする請求項第46項記載の通信プロセス。
  55. 【請求項55】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記アドレスがテレアドレ
    スであることを特徴とする請求項第54項記載の通信プ
    ロセス。
  56. 【請求項56】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スがその1つのメンバであるクラスのサイテーションに
    よって前記目的点プレイスプロセスを前記チケット手段
    中において指定することを特徴とする請求項第46項記
    載の通信プロセス。
  57. 【請求項57】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スのアドレス、前記目的点プレイスプロセスのネーム及
    び前記目的点プレイスプロセスがその1つのメンバであ
    るクラスのサイテーションの任意の組み合わせによって
    前記目的点プレイスプロセスを前記チケット手段中にお
    いて指定することを特徴とする請求項第46項記載の通
    信プロセス。
  58. 【請求項58】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記トリップの最大の期間
    を前記チケット手段中に指定することを特徴とする請求
    項第46項記載の通信プロセス。
  59. 【請求項59】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記トリップのための望ま
    しい期間を前記チケット手段中に指定することを特徴と
    する請求項第46項記載の通信プロセス。
  60. 【請求項60】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、転送手段を前記チケット手
    段中に指定し、該転送手段は前記クローンを転送するた
    めのコンピュータ間通信手段の形式を指定することを特
    徴とする請求項第46項項記載の通信プロセス。
  61. 【請求項61】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スにおいて前記エージェントプロセスのデッドライン
    を、前記チケット手段中に含まれる目的点パーミットに
    よって制御することを特徴とする請求項第46項記載の
    通信プロセス。
  62. 【請求項62】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スにおいて前記エージェントプロセスが遂行することが
    許可されたオペレーションを、前記チケット手段に含ま
    れる目的点パーミットによって制御することを特徴とす
    る請求項第46項記載の通信プロセス。
  63. 【請求項63】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スにおいて前記エージェントプロセスが消費することが
    許可されたリソースを、前記チケット手段に含まれる目
    的点パーミットによって制御することを特徴とする請求
    項第46項記載の通信プロセス。
  64. 【請求項64】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スにおいての他のプロセスに対する前記目的点プレイス
    プロセスにおいての前記エージェントプロセスの相対的
    なプライオリティを、前記チケット手段に含まれる目的
    点パーミットによって指定することを特徴とする請求項
    第46項記載の通信プロセス。
  65. 【請求項65】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、あるプロセスが持つことを
    許可される能力をパーミット手段を介して制御すること
    を特徴とする請求項第46項記載の通信プロセス。
  66. 【請求項66】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記パーミット手段が固有
    のパーミットであることを特徴とする請求項第65項記
    載の通信プロセス。
  67. 【請求項67】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記パーミット手段がロー
    カルパーミットであることを特徴とする請求項第66項
    記載の通信プロセス。
  68. 【請求項68】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記パーミット手段が一時
    的なパーミットであることを特徴とする請求項第65項
    記載の通信プロセス。
  69. 【請求項69】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記能力が前記プロセスの
    消費しうるリソースからなることを特徴とする請求項第
    65項記載の通信プロセス。
  70. 【請求項70】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記能力が、その後ではプ
    ロセスが進行しえないデッドラインを含むことを特徴と
    する請求項第65項記載の通信プロセス。
  71. 【請求項71】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記能力が他のプロセスに
    対する前記プロセスの相対的なプライオリティを含むこ
    とを特徴とする請求項第65項記載の通信プロセス。
  72. 【請求項72】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記能力が、前記プロセス
    が選択されたオペレーションを遂行する許可を含むこと
    を特徴とする請求項第65項記載の通信プロセス。
  73. 【請求項73】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記エージェントプロセス
    がオブジェクトを所有することを特徴とする請求項第4
    6項記載の通信プロセス。
  74. 【請求項74】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記オブジェクトがダイジ
    ェストを有することを特徴とする請求項第73項記載の
    通信プロセス。
  75. 【請求項75】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記エージェントプロセス
    のクローンを転送する前記工程が前記オブジェクトのコ
    ピーを転送することを含むことを特徴とする請求項第7
    4項記載の通信プロセス。
  76. 【請求項76】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スにおいて前記コピーを第2のオブジェクトに相互変換
    し、 該第2のオブジェクトは、最初に述べた前記ダイジェス
    トと同等のダイジェストを有し、 前記コピーは前記目的点プレイスプロセスには転送され
    ないことを特徴とする請求項第75項記載の通信プロセ
    ス。
  77. 【請求項77】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スにおいて前記オブジェクトの代わりに、相互変換され
    たオブジェクトを使用して、前記オブジェクトを前記目
    的点プレイスプロセスに転送する必要を除くことを特徴
    とする請求項第73項記載の通信プロセス。
  78. 【請求項78】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記転送工程が前記目的点
    プレイスプロセスにエンタする工程を含むことを特徴と
    する請求項第46項記載の通信プロセス。
  79. 【請求項79】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記転送ステップが前記ソ
    ースプレイスプロセスをエクシットする工程を含むこと
    を特徴とする請求項第46項記載の通信プロセス。
  80. 【請求項80】 複数のコンピュータを有するコンピュ
    ータネットワークにおいて、前記目的点プレイスプロセ
    スがミーティングプレイスプロセスであり、前記ミーテ
    ィングプレイスはリクエスタエージェントプロセスとペ
    ティションドエージェントプロセスとの間のミーティン
    グを取り計らうことを特徴とする請求項第46項記載の
    通信プロセス。
  81. 【請求項81】 コンピュータにおいて、第1のエージ
    ェントプロセスと第2のエージェントプロセスとを用意
    し、 ペティション手段によって、前記第1のエージェントプ
    ロセスと第2のエージェントプロセスとの間のミーティ
    ングを指定し、 前記ペティション手段によって定義された前記第1のエ
    ージェントプロセスと第2のエージェントプロセスとの
    間の前記ミーティングを取り計らうことを特徴とする通
    信プロセス。
  82. 【請求項82】 コンピュータにおいて、前記第1のエ
    ージェントプロセス中に前記ペティション手段を形成す
    ることを特徴とする請求項第81項記載の通信プロセ
    ス。
  83. 【請求項83】 コンピュータにおいて、ミーティング
    を特定する前記工程は、前記ペティション手段中におい
    て前記第2のエージェントプロセスを指定することを特
    徴とする請求項第81項記載の通信プロセス。
  84. 【請求項84】 コンピュータにおいて、前記第2のエ
    ージェントプロセスを指定する前記工程が、前記第2の
    エージェントをネームによって前記ペティッション手段
    中において指定することを特徴とする請求項第83項記
    載の通信プロセス。
  85. 【請求項85】 コンピュータにおいて、前記ネームが
    テレネームであることを特徴とする請求項第84項記載
    の通信プロセス。
  86. 【請求項86】 コンピュータにおいて、前記第2のエ
    ージェントプロセスを指定する前記工程が、前記第2の
    エージェントプロセスがその1つのメンバであるクラス
    を前記ペティッション手段中において指定することを特
    徴とする請求項第83項記載の通信プロセス。
  87. 【請求項87】 コンピュータにおいて、前記第2のエ
    ージェントプロセスを指定する前記工程は、前記第2の
    エージェントプロセスがその1つのメンバであるクラス
    のサイテーションを前記ペティッション手段中において
    指定することを特徴とする請求項第83項記載の通信プ
    ロセス。
  88. 【請求項88】 コンピュータにおいて、ミーティング
    を指定する前記工程が、前記ミーティングを取り計らう
    ための最大の期間を前記ペティション手段中において指
    定することを特徴とする請求項第81項記載の通信プロ
    セス。
  89. 【請求項89】 コンピュータにおいて、前記ミーティ
    ングを取り計らう前記工程は、前記第2のエージェント
    プロセスへのリファレンスを前記第1のエージェントプ
    ロセスに供与することを特徴とする請求項第81項記載
    の通信プロセス。
  90. 【請求項90】 コンピュータにおいて、前記ミーティ
    ングを取り計らう前記工程が、前記第1のエージェント
    プロセスへのリファレンスを前記第2のエージェントプ
    ロセスに対して供与することを特徴とする請求項第89
    項記載の通信プロセス。
  91. 【請求項91】 コンピュータにおいて、前記第2のエ
    ージェントプロセス中のオペレーションの遂行を前記第
    1のエージェントプロセス中においてインストラクショ
    ンに応答して生じさせることを特徴とする請求項第81
    項記載の通信プロセス。
  92. 【請求項92】 コンピュータにおいて、前記第1のエ
    ージェントプロセスがオブジェクトを所有することを特
    徴とする請求項第91項記載の通信プロセス。
  93. 【請求項93】 コンピュータにおいて、前記オブジェ
    クトへのリファレンスを前記第2のエージェントプロセ
    スに対して供与することを特徴とする請求項第92項記
    載の通信プロセス。
  94. 【請求項94】 コンピュータにおいて、前記リファレ
    ンスが保護されるリファレンスであることを特徴とする
    請求項第93項記載の通信プロセス。
  95. 【請求項95】 コンピュータにおいて、前記オブジェ
    クトのコピーへのリファレンスを前記第2のエージェン
    トプロセスに供与することを特徴とする請求項第92項
    記載の通信プロセス。
  96. 【請求項96】 コンピュータにおいて、前記第2のエ
    ージェントプロセスがオブジェクトを所有することを特
    徴とする請求項第91項記載の通信プロセス。
  97. 【請求項97】 コンピュータにおいて、前記オブジェ
    クトへのリファレンスを前記第1のエージェントプロセ
    スに対して供与することを特徴とする請求項第96項記
    載の通信プロセス。
  98. 【請求項98】 コンピュータにおいて、前記リファレ
    ンスがプロテクトされたリファレンスであることを特徴
    とする請求項第97項記載の通信プロセス。
  99. 【請求項99】 コンピュータにおいて、前記オブジェ
    クトのコピーへのリファレンスを前記第1のエージェン
    トプロセスに対して供与することを特徴とする請求項第
    96項記載の通信プロセス。
  100. 【請求項100】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、チケット手段及び send
    オペレーションを有するエージェント手段と、 前記複数のコンピュータの1つにおいてその各々が動作
    する複数のプレイス手段とを有し、 前記エージェント手段は前記複数のプレイス手段中の第
    1のプレイス手段であり、 前記チケット手段は、前記複数のプレイス手段中の目的
    点プレイス手段への前記エージェント手段のトリップを
    指定し、 前記 send オペレーションは、前記エージェント手段の
    1つのクローンを前記目的点手段に転送することを特徴
    とする通信システム。
  101. 【請求項101】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記エージェント手段
    が、前記エージェント手段のための第2の目的点プレイ
    ス手段への第2のトリップを指定する、前記チケット手
    段と異なる第2のチケット手段を、含むことを特徴とす
    る請求項第100項記載の通信システム。
  102. 【請求項102】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記 send オペレーショ
    ンの遂行によって前記エージェント手段の第2のクロー
    ンが前記第2の目的点プレイス手段に転送されることを
    特徴とする請求項第101項記載の通信システム。
  103. 【請求項103】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記トリップ及び前記第
    2のトリップが、前記複数のコンピュータ中のある単一
    のコンピュータへの転送を含み、 前記クローンを前記目的点プレイス手段に転送し、前記
    第2のクローンを前記第2の目的点手段に転送する際
    に、前記 send オペレーションの遂行によって、(a)
    前記第1のクローンが前記単一のコンピュータに転送さ
    れ、(b)前記単一のコンピュータ中において前記第1
    のクローンから前記第2のクローンが形成されることを
    特徴とする請求項第102項記載の通信システム。
  104. 【請求項104】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記エージェント手段が
    go オペレーションを含み、 前記 go オペレーションは、第3のチケット手段によっ
    て指定された第3の目的点プレイス手段に前記エージェ
    ント手段を転送することを特徴とする請求項第100項
    記載の通信システム。
  105. 【請求項105】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が前記
    目的点プレイス手段を特定するネームを含むことを特徴
    とする請求項第100項記載の通信システム。
  106. 【請求項106】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記ネームがテレネーム
    であることを特徴とする請求項第105項記載の通信シ
    ステム。
  107. 【請求項107】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が前記
    目的点プレイス手段のためのアドレスを含むことを特徴
    とする請求項第100項記載の通信システム。
  108. 【請求項108】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記アドレスがテレアド
    レスであることを特徴とする請求項第107項記載の通
    信システム。
  109. 【請求項109】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が前記
    目的点プレイス手段をその1つのメンバとするクラスを
    指定するサイテーション手段を含むことを特徴とする請
    求項第100項記載の通信システム。
  110. 【請求項110】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が、前
    記目的点プレイス手段のアドレスと、前記目的点プレイ
    ス手段のネームと、前記目的点プレイス手段をその1つ
    のメンバとするクラスを指定するサイテーション手段と
    からなる群中より選ばれた任意の組合せを含むことを特
    徴とする請求項第100項記載の通信システム。
  111. 【請求項111】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が前記
    トリップのための最大の期間を指定する手段を含むこと
    を特徴とする請求項第100項記載の通信システム。
  112. 【請求項112】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が前記
    トリップのための望ましい期間を指定する手段を含むこ
    とを特徴とする請求項第100項記載の通信システム。
  113. 【請求項113】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が、前
    記トリップ手段を完成させるコンピュータ間通信手段の
    形式を指定するウェイ手段を含むことを特徴とする請求
    項第100項記載の通信システム。
  114. 【請求項114】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記チケット手段が、前
    記目的点プレイス手段においての前記エージェント手段
    のためのデッドラインを制御するパーミット手段を含む
    ことを特徴とする請求項第100項記載の通信システ
    ム。
  115. 【請求項115】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記エージェント手段が
    前記目的点プレイス手段において遂行することが許可さ
    れているオペレーションを制御するためのパーミット手
    段を前記チケット手段を有することを特徴とする請求項
    第100項記載の通信システム。
  116. 【請求項116】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記目的点プレイス手段
    において前記エージェント手段が消費することが許可さ
    れているリソースを制御するためのパーミット手段を前
    記チケット手段が有することを特徴とする請求項第10
    0項記載の通信システム。
  117. 【請求項117】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記目的点プレイス手段
    においての他のエージェント手段に対する前記目的点プ
    レイス手段においての前記エージェント手段の相対的な
    プライオリティを指定するためのパーミット手段を前記
    チケット手段が有することを特徴とする請求項第100
    項記載の通信システム。
  118. 【請求項118】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、エージェント手段が持つ
    ことが許可される能力を制御するためのパーミット手段
    を有することを特徴とする請求項第100項記載の通信
    システム。
  119. 【請求項119】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記パーミット手段が固
    有のパーミットであることを特徴とする請求項第118
    項記載の通信システム。
  120. 【請求項120】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記パーミット手段がロ
    ーカルパーミットであることを特徴とする請求項第11
    8項記載の通信システム。
  121. 【請求項121】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記パーミット手段が一
    時的なパーミットであることを特徴とする請求項第11
    8項記載の通信システム。
  122. 【請求項122】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記能力が前記エージェ
    ント手段の消費しうるリソースを含むことを特徴とする
    請求項第118項記載の通信システム。
  123. 【請求項123】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記能力が、前記エージ
    ェント手段がそれから後進行することのできないデッド
    ラインを含むことを特徴とする請求項第118項記載の
    通信システム。
  124. 【請求項124】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、他のエージェント手段を
    含み、 前記能力は、前記他のエージェント手段に対する前記エ
    ージェント手段の相対的なプライオリティを含むことを
    特徴とする請求項第118項記載の通信システム。
  125. 【請求項125】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記能力が、前記エージ
    ェント手段が選択されたオペレーションを遂行する許可
    を含むことを特徴とする請求項第118項記載の通信シ
    ステム。
  126. 【請求項126】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記エージェント手段が
    オブジェクトを所有することを特徴とする請求項第10
    0項記載の通信システム。
  127. 【請求項127】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記オブジェクトがダイ
    ジェストを有することを特徴とする請求項第126項記
    載の通信システム。
  128. 【請求項128】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記オブジェクトのコピ
    ーが前記クローンとともに、前記 send オペレーション
    の遂行によって転送されることを特徴とする請求項第1
    27項記載の通信システム。
  129. 【請求項129】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記目的点プレイス手段
    において第2のオブジェクトは前記コピーに相互変換さ
    れ、 前記第2のオブジェクトは、前記ダイジェストと同等の
    ダイジェストを持つことによって前記コピーを前記目的
    点プレイス手段に転送することを不要とすることを特徴
    とする請求項第128項記載の通信システム。
  130. 【請求項130】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記 send オペレーショ
    ンが前記目的点プレイス手段においての前記コピーの代
    わりに相互変換されたオブジェクトを使用することによ
    って、前記オブジェクトの前記コピーを前記目的点プレ
    イス手段に転送する必要を除くことを特徴とする請求項
    第128項記載の通信システム。
  131. 【請求項131】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記プレイス手段は前記
    プレイス手段にエンタするための手段を有することを特
    徴とする請求項第100項記載の通信システム。
  132. 【請求項132】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記プレイス手段が前記
    プレイス手段をエグジットする手段を有することを特徴
    とする請求項第100項記載の通信システム。
  133. 【請求項133】 複数のコンピュータを有するコンピ
    ュータネットワークにおいて、前記プレイス手段がミー
    ティングプレイス手段を含み、 前記ミーティングプレイス手段はリクエスタエージェン
    ト手段とレスポンダエージェント手段との間のミーティ
    ングを取り計らうことを特徴とする請求項第100項記
    載の通信システム。
  134. 【請求項134】 コンピュータにおいて、 meet オペ
    レーションを有するミーティングプレイス手段を有し、 該ミーティングプレイスは、複数のエージェント手段の
    ための場所であり、更に、 ペティッション手段と、 前記複数のエージェント手段の内の第1のエージェント
    手段と、 前記複数のエージェント手段の中の第2のエージェント
    手段とを有し、 前記第1のエージェント手段及び第2のエージェント手
    段は前記複数のエージェント手段の内のどれともミート
    でき、 前記ペティッション手段は前記第1のエージェント手段
    と第2のエージェント手段との間のミーテングを指定
    し、 前記ミーティング手段は前記 meet オペレーションに応
    答して前記ミーティングを取り計らうことを特徴とする
    通信システム。
  135. 【請求項135】 コンピュータにおいて、前記第1の
    エージェント手段が前記ペティッション手段を有するこ
    とを特徴とする請求項第134項記載の通信システム。
  136. 【請求項136】 コンピュータにおいて、前記ペティ
    ッション手段が前記第2のエージェントプロセスを規定
    することによって前記ミーティングを指定することを特
    徴とする請求項第135項記載の通信システム。
  137. 【請求項137】 コンピュータにおいて、前記ペティ
    ッション手段が前記第2のエージェント手段を指定する
    ネームを含むことを特徴とする請求項第136項記載の
    通信システム。
  138. 【請求項138】 コンピュータにおいて、前記ネーム
    がテレネームであることを特徴とする請求項第137項
    記載の通信システム。
  139. 【請求項139】 コンピュータにおいて、前記第2の
    エージェントプロセスがその1つのメンバであるクラス
    を指定することによって前記ペティッション手段が前記
    第2のエージェントを指定することを特徴とする請求項
    第136項記載の通信システム。
  140. 【請求項140】 コンピュータにおいて、前記ペティ
    ッション手段がサイテーションを含み、 該サイテーションは、前記第2のエージェントプロセス
    がその1つのメンバであるクラスを指定することを特徴
    とする請求項第136項記載の通信システム。
  141. 【請求項141】 コンピュータにおいて、前記ペティ
    ッション手段が前記ミーティングを取り計らうための最
    大の期間を規定することを特徴とする請求項第134項
    記載の通信システム。
  142. 【請求項142】 コンピュータにおいて、前記 meet
    オペレーションが前記第2のエージェント手段へのリフ
    ァレンスを前記第1のエージェント手段に供与すること
    を特徴とする請求項第134項記載の通信システム。
  143. 【請求項143】 コンピュータにおいて、前記 meet
    オペレーションが前記第1のエージェント手段へのリフ
    ァレンスを前記第2のエージェント手段に供与すること
    を特徴とする請求項第142項記載の通信システム。
  144. 【請求項144】 コンピュータにおいて、前記第1の
    エージェント手段が前記第2のエージェント手段中のオ
    ペレーションの遂行を生じさせることを特徴とする請求
    項第134項記載の通信システム。
  145. 【請求項145】 コンピュータにおいて、前記第1の
    エージェント手段がオブジェクトを所有することを特徴
    とする請求項第144項記載の通信システム。
  146. 【請求項146】 コンピュータにおいて、前記第1の
    エージェント手段が前記オブジェクトへのリファレンス
    を前記第2のエージェント手段に供与することを特徴と
    する請求項第145項記載の通信システム。
  147. 【請求項147】 コンピュータにおいて、前記リファ
    レンスがプロテクトされたリファレンスであることを特
    徴とする請求項第146項記載の通信システム。
  148. 【請求項148】 コンピュータにおいて、前記第1の
    エージェント手段が前記オブジェクトのコピーへのリフ
    ァレンスを前記第2のエージェント手段に供与すること
    を特徴とする請求項第145項記載の通信システム。
  149. 【請求項149】 コンピュータにおいて、前記第2の
    エージェント手段がオブジェクトを所有することを特徴
    とする請求項第144項記載の通信システム。
  150. 【請求項150】 コンピュータにおいて、前記第2の
    エージェント手段が前記オブジェクトへのリファレンス
    を前記第1のエージェント手段に供与することを特徴と
    する請求項第149項記載の通信システム。
  151. 【請求項151】 コンピュータにおいて、前記リファ
    レンスがプロテクトされたリファレンスであることを特
    徴とする請求項第150項記載の通信システム。
  152. 【請求項152】 コンピュータにおいて、前記第2の
    エージェント手段が前記オブジェクトのコピーへのリフ
    ァレンスを前記第1のエージェント手段に供与すること
    を特徴とする請求項第149項記載の通信システム。
  153. 【請求項153】 1以上のコンピュータを有するコン
    ピュータネットワークにおいて、第1のエンジンプロセ
    スから第2のエンジンプロセスにデータを移送するデー
    タ移送方法において、 (a)前記第1のエンジンプロセス及び第2のエンジン
    プロセスを含む1以上のエージェントプロセスを実行す
    るための実行手段を用意し、各々の前記エージェントプ
    ロセスは、コンピュータインストラクションセットから
    の複数のインストラクションを含み、実行状態を持つも
    のとし、 (b)前記コンピュータインストラクションセット中に
    go インストラクションを用意し、該 go インストラク
    ションは、前記第1のエンジンプロセス中において実行
    される第1のエージェントプロセスに含まれるものと
    し、前記 go インストラクションの遂行によって、
    (i)前記第1のエンジンプロセスによる前記第1のエ
    ージェントプロセスの実行の中断と、(ii)前記第1
    のエージェントプロセスの前記実行状態が保存されるよ
    うな前記第1のエージェントプロセスの表現と、(ii
    i)前記第1のエンジンプロセスから第2のエンジンプ
    ロセスへの前記第1のエージェントプロセスの前記表現
    の移送と、(iv)前記第2のエンジンプロセスによる
    前記第1のエージェントプロセスの実行の再開とを生じ
    させ、 (c)前記第1のエージェントプロセスによる前記エー
    ジェントプロセスの実行を生じさせることによって前記
    go インストラクションの遂行を生じさせることを特徴
    とするデータ移送方法。
  154. 【請求項154】 前記コンピュータインストラクショ
    ンセットがオブジェクト指向であることを特徴とする請
    求項第153項記載のデータ移送方法。
  155. 【請求項155】 前記複数のエージェントプロセスが
    前記オブジェクト指向コンピュータインストラクション
    セットのオブジェクトであることを特徴とする請求項第
    154項記載のデータ移送方法。
  156. 【請求項156】 前記 go インストラクションの遂行
    を生じさせる前に前記第1のエージェントプロセスにデ
    ータを付加し、 前記第1のエージェントプロセスの前記表現が前記デー
    タを含み、 前記第2のエンジンプロセスへの前記第1のエージェン
    トプロセスの前記表現の移送が前記データを移送を含む
    ことを特徴とする請求項第153項記載のデータ移送方
    法。
  157. 【請求項157】 前記第1のエージェントプロセス
    が、前記第1のエンジンプロセスから前記第2のエンジ
    ンプロセスに転送されるべきメッセージを表すデータを
    含み、 前記 go インストラクションの実行によって生ずる前記
    第1のエージェントプロセスの移送が前記第1のエンジ
    ンプロセスから前記第2のエンジンプロセスへの前記デ
    ータの移送を生じさせることを特徴とする請求項第15
    3項記載のデータ移送方法。
  158. 【請求項158】 前記第1のエンジンプロセスが、第
    1のコンピュータにおいて実行され、前記第2のエンジ
    ンプロセスが第2のコンピュータによって実行され、 前記第1及び第2のコンピュータが前記コンピュータネ
    ットワークの一部分であることを特徴とする請求項第1
    53項記載のデータ移送方法。
  159. 【請求項159】 第1のエンジンプロセスから1以上
    のエンジンプロセスにデータを移送するデータ移送方法
    において、 (a)コンピュータインストラクションセットからのイ
    ンストラクションを含む複数のエージェントプロセスを
    実行するための手段を用意し、該エージェントプロセス
    を実行する手段が、前記第1のエンジンプロセス及び1
    以上のエンジンプロセスを含み、各々の該エージェント
    プロセスは実行状態を含み、 (b)前記コンピュータインストラクションセット中に
    sendインストラクションを用意し、該sendインストラク
    ションは、前記複数のエージェントプロセス中の第1の
    エージェントプロセス中に含まれるようにし、前記send
    インストラクションの実行は、(i)前記第1のエージ
    ェントプロセスの1以上のコピーを形成し、これらのコ
    ピーが、前記第1のエージェントプロセスの前記実行状
    態を保存するとともにそれを含み、(ii)前記第1の
    エージェントプロセスのコピーの各々を前記第1のエン
    ジンプロセスから前記1以上のエンジンプロセスのそれ
    ぞれに移送し、(iii)前記第1のエージェントプロ
    セスの前記コピーの各々を前記1以上のエンジンプロセ
    スのそれぞれの1つによって実行して前記第1のエージ
    ェントプロセスの再開された実行をシュミレートするこ
    とを特徴とするデータ移送方法。
  160. 【請求項160】 前記第1のエージェントプロセスの
    前記コピーの2以上が前記第1のエンジンプロセスから
    単一の第2のエンジンプロセスに移送されるべき条件の
    もとにおいて、前記第1のエージェントプロセスの前記
    2以上のコピーの移送が、 前記第1のエージェントプロセスの単一のコピーを前記
    第2のエンジンプロセスに移送する工程と、 前記第2のエンジンプロセス中において前記単一のコピ
    ーから、前記第1のエージェントプロセスの前記2以上
    のコピーを形成する工程とからなることを特徴とする請
    求項第159項記載のデータ移送方法。
  161. 【請求項161】 あるコンピュータシステムにおいて
    実行されている第1のエージェントプロセスから、該コ
    ンピュータシステムによって実行されている第2のエー
    ジェントプロセスにデータを転送する際に、前記第1の
    エージェントプロセス及び第2のエージェントプロセス
    があるプレイスプロセスの占有者であるようにしてデー
    タを転送するデータ転送方法において、 前記第1のエージェントプロセスが送出するミートイン
    ストラクションに応答して、前記第2のエージェントプ
    ロセスによるプロシージャの実行を生じさせる工程を含
    み、前記プロシージャは、前記第2のエージェントプロ
    セスの一部であり、前記第2のエージェントコンピュー
    タプロセスに含まれるコンピュータインストラクション
    のコレクションを含み、 前記第2のエージェントプロセスによって送出される、
    前記プロジージャの一部である第2のインストラクショ
    ンに応答して、前記第2のエージェントプロセスへのア
    クセス手段を前記第1のエージェントプロセスに供与す
    る工程を含むことを特徴とするデータ転送方法。
  162. 【請求項162】 前記第2のエージェントプロセスに
    よるプロシージャの実行を生じさせる前記工程は、 前記第1のエージェントプロセスによって送出される前
    記ミートインストラクションに応答して前記プレイスプ
    ロセスによる第2のプロシージャの実行を生じさせるこ
    とを含み、前記プレイスプロセスによる前記第2のプロ
    シージャの実行が、前記プロシージャを前記第2のエー
    ジェントプロセスによって実行させるインストラクショ
    ンを送出することを特徴とする請求項第161項記載の
    データ転送方法。
  163. 【請求項163】 前記第2のエージェントプロセスへ
    のアクセス手段が前記プレイスプロセスによって前記第
    1のエージェントプロセスに供与されることを特徴とす
    る請求項第161項記載のデータ転送方法。
  164. 【請求項164】 近似的に、前記プレイスプロセスが
    前記第2のエージェントプロセスへの前記アクセス手段
    を前記第1のエージェントプロセスに供与する時点にお
    いて、前記プレイスプロセスが前記第1のエージェント
    プロセスへのアクセス手段を前記第2のエージェントプ
    ロセスに供与することを特徴とする請求項第163項記
    載のデータ転送方法。
  165. 【請求項165】 第1のCPU及び第1のメモリを含
    む第1のコンピュータシステムから、第2のCPU及び
    第2のメモリを含む第2のコンピュータシステムへ第1
    のコンピュータプロセスを移送するプロセスの移送方法
    において、 ある実行状態を持つ前記第1のコンピュータプロセスの
    実行を前記第1のCPUにおいて開始し、 前記第1のCPU内において前記第1のコンピュータプ
    ロセスの実行を中断し、 前記第1のコンピュータプロセスをデータとして前記第
    1のメモリ中に表現し、 前記データは前記第1のコンピュータプロセスの実行が
    中断された時点においての前記第1のコンピュータプロ
    セスの前記実行状態を含むものとし、 前記データを前記第1のメモリから前記第2のメモリに
    移送し、 前記データ中に表現された前記実行状態を有する第2の
    コンピュータプロセスを前記データから前記第2のコン
    ピュータシステム上に形成し、前記第2のコンピュータ
    プロセスを実行することによって前記第2のCPU内に
    おいて前記第1のコンピュータシステムの実行の再開を
    実効的にシミュレートすることを特徴とするプロセスの
    移送方法。
JP6179767A 1993-07-08 1994-07-08 リモートプログラミングの実施方法 Pending JPH07182174A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/090,521 US5603031A (en) 1993-07-08 1993-07-08 System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US08/090,521 1993-07-08

Publications (1)

Publication Number Publication Date
JPH07182174A true JPH07182174A (ja) 1995-07-21

Family

ID=22223151

Family Applications (2)

Application Number Title Priority Date Filing Date
JP50407395A Expired - Lifetime JP3723572B2 (ja) 1993-07-08 1994-07-08 ネットワークにおけるプロセスの移動,実行及び相互作用に基づいた分散処理のためのシステム及び方法
JP6179767A Pending JPH07182174A (ja) 1993-07-08 1994-07-08 リモートプログラミングの実施方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP50407395A Expired - Lifetime JP3723572B2 (ja) 1993-07-08 1994-07-08 ネットワークにおけるプロセスの移動,実行及び相互作用に基づいた分散処理のためのシステム及び方法

Country Status (6)

Country Link
US (2) US5603031A (ja)
EP (1) EP0634719A3 (ja)
JP (2) JP3723572B2 (ja)
AU (1) AU7216494A (ja)
CA (1) CA2143672C (ja)
WO (1) WO1995002219A1 (ja)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09179910A (ja) * 1995-12-26 1997-07-11 Fujitsu Ltd 電子仲介システムおよび方法
JPH09181723A (ja) * 1995-12-26 1997-07-11 Fujitsu Ltd ネットワークにおける資源の変化を通知するネットワーク資源監視システムおよび方法
WO1997035262A1 (fr) * 1996-03-15 1997-09-25 Hitachi, Ltd. Procede de generation automatique de programme et procede de commande d'execution
JPH09325928A (ja) * 1996-06-06 1997-12-16 Fuji Xerox Co Ltd メッセージ通信方法及び装置
JPH10191546A (ja) * 1997-11-28 1998-07-21 Toshiba Corp 電力系統保護制御システム
JPH10228380A (ja) * 1996-06-05 1998-08-25 Sun Microsyst Inc 低減されたラン−タイム・メモリ空間要求を有するネットワーク移動コードを実行する方法及びコンピュータ・システム
JPH10334065A (ja) * 1997-05-27 1998-12-18 Internatl Business Mach Corp <Ibm> 情報処理方法及び情報処理装置、サーバを制御するプログラムを格納した記憶媒体
US5918015A (en) * 1996-02-28 1999-06-29 Nec Corporation Remote execution system with program receiver
US5968127A (en) * 1996-08-08 1999-10-19 Fuji Xerox Co., Ltd. Information processing apparatus
US6134580A (en) * 1996-09-17 2000-10-17 Kabushiki Kaisha Toshiba Data-processing apparatus, data-processing method, and storage medium onto which is stored a data-processing program
US6477563B1 (en) 1998-04-13 2002-11-05 Kabushiki Kaisha Toshiba Agent system and information processing method for same
JP2002324055A (ja) * 2002-02-20 2002-11-08 Internatl Business Mach Corp <Ibm> メッセージ処理方法
US6539416B1 (en) 1997-12-19 2003-03-25 Kabushiki Kaisha Toshiba Managing system and managing method of mobile agent
US6557025B1 (en) 1997-09-05 2003-04-29 Kabushiki Kaisha Toshiba Method and apparatus that improves the technique by which a plurality of agents process information distributed over a network through by way of a contract net protocol
US6694370B1 (en) 1998-08-01 2004-02-17 International Business Machines Corporation Computerized method and system for implementing distributed applications
US6769121B1 (en) 1999-01-22 2004-07-27 Nec Corporation Program execution device and process migrating method thereof and storage medium which stores process migration control program
JP2005020713A (ja) * 2003-06-02 2005-01-20 Ricoh Co Ltd 画像形成システム、画像形成方法、画像形成プログラム、及び記録媒体
US6961926B2 (en) 1999-12-15 2005-11-01 Nec Corporation System and method for distributed debugging and recording medium on which control programs are recorded
JP2006154926A (ja) * 2004-11-25 2006-06-15 Denso Corp キャラクタ表示を利用した電子機器操作システム及び電子機器
US7512660B2 (en) 1997-06-10 2009-03-31 International Business Machines Corporation Message handling method, message handling apparatus, and memory media for storing a message handling apparatus controlling program

Families Citing this family (265)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU683038B2 (en) * 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US7143290B1 (en) * 1995-02-13 2006-11-28 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US7095854B1 (en) * 1995-02-13 2006-08-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7133845B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
US7133846B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US20060206397A1 (en) * 1995-02-13 2006-09-14 Intertrust Technologies Corp. Cryptographic methods, apparatus and systems for storage media electronic right management in closed and connected appliances
US6658568B1 (en) * 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
EP1526472A3 (en) 1995-02-13 2006-07-26 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7124302B2 (en) * 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
JPH08249290A (ja) * 1995-03-10 1996-09-27 Hitachi Ltd 分散システム
JP3927600B2 (ja) * 1995-05-30 2007-06-13 コーポレーション フォー ナショナル リサーチ イニシアチブス 分散タスク実行のためのシステム
US6108704A (en) * 1995-09-25 2000-08-22 Netspeak Corporation Point-to-point internet protocol
US20050033659A1 (en) * 1996-01-17 2005-02-10 Privacy Infrastructure, Inc. Third party privacy system
US6119101A (en) * 1996-01-17 2000-09-12 Personal Agents, Inc. Intelligent agents for electronic commerce
US6286002B1 (en) * 1996-01-17 2001-09-04 @Yourcommand System and method for storing and searching buy and sell information of a marketplace
US5826010A (en) * 1996-02-12 1998-10-20 Banyan Systems, Inc. Predefined access rights for undefined attributes in a naming service
FI102869B (fi) 1996-02-26 1999-02-26 Nokia Mobile Phones Ltd Laite, menetelmä ja järjestelmä eri sovelluksiin liittyvien tietojen l ähettämiseksi ja vastaanottamiseksi
US6145013A (en) * 1996-04-09 2000-11-07 Communities.Com Distributed instantiation system and method
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6272559B1 (en) 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6138238A (en) * 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6134603A (en) * 1998-03-20 2000-10-17 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6480881B1 (en) * 1996-05-29 2002-11-12 Fujitsu Limited Information access apparatus and method for cooperatively sharing knowledge about information source
US6049838A (en) * 1996-07-01 2000-04-11 Sun Microsystems, Inc. Persistent distributed capabilities
JPH1021083A (ja) * 1996-07-02 1998-01-23 Hitachi Ltd ネットワーク接続された計算機システムにおけるデータ処理方法
US6728784B1 (en) * 1996-08-21 2004-04-27 Netspeak Corporation Collaborative multimedia architecture for packet-switched data networks
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6421731B1 (en) * 1996-10-29 2002-07-16 Telxon Corporation Dynamic next hop routing protocol
US6405360B1 (en) * 1996-11-08 2002-06-11 International Business Machines Corporation Property container type objects
WO1998021662A1 (en) * 1996-11-14 1998-05-22 Mitsubishi Electric Information Technology Center America, Inc. Itinerary based agent mobility including mobility of executable code
US6065039A (en) * 1996-11-14 2000-05-16 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Dynamic synchronous collaboration framework for mobile agents
US6233601B1 (en) * 1996-11-14 2001-05-15 Mitsubishi Electric Research Laboratories, Inc. Itinerary based agent mobility including mobility of executable code
JPH10207798A (ja) * 1997-01-27 1998-08-07 Mitsubishi Electric Corp 転送機構付情報収集システム
US20050021477A1 (en) * 1997-01-29 2005-01-27 Ganapathy Krishnan Method and system for securely incorporating electronic information into an online purchasing application
US6178453B1 (en) * 1997-02-18 2001-01-23 Netspeak Corporation Virtual circuit switching architecture
US6775264B1 (en) 1997-03-03 2004-08-10 Webley Systems, Inc. Computer, internet and telecommunications based network
US5900871A (en) * 1997-03-10 1999-05-04 International Business Machines Corporation System and method for managing multiple cultural profiles in an information handling system
US5907326A (en) * 1997-03-10 1999-05-25 International Business Machines Corporation System and method for updating cultural profiles with dragging and dropping locale objects
US6085178A (en) * 1997-03-21 2000-07-04 International Business Machines Corporation Apparatus and method for communicating between an intelligent agent and client computer process using disguised messages
US6401080B1 (en) 1997-03-21 2002-06-04 International Business Machines Corporation Intelligent agent with negotiation capability and method of negotiation therewith
TW504632B (en) 1997-03-21 2002-10-01 Ibm Apparatus and method for optimizing the performance of computer tasks using intelligent agent with multiple program modules having varied degrees of domain knowledge
US6192354B1 (en) 1997-03-21 2001-02-20 International Business Machines Corporation Apparatus and method for optimizing the performance of computer tasks using multiple intelligent agents having varied degrees of domain knowledge
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
US6335972B1 (en) 1997-05-23 2002-01-01 International Business Machines Corporation Framework-based cryptographic key recovery system
US6473893B1 (en) 1997-05-30 2002-10-29 International Business Machines Corporation Information objects system, method, and computer program organization
JPH1115666A (ja) * 1997-06-10 1999-01-22 Internatl Business Mach Corp <Ibm> コンピュータ・システム、メッセージ・モニター方法、及び関連メッセージ送信方法
JP3490256B2 (ja) 1997-06-12 2004-01-26 三菱電機株式会社 エージェント方式
JP3954689B2 (ja) 1997-06-12 2007-08-08 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージ処理方法、メッセージ処理装置及びメッセージ処理を制御するプログラムを格納する記憶媒体
US6065040A (en) * 1997-07-07 2000-05-16 International Business Machines Corporation Computer system having agent retracting method and agent returning method
US6006249A (en) * 1997-08-19 1999-12-21 The Chase Manhattan Bank Method and apparatus for concurrent data processing
US6301584B1 (en) * 1997-08-21 2001-10-09 Home Information Services, Inc. System and method for retrieving entities and integrating data
JP3544457B2 (ja) 1997-08-22 2004-07-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 電子メール又はエージェントを利用してクライアント上でguiを作成する方法及び装置、そのためのプログラムを記録した記録媒体
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US7222087B1 (en) * 1997-09-12 2007-05-22 Amazon.Com, Inc. Method and system for placing a purchase order via a communications network
US5960411A (en) * 1997-09-12 1999-09-28 Amazon.Com, Inc. Method and system for placing a purchase order via a communications network
US6035283A (en) * 1997-10-10 2000-03-07 International Business Machines Corporation Virtual sales person for electronic catalog
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6256771B1 (en) * 1997-10-16 2001-07-03 At&T Corp. Method and apparatus for providing a dynamic service composition software architecture
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
JPH11184699A (ja) * 1997-11-26 1999-07-09 Internatl Business Mach Corp <Ibm> 移動オブジェクト群の実行方法、及び移動オブジェクト群を格納した記憶媒体
US6535928B1 (en) 1997-12-01 2003-03-18 Recursion Software, Inc. Method of determining the timing for reclaiming a remote object
US6389452B1 (en) 1997-12-01 2002-05-14 Recursion Software, Inc. Method of communicating between objects and agents across a computer network
US6519653B1 (en) 1997-12-01 2003-02-11 Recursion Software, Inc. Method of communicating between agent objects in a computer network
US6415315B1 (en) 1997-12-01 2002-07-02 Recursion Software, Inc. Method of moving objects in a computer network
US6442586B1 (en) 1997-12-01 2002-08-27 Recursion Software, Inc. Method of moving objects across multiple locations in a computer network
US6321261B1 (en) 1997-12-01 2001-11-20 Objectspace, Inc. Method of constructing an object remotely across a computer network
US6834389B1 (en) 1997-12-01 2004-12-21 Recursion Software, Inc. Method of forwarding messages to mobile objects in a computer network
GB2332288A (en) * 1997-12-10 1999-06-16 Northern Telecom Ltd agent enabling technology
US6105037A (en) 1997-12-12 2000-08-15 International Business Machines Corporation Apparatus for performing automated reconcile control in a virtual tape system
US6018805A (en) * 1997-12-15 2000-01-25 Recipio Transparent recovery of distributed-objects using intelligent proxies
US6490574B1 (en) 1997-12-17 2002-12-03 International Business Machines Corporation Method and system for managing rules and events in a multi-user intelligent agent environment
US6192405B1 (en) 1998-01-23 2001-02-20 Novell, Inc. Method and apparatus for acquiring authorized access to resources in a distributed system
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
JP3234808B2 (ja) * 1998-03-13 2001-12-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 移動エージェント、移動エージェントが保有するオブジェクト、ネットワーク上のプレースに存在する移動エージェントを基に子エージェントを生成する方法、移動エージェントが同一プレースに存在する他の移動エージェントの種類を識別する方法
US6119087A (en) * 1998-03-13 2000-09-12 Nuance Communications System architecture for and method of voice processing
US6493870B1 (en) 1998-03-20 2002-12-10 Sun Microsystems, Inc. Methods and apparatus for packaging a program for remote execution
US6199196B1 (en) 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
JPH11282683A (ja) * 1998-03-26 1999-10-15 Omron Corp エージェントシステム
JPH11282684A (ja) * 1998-03-27 1999-10-15 Canon Inc 画像処理装置、画像処理装置の制御方法、および記憶媒体
US6272488B1 (en) 1998-04-01 2001-08-07 International Business Machines Corporation Managing results of federated searches across heterogeneous datastores with a federated collection object
US6233586B1 (en) 1998-04-01 2001-05-15 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated query object
US6263342B1 (en) 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
JP3606355B2 (ja) 1998-04-13 2005-01-05 オムロン株式会社 エージェントシステム及び通信方法
US6219643B1 (en) 1998-06-26 2001-04-17 Nuance Communications, Inc. Method of analyzing dialogs in a natural language speech recognition system
US6496871B1 (en) 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
JP3689564B2 (ja) 1998-07-31 2005-08-31 キヤノン株式会社 Oa装置、oaシステム、制御方法及び記憶媒体
US6304973B1 (en) 1998-08-06 2001-10-16 Cryptek Secure Communications, Llc Multi-level security network system
US6356964B1 (en) * 1998-08-31 2002-03-12 International Business Machines Corporation Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user
US6256664B1 (en) 1998-09-01 2001-07-03 Bigfix, Inc. Method and apparatus for computed relevance messaging
US7197534B2 (en) * 1998-09-01 2007-03-27 Big Fix, Inc. Method and apparatus for inspecting the properties of a computer
US7246150B1 (en) 1998-09-01 2007-07-17 Bigfix, Inc. Advice provided for offering highly targeted advice without compromising individual privacy
US6263362B1 (en) 1998-09-01 2001-07-17 Bigfix, Inc. Inspector for computed relevance messaging
US8914507B2 (en) * 1998-09-01 2014-12-16 International Business Machines Corporation Advice provided for offering highly targeted advice without compromising individual privacy
US20030009464A1 (en) * 1998-10-02 2003-01-09 Campbell Rene L. System and method for managing computer and phone network resources
US6385661B1 (en) * 1998-10-19 2002-05-07 Recursion Software, Inc. System and method for dynamic generation of remote proxies
US6163794A (en) 1998-10-23 2000-12-19 General Magic Network system extensible by users
WO2000028428A1 (en) 1998-11-06 2000-05-18 Mitsubishi Denki Kabushiki Kaisha Agent method and computer system
US7263489B2 (en) 1998-12-01 2007-08-28 Nuance Communications, Inc. Detection of characteristics of human-machine interactions for dialog customization and analysis
US7082397B2 (en) 1998-12-01 2006-07-25 Nuance Communications, Inc. System for and method of creating and browsing a voice web
US6286028B1 (en) * 1998-12-01 2001-09-04 International Business Machines Corporation Method and apparatus for conducting electronic commerce
EP1185928A1 (en) * 1998-12-16 2002-03-13 Kent Ridge Digital Labs Process oriented computing environment
US6233556B1 (en) 1998-12-16 2001-05-15 Nuance Communications Voice processing and verification system
US6526571B1 (en) * 1999-03-16 2003-02-25 International Business Machines Corporation Method for identifying calls in java packages whose targets are guaranteed to belong to the same package
US7277919B1 (en) 1999-03-19 2007-10-02 Bigfix, Inc. Relevance clause for computed relevance messaging
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US6877163B1 (en) 1999-06-14 2005-04-05 Sun Microsystems, Inc. Method and system for dynamic proxy classes
EP1067457B1 (en) 1999-07-05 2008-12-17 Sony Deutschland GmbH Management of a communication network and the migration of mobile agents
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
WO2001013224A2 (de) 1999-08-18 2001-02-22 Siemens Aktiengesellschaft Agentensystem, computernetzwerk und verfahren zum laden eines agentensystems von einem host-computer auf einen client-computer eines computernetzwerkes
US20020002563A1 (en) * 1999-08-23 2002-01-03 Mary M. Bendik Document management systems and methods
US7143042B1 (en) 1999-10-04 2006-11-28 Nuance Communications Tool for graphically defining dialog flows and for establishing operational links between speech applications and hypermedia content in an interactive voice response environment
JP3738624B2 (ja) * 1999-10-26 2006-01-25 日本電気株式会社 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体
US6609158B1 (en) 1999-10-26 2003-08-19 Novell, Inc. Component architecture in a computer system
US6678743B1 (en) 1999-11-30 2004-01-13 Recursion Software, Inc. Method for moving objects in a distributed computing environment
US6947965B2 (en) 1999-11-30 2005-09-20 Recursion Software, Inc. System and method for communications in a distributed computing environment
US7286990B1 (en) 2000-01-21 2007-10-23 Openwave Systems Inc. Universal interface for voice activated access to multiple information providers
US7516190B2 (en) * 2000-02-04 2009-04-07 Parus Holdings, Inc. Personal voice-based information retrieval system
US6721705B2 (en) 2000-02-04 2004-04-13 Webley Systems, Inc. Robust voice browser system and voice activated device controller
US7089242B1 (en) * 2000-02-29 2006-08-08 International Business Machines Corporation Method, system, program, and data structure for controlling access to sensitive functions
AU4474901A (en) * 2000-03-15 2001-10-03 Hyung-No Youn Information providing method having authentification agent on internet and embodying system therefor
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
TW525329B (en) * 2000-05-29 2003-03-21 Omron Tateisi Electronics Co Power supply module and power supply unit using the same
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
JP2002007169A (ja) * 2000-06-23 2002-01-11 Nec Corp 文法網羅率計測方式
US8463682B1 (en) * 2000-10-02 2013-06-11 Versata Development Group, Inc. Finance and configuration method and apparatus
US6988109B2 (en) * 2000-12-06 2006-01-17 Io Informatics, Inc. System, method, software architecture, and business model for an intelligent object based information technology platform
US20100223295A1 (en) * 2000-12-06 2010-09-02 Io Informatics, Inc. Applied Semantic Knowledgebases and Applications Thereof
US7080159B2 (en) 2000-12-15 2006-07-18 Ntt Docomo, Inc. Method and system for effecting migration of application among heterogeneous devices
US20020078251A1 (en) * 2000-12-18 2002-06-20 Philips Electronics North America Corp. Self-determining command path architecture
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US6836766B1 (en) * 2001-01-31 2004-12-28 Trilogy Development Group, Inc. Rule based configuration engine for a database
US6820126B2 (en) * 2001-04-02 2004-11-16 Motorola, Inc. System for dynamic process assignment in a local area network and method therefor
US7082604B2 (en) * 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US7143164B2 (en) * 2001-05-21 2006-11-28 Exigen Group Dynamic object library software architecture
AU2002312183B2 (en) * 2001-05-31 2008-09-18 Mapinfo Corporation System and method for geocoding diverse address formats
US7222359B2 (en) * 2001-07-27 2007-05-22 Check Point Software Technologies, Inc. System methodology for automatic local network discovery and firewall reconfiguration for mobile computing devices
KR20010088574A (ko) * 2001-08-08 2001-09-28 김진국 오존/초음파를 이용한 폐고무 표면 개질 방법 및 장치
US7203700B1 (en) * 2001-08-31 2007-04-10 Oracle International Corporation Online instance addition and deletion in a multi-instance computer system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US20040088448A1 (en) * 2001-10-16 2004-05-06 Userspace Corporation Embedded system and method for controlling, monitoring of instruments or devices and processing their data via control and data protocols that can be combined or interchanged
US7350206B2 (en) * 2001-11-05 2008-03-25 Hewlett-Packard Development Company, L.P. Method to reduce provisioning time in shared storage systems by preemptive copying of images
US20040148235A1 (en) * 2002-01-11 2004-07-29 Craig Mark S. Real time financial instrument image exchange system and method
WO2003081391A2 (en) * 2002-03-19 2003-10-02 Mapinfo Corporation Location based service provider
US7447991B2 (en) * 2002-04-01 2008-11-04 Hewlett-Packard Development Company, L.P. Document agents
US7043522B2 (en) * 2002-05-30 2006-05-09 Microsoft Corporation Unbounded computing space
US7634806B2 (en) * 2002-05-30 2009-12-15 Microsoft Corporation Peer assembly inspection
US7676541B2 (en) * 2002-05-30 2010-03-09 Microsoft Corporation Peer communication channel partitioning
US7478233B2 (en) * 2002-05-30 2009-01-13 Microsoft Corporation Prevention of software tampering
US8667105B1 (en) 2002-06-26 2014-03-04 Apple Inc. Systems and methods facilitating relocatability of devices between networks
US7614059B2 (en) * 2002-07-11 2009-11-03 Topia Technology System and method for the discovery and usage of local resources by a mobile agent object
US8108455B2 (en) * 2002-10-31 2012-01-31 Oracle America, Inc. Mobile agents in peer-to-peer networks
US7136891B2 (en) * 2002-12-12 2006-11-14 International Business Machines Corporation Arithmetic and relational operations
US8683016B1 (en) 2002-12-20 2014-03-25 Versata Development Group, Inc. Data recording components and processes for acquiring selected web site data
JP2004362330A (ja) * 2003-06-05 2004-12-24 Seiko Epson Corp 出力制御装置
US20050039184A1 (en) * 2003-08-13 2005-02-17 Intel Corporation Assigning a process to a processor for execution
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7318068B2 (en) * 2004-07-22 2008-01-08 International Business Machines Corporation Synchronization of application documentation across database instances
US7318067B2 (en) * 2004-07-22 2008-01-08 International Business Machines Corporation Synchronization of application rules across database instances
JP4815938B2 (ja) * 2005-08-16 2011-11-16 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP4732874B2 (ja) * 2005-11-28 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US7899820B2 (en) * 2005-12-14 2011-03-01 Business Objects Software Ltd. Apparatus and method for transporting business intelligence objects between business intelligence systems
US20070157168A1 (en) * 2005-12-29 2007-07-05 Tobias Traxel Unified date and time model
US7529777B1 (en) * 2006-02-28 2009-05-05 Emc Corporation Cross-object attribute restoration
US7937713B2 (en) * 2006-04-21 2011-05-03 Topia Technology System and method for providing services on a distributed network
US20070256082A1 (en) * 2006-05-01 2007-11-01 International Business Machines Corporation Monitoring and controlling applications executing in a computing node
US20070282880A1 (en) * 2006-05-31 2007-12-06 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Partial role or task allocation responsive to data-transformative attributes
US8607336B2 (en) * 2006-09-19 2013-12-10 The Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US8601530B2 (en) * 2006-09-19 2013-12-03 The Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US8601104B2 (en) 2006-09-19 2013-12-03 The Invention Science Fund I, Llc Using network access port linkages for data structure update decisions
US8984579B2 (en) * 2006-09-19 2015-03-17 The Innovation Science Fund I, LLC Evaluation systems and methods for coordinating software agents
US7752255B2 (en) * 2006-09-19 2010-07-06 The Invention Science Fund I, Inc Configuring software agent security remotely
US8627402B2 (en) 2006-09-19 2014-01-07 The Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US9306975B2 (en) 2006-09-19 2016-04-05 The Invention Science Fund I, Llc Transmitting aggregated information arising from appnet information
US8224930B2 (en) * 2006-09-19 2012-07-17 The Invention Science Fund I, Llc Signaling partial service configuration changes in appnets
US8281036B2 (en) 2006-09-19 2012-10-02 The Invention Science Fund I, Llc Using network access port linkages for data structure update decisions
US8055797B2 (en) * 2006-09-19 2011-11-08 The Invention Science Fund I, Llc Transmitting aggregated information arising from appnet information
US20080072032A1 (en) * 2006-09-19 2008-03-20 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Configuring software agent security remotely
US7856450B2 (en) * 2006-12-18 2010-12-21 Business Objects Software Ltd. Apparatus and method for distributing information between business intelligence systems
US7818333B2 (en) 2006-12-28 2010-10-19 Pitney Bowes Software Inc. Universal address parsing system and method
US8214441B2 (en) * 2008-01-25 2012-07-03 At&T Intellectual Property I, L.P. System and method for optimizing response handling time and customer satisfaction scores
US8250090B2 (en) * 2010-02-22 2012-08-21 Brignoli Winthrop A Method for performing message-based distributed computing, involves executing expression of matched message response on members identified by set instance definition using dimension values derived from message
JP4905571B2 (ja) 2010-03-10 2012-03-28 トヨタ自動車株式会社 車両の駐車支援装置およびそれを備える車両
US8533214B2 (en) * 2010-06-15 2013-09-10 Verizon Patent And Licensing Inc. System and method for assessing quality of address information for physical locations
RU2554509C2 (ru) 2010-10-06 2015-06-27 Александр Яковлевич Богданов Система и способ распределенных вычислений
US8996687B2 (en) 2011-05-31 2015-03-31 At&T Intellectual Property I, L.P. Context-based computing framework
US9244745B2 (en) * 2011-06-16 2016-01-26 Kodak Alaris Inc. Allocating tasks by sending task-available messages requesting assistance with an image processing task from a server with a heavy task load to all other servers connected to the computer network
US9424096B2 (en) 2011-06-16 2016-08-23 Kodak Alaris Inc. Task allocation in a computer network
US9075659B2 (en) 2011-06-16 2015-07-07 Kodak Alaris Inc. Task allocation in a computer network
US9240010B2 (en) 2011-07-28 2016-01-19 Iii Holdings 1, Llc Systems and methods for generating and using a digital pass
US20130250937A1 (en) * 2012-03-20 2013-09-26 Leonid V. Nikeyenkov Method for Converging Telephone Number and IP Address
US9600473B2 (en) 2013-02-08 2017-03-21 Machine Zone, Inc. Systems and methods for multi-user multi-lingual communications
US9231898B2 (en) 2013-02-08 2016-01-05 Machine Zone, Inc. Systems and methods for multi-user multi-lingual communications
US9031829B2 (en) 2013-02-08 2015-05-12 Machine Zone, Inc. Systems and methods for multi-user multi-lingual communications
US10650103B2 (en) 2013-02-08 2020-05-12 Mz Ip Holdings, Llc Systems and methods for incentivizing user feedback for translation processing
US9298703B2 (en) 2013-02-08 2016-03-29 Machine Zone, Inc. Systems and methods for incentivizing user feedback for translation processing
US8996352B2 (en) 2013-02-08 2015-03-31 Machine Zone, Inc. Systems and methods for correcting translations in multi-user multi-lingual communications
JP6160409B2 (ja) * 2013-09-30 2017-07-12 ブラザー工業株式会社 ファクシミリ装置
US10162811B2 (en) 2014-10-17 2018-12-25 Mz Ip Holdings, Llc Systems and methods for language detection
US9600682B2 (en) * 2015-06-08 2017-03-21 Accenture Global Services Limited Mapping process changes
US10765956B2 (en) * 2016-01-07 2020-09-08 Machine Zone Inc. Named entity recognition on chat data
WO2019060353A1 (en) 2017-09-21 2019-03-28 Mz Ip Holdings, Llc SYSTEM AND METHOD FOR TRANSLATION OF KEYBOARD MESSAGES
TWI642566B (zh) * 2017-11-13 2018-12-01 中華汽車工業股份有限公司 Car motor with built-in charge control function
US11036571B2 (en) * 2017-11-29 2021-06-15 Cisco Technology, Inc. Repair walker agents in a network
CN110728363B (zh) * 2018-06-29 2022-11-18 华为技术有限公司 任务处理方法和装置
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575797A (en) * 1981-05-22 1986-03-11 Data General Corporation Digital data processing system incorporating object-based addressing and capable of executing instructions belonging to several instruction sets
US5261080A (en) * 1987-08-21 1993-11-09 Wang Laboratories, Inc. Matchmaker for assisting and executing the providing and conversion of data between objects in a data processing system storing data in typed objects having different data formats
US5206951A (en) * 1987-08-21 1993-04-27 Wang Laboratories, Inc. Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types
US5079695A (en) * 1988-04-25 1992-01-07 Hewlett-Packard Company Object management facility which includes a snapshot facility for providing data transfer between two objects
US5129083A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Conditional object creating system having different object pointers for accessing a set of data structure objects
US5129084A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Object container transfer system and method in an object based computer operating system
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5093914A (en) * 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
WO1991010191A1 (en) * 1989-12-26 1991-07-11 Fujitsu Limited Object oriented distributed processing system
CA2044022A1 (en) * 1990-06-28 1991-12-29 Miriam A. Nihart Common agent computer management system and method
US5327559A (en) * 1990-10-23 1994-07-05 International Business Machines Corporation Remote and batch processing in an object oriented programming system
US5157196A (en) * 1990-12-24 1992-10-20 Chemical Research & Licensing Company Paraffin alkylation process
EP0495310A3 (en) * 1991-01-17 1993-03-24 International Business Machines Corporation A process control method and apparatus
US5379426A (en) * 1991-01-25 1995-01-03 Sun Microsystems, Inc. Method and apparatus for object oriented interprocess message switching
US5303375A (en) * 1991-04-26 1994-04-12 Hewlett-Packard Company System and method for facilitating selection of running functional process in object-oriented environments
US5361350A (en) * 1991-12-12 1994-11-01 International Business Machines Corporation Object oriented method management system and software for managing class method names in a computer system
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
US5396630A (en) * 1992-10-06 1995-03-07 International Business Machines Corporation Method and system for object management across process boundries in a data processing system
US5414852A (en) * 1992-10-30 1995-05-09 International Business Machines Corporation Method for protecting data in a computer system
US5446842A (en) * 1993-02-26 1995-08-29 Taligent, Inc. Object-oriented collaboration system
US5377350A (en) * 1993-04-30 1994-12-27 International Business Machines Corporation System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5421013A (en) * 1993-07-08 1995-05-30 Park City Group, Inc. Agent-based multithreading application programming interface
US5446845A (en) * 1993-09-20 1995-08-29 International Business Machines Corporation Steering logic to directly connect devices having different data word widths

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09181723A (ja) * 1995-12-26 1997-07-11 Fujitsu Ltd ネットワークにおける資源の変化を通知するネットワーク資源監視システムおよび方法
JPH09179910A (ja) * 1995-12-26 1997-07-11 Fujitsu Ltd 電子仲介システムおよび方法
US5918015A (en) * 1996-02-28 1999-06-29 Nec Corporation Remote execution system with program receiver
WO1997035262A1 (fr) * 1996-03-15 1997-09-25 Hitachi, Ltd. Procede de generation automatique de programme et procede de commande d'execution
JPH10228380A (ja) * 1996-06-05 1998-08-25 Sun Microsyst Inc 低減されたラン−タイム・メモリ空間要求を有するネットワーク移動コードを実行する方法及びコンピュータ・システム
JPH09325928A (ja) * 1996-06-06 1997-12-16 Fuji Xerox Co Ltd メッセージ通信方法及び装置
US5968127A (en) * 1996-08-08 1999-10-19 Fuji Xerox Co., Ltd. Information processing apparatus
US6134580A (en) * 1996-09-17 2000-10-17 Kabushiki Kaisha Toshiba Data-processing apparatus, data-processing method, and storage medium onto which is stored a data-processing program
JPH10334065A (ja) * 1997-05-27 1998-12-18 Internatl Business Mach Corp <Ibm> 情報処理方法及び情報処理装置、サーバを制御するプログラムを格納した記憶媒体
US7512660B2 (en) 1997-06-10 2009-03-31 International Business Machines Corporation Message handling method, message handling apparatus, and memory media for storing a message handling apparatus controlling program
US6915326B2 (en) 1997-09-05 2005-07-05 Kabushiki Kaisha Toshiba Information processing apparatus and method and information processing program recording medium
US6557025B1 (en) 1997-09-05 2003-04-29 Kabushiki Kaisha Toshiba Method and apparatus that improves the technique by which a plurality of agents process information distributed over a network through by way of a contract net protocol
US6925486B2 (en) 1997-09-05 2005-08-02 Kabushiki Kaisha Toshiba Information processing apparatus and method and information processing program recording medium
JPH10191546A (ja) * 1997-11-28 1998-07-21 Toshiba Corp 電力系統保護制御システム
US6539416B1 (en) 1997-12-19 2003-03-25 Kabushiki Kaisha Toshiba Managing system and managing method of mobile agent
US6477563B1 (en) 1998-04-13 2002-11-05 Kabushiki Kaisha Toshiba Agent system and information processing method for same
US6662207B2 (en) 1998-04-13 2003-12-09 Kabushiki Kaisha Toshiba Agent system and information processing method for same
US6694370B1 (en) 1998-08-01 2004-02-17 International Business Machines Corporation Computerized method and system for implementing distributed applications
US6769121B1 (en) 1999-01-22 2004-07-27 Nec Corporation Program execution device and process migrating method thereof and storage medium which stores process migration control program
US6961926B2 (en) 1999-12-15 2005-11-01 Nec Corporation System and method for distributed debugging and recording medium on which control programs are recorded
JP2002324055A (ja) * 2002-02-20 2002-11-08 Internatl Business Mach Corp <Ibm> メッセージ処理方法
JP2005020713A (ja) * 2003-06-02 2005-01-20 Ricoh Co Ltd 画像形成システム、画像形成方法、画像形成プログラム、及び記録媒体
JP2006154926A (ja) * 2004-11-25 2006-06-15 Denso Corp キャラクタ表示を利用した電子機器操作システム及び電子機器

Also Published As

Publication number Publication date
EP0634719A3 (en) 1996-01-03
CA2143672C (en) 2005-02-01
JPH07509799A (ja) 1995-10-26
US6016393A (en) 2000-01-18
CA2143672A1 (en) 1995-01-19
AU7216494A (en) 1995-02-06
WO1995002219A1 (en) 1995-01-19
EP0634719A2 (en) 1995-01-18
JP3723572B2 (ja) 2005-12-07
US5603031A (en) 1997-02-11

Similar Documents

Publication Publication Date Title
JPH07182174A (ja) リモートプログラミングの実施方法
Minsky The imposition of protocols over open distributed systems
US6715145B1 (en) Processing pipeline in a base services pattern environment
US6529909B1 (en) Method for translating an object attribute converter in an information services patterns environment
Reppy Higher-order concurrency
US6339832B1 (en) Exception response table in environment services patterns
US6502213B1 (en) System, method, and article of manufacture for a polymorphic exception handler in environment services patterns
US6636242B2 (en) View configurer in a presentation services patterns environment
US6550057B1 (en) Piecemeal retrieval in an information services patterns environment
US6842906B1 (en) System and method for a refreshable proxy pool in a communication services patterns environment
US6438594B1 (en) Delivering service to a client via a locally addressable interface
US6615199B1 (en) Abstraction factory in a base services pattern environment
US6332163B1 (en) Method for providing communication services over a computer network system
US6615253B1 (en) Efficient server side data retrieval for execution of client side applications
US6442748B1 (en) System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment
TW498282B (en) System, method, and article of manufacture for a load balancer in environment services patterns
US11917066B1 (en) System for interacting objects as tokens on a blockchain using a class-based language
EP1287430A2 (en) System, method, and article of manufacture for distributed garbage collection in environment services patterns
EP1259879A2 (en) A system, method and article of manufacture for a multi-object fetch component in an information services patterns environment
Curtis LambdaMOO programmer’s manual
EP1526427A2 (en) Programming interface for licensing
US20030212672A1 (en) Structural equivalence of expressions containing processes and queries
WO2001097026A1 (fr) Systeme informatique modulaire et procede associe
WO2001016728A2 (en) A system, method and article of manufacture for business logic services patterns in a netcentric environment
WO2000058873A1 (en) Workflow design engine