CMS-2

CMS-2
CMS-2Y プログラマーズリファレンスマニュアル
パラダイム命令形
デザイン:RANDインターメトリクス
開発者コンピュータサイエンスコーポレーション
初登場1968
影響を受けた
CS-1FortranJOVIALPL/I [ 1 ]
CMS-2 コード例

CMS-2は、アメリカ海軍が使用する組み込みシステムプログラミング言語です。[ 2 ]コードの移植性と再利用性を向上させることを目的とした、標準化された高水準コンピュータプログラミング言語を開発する初期の試みでした。CMS-2は主にアメリカ海軍の戦術データシステム(NTDS)向けに開発されました。[ 1 ]

CMS-2は1970年代初頭にRAND Corporationによって開発され、「Compiler Monitor System(コンパイラ・モニタ・システム)」の略称です。文献では、「CMS-2」という名称の後に、対象システムの種類を示す文字が続きます。例えば、CMS-2MはAN/AYK-14などの海軍の16ビットプロセッサを対象としています。[ 2 ]

歴史

CMS-2は、カリフォルニア州サンディエゴのFCPCPAC(Fleet Computer Programming Center - Pacific)向けに開発されました。 1968年にIntermetricsの設計支援を受けてComputer Sciences Corporationによって実装されました。この言語はその後も開発が続けられ、最終的にはAN/UYK-7AN/UYK-43、UYK-20、UYK-44 [ 3 ]など、多くのコンピュータをサポートするようになりました。[ 4 ]

言語機能

CMS-2はプログラムのモジュール化を促進するために設計され、システム全体を部分的に独立してコンパイルすることを可能にしました。この言語は文指向です。ソースコードは自由形式で、プログラミングの利便性のためにアレンジすることができます。データ型には、固定小数点、浮動小数点、ブール値、文字、ステータスが含まれます。文字およびビット列への直接参照と操作が許可されています。直接コードと呼ばれるシンボリックマシンコードも使用できます。[ 1 ]

プログラム構造

CMS-2 コンパイル時システムの例

CMS-2プログラムは文で構成されています。文は区切り文字で区切られた記号で構成されます。記号には、演算子、識別子、定数などがあります。演算子は、プログラム内の特定の演算や定義のためにコンパイラによって割り当てられる言語プリミティブです。識別子は、プログラマがデータ単位、プログラム要素、および文のラベルに割り当てる一意の名前です。定数は、数値、ホレリス文字列、状態値、またはブール値などの既知の値です。

CMS-2 ステートメントは自由形式で、ドル記号で終わります。参照用にステートメントラベルをステートメントの先頭に置くことができます。

CMS-2ソースプログラムは、2種類の基本的な文で構成されています。宣言文はコンパイラに基本的な制御情報を提供し、特定のプログラムに関連付けられたデータの構造を定義します。動的文は、コンパイラに実行可能な機械語命令(オブジェクトコード)を生成させます。

プログラムのデータを定義する宣言文は、データ設計と呼ばれる単位にグループ化されます。データ設計は、一時的および永続的なデータ記憶領域、入力領域、出力領域、および特殊データユニットの詳細な定義で構成されます。データに作用したり計算を実行したりする動的な文は、手続きにグループ化されます。データ設計と手続きはさらにグループ化され、CMS-2プログラムのシステム要素を形成します。コンパイラは、これらのシステム要素をコンパイル時システムに統合します。コンパイル時システムは、単独で使用される場合もあれば、より大きなプログラムの一部となる場合もあります。[ 1 ]

データ宣言文

データ宣言文は、コンパイラにデータ要素の定義に関する情報を提供します。コンパイル時システムにおけるデータ要素の形式、構造、順序を定義します。主なデータの種類は、スイッチ、変数、集約の3つです。[ 1 ]

スイッチ

スイッチは、コンパイル時システム内の特定の位置へのプログラム制御の移行を可能にします。スイッチには、プログラムの転送や分岐を容易にするための一連の識別子またはスイッチポイントが含まれます。スイッチは、文ラベルまたは手続き名のプログラムアドレスを表します。

変数

変数は単一のデータです。1ビット、複数ビット、またはワードで構成される場合があります。値は変数定義で割り当てられます。変数は定数または変化する値を保持できます。データ型には、整数、固定小数点、浮動小数点、ホレリス文字列、ステータス、ブール値などがあります。

骨材

テーブルは、同一構造を持つ情報の順序付きセットを保持します。テーブル内のデータの共通単位はアイテムです。アイテムは、テーブルの最小区分であるフィールドに分割できます。フィールドに使用できるデータ型には、整数、固定小数点、浮動小数点、ホレリス文字列、ステータス、ブール値などがあります。配列はテーブルの概念を拡張したものです。配列の基本構造単位はアイテムです。配列のアイテムには、プログラマーが定義したフィールドが含まれます。

動的ステートメント

動的文は処理操作を指定し、コンパイラによって実行可能なコードを生成します。動的文は、演算子、それに続くオペランドのリスト、および追加の演算子で構成されます。オペランドは、単一の名前、定数、データ要素参照、または式のいずれかです。[ 1 ]

文演算子

主要な CMS-2 オペレータを以下にまとめます。

オペレーター関数
セット計算を実行したり値を割り当てたりする
スワップ2つのデータユニットの内容を交換する
後藤プログラムフローを変更するか、ステートメントスイッチを呼び出す
もし条件付き実行の比較式またはブール式を表します
変化するプログラムループを確立する
探すテーブル内のデータを検索する

