CHAPTER 7: 実行インタフェース


7.1 はじめに

Empressは、SQLインターフェースのDDL、DMLおよびDCLコマンドを 扱うための1セットのコマンドを提供します。 利用可能な実行インターフェースコマンドの要約を以下に示します。

Table 7-1: 実行インタフェースコマンド

コマンド 概要
CHANGE WORD コマンドへの迅速でシンプルな変更を許可します。
DATABASE 現在のデータベースを表示します。また新しいデータベース名を後ろに指定した 場合、Empressを終了することなく、カレントのデータベースを変更できます。
DO Empressを終了することなく、オペレーティングシステムと通信し、 エディタなどのシステムユティリティを使用します。
EDIT コマンドの変更をするための簡単なラインエディタです。
EXIT Empress SQLセッションを終了します。
HELP 現在のインターフェースを使用し、利用可能なSQL言語のオンライン参照要約を 提供します。
HOLD コマンド実行せず、構文エラー、テーブル名/属性名エラーなどチェックし コマンドの構文解析を行います。ヒストリーリストから、前のコマンドを使用して 現行コマンドを作成します。
RECALL コマンドヒストリーリストを調べて、前出のコマンドを表示します。
RUN 再度タイプする必要なしに、ヒストリーリストからの前出のコマンドを再実行 します。ファイル名が後続するRUNは、頻繁に用いられているような コマンドを指定したファイルに格納し、コマンドを実行します。
RUN REPORT リポートスクリプト上で、Emprssリポートライターを起動します。
SET 変数をセットするのに使用します。特別な変数は、作業環境をカスタマイズします。
SHOW 変数値を表示します。
STORE ヒストリーリストのコマンドを、ファイルへ保存します。
UNSET 変数を削除します。


7.2 CHANGE WORD

The CHANGE WORDコマンドを使用し、与えられたコマンドの1文字または 文字列を変更します。それは簡単な変更では、ラインエディタの代用として使用すれば 非常に便利な機能です。 このコマンドは、指定コマンドの即時実行または端末上での表示を簡単に行なえます。

Syntax

CHANGE [number] [ALL] word [TO] newword [RUN];

説明

number RECALL ALLコマンドで表示される、ヒストリーリスト中のコマンド番号。
word コマンド中の単語または句。
newword 新しい単語または句。

注意

  1. これは、現在のコマンド中、またはコマンド番号中の最初に発見される wordを、newwordに変更します。

  2. ALLを指定された場合、コマンド中の全てのwordを変更します。

  3. RUNが指定された場合、コマンドは即座に実行されます。指定されない 場合には表示されるだけです。

必要な特権

なし

  1. 最初に発見された文字列を変更します。

    最初にnameフィールドにJonesを条件にし検索し、次にMoscaを条件にして検索 します。

       SELECT * FROM loans WHERE name = 'Jones';
    
       CHANGE Jones TO Mosca;
       SELECT * FROM loans WHERE name = 'Mosca';
    
       RUN;
    
    

    単一文字列の場合、キーワードでない限り引用符で囲む必要はありません。

  2. 発見された全ての文字列を変更します。

    現在までの操作において、5番目のコマンドの100を全て200に 変更し、即時に実行します。

       CHANGE 5 ALL 100 TO 200 RUN;
    
    


7.3 DATABASE

DATABASEコマンドは、カレントデータベース名の表示、またはカレント データベースを指定されたデータベースに変更します。

Syntax

|DATABASE
|DB
| [database] [
|
|INTO| file];
|ONTO|

注意

  1. DATABASEDBと同義語です。

  2. databaseは、絶対パスか、明示的なファイル指定でなくてはなり ません。どちらの場合でも引用符で囲む必要があります。

  3. databaseを指定しない場合には、カレントのデータベース名が 表示されます。データベースを指定すると、カレントは指定されたデータベースとなり ます。

  4. 他のデータベースをアクセスするために、データベースを変更する必要はありま せん。カレント以外のデータベースにあるテーブルをアクセスする場合には、 テーブル名の前にデータベース名:を指定します。データベース名:テーブル名

  5. INTO fileまたはONTO fileを指定した場合には、 処理結果は端末上からファイルへ転送されます。INTOを指定した場合は、 既存ファイルを上書き、ONTOを指定した場合は、既存ファイルに追記します。 それぞれ既存ファイルがない場合には作成します。

