プログラミング環境

GT.Mプログラミング環境は、次に続くセクションで説明します。

データ管理

M言語データのスコープは、ローカルまたはグローバルのどちらかのプロセスです。

  • ローカル変数は、現セッションが持続している間のみ存続します。Mプロセスが終了すると、GT.Mはローカル変数を削除します。

  • グローバル変数は、プロセスが過ぎても消えずに引き続きデータを保持しています。GT.Mは、ディスク上にグローバル変数を保存します。グローバル ディレクトリは、グローバル変数を編成し、データベースの構成について説明します。GT.Mの管理者は、グローバルディレクトリを作成し管理する、グローバルディレクトリエディタ(GDEの)を使用します。グローバル ディレクトリは、データベースファイルへグローバル名をマップします。それがデータベースから格納および取得する時に、GT.Mはこのマッピングを使用します。いくつかのグローバルディレクトリは、1つのデータベースファイルを参照することがあります。

GT.Mデータ管理システムについての詳細情報については、『GT.M管理および運用ガイド』の、"グローバル ディレクトリエディタ(GDE)"、"MUPIP"、"GT.Mジャーナリング"の章を参照してください。

データベース管理 ユーティリティ

グローバル ディレクトリエディタ(GDE)は、グローバルディレクトリの特性を、作成し、変更し、維持し、表示します。さらにGDEは、グローバル変数に対応するために指定されたデータベースの領域へのリソース名の追跡(LOCKs on)をマップします。

M ペリフェラル インターチェンジ プログラム(MUPIP)は、データベースファイルを作成し、そして、GT.Mデータベース管理とデータベースのジャーナリングのためのツールを提供します。

GT.Mデータベースユーティリティに関しての詳細情報は、『GT.M管理および運用ガイド』の、"グローバル ディレクトリエディタ(GDE)"、"MUPIP"、"GT.Mジャーナリング"の章を参照してください。

ソースコードの管理

GT.Mプログラミング環境では、ルーチンのソースが生成され、標準 UNIXファイルとして格納されます 。それらは、標準 UNIXのテキストエディタで、作成され、編集されます。

GT.Mは、オペレーティングシステムユーティリティで動作するように設計され、そして、それらが有益なときに効果を高めます。次のセクションで、GT.Mやオペレーティングシステムからの、プログラミングとデバッグのプロセスを説明します。

ソースファイルの管理

標準M の "パーセント" (%)ユーティリティに加え、GT.Mは、標準UNIXファイルの操作ツールの使用を許可します。たとえば、diff, grep, cp, and mv コマンドです。GT.Mプログラマもまた、UNIXのディレクトリ構造によって提供される、強力な機能を使用できます。それは、時刻と日付の情報、ディレクトリのツリー構造、ファイルプロテクションのようなものです。

GT.Mプログラムは、ソース管理ソフトウェアのほとんどと互換性があります。例えば、RCS、SCCS。

プログラミングデバッギングの機能

GT.Mプログラマーは、Mのソースファイルを作成するために、任意のUNIXのテキストエディタを使用することができます。ダイレクトモードの中からプログラムを生成するならば、それもまた、EDITOR環境変数により指定されたUNIXのテキストエディタをアクセスし、自動化しプロセスを強化するための追加機能を提供します。

GT.Mプログラマもまた、対話的に、変更、デバッグ、および、Mルーチンを実行するために、ダイレクトモードの機能を使用します。ダイレクトモードでは、GT.Mは各Mコマンドを直ちに実行します。あたかもそれは、GT.Mがダイレクトモードを始めるポイントで、イン-ラインされていたようになります。

以下は、ダイレクトトモードから利用可能な追加の拡張機能のリストです:

  • ダイレクトモードからシェル(shell)へ、コマンドを発行する能力。

  • 以前に入力したコマンドを、表示し再利用するために、コマンドが機能を呼び返す。

  • 特にデバッグ環境を最適化する、多くの言語拡張。

GT.M コンパイラ

GT.Mコンパイラは、位置独立を構成するオブジェクトファイルを生成すために、ソースファイルを操作します。ネイティブのオブジェクトコードは、いくつかのプラットフォームで、共有オブジェクトライブラリにリンクすることができます。GT.Mは、コンパイル時に構文規則のエラーチェックを提供し、コンパイル時に書かれるモード(compile-as-written mode)を、有効か無効にすることができます。デフォルトでは、コンパイラがソースコードにエラーを検出する場合であっても、GT.Mはオブジェクトファイルを生成します。このコンパイル時に書かれるモード(compile-as-written mode)は、デバッグするための柔軟なアプローチを容易にします。

ランタイムシステム

GT.Mプログラマは、シェルまたは対話形式から、Mルーチンを実行することができ、ダイレクトモードからは、Mコマンドを使用します。

コンパイル時にエラーが発生しない限り、実行時のシステムは、コンパイル時に書かれるコード(compile-as-written code)を実行します。それがエラーを検出する場合は、実行時のシステムは、直ちにルーチンの実行を一時停止し、ダイレクトモード、または、ユーザー記述のエラー処理ルーチンへ、制御を移します。

自動およびインクリメンタルリンク

