ターミナルの概要
ターミナルは、Caché コマンドを入力したり現在値を表示したりするためのシンプルなコマンド行インタフェースです。これは、学習、開発、およびデバッグのときに有用です。
以下の項目について説明します。
ターミナルに [スパイ・モードがオン] というメッセージが示されたダイアログ・ボックスが表示された場合、これは、Alt-Shift-S が誤って押されたことを意味します。このモードを終了するには、Alt-Shift-S をもう一度押します。このモードは、一般的には使用されないため、ドキュメント化されていません。
さらに、ターミナルが応答しないように見える場合は、Ctrl-S が押されていて、自動スクロールが一時停止されている可能性があります。その場合は、Ctrl-Q を押して再開します。
ターミナル・プロセスを所有するユーザ・アカウント
Caché バージョン 2015.2 以降では、Caché プロセスは Windows にログインし、ターミナル・プログラム (cterm.exe) を実行しているユーザによって所有されています。
Caché バージョン 2015.1 以前の場合 :
-
Windows Vista 以降 (これには、Windows Vista、Windows Server 2008、および Windows 7 が含まれます) では、ターミナル接続を処理する Caché プロセスは Caché コントロール・サービスを実行するユーザ・アカウントによって所有されます。
-
Windows Vista より前のバージョンでは、Caché プロセスは Windows にログインし、ターミナル・プログラム (cterm.exe) を実行しているユーザによって所有されています。
いずれの場合も、すべての環境変数および共有ドライブ文字の指定は、ターミナルを実行しているユーザによって定義されます。
ターミナルの起動
ターミナルをインタラクティブに、またはバッチ・モードで使用できます。
ターミナルをインタラクティブに使用するには、次のいずれかを実行します。
-
ローカル・データベースを使用してターミナルで作業するには、[InterSystems ランチャー] を選択し、次に [ターミナル] を選択します。
-
リモート・サーバ上のデータベースを使用してターミナルで作業するには、[InterSystems ランチャー] を選択し、次に [リモート・システム・アクセス]→[ターミナル] を選択します。次にサーバ名を選択します。
または、[InterSystems ランチャー] を選択し、[リモート・システム・アクセス]→[Telnet] を選択します。ユーザ名とパスワードを使用して Caché システムにログオンします。
詳細および追加のオプションは、"Caché システム管理ガイド" の “リモート・サーバへの接続” の章を参照してください。
いずれの場合でも、ターミナル・ウィンドウが表示されます。このウィンドウに表示されるプロンプトは、現在作業中のネームスペースを示しています。次に例を示します。
USER>
バッチ・モードでは、実行するスクリプト・ファイルの名前をオペレーティング・システムのコマンド行に渡して、そこからターミナルを起動します。このモードは、一部のオペレーティング・システムでは使用できません。
背景
ターミナルは、Caché アプリケーションとのやり取りを目的として設計されています。ターミナルでは、Caché との通信に、ローカルとネットワークという 2 種類の方法が使用されます。タイトル・バーには現在使用されている通信モードが示されます。
-
ローカル通信は、ターミナルが、ターミナルのインストールされている Caché サーバと通信するときに使用されます。この場合は、タイトル・バーに Cache TRM:pid(instancename) と表示されます。
-
ここで、pid は、ターミナルが通信で使用している Caché プロセスのプロセス ID です。
-
instancename は、プロセスが実行されている Caché インスタンスです。
-
-
ネットワーク通信では、TCP/IP を介した TELNET プロトコルを使用して、Windows Caché サーバまたは UNIX® ホストと通信します。この場合は、タイトル・バーに (server NT — Caché Telnet) と表示されます。ここで、server はリモート・サーバのホスト名です。
Caché の通信スタックは Winsock です。Winsock は、Berkeley Software Distribution (BSD) で幅広く使用されているソケット・パラダイムをベースとした、Microsoft Windows 用のネットワーク・プログラミング・インタフェースです。ホスト・エントリの指定には、ローカル・ファイル、IP アドレス、または一般的なホスト名 (Winsock にネーム・サーバへのアクセスが実装されている場合) のいずれかが使用されます。ホスト名の後には、標準以外のポート番号を指定するオプションの #nnn が続く場合があります。
この通信モードから報告されるエラーには、Winsock エラー・コードの名前が使用されます。例えば、WSAECONNREFUSED は、接続が拒否されたことを意味します。
一般的な使用
ターミナルでは、あらゆる ObjectScript コマンドを入力できます。次に例を示します。
d ^myroutine
set dirname = "c:\test"
set obj=##class(Test.MyClass).%New()
write obj.Prop1
ターミナルでは、入力した各行の後に Use 0 コマンドが暗黙的に発行されます。これは、その他のデバイスへの直接出力に対して Use コマンドを発行した場合、このコマンドは基本的には無視されることを意味しています。
また、入力バッファのサイズが大きい場合は、Ctrl-C や Ctrl-S などの入力フローの停止を試みるキー操作に遅延が生じることがあります。この遅延はプロセッサと接続速度にも依存します。キーストロークに対応するための特別な処理が、ホスト入力よりも前に実行されています。
ターミナル・スクリプトも実行できます。ターミナル・スクリプトとは、ファイル・システムに存在する拡張子 .scr が付いたファイルです。ターミナルには、これらのスクリプトで使用できる小規模なコマンド・セットが用意されています。このコマンド・セットには、手動でコマンドを入力したかのようにターミナルに Caché コマンドを送信するコマンドなどが含まれます。
ZWELCOME ルーチン
ターミナルが実行を開始すると、コードは、%SYS ネームスペースに ZWELCOME という名前のルーチンが存在するかどうかをチェックします。該当するルーチンが見つかると、ターミナルのログイン・シーケンスがある場合は、その直前にそのルーチンを呼び出します。このルーチンは、その名前が意図するように、カスタムな識別情報やようこそメッセージをユーザに表示する目的で使用されます。
%SYS ネームスペースに ZWELCOME をインストールするには、管理者特権と CACHESYS データベースへの書き込みアクセスが必要です。
ZWELCOME ルーチンは、空の $USERNAME および $ROLES を %ALL に設定して、%SYS ネームスペースで実行されます。使用の際は、ZWELCOME が失敗した場合でも影響が出ないようにする必要があります。また、このルーチンで $ROLES 変数を変更しないでください。
以下はその簡単な例です。
ZWELCOME() PUBLIC ;
; Example
Write !
Set ME = ##class(%SYS.ProcessQuery).%OpenId($JOB)
Write "Now: ", $ZDATETIME($HOROLOG, 3, 1), !
Write "Pid/JobNo: ", ME.Pid, "/", ME.JobNumber, !
Write "Priority: ", ME.Priority, !
Quit
実行開始ネームスペース
ターミナルを開始すると、特定のネームスペースで開きます。このオプションは、ユーザ定義の [開始ネームスペース] オプションで制御されます。"Caché セキュリティ管理ガイド" の “ユーザ” の章を参照してください。
コマンド・プロンプトには、次のような現在のネームスペースが表示されます。
USER>
ネームスペースの変更
新しいネームスペースに変更するには、ZNSPACE コマンド (短い形式は ZN) を使用します。
USER>ZN "SAMPLES"
SAMPLES>
ZNSPACE コマンドの引数は、変更後のネームスペースの名前を表す単一の文字列です。無効なネームスペース名を入力すると、ZNSPACE は <NAMESPACE> エラーを返します。詳細は、"Caché ObjectScript リファレンス" の "ZNSPACE" のリファレンス・ページを参照してください。
ターミナル・プロンプト
前述のように、ターミナル・プロンプトは、現在使用中のネームスペースを示しています。トランザクション・レベルまたはプログラム・スタック・レベルを示すために、プロンプトには詳細情報が表示される場合があります。
トランザクション・レベル
トランザクション内で作業している場合、トランザクション・レベルを示すために、プロンプトに接頭語が付加されます。接頭語の形式は TLn: です。ここで、n はトランザクション・レベルです。例えば、User ネームスペース内で作業している場合に、ObjectScript コマンド TSTART を入力すると、プロンプトは以下のように変更されます。
USER>tstart
TL1:USER>
ターミナルを終了すると、これによりトランザクションがロールバックされます。
プログラム・スタック・レベル
エラーが発生すると、プログラム・スタック・レベルを示すために、プロンプトに接尾辞が追加されます。次に例を示します。
USER 5d3>
Quit コマンドを入力して、デバッグ・プロンプトを終了します。または、エラーをデバッグします。"Caché ObjectScript の使用法" の “コマンド行ルーチンのデバッグ” の章を参照してください。
TSQL シェル
TSQL シェルにアクセスするには、DO $SYSTEM.SQL.TSQLShell() と入力して、Enter キーを押します。プロンプトは、以下のように文字列 :TSQL と共に表示されます。
USER>DO $SYSTEM.SQL.TSQLShell()
Current settings :-
No current settings
Compiler is NEW
USER:TSQL>
TSQL シェルを終了するには、^ コマンドを入力します。
TSQL シェルの詳細は、"Caché Transact-SQL (TSQL) 移行ガイド" を参照してください。
MV シェル
MV シェルにアクセスするには、MV と入力して、Enter キーを押します。プロンプトは、以下のように、末尾に右山括弧 (>) ではなく、コロン (:) が付いて表示されます。
USER>MV
USER:
MV シェルが初期化されていないと、このプロンプトの前にメッセージが表示される場合があります。
MV シェルを終了するには、Quit コマンドを入力します。
MV シェルの詳細は、"Caché の MultiValue 機能の使用" のドキュメントの “MultiValue の開始” の章を参照してください。
MV シェル内から別の MV シェルを開かないでください。
オペレーティング・システム・シェル
ターミナルでは、さまざまなオペレーティング・システム・シェルを開くこともできます。シェルを開くには、! と入力して、Enter キーを押します。すると、ターミナルで、既定のオペレーティング・システム・シェルが開き、プロンプトに作業ディレクトリが表示されます。次に例を示します。
USER>!
c:\intersystems\cache\mgr\user\>
Macintosh では、C シェルをこの方法で開くことはできません。アクセス拒否のエラーが表示されます。ただし、他のシェル (Bash、Bourne、または Korn) は使用できます。
シェルを終了するには、そのシェルに該当する quit コマンドか exit コマンドを使用します。
ターミナルでの実行の中断
ターミナルを中断して、フォアグラウンドのすべての実行内容を停止するには、次のいずれかのキー組み合わせを使用します。
-
Ctrl-C — [Windowsエディットアクセラレータ] オプションが有効になっていない場合に使用します。
-
Ctrl-Shift-C — [Windowsエディットアクセラレータ] オプションが有効になっている場合に使用します。
[Windowsエディットアクセラレータ] オプションの詳細は、“ターミナルの外観および動作の制御” の章の “ユーザ設定” セクションを参照してください。
ターミナルの終了
ターミナルを終了するには、以下のいずれかの操作を実行します。
-
[ファイル]→[終了] を選択します。
-
Alt-F4 を押します。
この操作により、ターミナルの現行のコピーが終了し、開いているすべてのファイルが閉じられて、フォアグラウンドのすべての実行内容が停止されます。
このターミナルが起動時にサーバに接続されていた場合は、通信チャネルが閉じたときに自動的に終了します。
InterSystems ランチャーの [Cache Telnet] を使用してこのターミナルにアクセスした場合、ターミナルは通信チャネルが閉じたときに自動的に終了せず、アクティブ状態のままになるため、[接続] メニューを使用して再接続できます。