必要な特権

なし

/usr/joe配下に作成されたデータベースrepairsの場合。

   DATABASE;

以下を表示します。

   Current Database '/usr/joe/repairs'

同じ位置にaccountsデータベースがある場合に、カレントデータベースを 変更します。

   % empsql repairs

   * DB;
   Current Database 'repairs'

   * (execute several commands)

   * DB "/usr/joe/accounts";
   Current Database '/usr/joe/accounts'

   * (carry on working with the new database)



7.4 DO と !

Empressからオペレーティングシステムへのインタフェースには、DO コマンドとエスケープコマンド(!)の2つがあります。

Syntax

Syntax 1:

DO 'os_command { |<newline>
|;
| os_command}';
|

Syntax 2:

   ![os_command {; os_command}];

説明

os_command システムコマンド。

注意

  1. DOコマンドは、Empressを停止することなく1つまたは複数の オペレーティングシステムコマンドを実行できます。

  2. オペレーティングシステムのエスケープ(!)は、入力として1行しか受け入れません。 従って複数のコマンドを実行する場合は、コマンドをセミコロン(;)で区切る必要が あります。

    UNIX環境でコマンドを指定しない場合は、シェル(変数MSSHELLに設定)の モードへ移動します。

必要な特権

なし

  1. 1つのオペレーティングシステムコマンド

    カレントディレクトリにあるファイルを表示します。

       do 'ls';
    
    
  2. 複数のオペレーティングシステムコマンド

    ファイルの表示と日付の表示を行います。

       do 'ls
          date';
    
    
  3. オペレーティングシステムのエスケープを使用して、1つのシステムコマンドを実行します。

    カレントディレクトリにあるファイルを表示します。

       !ls
    
    
  4. オペレーティングシステムのエスケープを使用して、複数のシステムコマンドを実行します。

    ファイルの表示と日付の表示を行います。

       !ls; date
    
    
  5. オペレーティングシステムへエスケープしてファイルを編集します。

    オペレーティングシステムへエスケープしてファイルを編集します。

       * !ed printlist
       62
       .
       .
       .
       .
       .
       w 
       73
    
       * 
    
    


7.5 EDIT

EmpressはユーザにEDITコマンドを使用して、ヒストリーリスト からSQLコマンドを編集することを許します。

Syntax

EDIT [number] [run_command];

説明

number ヒストリーリスト中にある編集するコマンドの番号。
run_command 有効なRUNコマンド。RUNの章で解説されます。