実行時のシステムは、Mルーチンにリンクするために、ZLINKを呼び出すGT.Mの機能を、活用します。プログラムまたはダイレクトモードのコマンドは、現在のプロセスの一部ではないMルーチンを参照します。GT.Mは、自動的にZLINK機能を使用し、参照されるルーチン(auto-ZLINK)をリンクすることを試みます。ZLINK機能は、ルーチンの再コンパイルが必要かどうかも決定します。ZLINKの結果としてコンパイルすると、GT.Mは、通常、ソースコード内のエラーを無視します。

実行時のシステムは、インクリメンタルリンクを提供します。ZLINKコマンドは、現在のイメージへMルーチンを追加します。この機能は、デバッグセッション中に、コード変更を加えて容易にします。GT.Mプログラマーもまた、パッチを追加する機能と、Mプロセスを実行するコードの生成を、使用することができます。

エラー処理

GT.Mコンパイラは、以下の時、構文規則のエラーを検出し報告します:

  • コンパイル時(Compile-time) - ソースファイルからオブジェクトモジュールを生成している間

  • 実行時(Run-time) - Mの間接指定およびXECUTEsのためにコードをコンパイルする間

  • 実行時(Run-time) - ユーザーが直接モードで動作している間

コンパイル時(compile-time)のエラーメッセージのフォーマットは、エラーを含む行と、行の中のエラーの場所を、表示します。エラーメッセージもまた、何がMステートメントについて誤ったことを、示します。

GT.Mは、間接指定に関連付けられた特定のエラータイプ、I/Oデバイスの機能と、実行時(run-time)までのプログラムロジック、を検出することはできません。

コンパイル時に書かれる(compile-as-written)機能は、コード内のエラーにもかかわらずオブジェクトモジュールを、続行し生成するために、コンパイルを許可します。これは、コードを通して他の経路のテストを許可します。GT.Mが実行パスでそれらに遭遇すると、エラーは実行時(run-time)に報告されます。

GT.Mの実行時(run-time)システムは、それらが発生する時に、 実行エラーを認識し、それらを報告します。また、実行パスでそれらが発生する時、コンパイラによってフラグされるエラーを報告します。

詳細な情報は 第13章: “Errエラー処理 を参照してください。

入力/出力処理

GT.Mは、入力と出力の処理をサポートします。以下に、そのシステムコンポーネントを示します:

  • ターミナル

  • シーケンシャルディスクファイル

  • 磁気テープ

  • メールボックス

  • FIFO

  • Nullデバイス

  • ソケットデバイス

GT.Mの入力/出力処理は、デバイス依存があります。1つのデバイスから別への情報のコピーは、再フォーマットすることなく実現されます。

GT.Mは、特別な、端末ハンドリング機能を持ちます。GT.Mは、端末のパフォーマンスを高めるため、QIO操作を、組み合わせて実行されます。エスケープシーケンスを含み、制御文字トラップ、および、エコー抑制をGT.Mが提供する機能を、端末は制御します。

GT.Mは、さまざまなデバイスパラメータを使用してアクセスされる、RMSシーケンシャルディスクファイルを、サポートします。

GT.Mは、構造化ファイル(FILES-11)テープ、および、非構造化ファイル(FOREIGN)の非標識テープのために、固定長および可変長レコードをもつ、ブロックI/Oをサポートします。GT.Mは、非標識FOREIGNとFILES-11テープのため、ASCII文字セットをサポートします。GT.Mは、FOREIGNテープのみ、EBCDIC文字セットをサポートします。GT.Mもまた、FOREIGN DOS-11とテープまたはストリーム形式のレコードをラベルされたANSIをサポートします。また、ASCIIとEBCDICのキャラクタセットをサポートします。

GT.Mは、プロセス間通信のため、恒久的または一時的にメールボックスのFIFOを使用します。GT.Mは、メールボックスを、構造化レコード(record-structured)のI/Oデバイスとして扱います。

GT.Mは、nullデバイスへ出力を指示する能力を提供します。これは、不要な出力を破棄するための、効率的な方法です。

GT.Mは、I/Oの例外の取扱いが、例外条件のプロセス連係と結合する必要はないため、例外デバイス処理を提供します。OPEN、USE、CLOSE、EXCEPTIONのパラメータは、I/Oデバイス用のエラーハンドラとして、XECUTE文字列を定義します。

他の言語とGT.Mと統合

GT.Mは、プログラミング環境を最適化できる機能を提供します。これらは、他のプログラミング言語で書かれたプログラムからMルーチンをコールすることができることが含まれ、M固有のデータベース機能と同等の機能性を提供するインターフェイスを持ってMデータベースにアクセスし、および、アメリカ英語以外で作業する際のプログラミング環境を変更します。これらは、他のプログラミング言語で書かれて、プログラムをコールすることできることが含まれ、C言語のようなインターフェイスをサポートし、そして、アメリカ英語以外で作業する際のプログラミング環境を変更する。この機能は、このマニュアルを通した章で、より詳細を説明します。

非Mルーチンへアクセス

GT.Mルーチンは、外部呼び出し機能を使用して、外部(非M)ルーチンを呼び出すことができます。これは、他のプログラミング言語で実装された機能へアクセスを許可します。詳細な情報は 第11章:“外部ルーチンの統合 統合 を参照してください。

国際化

GT.Mは、英語以外の言語で使用するため、代替照合シーケンスとコードのパターンマッチングを定義できます。第12章:" 国際化 " で、この機能の詳細と要件について説明します。

inserted by FC2 system