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:

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

ローカルのターミナル接続を実行しているプロセス内の環境変数は、以下のように使用できます。

  • Windows Vista より前は、Caché プロセスは、Windows にログインするユーザとして実行され、ターミナル・プログラム (cterm.exe) を実行していました。

    この場合、すべての環境変数および共有ドライブ文字の指定は、ユーザによって定義されます。

  • Windows Vista 以降 (これには、Windows Vista、Windows Server 2008、Windows 7、および Windows の想定される後続リリースすべてが含まれます)、ターミナル接続を処理する Caché プロセスは、Caché コントロール・サービスを実行するユーザ・アカウントのコンテキストで実行されます。

    この場合、ユーザ環境変数および共有ドライブ文字の指定は、Caché コントロール・サービスを実行するユーザ・アカウントによって定義されます。

スクリプトの実行の開始

通常、スクリプト・ファイル (既定の拡張子は .scr) は作業ディレクトリにありますが、任意の場所に配置可能です。

スクリプトを実行するには、[ファイル]→[スクリプト] を選択するか、Alt-S を押します。Windows の標準的なファイル検索ボックスが表示され、そこでスクリプトを選択します。

コマンド行の引数としてスクリプトが指定されている場合は、コマンド・モードをロックしているスイッチがなければスクリプトが直ちに開始され、スイッチがあればホスト接続が確立されるまで開始が延期されます。

Note:

通信オプションをシングル・モードに編集することは、ターミナルをシングル・オプションにロックすることと同じです。したがって、スクリプト・ファイルの起動はホスト接続の確立後まで延期されます。

スクリプトの実行の一時停止

スクリプトの実行を一時停止するには、[ファイル]→[一時停止] を選択するか、Alt-P を押します。現在のスクリプトを一時停止することを確認するプロンプトが表示されます。

スクリプトの実行の停止

スクリプトを停止するには、[ファイル]→[スクリプト] を選択するか、Alt-S を押します。現在のスクリプトを停止することを確認するプロンプトが表示されます。

スクリプト・ファイルのコンテンツ

スクリプトは 1 行指向で、行継続の表記規則がありません。各行は他の行から完全に分離されています。セミコロンで始まる行はコメントと見なされます。読みやすさを向上させるために空白行を自由に使用できます。通常、無効な行は無視されます。スクリプト・コマンドは、スペースおよび/またはタブの後に続けます。

スクリプト・コマンドを含む行の形式は以下のとおりです。引数は文字列または数値と解釈されます。

ScriptCommand: ScriptArguments

ここで、ScriptCommand は、ターミナル・スクリプト・コマンドの 1 つで、ScriptArguments は、そのコマンドの引数リストです (具体的なコマンドの詳細を参照)。スクリプト・コマンドが 2 つ以上の単語で構成されている場合は、コマンドの各語間を 1 つのスペースで区切る必要があります。また、コマンドとコロンの間にはスペースを入れません。

引数のないコマンドを以下に示します。

ScriptCommand

制御の移動箇所の定義には、ラベルを使用できます。ラベルはドル記号 ($) で始まり、大文字と小文字が区別されません。ラベルには、スペースを埋め込むことができます。ラベルは、1 行に単独で記述する必要があります。

その他のトピック” の章の “学習モード” のセクションも参照してください。

スクリプト・コマンドの概要

次のテーブルは、使用可能なスクリプト・コマンドの一覧です。