注意

  1. 番号を指定しない場合、入力した最終コマンドが編集されます。ヒストリーリスト のコマンド番号は、RECALL ALLコマンドによって参照できます。

  2. RUNが指定されている場合には、編集後に直ちに実行されます。指定 されていない場合には表示するだけです。

  3. 編集中でも、編集コマンドまたは命令は発行できます。編集命令は1行中での変更 に使用されますが、編集コマンドは全てのコマンド行の処理に使用されます。 リターンキーを押すごとにコマンドの各行とデータが交互に表示されます。行に 非プリント文字がある場合には、その文字は2度表示されます。1回目は文字が表示 され、2回目以降はアッドマーク(@)によって置き換えられます。

  4. 各編集コマンドはピリオド(.)から始まり、<Return>を押すことにより終了 されます。編集セッションは、編集コマンドのない最後のライン上で<Return>を 押すか指示を編集することにより終了されます。

    Table 7-2: 編集コマンド

    コマンド 説明
    .^ 前の行に移動します。
    .d 全ての行を表示します。
    .j 現在の行と次の行を結合して、1行にします。
    .u 全ての変更を取り消して、元の状態から編集を開始します。
    .x 現在の行を削除して、次の行を表示する。最終行の場合、前の行を表示する。

  5. 編集指示は、現在の行をどのように変更するのかを制御します。この命令は、 通常文字、ポジショニング文字、特殊文字から構成せれます。

    通常文字は、表示行のその位置にある文字を置き換えます。表示行の末尾以降に 置かれた編集行の文字は表示行に追加されます。

    ポジショニング文字(スペース、バックスペース、タブ)は、カーソルを希望の 位置へ移動するのに使用します。タブ文字を入力した後に、バックスペースを押すと タブ文字を入力した位置まで戻ることに注意してください。

    特殊文字は以下に示します。

    Table 7-3: 編集の指示

    指示 説明
    # その位置にある文字を削除します。
    % その位置にある文字をスペースに置き換えます。
    ^ その位置にある文字の前に文字を挿入します。
    $ その位置にある文字から後ろを削除し、$記号の後に入力した文字で 置き換えます。

    新しい行を挿入したい場合は、バックスラッシュ(\)を編集行で挿入します。 よって以下に示す編集を行なうことにより、1行を2行に分割したり、表示行の真中に 新しい行を挿入できます。

        ^ \ <Return>
    

    コマンドの全行を編集したら、全行が再表示されます。RUNを入力して コマンドを実行する前に、コマンドをチェックしてください。

  6. バックスペース、エスケープシーケンス、その他の制御文字などの非表示文字が、 不注意でテキストに入力される場合があります。これはクエリー言語では無効な文字で あり、Empressデータの入力として許可されません。 入力された場合、通常は端末に表示されないので、見つけることも削除することも困難 となります。

    SQLインターフェースコマンドの入力時に、非表示文字が入力されると、 キャラクターが不適切である旨のメッセージが表示されます。 対話型インターフェースを使用して、データの挿入または更新を実行している 場合に、これらの文字が入力されると変換エラーが発生し、ラインエディタが起動され ます。

    Empressラインエディタは、これらの文字を表示する機能を備えています。 これは、テキスト行での文字位置を示し、削除または変更を実行します。コマンドを 行単位で編集する場合、非表示文字は2回表示されます。 1回目は非表示文字が表示され、2回目はこの文字の変わりにアッドマーク(@)が表示 されます。以下に1回目に表示される、非表示文字を示します。

    Table 7-4: 非表示文字

    表示文字 文字
    {bs} <Backspace>
    {esc} <Escape>
    {^c} <Ctrl+C> (Cは適当な文字)
    {tab} <Tab>

    非表示文字は、#記号により削除するか、必要に応じて他の文字に変更できます。

    データまたはコマンドにおいてタブは無効とされます。しかしラインエディタ 使用時には{tab}として表示されます。

  7. 編集できないコマンドがいくつかあります。一般的にこれらは編集する意味が ありません。それらのコマンドを以下に示します。

    • CHANGE
    • HOLD
    • RECALL
    • RUN

    これらのコマンドを編集しようとした場合、その前のコマンドが編集対象とされ ます。他のコマンド、DO!RUN FROMを含めて編集が 可能です。

必要な特権

