CHAPTER 3: Windows バッチインターフェイス


3.1 はじめに

以下の 2 つのコマンドは、 Windows NT コマンドプロンプト上から Empress 問い合わせ言語を実行するために 使用することができます。

  1. 1つのコマンドを実行するための empcmd
  2. コマンドをバッチで実行するための empbatch

バッチインターフェイスを利用することで、 迅速にデータベース管理のプロトタイプパッケージを提供することができます。 これは、既存のコンソールプログラム、C ルーチン、他のシェルプログラムから 単純なコマンドで呼び出すことができ、それにより、 迅速にデータベース管理システムの カスタムインターフェイスの設計および開発が可能となります。



3.2 Windows プロンプトから1つのコマンドの実行

Windows NT コマンドプロンプト上から1つの Empress SQLコマンドを実行するためには empcmdコマンドを使用します。 コマンドの構文は以下のとおりです。

empcmd database "command"

database データベースディレクトリの名前
command 実行するEmpress SQLコマンド

例 1: テーブルからアトリビュート値を検索する

以下のコマンドは、 repairsデータベースのpersonnelテーブルから すべての従業員のリストを得るために実行します。

   empcmd repairs "SELECT name FROM personnel"

このコマンドは、 repairsと呼ばれるデータベースに対し、 Empress SQLコマンド "SELECT name FROM personnel" を実行します。empsqlを呼び出す必要はありません。 コマンドの実行後は、Windows NT コマンドプロンプトに制御を戻します。

上記のempcmdコマンドは、"names.bat"と名付けたバッチファイル に格納し、コマンドプロンプト上から "names"を入力することで 従業員名のリストを出力することも可能です。

例 2: コマンドファイルの引数

"phone.bat"と呼ばれるバッチファイルに記述された 以下のコマンドは、引数に従業員名を指定し、従業員の電話番号を出力します。

   empcmd repairs "select phone from personnel dump
        where name = '%1'"<$Idump keyword>

"dump"キーワードは、 "phone"のヘッダーを出力させないために empcmdコマンドに指示されています。 "Jones"の電話番号を調べるためには、以下のように入力します。

   phone Jones

以下の結果が出力されます。

   667-2951


3.3 WindowsプロンプトからSQLコマンドのバッチの実行

empbatchコマンドは、 オペレーティングシステムから Empress SQLコマンドのバッチ処理を 実行することが可能です。 empatchは以下の構文になります。

empbatch database

database データベースディレクトリ名

empbatchコマンドは対話モードで動作します。 この処理は、プロンプトを出力しないEmpress SQLと同じです。 各問い合わせ言語の終了にセミコロン";"を使用し、 コマンドは複数行、指定することが可能です。 プログラムが構文エラーの場合、終了します。

例として、コマンドプロンプトから以下のように入力した場合、

   empbatch repairs

コマンド入力のためにカーソルは、次の行で待ちます。 直接、コマンドを入力をすると

   SELECT FROM loans WHERE name = "Jones";

以下のように出力されます。

   names   date                amount

   Jones    7 February 1992    $33.95
   Jones    3 April 1992       $25.00
   Jones   12 August 1992     $300.00

<Ctrl+Z>または<F6> キーを押すと、オペレーティングシステムに制御が戻ります。

ファイルからの連続した問い合わせ言語を実行するために、 ファイルからの入力リダイレクションおよび オプションファイルとして指定することで使用することができます。 例えば、システムエディタを使って、以下のように記述された"queries"という ファイルを作成します。

   select from loans where name = "jones";
   select from loans where name = "mosca";

以下を入力し、バッチを実行します。

   empbatch repairs < queries

empbatchコマンドへの入力リダイレクションとして queriesファイルから入力を得ます。