ターミナル・スクリプト・コマンド
コマンド アクション
break ブレークをサポートする通信デバイスにブレークを送信します。
call script 現在のスクリプトを終了して、他のスクリプトを開始します。
case match "wait for" コマンドの文字列が大文字/小文字まで一致する必要があるかどうかを指定します。
closelog ログ・ファイルを閉じます。
connect ホストに未接続の場合に、ホスト接続を強制します。
debug スクリプトのデバッグを有効化または無効化します。
disconnect ホストに接続されている場合に、接続の切断を強制します。
display ディスプレイにテキストを送信します。
echo 入力文字のエコーのオン/オフを切り替えます。
execute Windows プログラムを実行します。
exit スクリプトを終了します。
goto 制御をスクリプト内の別の場所に移します。
if empty 最後のテスト文字列が空の場合に、制御を移動します。
key_starttime キーの時間計測の開始をシミュレートします。
key_stoptime キーの時間計測の停止をシミュレートします。
key_timer キーの時間計測のオン/オフを切り替えます。
logfile ログ・ファイルを開始します。
multiwait for 通信デバイスからの任意の複数文字列を待機します。
notify ダイアログ・ボックスを表示して、ユーザからの応答を待ちます。
on error タイマが起動された場合の分岐先ラベルを指定します。
pause スクリプトを一時停止します。
return スクリプト・ファイルのサブルーチンから戻ります。
send 通信デバイスにテキストを送信します。
subroutine スクリプト・ファイル内のサブルーチンを呼び出します。
terminate エミュレータを完全に終了します。
test テスト対象の文字列を構築します。
timer "wait for" コマンド用のタイマを制御します。
title ウィンドウ・タイトルを設定します。
wait for 通信デバイスからの特定の文字列を待機します。

これらのコマンドのリファレンス情報は、後述の “スクリプト・コマンドのリファレンス” を参照してください。

スクリプト・コマンドの引数

引数の前後のスペースおよびタブは、すべて無視されます。

数値引数は、すべて整数値です。必須の数値引数が指定されていない場合は、既定で 0 になります。また、OFF は 0 と同等で、ON は 1 と同等です。

文字列は、コマンドの後に続く行上の個々のデータを連結したものにすぎません (先頭と末尾の空白は除く)。引用符は必要ありません。また、次のコマンド行を使用することで、パラメータ置換が実行されます。

<P1>, <P2>, ..., <Pn>

これで、<Pn> が、n 番目のコマンド行パラメータに置換されます。

操作を簡略化するために、特定の ASCII 文字には、この後のテーブルに示す同等のショートカット表記が用意されています。

Note:

NUL (000) 以外のすべての ASCII (拡張) 文字は、<ddd> によって生成できます。ddd はその文字を表す 10 進数値です。

特殊文字
文字 解釈 送信シーケンス
<CR> キャリッジ・リターン <13>
<F10> F10 キー <27>[21-
<F7> F7 キー <27>[18-
<DO> Do キー <27>[29-
<TAB> Tab キー <9>
<LF> 改行 <10>
<ESC> Esc キー <27>
<DCS> デバイス制御文字列の接頭部 <144>
<ST> デバイス制御文字列の終了 <156>
<EMU> 拡張エミュレータ・コマンドの開始 <144>i
<NL> 新規行 <CR><LF>
<CSI> 制御文字列の接頭部 <155>

スクリプト例

以下は、ターミナル・スクリプトのサンプルです。

; initialization -- turn match off to make comparisons more lenient
case match: off

; wait for the terminal to initialize and ask for our identification
echo: off
wait for:Username
send: SYS<CR>
wait for:Password
send: XXX<CR>
title: Terminal Example
echo: on

; log everything in a log
logfile: C:\TermExample.log
; wait a second
pause:10

; display a header to let the user know we are ready
; you need <CR><LF> because "display" does not 
; have a prompt to advance to another line
display:<CR><LF>
display:------------------------------<CR><LF>
display:<<< Terminal Example >>><CR><LF>
display:------------------------------<CR><LF>
; wait a second
pause:10

; switch to the USER namespace
send: znspace "USER"<CR>
wait for:USER>

; display some basic information about the system
; Use the debugging routine to do so
send: Do ^%STACK<CR>
wait for: action:

; have it outline our options
send: ?<CR>
wait for: action:

; wait 5 seconds for user to absorb
pause: 50

; ask for the basic process info
send: *s
pause: 50
send: <CR>
wait for: action:

; wait another 10 seconds
pause: 100

; finish the session
send: <CR>

; close the log file
closelog

; finished
terminate

FeedbackOpens in a new tab