ダイレクトモードの操作

このセクションは、ダイレクトモードでの、次の基本的な運用上の問題の概要を説明します:

ダイレクトモードに入る

ダイレクトモードに入るために、シェルプロンプトから $gtm_dist/mumps -direct と入力します。

$ $gtm_dist/mumps -direct
GTM>

これは、ダイレクトモードに入るためにプロンプトで、$gtm_dist/mumps -direct を使用することを示します。

シェルのスタートアップファイルに gtm エイリアスを作成します。(以下の例ではスタートアップファイルは .profileファイルにあると仮定してます):

  1. あなたの .profileファイルの編集セッションを開きます:

    $vi .profile
  2. gtm エイリアスを定義する関数をファイルに追加します:

    gtm(){ $gtm_dist/mumps -direct}
  3. ファイルを保存します。

以後、シェルプロンプトで gtm と入力するだけで、編集またはデバッグのセッションにおけるダイレクトモードに入れます。

例:

$ gtm
GTM>

これは、シェルプロンプトでタイプ入力するgtmのエイリアスがあなたをダイレクトモードへで連れて行くことを示してます。

ダイレクトモードで利用可能な機能

このセクションは、ダイレクトモードの利用を強化する基本的な機能やコンセプトの概要を提供します。

コマンドの再呼び出し

ダイレクトモードは、以前に入力したコマンドラインを表示するために、行コマンドを再び呼び出す機能が含んでいます。コマンドラインを介してスクロールバックするために、GTM> プロンプトで<CTRL-B>または上矢印キーを使用してください。コマンドラインを介して前方へスクロールするために、下向きの矢印を使用してください。GT.Mは、一度に1つのコマンドラインが表示されます。 あなたは削除することがありますし、そして、リコール行の末尾から開始する文字を再入力することがあります。

RECALLコマンドは、以前に入力されたダイレクトモードのコマンドラインへアクセスするための別の方法です。RECALLはダイレクトモードでのみ有効であり、それが他のMコードで出現する場合はエラーの原因です。

RECALLコマンドのフォーマットは:

REC[ALL] [intlit|strlit]
  • オプションの整数リテラル(intlit)は、以前に入力したコマンドを、現在からさかのぼったカウント数を指定します。

  • オプションの文字列リテラル(strlit)は、(大文字と小文字を区別される)リテラルに一致する文字から始まる一番最近入力されたコマンドラインを指定します。

  • RECALLコマンドを引数なしの時は、過去にダイレクトモードで入力された最大99を表示します。

ダイレクトモードのセッションを開始した最初は、GT.Mに保存された99行の入力がありません、したがって99行は見つかりません。最近入力されたGT.Mのコマンドラインは数字の1を持ち、古い行が高い数字を持ちます。GT.Mは、リストの中にはRECALLコマンドを含みません。RECALLコマンドエラーがダイレクトモードのプロンプト以外の位置から発行された場合は、GT.Mはランタイムエラーを発行します。

例:

GTM>write $zgbldir 
/usr/lib/fis-gtm/V5.4-002B_x86/mumps.gld
GTM>set $zgbldir="test.gld"
GTM>set a=10
GTM>set b=a
GTM>recall
1 set b=a
2 set a=10
3 set $zgbldir="test.gld"
4 write $zgbldir
GTM>

このREC[ALL]コマンドは、以前に入力したコマンドが表示されます。

あなたもまたRECALLを入力して選択したコマンドと取得したいコマンドの行番号を表示することができます。

例:

GTM>recall 2
GTM>set a=10

このRECALLsの2つ(2)の行番号

RE [CALL]コマンドがテキストのパラメータを含む場合は、GT.Mは、RE [CALL]コマンドの後に最も直近のコマンドと一致するテキストを表示します。

例:

GTM>recall write
GTM>write $zgbldir

このRECALLs "WRITE" は、このテキストが始める最も直近のコマンドです。Note:RECALLコマンドのテキストは大文字と小文字が区別されます。テキスト引数を持つRECALLコマンドはWRITEを処理しこのWRITEコマンドとは異なる書き込みをします、つまり、それはそれらを大文字小文字を区別して扱います。あなたが最初にタイプした小文字でのWRITEコマンド、続いて再呼び出しする大文字でのWRITEをタイプした場合は、RECALLコマンドは一致を検索しません。

ラインエディット

GT.Mは、端末からのダイレクトモードのプロンプトとM READsしている間に、 GT.M のコマンドラインエディタの使用を許可します。 GT.M のラインエディタは<CTRL>キーとエディットキーパッドとファンクションキーを使用してカーソルのポジショニングを可能にします。

GT.Mダイレクトモードのラインエディットキーは次のとおりです:

Backspace(バックスペース):カーソルの左側にある文字を削除します。

Delete(削除):カーソルの右側の文字を削除します。

上矢印(↑):RECALLリスト内の最小の直近の項目に移動します。