なし

  1. 編集例

    クエリー言語の構文エラーを修正する、いくつかの例を示します。

    • 文字の削除
         SELECT aamount FROM loans;
                #
      
         SELECT amount FROM loans;
      
      
    • 文字をスペースに置き換え
         SELECT aamount from loans;
                %
      
         SELECT  amount FROM loans;
      
      
    • 文字の挿入
         SELECT amount FROM loans;
                ^name,
      
         SELECT name, amount FROM loans;
      
      
    • 行の後ろを削除
         SELECT name, amount FROM loans WHERE name = 'Mosca';
                                        $
      
         SELECT name, amount FROM loans
      
      
    • 文字列の置き換え
         SELECT name, amount FROM loans;
                date
      
         SELECT date, amount FROM loans;
      
      
    • 編集命令の組み合わせ
         SELECT name, aamount FROM loans;
                      #######^ credit_limit
         
         SELECT name, credit_limit FROM loans;
                                        $personnel;
         
         SELECT name, credit_limit FROM personnel;
                                                 %INTO 'temp';
         
         SELECT name, credit_limit FROM personnel INTO 'temp';
      
      

      どのような場合でも .uの入力により、全ての変更を取り消して、元の 文字列に戻れます。

         SELECT name, credit_limit FROM personnel INTO 'temp';
         .u
         
         SELECT name, aamount FROM loans;
      
      
  2. 複数行に渡るコマンドに編集

    以下に複数行の編集例を示します。例ではJonesの$100.00を越すローンを表示 します。

       * SELECT FROM personnel
       . WHEERE amount>$100;
       
       *** syntax error *** error occurs somewhere in:
       select from personnel
       wheere
       
       * EDIT;
       
       SELECT FROM personnel 
       <Return>
       WHEERE amount>$100
          #   <Return>
       WHERE amount>$100;
                        \    <Return>
       AND name = Jones   <Return>
       WHERE amount>$100
                    %      <Return>
       WHERE amount> 100
       <Return>
       AND name = Jones;
                  ^'    <Return>
       AND name = 'Jones;
                        ^'   <Return>
       AND name = 'Jones';
       .^   <Return>
       WHERE amount> 100
       .^   <Return>
       SELECT FROM personnel
                   loans$   <Return>
       SELECT FROM loans
       <Return>
       WHERE amount> 100
       <Return>
       AND name= 'Jones';
       <Return>
       
       SELECT FROM loans
       WHERE amount> 100
       AND name= 'Jones';
       
       * RUN;
    
    
  3. ヒストリーリストのコマンドを編集

    ヒストリーリストの6番目のコマンドを、編集後に直ちに実行します。

       EDIT 6 RUN;
    
    
  4. 非表示文字の編集

    以下のフィールド名に<Ctrl+A>が入力された場合の編集例を示します。

       * SELECT name, amount FROM loans;
    
       *** Invalid Character *** error occurs somewhere in: select na
       SELECT na{^a}me, amount FROM loans;
    
       * EDIT;
       SELECT na@me, amount FROM loans;
                #   <Return>
       SELECT name, amount FROM loans;
       <Return>
    
       * RUN;
    
    


7.6 EXIT

EXITコマンドはEmpress対話型SQLを終了するのに使用します。

Syntax

|EXIT
|STOP
|
|

注意

STOPEXITと同義語です。Empressは終了されます。

必要な特権

なし

対話型SQLを終了します。

   EXIT;

または

   STOP;


7.7 HELP

Empress対話型SQLインタフェースに、オンラインヘルプを提供します。

Syntax

HELP [topic];

説明

topic 表示したい項目。

注意

  1. topicが指定されない場合、利用できる項目の一覧を表示します。

  2. ヘルプファイルの追加、ヘルプファイルディクショナリーの変更については、 Empress: Database Administrator's Guide を参照してください。

必要な特権

なし

DATABASEに関するヘルプを表示したい場合には、以下のコマンドを 使用します。

   HELP DATABASE;

以下の表示を行ないます。

   ________________________Database________________________
   
   This command prints the name of the current database or changes 
   to a new database.

   Syntax
|DATABASE
|DB
| [database] [
|
|INTO| file];
|ONTO|
   The keyword "DATABASE" alone prints the name of the 
   current database. It may be shortened to "DB". Specifying
   another database name makes DATABASE the current database.

   The output of a "DATABASE" command may be diverted from
   the terminal into a new file or appended to an existing file by 
   specifying "INTO" or "ONTO", respectively, 
   and a filename.

   For further information, enter:

      HELP display;



7.8 HOLD

HOLDコマンドは、前のコマンドを現行コマンドとして反映させます。この場合 コマンドは実行されません。よってこのコマンドにより、構文エラーやテーブル名、 フィールド名のエラーがないかチェックできます。