特殊演算子

特殊演算子はデータ構造への参照とそれに対する操作を容易にします。[ 1 ]

オペレーター関数
少しデータ要素内のビット文字列を参照する
チャー文字列を参照する
コラッドコアアドレスを参照する
ABS式の絶対値を取得します
コンプブール式を補完する

プログラム構造の宣言

プログラムの処理操作を記述する動的文は、プロシージャと呼ばれる文のブロックにグループ化されます。[ 1 ]

開始区切り文字終了区切り文字目的
システムエンドシステムコンパイル時のシステムを区切る
システムDDEND-SYS-DDコンパイルされたシステム内のシステムデータ設計を区切る
SYS-PROCEND-SYS-PROCコンパイル時システム内のシステムプロシージャを区切る
LOC-DDEND-LOC-DDシステム プロシージャ内のローカル データ設計を区切る
手順終了プロセスシステム プロシージャ内のプロシージャを区切ります
EXEC-PROC終了プロセスシステム プロシージャ内のタスク状態プロシージャを区切ります (XCMS-2 のみ、エグゼクティブ状態プロシージャからのみ呼び出されます)
関数終了機能システムプロシージャ内の関数を区切る
SYS-PROC-RENEND-SYS-PROCコンパイル時システムで再入可能なシステム プロシージャを区切ります (XCMS-2 のみ)
自動DDEND-AUTO-DD再入可能システム プロシージャの実行が開始されるたびに割り当てる必要がある再入可能システム プロシージャ内の動的データ領域を区切ります (XCMS-2 のみ)
エンドヘッドコンパイル時システムでヘッダーパッケージを区切る

高レベルの入出力ステートメント

入出力ステートメントは、モニターシステムの下で非リアルタイム環境で実行されている間にハードウェアデバイスとの通信を提供します。[ 1 ]

オペレーター関数
ファイル入力と出力の環境やその他の情報を定義します
開けるI/Oルーチンを初期化する
近いファイルを非アクティブ化し、ファイル終了マークを書き込みます
入力外部デバイスからの入力操作をファイルバッファ領域に指示します。
出力ファイルバッファ領域から外部デバイスへの出力操作を指示します
形式外部データブロックと内部データ定義間の必要な変換を定義します
エンコード指定された形式に従って変換し、データ要素を共通領域に変換するよう指示します。
デコード共通領域の展開とフォーマット宣言で指定されたデータユニットへの送信を指示します。
終了ファイル適切な記録媒体にファイル終了マークを配置する
POS磁気テープファイルの位置を決める特殊演算子
長さ入出力レコード長を取得するための特殊演算子

コンパイラモニターシステム2(CMS-2)

コンパイラ・モニタ・システム2(CMS-2)は、UNIVAC CP-642B(AN/USQ-20)上で動作したシステムである。システムソフトウェアには、モニタ、コンパイラ、ライブラリアン、CP-642ローダ、テープユーティリティ、フローチャートが含まれていた。[ 1 ]

MS-2モニター

CP-642コンピュータ上で実行されるCMS-2コンポーネントとユーザージョブの実行を制御するバッチ処理オペレーティングシステムです。入出力、ソフトウェアライブラリ機能、デバッグツールを提供します。ジョブアカウンティング機能も提供されます。

CMS-2 コンパイラ

CS-1およびCMS-2言語用のコンパイラで、CP-642、L-304、AN/UYK-7、1830A1218 /1219コンピュータ用のオブジェクトコードを生成します。1970年代には、コードをコンパイルするコンピュータに応じて、CMS-2コンパイラの複数のバージョンが存在していました。一部の関数を回避するために、ソースコードを書き直す必要がありました。また、CMS-2の異なるバージョンでは、デバッグツールに問題がありました。

XCMS-2 コンパイラ

AN/UYK-7コンピュータ向けの言語機能を追加した拡張CMS-2コンパイラ。AN/UYK-7オブジェクトコードのみを生成します。

CMS-2 ライブラリアン

ソース コードとオブジェクト コードの保存とアクセスを提供するファイル管理システム。

CP-642 オブジェクトコードローダー

絶対オブジェクト コードまたは再配置可能なオブジェクト コードをロードするための 2 つのオブジェクト コード ローダー。

テープユーティリティ

磁気テープ上のデータを管理するためのユーティリティ セット。

CMS-2フローチャート

フローチャート ソフトウェアは、CMS-2 ソース コード内のフローチャート ステートメントを処理し、フローチャートを高速プリンタに出力します。

参照

参考文献

  1. ^ a b c d e f g h i jアメリカ海軍(1978年)、デジタルコンピュータ基礎訓練マニュアル、NAVEDTRA 10088-B、アメリカ海軍
  2. ^ a b Neal Ziring (1998年10月19日). 「CMS-2」 . Ziring MicroWeb. 2014年11月23日時点のオリジナルよりアーカイブ。 2014年7月8日閲覧{{cite web}}: CS1 maint: bot: 元のURLステータス不明(リンク
  3. ^マーク・ウィルソン - イージスORTSのUYK-20とUYK-44での個人的な経験
  4. ^艦隊戦闘指揮システム支援活動(1986年)、AN/UYK-7およびAN/UYK-43コンピュータ用CMS-2Yプログラマーズリファレンスマニュアル、米国海軍