CANDE (Command AND Edit) は、Unisys Clearpath シリーズのメインフレームで動作するMCP (Master Control Program)オペレーティングシステム上のコマンドラインシェルおよびテキストエディタです。元々はBurroughs の大型システムに実装され、[ 1 ]オペレーティングシステムの実行環境と対話するためのさまざまな機能を備えており、プログラムの実行、編集、コンパイル、およびファイルの作成、コピー、移動、名前変更、削除全般に重点を置いています。
正式名称はCANDE MCSです。MCS(Message Control Subsystem)は、Burroughsアーキテクチャにおけるシステムプログラムの一般的な形態です(MCP、マスターコントロールプログラム、またはコアOSを除く)。MCSであるCANDEは、単なるエディタにとどまらず、ユーザーネットワーク全体を制御する機能を提供します。
CANDEの編集機能は、フルスクリーンエディタやグラフィックエディタが登場する以前のものであるため、(スクリプトに基づいた編集とは対照的に)カジュアルな編集には時代遅れである。
CANDEは、Burroughs社のCMS(ミニコンピュータ)シリーズでも使用されており、構文は非常によく似ていた。
現代の MCP では、CANDE は主に ODT (Operator Display Terminal) および MARC (Menu Assisted Resource Control) を介して、ISPFなどの他のレガシー メインフレーム インターフェースと同様に、元の文字指向端末のエミュレータ上で使用されます。
CANDEはコマンドラインインタープリタと行エディタを提供しますが、オペレーティングシステムのコマンドラインインタープリタの現代的な解釈とは異なり、CANDEコマンドはCANDE MCSにコンパイルされます。これは、シェルライクな機能がWFLによって提供されるためです。その他の注目すべき機能には以下が含まれます。
これらの機能に加えて、CANDEにはオンラインヘルプ機能も備わっています。
処理速度を向上させるため、CANDEはスタックの最上位にあるブロックを交換することでユーザーコンテキスト切り替えを実現した。この斬新な手法は、Burroughsの大規模システムの設計に組み込まれていたいくつかの前提、特に仮想メモリ記述子の処理方法を覆すものであり、CANDE自体をシステムレベルの権限を持つDCALGOLで記述する必要があった。
CANDE のアーキテクチャは、主に 2 つのセクションに分かれています。1 つは、当初は最大 255 人の同時ユーザーをサポートする、単一インスタンスのプライマリ メイン プロセス、もう 1 つ以上のワーカー スタックです。メイン プロセスは BUMP と呼ばれ、ユーザーからの入力を含むすべての入力メッセージを受け取ります。遅延なく実行でき、ディスク アクセスなどの I/O を伴わない単純なリクエストは、即座に処理されます。その他のリクエストはワーク キューに追加され、ワーカー プロセスのいずれかによって処理されます。ワーカー プロセスは GRIND と呼ばれ、常に 1 つ以上のインスタンスが存在します。各 GRIND プロセスは、デフォルトで実際に作業を実行する 5 つの擬似スレッドを持っています。
コンテキスト切り替えのための内部スレッドモデルは、GRINDプロセスごとにワーカー擬似スレッドの1つを選択し、それを実行コンテキストにします。これは、それをスタックの最上位にコピーすることで実現されます。ワーカープロセスがI/Oやその他の非同期処理を実行する必要がある場合、処理を開始し、待機対象をマークし、コンテキスト切り替え関数を呼び出します。この関数は、実行用に別のコンテキストを選択します。
CANDEは、データの慎重な分離により、内部ロックを使用せずに動作します。各ユーザー接続(またはステーション)には、ステーション配列(STA、"stay")と呼ばれるメイン配列へのインデックスが割り当てられます。現在のステーションインデックスはSTAX("stay-x"と発音)と呼ばれます。ステーションごとに複数の状態データワードがありますが、最初のワードはすべてまとめて格納され、その後に2番目のワードがすべて格納される、といった具合です。これにより、CANDEは乗算ではなく加算のみを使用して配列にインデックス付けすることができ、当時のハードワイヤードCPUでの動作を高速化できます。
CANDEは元々1973年にダレル・F・ハイによって開発されました。1984年にランドール・ゲレンズが開発を引き継ぎ、その際にライブラリのメンテナンス(ファイルのコピー、移動、名前変更、削除)ルーチンが書き直され、機能が大幅に拡張されました。また、「?」構文を使用した多数のユーティリティが追加され(プログラム実行中でも使用可能)、アーキテクチャにもいくつかの改良が加えられました。その後、サンタバーバラ工場に移管され、最終的にはインドに移転しました。
元々はプログラム実行中の制御を可能にするために使われていた「?」構文(通常は入力がプログラムに向けられる部分)は、次第に多くのユーティリティを含むように発展しました。