Syntax

HOLD |command
|number
|;
|

説明

command Empress SQLコマンド。
number ヒストリーリスト中のコマンド番号。

注意

コマンド番号はに指定したコマンドが、現行のコマンドになります。 コマンド番号はRECALL ALLコマンドで取得できます。無効なコマンド番号が 指定された場合、以下のメッセージを表示します。

   **** User Error **** Invalid Command

必要な特権

なし

  1. 現行コマンドを作成します。

    ヒストリーリストの5番目のコマンドを、現行のコマンドにします。

       HOLD 5;
    
    
  2. コマンドの構文チェックを行います。

    SELECTコマンドの構文チェックを行います。

       HOLD SLECT FROM loans;
    
    

    この場合、SELECTコマンドの最初のEがないので構文エラーと なります。ここでコマンドを編集し訂正できます。



7.9 RECALL

RECALLコマンドは、Empressコマンドヒストリーリストを調べる ために使用します。

Syntax

|RECALL
|RC
| [
|
|ALL
|number
|string
|] [
|
|
|INTO| file];
|ONTO|

説明

number ヒストリーリスト中のコマンド番号。
string 引用符で囲まれた文字列。

注意

  1. RCRECALLと同義語です。

  2. RECALLのみ指定した場合、一つ前に入力した文字を呼び出します。

  3. ALLキーワードを指定すると、ヒストリーリスト中の全てのコマンドを 検索します。

  4. numberを指定した場合には、ヒストリーリスト上の該当番号の コマンドを表示します。numberが負の値ではヒストリーリストの 最後尾を基点とし、逆方向に数えて該当するコマンドを表示します。一つ前に実行した コマンドを表示させるには、RECALL -1と指定します。

  5. 文字列を指定した場合には、ヒストリーリスト中で指定された文字列を含んでいる 全てのコマンドを表示します。ヒストリーリスト中に記憶されるコマンド数は、 Empressシステム変数MSQLCMDSAVEに設定できます。この値の初期値は 50です。この値を20に変更したい場合には以下のコマンドを使用します。

       SET MSQLCMDSAVE TO 20;
    
    

    この値を変更しても、何か新しいコマンドを実行しないとヒストリーリストは変更 されないことに注意してください。

  6. ヒストリーリストに追加されないコマンドは、RECALLコマンドで表示 できません。追加されないコマンドは、CHANGEEDITHOLDRECALLSTORERUNSTART です。

必要な特権

なし

MSQLCMDSAVE変数が5に設定されている場合、RECALL ALLを 実行すると以下のような表示が行なわれます。

   * RECALL ALL; 
      8 DISPLAY DB;
      9 SELECT * FROM loans;
     10 UPDATE loans
        SET date TO '28 jun 1990'
        WHERE date = '27 jun 1990';
     11 SELECT * FROM loans WHERE date MATCH "*jun*";
     12 !date

ここでいくつかのRECALLコマンドを実行します。

   * RECALL;
     !date

   * RC 9;
     SELECT * FROM loans;

   * RC -2;
     UPDATE loans
     SET date to '28 jun 1990'
     WHERE date = '27 jun 1990';

   * RC 'loans';
      9 SELECT * FROM loans;
     10 UPDATE loans
        SET date TO '28 jun 1990'
        WHERE date = '27 jun 1990';
     11 SELECT * FROM loans WHERE date MATCH "*jun*";



7.10 RUN

RUNコマンドはEmpressヒストリーリスト中のコマンドまたは、 オペレーティングシステムファイル中のコマンドを実行します。

Syntax

Syntax 1:

|RUN
|START
| [number] [
|
|INTO| file] [
|ONTO|
|SET parameter {, parameter}
|(parameter {, parameter})
|];
|

Sytax 2:

|RUN
|START
| [FROM] file [
|
|INTO| file] [
|ONTO|
|SET parameter {, parameter}
|(parameter {, parameter})
|];
|