下矢印(↓):RECALLリスト内の最大の直近の項目に移動します

左矢印キー(←):カーソルを1文字左に移動します。

右矢印(→):カーソルを1文字右に移動します

<CTRL-A> :行の先頭にカーソルを移動します

<CTRL-B>:行の先頭に向かってカーソルの1文字を移動します

<CTRL-D>: On an empty line, terminates GT.M and returns control to the shell.

<CTRL-E> :行の末尾にカーソルを移動します

<CTRL-F>:行の終わりに向けてカーソルの1文字を移動します

<CTRL-K> :カーソル位置から行の末尾のすべての文字を削除します

<CTRL-U> :行全体を削除します。

[注意] 注意

ダイレクト・モード・プロンプトでコマンドを入力するときは、挿入キーを使用してその行の挿入モードを切り替えることができます。GT.Mが起動すると、環境変数 gtm_principal_editing の値に文字列 NOINSERT が含まれていない限り、挿入モードが有効になります。ダイレクト・モードに戻る前にUSEステートメントによって $PRINCIPAL デバイスの挿入モードが無効または有効になっている場合、ダイレクト・モードで無効または有効のままになります。挿入モードは、端末の INSERTキーを使用して直接モード行内で切り替えることができます。

[重要] 重要

GT.Mは、現在のterminfoエントリの kdch1機能(習慣的にDeleteキー)にマップするエスケープ・シーケンスを送信するキーボードのキーを押すと、カーソルの右側の文字を削除します。現在の terminfoエントリにkdch1機能がない場合、GT.MはDEC-VTターミナル・ファミリのメンバから派生したデフォルト値を使用します。これは選択されていないその他のterminfo機能の場合と同じです。BackspaceキーとDeleteキーが同じように動作するようにするには、最も簡単な方法は、BackspaceキーのDeleteキーと同じ文字シーケンスを送信するように端末エミュレータを設定することです。代わりに、terminfo設定を変更することもできます: たとえば、次のようなコマンドを使用して、一時ファイルにterminfoエントリの編集可能なバージョンを作成します: infocmp > /tmp/$$_$TERM。 一時ファイルを編集してkbs機能のエントリをkdch1機能のエントリに置き換えます。変更を保存し、編集したファイルを使用可能なterminfoエントリにコンパイルします。次に例を示します:

export TERMINFO=$HOME/.terminfo # これをログイン・プロファイルに追加する必要があるかもしれません
profilemkdir -p $TERMINFO
tic /tmp/$$_$TERM  # または、一時ファイル名が何であったか

terminfo 機能を変更する場合は、その機能にも依存する他のアプリケーション(例えば、テキストエディタなど)の動作の意図しない変更を常に探します。最悪の場合、異なるオプションを評価しながら、GT.Mと他のアプリケーションの代替のterminfoエントリを切り替える必要があるかもしれません。また、cud1機能のないterminfoエントリの場合、GT.Mはダイレクトモードで次の行に移動するときに改行を使用します。

M呼び出しスタック

ANSI標準Mは、スタックベースの仮想マシンがどのように動作するのかの条件において、確実なMの操作について説明します。スタックは "last-in/first-out" (LIFO) 上で一時的な情報を追跡するためのリポジトリとなります。Mプログラムの動作は、スタックベースのモデルを使用して理解することができます。しかし、実装が、どのようにスタックを維持しなければならないのか、または、すべての少なくとも1つを使用する必要がかどうかについて、標準規格は定義が明示的ではない。

スタックモデルは、現在のポイントへ主要な実施を実行されるすべてのMの操作が、場所を示す現在進展しているルーチンの証跡を提供します。

ZSHOWコマンドはGT.M内で利用できるこのスタックの情報を作成します。詳細は、 この章の“デバッグでスタック呼び出しを使用”“ZSHow” のコマンドの説明を参照してください。

ダイレクトモードの終了

次の 5つのMコマンドは、ダイレクト・モードでセッションを終了します:

  • HALT

  • ZHALT

  • ZCONTINUE

  • GOTO

  • ZGOTO

HALTコマンドは、ダイレクトモードが終了しMのプロセスを終了します。

ZHALTコマンドは、ダイレクト・モードを終了し、終了ステータスを呼び出し環境に戻します。

ZCONTINUEコマンドは、ダイレクトモードを終了するGT.Mに指示し、現在のポイントでMの呼び出しスタックの中で、ルーチンの実行を再開します。これは、GT.Mの実行中断とダイレクトモードを入力の位置となることがあります。しかし、ダイレクトモードの相互作用がQUITコマンドを含む時、それは、呼び出しスタックを修正し、別の位置で実行を再開するZCONTINUEを引き起こします。

GOTOとZGOTOコマンドは、ダイレクトモードを残したままてGT.Mに指示し、指定されたエントリを参照するように制御を転送します。

inserted by FC2 system