スクリプト・コマンドのリファレンス
ここでは、ターミナル・スクリプトの作成時に、ターミナル・アプリケーションで使用可能なスクリプト・コマンドのリファレンス情報を提供します。
break
ブレークをサポートする通信ノードにブレークを送信します。それ以外には何も実行しません。引数は取りません。使用例は以下のとおりです。
break
call script
スクリプトの実行を開始します。このコマンドを実行したときにスクリプトが実行中の場合は、ターミナル・アプリケーションで実行中のスクリプトを終了してから、新しいスクリプトが開始されます。使用例は以下のとおりです。
call script: login fred <p3>
この例は、現行のスクリプトを停止し (スクリプトが実行中の場合)、login.scr という名前の別のスクリプトを開始します。サンプル・スクリプト (login.scr) の最初のパラメータは fred です。第 2 パラメータは現行のスクリプト・ファイル (呼び出しを行っているスクリプト・ファイル) の第 3 パラメータと同じになります。既定のファイル拡張子は .scr と見なされます。最初に、現行の作業ディレクトリで login.scr のインスタンスが検索されます。
case match
wait for コマンドで大文字/小文字の照合を有効化または無効化します。使用例は以下のとおりです。
case match: off
大文字/小文字の照合を無効化すると、個々の文字の大文字/小文字が異なっていても、文字列が一致していると見なされます。このスイッチの既定は on です。
closelog
現在開いているログ・ファイルがあれば、それを閉じます。使用例は以下のとおりです。
logfile: mydirect.log
send: dir *.*/FULL<CR>
wait for: <NL>$
closelog
connect
リモート・ホストへの接続を開始するためのダイアログ・ボックスを開きます。使用例は以下のとおりです。
connect
debug
デバッグ・モードを有効にします。デバッグ・モードでは、通常はターミナル・アプリケーションが無視する無効なスクリプト・コマンドをトラップします。デバッグ・モードを有効にすると、オペレータの注意を喚起するメッセージ・ボックスに、無効なコマンドの最初の部分が表示されます。使用例は以下のとおりです。
debug: on
disconnect
ホストとの接続を切断します。ターミナル・アプリケーションが未接続の場合は、何の動作もしません。使用例は以下のとおりです。
disconnect
display
データを画面に出力します。通信デバイスに、データは送信されません。使用例は以下のとおりです。
display: <CSI>H<CSI>J<LF>Here are the choices for today:
この例を実行すると、カーソルがホーム位置に戻され、ウィンドウがクリアされます。次に、1 行進めて Here are the choices for today: というテキストが出力され、テキストの末尾にカーソルが置かれます。
echo
ウィンドウおよびログ・ファイルへの出力の表示を有効化または無効化します。これは、出力を非表示にする必要がある場合 (ユーザにとって情報価値がないためなど) に役立ちます。例は、"wait for" を参照してください。
execute
Windows プログラムを起動し、そのウィンドウに SHOW 属性を設定します。使用例は以下のとおりです。
execute: notepad.exe myfile.not
この例では、Windows のメモ帳プログラムを起動し、そのアプリケーション内でファイル myfile.not を開きます。次のような使用方法にも注目してください。
logfile: mydat.lst
echo: off
send: dir *.dat/full
wait for: <NL>$
closelog
echo: on
execute: notepad mydat.lst
プログラムが実際に開始されたかどうかを確認するテストは実行されず、その完了も待機されません。
exit
スクリプトを終了します。通常、スクリプトは最後の行まで実行されると終了しますが、特定のイベント (ログインなど) が生じないときに終了させたい場合があります。使用例は以下のとおりです。
on error: $byebye
timer: 40
wait for: event:
goto: $Got event
$byebye:
notify: Did not find event prompt, exiting script
exit
$Got event:
timer: 0
; more commands
goto
制御をスクリプト・ファイル内の別の場所に移します。このコマンドは、ループ処理のコントロール・フローの管理や、タイムアウト分岐への対応の使用に便利です。使用例は以下のとおりです。
on error: $Not There
timer: 30
wait for: abc<CR>
goto: $Got It
$Not There:
;failed to see it, send Ctrl+C
send: <3>
goto: $bad
$Got It:
;turn timer off because we got abc<CR>
timer: 0
;more commands ...
if empty
最後の test コマンドが空文字列を検出した場合に、指定したラベルに分岐させることができます。使用例は以下のとおりです。
test: <p1>
if empty: $No First Arg
最初のコマンドは、コマンド行で指定された第 1 パラメータが見つかるかどうか、つまり空でないかどうかを検証します。 2 番目のコマンドは、それが見つからない場合に、ラベル $No First Arg に分岐させます。
key_starttime
キー・シーケンスの時間計測を開始します。このコマンドは、1 つの数値引数を取ります。引数が 0 の場合は、Enter を押したときに、統計が蓄積されます。それ以外の場合は、F10 を押したときに、統計が蓄積されます。使用例は以下のとおりです。
key_starttime: 0
時間計測を停止するには、key_stoptime コマンドを使用します。
key_stoptime
時間計測が現在アクティブな場合に、時間計測を停止し統計を蓄積します。使用例は以下のとおりです。
key_starttime: 0
wait for: <esc>[14;22H
key_stoptime
key_timer
キーの時間計測情報のデータ収集を開始または停止します。または、Alt-Shift-T を使用して、タイマを開始または停止できます。使用例は以下のとおりです。
key_timer: on
; rest of your script commands
key_timer: off
ファイル (KEYTIMER.LOG) がシステム・マネージャ・ディレクトリに作成され、キーの時間計測のヒストグラムが記録されます。時間計測シーケンスは現行の統計ファイルに追加されるのではなく上書きされるため、使用可能な時間計測シーケンスは 1 つのみです。
時間計測をスクリプト・ファイルから排他的に起動するには、<13>、<27>[21- の代わりに、それぞれ <CR>、<F10> を使用する必要があります。
logfile
指定されたログ・ファイルで受信データの収集を開始します。アクティブなログ・ファイルがある場合は、適切に終了されます。ロギングの停止には、closelog コマンドを使用します。使用例は以下のとおりです。
logfile: mydirect.log
send: dir *.*/FULL<CR>
wait for: <NL>$
closelog
既定のディレクトリはスクリプトの存在するディレクトリとなります。これはフル・パス名を与えることで変更できます。
通常、ログ・ファイルは上書き方式で開きます。つまり、ログ・ファイルが既に存在する場合は、新規データで既存のものが置換されます。
multiwait for
スクリプト・ファイルとホストを同期化します。ホストから受信したデータが、引数に指定されたいくつかの文字列の 1 つに一致するまで、処理が中断されます。使用例は以下のとおりです。
multiwait for: =USER>=***ERROR,=DONE
この例では、指定された 3 つの文字列の中の 1 つが到着するまで、スクリプト・ファイルが待機することになります (永久に待機する可能性もあります)。引数の最初の非空白文字 (この例では等号記号) は、引数を複数の部分文字列に分割する区切り文字として機能します。したがって、このコマンドは、次のいずれかのシーケンスが到着するまでサンプル・スクリプトを待機させます。
USER>
***ERROR,
DONE
タイマを使用することで、このコマンドを終了できます。
大文字/小文字の完全一致を有効または無効にする場合は、case match コマンドを参照してください。
case match コマンドの引数には 1 つの部分文字列しか指定できないため、次の 2 つのスクリプト・コマンドの機能は同じになります。
multiwait for: =USER>
wait for: USER>
notify
Windows メッセージ・ボックスを表示し、ユーザが [OK] ボタンを押すまで待機します。スクリプトを実行するユーザへのメッセージに使用できます。使用例は以下のとおりです。
notify: Ready to send commands...
send: copy *.lst backup:*.lst<CR>
send: delete *.lst;*
このメッセージ・ボックスはモーダルであるため、他のユーザが割り込むことはできません。
on error
タイマが時間切れになった場合 (通常はテキストの到着を待っている最中) に実行される暗黙の goto のターゲット・ラベルを設定します。厳密な正確さを確保するには、このコマンドは timer の使用前に使用する必要がありますが、実際にはこの順序は重要ではないことがあります。
例は、"wait for"、"exit"、"goto"、および "subroutine" を参照してください。
また、"timer" コマンドも参照してください。
pause
実行中のスクリプトを一時停止します。停止時間は 10 分の 1 秒単位で指定します。使用例は以下のとおりです。
pause: 30
このコマンド例では、スクリプトの実行が 3 秒間停止されます。引数が 0 の場合は永久停止となります。永久停止から再開するには、Alt-P を使用します。
return
subroutine コマンドと共に使用して、スクリプト内でそのサブルーチンを呼び出した箇所に戻ります。使用例は、subroutine コマンドを参照してください。
send
現在接続中のホストに送信する入力データをシミュレートします。使用例は以下のとおりです。
send: set $namespace="%SYS"<CR>
この行はネームスペースを %SYS に変更します。send コマンドはキャリッジ・リターンを暗黙的に追加しないため、末尾の <CR> が必要です。
もう 1 つの使用例は以下のとおりです。
send: 1<cr>2<cr>A1234<F10><32>
このコマンドは、以下の順で入力したことと同等です。
-
文字の 1
-
キャリッジ・リターン・キー
-
文字の 2
-
キャリッジ・リターン・キー
-
A1234 という文字列
-
F10 キー
-
1 つの空白文字
<32> は先頭または末尾のスペースを送信する唯一の方法であることに注意してください。普通に入力した場合、これらの文字はコマンド・インタープリタによって削除されます。
wait for コマンドを各 send コマンドの後ろに組み込むことをお勧めします。wait for コマンドにより、スクリプト内のコマンドをターミナル・アプリケーションからの入力と後で同期させることができます。ターミナル・スクリプト・メカニズムは、wait for コマンドを検出した場合を除き、InterSystems IRIS® データ・プラットフォームから返される入力に関係なく、コマンドを順次送信します。
wait for コマンドを各 send コマンドの後ろに組み込まず、ログ・ファイルを生成する場合、そのログ・ファイルには後続の send コマンドの情報は含まれません。
subroutine
スクリプト内で同じコマンドを何度も使用する場合に役立ちます。このコマンドを使用すると、記憶域を節約できると同時に、異なる多くのラベルを保持する必要がなくなります。このコマンドは return コマンドと共に使用します。使用例は以下のとおりです。
subroutine: $Send It Again
; some other processing
exit
$Send It Again:
send: <F7>Q
on error: $skip
timer: 30
wait for: [22;5H
timer: 0
return
$skip:
send: <3>
; note on error still set to $skip
timer: 30
wait for: function:
timer: 0
send: <CR>
exit
サブルーチン・スタックは 16 アドレスを保持します。それより深くサブルーチンをネストしようとすると、スクリプトは失敗します。
terminate
終了して Windows に戻るようターミナル・アプリケーションに命令します。開いているすべてのファイルが閉じ、不要なウィンドウが消去され、接続が閉じます。使用例は以下のとおりです。
terminate
test
パラメータまたはウィンドウ・プロパティが空でないかどうかを調べます。このコマンドは、if empty コマンドと連携して使用します。使用例は、if empty コマンドを参照してください。
timer
wait for コマンドと連携して使用されるタイマを設定します。timer コマンドは、Windows の SetTimer() コマンドを実行します。 このタイマが始動すると、スクリプト・プロセッサは on error で指定されたラベルに移動します (指定されている場合)。このスクリプトは、on error によってラベルが指定されていない場合には直ちに終了します。
使用例は以下のとおりです。
timer: 100
引数の数値は待機時間で、10 分の 1 秒単位で指定します。このコマンド例では、タイマに 10 秒が設定されています。goto コマンドの使用例も参照してください。
タイマをオフにするには、次のコマンドを使用します。
timer: 0
title
ターミナル・アプリケーション・ウィンドウのタイトルを指定された文字列に設定します。使用例は以下のとおりです。
title: This is my window
タイトルの設定は、拡張エミュレータ・コマンドを使用してリモートで実行することもできます。
wait for
スクリプト・ファイルとホストから受信したデータを同期化します。使用例は以下のとおりです。
wait for: USER>
この例では、USER> と完全に一致する文字列が到着するまで、スクリプト・ファイルが待機することになります (永久に待機する可能性もあります)。この特別なシーケンスは、USER ネームスペースにあるときのターミナル・アプリケーションからの既定のプロンプトです。つまり、このコマンドは、ターミナル・アプリケーションが次の入力を受け入れ可能になるまで待機する場合に使用できます。
timer を使用することで wait for コマンドを終了できます。対象のテキストが到着しない場合、またはそのテキストが時間計測や大文字/小文字の不一致が原因で見つからない場合は、timer が wait for に割り込みスクリプトの実行を継続する唯一の方法です。timer を使用する際は、そのタイマが時間切れになった場合にフローを受け取るラベルを指定できます ("on error" を参照してください)。wait for で検索対象のテキストが見つかった場合は、タイマが強制終了されて、on error によって設定されたラベルがクリアされます。使用例は以下のとおりです。
echo: off
on error: $Failed Login
timer: 50
wait for: Name:
send: <p1><CR>
wait for: Password:
send: <p2><CR>
wait for: <NL>$
echo: on
Notify: Login is complete
display: <CSI>H<CSI>J
send: <CR>
goto $Process
$Failed Login:
echo: on
notify: Login failed.
exit
$Process:
;processing begins
このコマンド例は、最初の 2 つのスクリプト・パラメータで指定された名前とパスワードを使用するログイン・シーケンスを非表示にします。ログインに成功すると、指定されたラベルの箇所で処理が開始されます。失敗の場合は、ログインに失敗したことを示すダイアログ・ボックスが表示され、[OK] を選択すると終了します。
wait for コマンドでテキストの大文字と小文字が区別されるかどうかは、case match コマンドの使用状況によって異なります。