説明

number ヒストリーリスト中のコマンド番号。
file ファイル名。
parameter Empress数値変数への値。

注意

  1. [FROM] fileを使用すると、クエリーを収録している オペレーティングシステムファイルを読み込み、コマンドを実行します。 [FROM] fileを使用しない場合には、コマンド番号を実行します。

  2. 番号は、ヒストリーリストにあるコマンド番号です。コマンド番号は、 RECALL ALLコマンドで表示されます。番号の指定がない場合には、最後に コマンドが表示されます。

  3. INTO fileまたはONTO fileが指定されると、 出力はファイルへ転送されます。INTOは既存ファイルを上書きし、 ONTOは既存ファイルに追記します。それぞれ、ファイルがない場合には作成 します。

  4. parametersは、Empress数値変数の値です。指定した 場合、コマンドの第一引数に最初のパラメータがわたされ、指定に応じて第二引数に 2番目のパラメータがわたされます。(詳細は SETを参照してください。)

  5. SETコマンドが収録されているファイルを実行すると、Empressの 環境は変更されます。

必要な特権

なし

  1. ヒストリーリストからコマンドを実行します。

    ヒストリーリストの9番を実行します。

       RUN 9;
    
    
  2. 前のコマンドを再実行します。

    SELECTコマンドを実行した場合。

       SELECT number FROM loans WHERE name = 'Jones';
    
    

    コマンドを即座に再実行する場合には、以下のコマンドを実行します。

       RUN;
    
    
  3. 編集後のコマンドを実行します。

    RUNコマンドは、編集されたコマンドも実行できます。

       * SELCT amount FROM loans WHERE name = 'Peterson';
    
       *** syntax error *** error occurs somewhere in:
       selct
    
       * EDIT;
    
       SELCT amount FROM loans WHERE name = 'Peterson';
          ^e
       SELECT amount FROM loans WHERE name = 'Peterson';
    
       * RUN;
    
       amount
    
       $50.00
    
    
  4. ファイル中のコマンドを実行します。

    以下の2つのコマンドを収録した、showlistというファイルを作成します。

       SELECT date, amount FROM loans
          WHERE name = 'Peterson';
    
       SELECT SUM (amount) FROM loans
          WHERE name = 'Peterson';
    
    

    コマンドを実行します。

       * RUN FROM showlist;
    
       date            amount
    
       June 6, 1983    $50.00
    
       SUM (amount)
       50.00
    
       * INSERT INTO loans (name, date, amount)
            VALUES ('Peterson', '19 Aug 1990', '45');
    
       Number of Records Entered = 1
    
       * RUN FROM 'showlist';
    
       date                amount
    
       June 6, 1990        $50.00
       August 19, 1990     $45.00
    
       SUM (amount)
       95.00
    
       *
    
    
  5. パラメータ付きで、ファイルからコマンドを実行します。

    パラメータを設定し、RUNコマンドで実行させるファイルseeloansに、 以下のようなコマンドを記述します。

       SELECT FROM loans
          WHERE name = '$1' AND amount > '$2';
    
       SELECT SUM (amount) FROM loans
          WHERE name = '$1';
    
    

    コマンドを実行します。

       RUN FROM seeloans SET Jones, 200;
    
    

    ファイル中の$1$2がパラメータにより置き換えられ、 以下のような実行結果を表示します。

       name        date                   amount
    
       Jones       August 12, 1990        $300.00
    
       SUM (amount)
       358.95
    
    


7.11 RUN REPORT

RUN REPORTコマンドは、レポートスクリプトにより。 Empress Report Writerを実行します。 a report script.

Syntax

[ |RUN
|START
|] REPORT [FROM] script [[ON] data_file] [
|
|INTO| file]
|ONTO|

[ |SET parameter {, parameter}
|(parameter {, parameter})
|];
|

説明

script Empress Report Writerスクリプト。
data_file REPORT DUMPフォーマットでのデータファイル。
file ファイル名。
parameter Empress数値変数への値。

