Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

スクリプト・コマンドのリファレンス

この章では、ターミナル・スクリプト・コマンドのリファレンス情報を示します。

Note:

ターミナル・スクリプトが役立つ場合もありますが、通常はルーチンを作成して使用する方が (各ルーチン・プログラミング言語が非常に豊富なオプション・セットを提供しているので) はるかに簡単です。

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
Note:

プログラムが実際に開始されたかどうかを確認するテストは実行されず、その完了も待機されません。

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 つのみです。

Note:

時間計測をスクリプト・ファイルから排他的に起動するには、<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;*
Note:

このメッセージ・ボックスはモーダルであるため、他のユーザが割り込むことはできません。

on error

タイマが時間切れになった場合 (通常はテキストの到着を待っている最中) に実行される暗黙の goto のターゲット・ラベルを設定します。厳密な正確さを確保するには、このコマンドは timer の使用前に使用する必要がありますが、実際にはこの順序は重要ではないことがあります。

例は、"wait for"、"exit"、"goto"、および "subroutine" を参照してください。

また、"timer" コマンドも参照してください。

pause

実行中のスクリプトを一時停止します。停止時間は 10 分の 1 秒単位で指定します。使用例は以下のとおりです。

    pause: 30

このコマンド例では、スクリプトの実行が 3 秒間停止されます。引数が 0 の場合は永久停止となります。永久停止から再開するには、Alt-P を使用します。

return

subroutine コマンドと共に使用して、スクリプト内でそのサブルーチンを呼び出した箇所に戻ります。使用例は、subroutine コマンドを参照してください。

send

現在接続中のホストに送信する入力データ (Caché 構文など) をシミュレートします。使用例は以下のとおりです。

    send: zn "DOCBOOK" <CR>

この行はネームスペースを DOCBOOK に変更します。send コマンドはキャリッジ・リターンを暗黙的に追加しないため、末尾の <CR> が必要です。

もう 1 つの使用例は以下のとおりです。

    send:   1<cr>2<cr>A1234<F10><32>

このコマンドは、以下の順で入力したことと同等です。

  • 文字の 1

  • キャリッジ・リターン・キー

  • 文字の 2

  • キャリッジ・リターン・キー

  • A1234 という文字列

  • F10 キー

  • 1 つの空白文字

<32> は先頭または末尾のスペースを送信する唯一の方法であることに注意してください。普通に入力した場合、これらの文字はコマンド・インタープリタによって削除されます。

Important:

wait for コマンドを各 send コマンドの後ろに組み込むことをお勧めします。wait for コマンドにより、スクリプト内のコマンドをターミナルからの入力と後で同期させることができます。 ターミナル・スクリプト・メカニズムは、wait for コマンドを検出した場合を除き、Caché から返される入力に関係なく、コマンドを順次送信します。

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
Note:

サブルーチン・スタックは 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

timer の使用例は、"wait for" を参照してください。

title

ターミナル・ウィンドウのタイトルを指定された文字列に設定します。使用例は以下のとおりです。

    title: This is my window

タイトルの設定は、拡張エミュレータ・コマンドを使用してリモートで実行することもできます。

wait for

スクリプト・ファイルとホストから受信したデータを同期化します。使用例は以下のとおりです。

    wait for:  USER>

この例では、USER> と完全に一致する文字列が到着するまで、スクリプト・ファイルが待機することになります (永久に待機する可能性もあります)。この特別なシーケンスは、USER ネームスペースにあるときのターミナルからの既定のプロンプトです。つまり、このコマンドは、ターミナルが次の入力を受け入れ可能になるまで待機する場合に使用できます。

timer を使用することで wait for コマンドを終了できます。対象のテキストが到着しない場合、またはそのテキストが時間計測や大文字/小文字の不一致が原因で見つからない場合は、timerwait 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 コマンドの使用状況によって異なります。

FeedbackOpens in a new tab