注意

  1. Empress Report Writerスクリプトは、SELECT文を使用して、 テーブルからデータを検索するか、あるいはREPORT DUMPフォーマットでの ファイルからデータを読みこみます。

  2. INTO fileまたはONTO fileが指定された場合、 出力はターミナルからファイルに転送されます。INTOは既存にファイルに 上書きし、ONTOは追記します。それぞれともファイルがない場合には 作成します。

  3. SET句はEmpress Report Writerスクリプトによって、要求された すべてのパラメータを渡します。

必要な特権

なし。



7.12 SET と UNSET

SETコマンドは、Empress変数を設定します。

Syntax

SET |
|
|
|
|
|
FROM file
[ALL] [ |INTO
|ONTO
| file]
|
variable [TO] value
value {, value}
|;
|
|
|
|
|
   UNSET variable;

説明

variable Empress変数。
value 1から99の数値。

注意

  1. SETのみを実行した場合、標準以外のシステム変数と初期値が変更されて いるEmpress変数が表示されます。SET ALLを実行すると、全ての変数 が表示されます。

  2. INTOまたはONTOにファイル名を指定した場合、SET コマンドの出力はファイルに転送されます。INTOを指定した場合、 既存ファイルに上書きし、ONTOを指定した場合には既存ファイルに追記 します。それぞれファイルが存在しない場合には作成されます。

  3. FROM fileを指定した場合には、ファイル名に記述された 設定コマンドにより変数を設定します。

  4. 変数は英数字を含んでおり、SET variable TO valueの 書式で設定できます。変数が既に設定されている場合は、値は変更されます。値に ブランク、タブ、ピリオドなどがある場合には、引用符で囲んで指定します。

  5. 1〜99までの数値変数は、SET value{, value}により 順番に設定できます。これらの値はパラメータとして、コマンドファイルへわたすこと が可能です。

  6. SETコマンドが記述されたファイルを、RUN FROM file で実行した場合、Empress環境を変更します。

  7. UNIX環境変数の値を変更しても、UNIX環境にはまったく影響がありません。

  8. SHOWコマンドは変数値を表示し、UNSETコマンドは変数設定を 無効にします。

必要な特権

なし

  1. ファイルからEmpress変数を設定します。

    以下の記述があるmsvarsファイルがあります。

       MSQLCMDSAVE=20
       MSQLSELCOLSEP="|"
       l=loans
       p=personnel
    
    

    以下のコマンドを実行した場合。

       SET FROM msvars;
    
    

    結果として変数MSQLCMDSAVE20、変数MSQLSELCOLSEP|、変数lloans、変数ppersonnelが設定されます。

  2. 英数字変数の設定

    この例は、pと呼ばれる変数をセットし、次にコマンドの中でその値を 使用します。

       SET p TO personnel;
       SELECT FROM $p;
    
    

    以下の結果を表示します。

       number     name          phone             credit_limit
       
       10         Kilroy        426-9681          $500.00
       5          Mosca         426-9681          $750.00
       17         Wladislaw     811-5110           $10.00
       3          Jones         667-2951          $500.00
       8          Peterson      978-6060          $250.00
       4          Scarlatti     961-7363          $100.00
       9          Jordan        964-3335          $250.00
    
    
  3. 変数に頻繁に用いられているコマンドをセットします。

    頻繁に用いられているコマンドも、変数にセットされる場合があります。 例えば、getloans変数にSELECT FROM loans;をセットする場合。

       SET getloans TO "SELECT * FROM loans;";
    
    

    SELECT * FROM loans;のまわりの引用符に注意してください。コマンド中 にスペースが存在するので必要となります。以下のコマンドを実行すると、

       $getloans
    
    

    SELECT * FROM loans;と同一の処理結果が表示されます。

  4. 数値変数の設定

    コマンド

       SET personnel;
    
    

    は、$1personnelを設定します。

       SET personnel;
       SET loans;
    
    

    この場合には、最初に$1personnelを設定し、 次に$1loansを再設定します。

    同様に

       SET loans, personnel;
       SET Jones;
    
    

    これは、$1loansを設定し、$2personnelを設定します。次に$1をJonesに再設定し、 $2を解放します。

    数値変数は英数値変数と同様に、通常のクエリーで使用することができますが、 数値変数の場合は、通常RUNコマンドと併用します。設定されている 数値変数はRUNコマンドの入力時にその設定は解放されますので、変数 をRUNコマンドで使用したい場合には、RUNコマンド上で明示的に 再設定する必要があります。

    2つのコマンド、

       SET personnel;
       SELECT * FROM $1;
    
    

    は、以下の1つのコマンドと同一です。

       SELECT * FROM personnel;
    
    

    また、別のSET valueコマンドを入力しないか、RUNコマンド を入力しない限り、$1personnelの値を引き継ぎます。

    数値変数を有効に使用するには、コマンドファイルを利用した場合の処理を行なう 場合です。以下のコマンドが記述されたファイルをjnsloansとした場合、

       SELECT * FROM loans
          WHERE name = 'Jones' AND amount > 200;
    
    

    Jonesの未返済のローン残高を参照したい場合には、次のコマンドを指定します。

       RUN FROM 'jnsloans';
    
    

    この方法は簡単で役立ちますが、反面制限が発生します。6人分の参照を行なう場合 には、ファイルを6つ用意する必要があります。

    さらに、以下のコマンドが記述されたhndloansというファイルについて 考察してみてください。

       SELECT * FROM loans
          WHERE name = '$1' AND amount RANGE $2 TO $3;
    
    

    この記述中の$1,$2,$3はパラメータです。パラメータ を使用するコマンドファイルには、必ずわたす必要があります。

       RUN FROM 'fndloans' SET Jones, 200, 5000;
    
    

    これで$1Jonesに、$2200$35000に置き換えられてコマンドが実行されます。

    Kilroyの小額のローンを参照するには、次のコマンドを使用します。

       RUN FROM "fndloans" SET Kilroy, 0, 200;
    
    

    このようにコマンドファイルに数値変数を使用した場合、詳細に記述したコマンド よりも適用範囲が広がります。



7.13 SHOW

SHOWコマンドは、設定されている変数の値を表示します。

Syntax

SHOW variable {, variable};

説明

variable Empress変数。

注意

このコマンドは、任意のEmpressシステム変数、およびSET コマンドを使用して設定した任意の変数を表示します。変数が設定されていない場合 には、何も表示されません。

必要な特権

なし

SHOWコマンドの実行例

   SHOW MSQLPROMPT1, MSQLPROMPT2;

以下の表示を行います。

   MSQLPROMPT1=*
   MSQLPROMPT2=.



7.14 STORE

ヒストリーリスト内にある、Empressコマンドは、STOREコマンド によりシステムファイルへ保存できます。

Syntax

STORE [number] [ |INTO|] file;
|ONTO|

説明

number ヒストリーリスト中のコマンド番号。

注意

  1. 番号が指定されない場合、最後のコマンドが保存されます。コマンド番号は RECALL ALLコマンドにより取得できます。

  2. ファイルに保存する場合INTOまたONTOが指定されない場合は、 INTOが適用されます。INTOは指定ファイル名を上書きし、 ONTOは追記します。それぞれファイルがない場合には作成します。

ヒストリーリストに、以下のコマンドが保存されている場合。

   * RECALL ALL;
      8 DISPLAY DB;
      9 SELECT * FROM loans;
     10 UPDATE loans
        SET date TO '28 jun 1990'
        WHERE date = '27 jun 1990';
     11 SELECT * FROM loans WHERE date MATCH "*jun*";
     12 !date

以下のコマンドは、ヒストリーリスト内のSELECT * FROM loans;コマンド をloans_fileファイルに保存します。

   STORE 9 INTO loans_file;