# CHAPTER 8: 対話型インタフェース

## 8.1 はじめに

対話型インタフェースは、データベースオペレーションをEmpressと の対話形式で実行することを可能にします。対話型インターフェースの下で 利用可能なクエリー言語コマンドを以下に示します。

Table 8-1: 対話型クエリー言語コマンド

コマンド | 概要
`ALTER` | レコードをダンプ、再ロードすることなくテーブルの構造を変更します。
`CREATE TABLE` | フィールド名およびデータタイプの入力を促すことにより、対話的にセットアップ しテーブルを構築します。
`INSERT` | 新しいデータをテーブルに入力します。
`UPDATE` | テーブル中の既存データを変更します。

対話型のセッションを制御するために使用されるコマンドの要約は本章の中で示 されます。対話型のインターフェースを起動するために使用されるコマンドも 記述されます。

## 8.2 対話型インタフェースコマンド

対話型インタフェースコマンドは、インターフェース使用時における Empressとの対話処理を制御するために使用します。 この一連のコマンドを入力する際には、コマンドとデータを区別するために、必ず ピリオド(.)を各コマンドの前に指定しなければなりません。`よろしいですか？` のプロンプトが表示される時点では、かならずピリオドが付加されて表示されます。

データ入力時には、インターフェースはデータが必要であればその都度、それに 対する入力要求プロンプトが表示されます。さらにその後で、レコード定義または フィールド定義でとるべき処置に関するプロンプトが表示されます。コマンドの入力後、 インタフェースはその処理操作に応じて、さらにプロンプト表示を続行するか、 あるいはEmpressに制御を戻すかのいずれかの処置をとります。

先行ピリオドがコマンドを示すために使用されているので、ピリオドで入力を開始 する場合には、必ずピリオドを重複して入力しなければなりません(..)。この唯一の 例外は10進数値またはドル値の入力時です。

対話型インタフェースコマンドは、英大文字小文字のいずれを入力しても 構いません。コマンドまたはデータに何も入力せずにリターンキーを押すと、その結果 として、次のフィールドに対する入力要求プロンプトが表示されたり、フィールド定義 に対する入力要求プロンプトが再度表示されたりします。

対話型インタフェースは指定したフィールドに対して、どのような種類の データが要求されているか認識しているため、文字列を引用符で囲む必要はありません。 しかしデータ型と適合しないものを入力するとエラーメッセージを出力します。 `INSERT`または`UPDATE`処理中のエラーでは、自動的に訂正用の ラインエディタが起動されます。`CREATE`や`ALTER`処理中のエラーの 場合には、値を入力しなおすだけで済みます。

`CREATE`と`ALTER TABLE`モードにおいて、フィールドコマンドは フィールド名およびデータタイプに当てはまります。しかし、レコードコマンドは フィールド定義全体に当てはまります。

Table 8-2: 対話型インタフェースのフィールドコマンド

コマンド | ニーモニック名 | 概要
`.^` | Up | 前のフィールドに対する値のプロンプトを表示します。
`.>attr` | Goto* | 指定されたフィールドに対する値のプロンプトを表示します。
`.~` | Null* | フィールド値にNULLをセットします。
`."` | Ditto* | フィールド値に、前のレコードでセットしたフィールド値をセットします。
`.z` | Zap* | フィールド値を変更するために、ラインエディタを起動します。
`.zz` | Zapzap* | フィールド値を変更するために、システムのエディタを起動します。エディタの 終了時にデータが入力されます。エディタの終了直前に割り込みキーを押すと、 入力データは消去されてしまいます。システムエディタは変数`MSEDITOR`で 指定されます。

*がついているコマンドは、`CREATE TABLE`または `ALTER TABLE`コマンドでは使用できません。

Table 8-3: 対話型インターフェースのレコードコマンド

コマンド | ニーモニック名 | 概要
`.d` | Display | 現在のレコード名とその値、あるいはフィールド定義を表示します。
`.e` | Enter | テーブルにフィールド定義を入力し、さらに次のフィールド定義を入力するための プロンプトを表示します。
`.i` | Insert | `ALTER TABLE`コマンドのみに適用します。 `.p`と`.i`は、このコマンドの間、無効となります。
`.n` | Next | 次のフィールド定義に進みます。`INSERT`と`CREATE`モード内で、 `.p`コマンドの後で使用できます。
`.p` | Previous | 前のフィールドの定義入力へ戻ります。データを再入力しない限り、データは 変更されません。
`.r` | Reset | `INSERT`モードの場合は、データ値を`NULL`値に戻し、 `UPDATE`モードでは、元のデータ値に戻します。`CREATE`モードでは、 全てのフィールドをリセットします。
`.x` | Axe | 現在のレコード、またはフィールド定義が削除され、次のフィールドに対する入力 要求を行います。`UPDATE`モードでは、一度に全てのレコードを削除します。
`.u` | Undo | `.x`コマンドを取り消します。`.x`コマンド以外には有効 ではありません。

Table 8-4: インタフェースコマンド

コマンド | ニーモニック名 | 概要
`.q` | Quit | 対話型インタフェースを終了します。`CREATE`モードでは、 テーブルが作成され、`ALTER`モードでは、変更したフィールド定義が保存され ます。`INSERT`、`UPDATE`モードでは、現在入力中のレコードは保存 しません。入力件数、更新件数はEmpressに制御が戻される前に表示されます。
`.$` | Abort | `CREATE`または`ALTER`モードにのみ有効です。 対話型インタフェースを中断します。テーブルの作成、更新は行いません。
`.v` | Verbose* | 簡略表示を冗長表示に切り替えます。初期設定は簡略表示で、フィールド名のみが 表示されますが、冗長表示ではデータ型も表示されます。
`.?` | Help | 使用可能なコマンドの概要を表示します。
`.!cmd` | System | システムコマンドを実行します。

*がついているコマンドは、`CREATE TABLE`または `ALTER TABLE`モードでは使用できません。

## 8.3 対話型ALTERコマンド

対話型ALTERコマンドは、既存のテーブルに対してレコードをダンプ、 再ロードすることなくテーブル構造を変更します。

Syntax

      ALTER table;

注意

1. 指定されたテーブルのフィールドのデータタイプ、データパラメータ、NULL値の 許可または禁止の指定を修正できるように、順番にフィールド情報が表示されます。

2. インタフェースコマンドを使用して、既存のフィールドの前に新しいフィールドを 追加できます。

3. 全てのフィールドについて処理が終了すると、新しいフィールドの入力プロンプト が表示されます。

4. このコマンドでは、フィールド名の変更はできません。

5. 任意の場所で、終了コマンドを実行できます。この場合、それまでに行なった変更 は確定されますが、現在入力中であった場合のフィールド情報は変更されません。

6. 次に示すコマンドは、対話型ALTERコマンドで使用できます。

   Table 8-5: 対話型ALTERのコマンド

   コマンド | 概要
   `.?` | ヘルプを表示します。
   `.!cmd` | 指定されたコマンド（`cmd`）を実行します。
   `.^` | 前のフィールド入力プロンプトへ移動します。
   `.$` | 中止します。テーブルは変更されません。
   `.d` | 入力された情報を表示します。
   `.e` | 入力情報をテーブルに保存し、次のフィールドへの入力要求を表示します。
   `.i` | **現在のフィールドの前に、新しいフィールドを入力します。
   `.n` | *現在のフィールドへの入力をやめ、次のフィールドへ移動します。
   `.p` | **前のフィールドへ戻り、再入力要求します（既に入力されたものは失われません） 。連続して`.p`コマンドは使用できません。
   `.q` | 対話型インタフェースを終了し、Empressへ制御を戻します。 入力されたテーブル情報で変更されます。
   `.r` | 現在のフィールド値をNULLにリセットします。
   `.x` | *現在のフィールドを削除します。

   * `.p`コマンドの後でのみ有効です。
   ** `.p`コマンドの後では 有効ではありません。

例

  `対話型ALTER`コマンドの例を示すために、`loans`テーブルを 変更してみます。`name`フィールドの文字数を25から15に変更し、`name` フィールドの後に、`loan_number`フィールドを、`amount`フィールド の後に`date_due`フィールドを追加します。

         * ALTER loans;

      Name for Attribute #1: number
      Data Type: integer .n
  | このフィールドはスキップします。
      Name for Attribute #2: name
      Data Type: char
      Maximum Number of Characters: 25 15
      Type: 1
      Allow Null Values? y
      Ready. e
  | 長さを変更します。
      Name for Attribute #3: date
      Data Type: date .i
  | dateフィールドの前に新しいフィールドを追加 します。
      Name for Attribute #3: loan_number
      Data Type: integer

      Ready.e
      Name for Attribute #4: date
      Data Type: date .n
  | このフィールドはスキップします。
      Name for Attribute #5: amount
      Data Type: dollar .n
  | このフィールドはスキップします。
      Name for Attribute #6: date_due
      Data Type: date
      Type: 1
      Allow Null Values? y

      Ready .e
  | 次のフィールド追加のためのプロンプト。
      Name for Attribute #6: .q

         * DISPLAY loans;

         *** loans ****

         number             integer
         name               char(15, 1)
         loan_number        integer
         date               date(1)
         amount             dollar 6, 1)
         date_due           date(1)

         * SELECT FROM loans;

         number  name    loan_number  date              amount  due_date

          5      Mosca                 2 February 1990  $150.00
          3      Jones                 7 February 1990   $33.95
         10      Kilroy               16 February 1990  $250.00
         17      Wladislaw            27 February 1990   $55.00
          3      Jones                 3 April 1990      $25.00
          5      Mosca                 4 May 1990       $200.00
         17      Wladislaw            12 May 1990        $25.00
          8      Peterson              6 June 1990       $50.00
         17      Wladislaw            25 June 1990       $75.00
          3      Jones                12 August 1990    $300.00
          4      Scarlatti             9 September 1990 $150.00
          4      Scarlatti            14 October 1990   $125.00

         *

  ここで`UPDATE`コマンドを使用して、新しいフィールド値を設定できます。

## 8.4 対話型CREATEコマンド

対話型CREATEコマンドは、フィールド名やデータタイプを対話式に セットアップし、テーブルを作成します。

Syntax

      CREATE table;

注意

1. 終了しない限りフィールドの入力プロンプトは繰り返されます。入力情報は、 フィールド名、データタイプ、データタイプパラメータ、NULL値の許可などです。

2. 以下に示すコマンドは、対話型CREATEコマンドで使用できます。

   Table 8-6: 対話型CREATEのコマンド

   コマンド | 概要
   `.?` | ヘルプを表示します。
   `.!cmd` | 指定されたコマンド（`cmd`）を実行します。
   `.^` | 前のフィールド入力プロンプトへ移動します。
   `.$` | 中止します。テーブルは変更されません。
   `.d` | 入力された情報を表示します。
   `.e` | 入力情報をテーブルに保存し、次のフィールドへの入力要求を表示します。
   `.n` | *現在のフィールドへの入力をやめ、次のフィールドへ移動します。
   `.p` | **前のフィールドへ戻り、再入力要求します（既に入力されたものは失われません） 。連続して`.p`コマンドは使用できません。
   `.q` | 対話型インタフェースを終了し、Empressへ制御を戻します。 入力されたテーブルが作成されます。
   `.r` | 現在のフィールド値をNULLにリセットします。
   `.x` | *現在のフィールドを削除します。

   * `.p`コマンドの後でのみ有効です。
   ** `.p`コマンドの後では 有効ではありません。

例

  ここでは、`repairs`データベースに`personnel`テーブルを 作成する例題です。

         * CREATE TABLE personnel;

         Name for Attribute #1: number
         Data Type: integer
         Allow Null Values: y

         Ready .e

         Name for Attribute #2: name
         Data Type: char
         Maximum Number of Characters: 20
         Type: 1
         Allow Null Values: y

         Ready .e

         Name for Attribute #3: phone
         Data Type: char
         Maximum Number of Characters: 15
         Type: 1
         Allow Null Values: y

         Ready .e

         Name for Attribute #4: credit_limit
         Data Type: dollar
         Maximum Number of Dollar Digits: 6
         Type: 1
         Allow Null Values: y

         Ready .e

         Name for Attribute #5: .q

## 8.5 対話型INSERTコマンド

対話型INSERTコマンドは、テーブルにデータを入力します。

Syntax

  Syntax 1:

  |  |  | `INSERT [INTO] table [` | `|(*) |(item {, item})` | `|]; |`

  Syntax 2:

  `INSERT [INTO] table` | `|SET |SHOW` | `| |` | `|(*) |item {, item}` | `| {[:] |` | `|SET |SHOW` | `| |` | `|(*) |item {, item}` | `|}; |`

  説明

  `item` | `attr [PRINT header]`

注意

1. アスタリスク(*)は全てのフィールドを意味します。

2. フィールドを指定する場合、`SET`の後に指定するか、括弧で囲んだ中に 指定します。指定されないフィールドについては、NULL値が設定されます。 フィールドを指定しない場合には、全てのフィールドに対して入力要求が行なわれます。 `SHOW`の後に指定したフィールドは、フィールド名と値が表示されます。

3. `headers`を指定した場合には、フィールド名の代わりに headersが使用されます。

4. 以下に示すコマンドは、対話型INSERTコマンドで使用されます。

   Table 8-7: 対話型INSERTのコマンド

   コマンド | 概要
   `.?` | ヘルプを表示します。
   `.!cmd` | 指定されたコマンド（`cmd`）を実行します。
   `.^` | 前のフィールド入力プロンプトへ移動します。
   `.attr` | 指定されたフィールドのデータ入力要求に移動します。
   `.~` | フィールド値をNULLにセットします。
   `."` | 前のレコードでセットされたフィールド値と同じ値をセットします。
   `.d` | 入力された情報を表示します。
   `.e` | 入力情報をテーブルに保存し、次のフィールドへの入力要求を表示します。
   `.n` | *現在のフィールドへの入力をやめ、次のフィールドへ移動します。
   `.p` | **前のフィールドへ戻り、再入力要求します（既に入力されたものは失われません） 。連続して`.p`コマンドは使用できません。
   `.q` | 対話型インタフェースを終了し、Empressへ制御を戻します。 入力されたテーブルが作成されます。
   `.r` | 現在のフィールド値をNULLにリセットします。
   `.u` | 前に発行された`.x`コマンドを取り消します。`.x`コマンドの直後 でないと有効ではありません。
   `.v` | 簡略表示と詳細表示の切り替えをします。
   `.x` | *現在のフィールドを削除します。
   `.z` | ラインエディタを起動します。
   `.zz` | システムファイルエディタを起動します。

   * `.p`コマンドの後でのみ有効です。
   ** `.p`コマンドの後では 有効ではありません。

例

1. シンプルな例

   `loans`テーブルへのシンプルな`INSERT`コマンドです。

          INSERT loans;

   NULL値は、(.~)を使用すれば、対話型インタフェースコマンドで入力する ことができます。

   `name`フィールドと`amount`フィールドだけにデータを挿入した 場合には、以下のいずれかのコマンドを使用します。

          INSERT loans SET name, amount;

          INSERT loans (name, amount);

   入力した値を、再表示させながら行ないたい場合には、以下のコマンドを使用 します。

          INSERT loans SET name, amount SHOW name, amount;

   この場合、データを入力する場合には、以下のように表示されます。

          name: Jones
          amount: 25
          name: Jones
          amount: $25.00

          Ready . e

          name:

   テーブルに複数のレコードを挿入する必要がある場合、対話型インタフェース の`INSERT`モードを使用します。

          * INSERT INTO personnel;

       number: 10
       name: Kilroy
       phone: 426-9681
       credit_limit: 500.00

       Ready .e
       number: 5
       name: Mosca
       phone: 544-2243
       credit_limit: 250.00

       Ready .d
   | 挿入前にレコードを表示します。
       number: 5
       name: Mosca
       phone: 544-2243
       credit_limit: $250.00

       Ready .e
       number: 17
       name: Wladisslow
       phone: .^
       name: Wladisslow Wladislaw
       phone: 723-6073
       credit_limit: $50.00

       Ready .e
   | 入力ミスを修正するために、前のフィールドに 移動します。
       number: 3
       name: Jones
       phone: 667-2951
       credit_limit: 500.00

       Ready .e
       number: 4
       name: Peterson
       phone: 978-6060
       credit_limit: 250.00
       Ready .>number
   | 入力ミスを修正するために、先頭のフィールドに移動します。
       number: 4 8
       name: Peterson .e
       number: .v
   | 冗長表示に切り替えます。
       number[integer]: 4
       name[char(20,1)]:
       phone[char(15,1)]: .^
       name[char(20,1)]: Scarlatti
       phone[char(15,1)]:961-7363
       credit_limit[dollar(6,1)]: 100.00

       Ready .e
   | <Return> 入力ミスを修正するために、 前に戻ります。
       number[integer]: .v
   | 簡略表示に切り替えます。
       number: 9
       name: Jordan
       phone: 964-3335
       credit_limit: 250.00

       Ready .e

       number: .q
       Number of Records Entered = 7

       *

2. テキストデータの入力

   `TEXT`データタイプは、他のデータタイプより多少複雑です。以下に示す 例は、`TEXT`フィールドへのデータの入力と更新にに関するものです。 バックスラッシュ(\)は、データ中に改行を入力することに注意してください。

          * INSERT customers;

          name: Mr. R. Lucas
          address: 1423 Beach Drive,\
          Bayville, CA 92308
          comments: Can always be sold something new and\
          flashy - likes chrome\
          and colored stuff, also little gadgets.

          Ready .e

          name: Mr. J. Phillips
          address: 63 Shore Bvde.,\
          Gull Point, CA 92309
          comments: Pays bills 2 months late - needs to be\
          threatened with a collection agency

          Ready .e

          name: Mr. B. Wilson
          address: 14 Valley View Drive,\
          Bayville, CA 92308
          comments: Good customer - give credit if he asks for it.

          Ready .e

          name: Ms. C. Marshall
          address: 12 Berkeley St.\
          Gull Point, CA 92309
          comments: Suggest vacuum & wash; she keeps 3 dogs.\
          Look for dog hair collecting in engine.

          Ready .e

          name: Mr. J. Lee
          address: 3260 Church St.,\
          Gull Point, CA 92309
          comments: Father pays billsÑcheck with R. Lee before\
          accepting a job,\
          but don't let Johnny know you're doing so.

          Ready .e

          name: .q

          Number of Records Entered = 5

## 8.6 対話型UPDATEコマンド

対話型UPDATEコマンドは、テーブル中の既存のデータを変更します。

Syntax

  Syntax 1:

  `UPDATE table [` | `` | `|(*) |(item {, item})` | `|] [where_clause]; |`

  Syntax 2:

  `UPDATE table` | `|SET |SHOW` | `| |` | `|(*) |item {, item}` | `| {[:] |` | `|SET |SHOW` | `| |` | `|(*) |item {, item}` | `|} |`

  `[where_clause];`

  説明

  `item` | `attr [PRINT header]`
  `where_clause` | `WHERE句`

注意

1. アスタリスク(*)はすべてのフィールドを表わします。フィールドが指定されない 場合、Empressはすべてのフィールドに対して入力要求を行います。

2. `SHOW`の後に指定したフィールドは、値が表示されるだけで変更はでき ません。ただし、`SET`の後に指定したフィールドは変更できます。 `SET`と`SHOW`の間のコロン(:)は省略可能です。

3. `headers`が指定された場合には、フィールド名の代わりに headersが使用されます。

4. `WHERE`句が指定された場合には、その条件を満たしたレコードのみが 更新されます。

5. NULL値を入力したい場合は、(.~)コマンドを使用します。

6. 以下に示すコマンドは、対話型UPDATEで使用できます。

   Table 8-8: 対話型UPDATEのコマンド

   コマンド | 概要
   `.?` | ヘルプを表示します。
   `.!cmd` | 指定されたコマンド（`cmd`）を実行します。
   `.^` | 前のフィールド入力プロンプトへ移動します。
   `.attr` | 指定されたフィールドのデータ入力要求に移動します。
   `.~` | フィールド値をNULLにセットします。
   `."` | 前のレコードでセットされたフィールド値と同じ値をセットします。
   `.d` | 入力された情報を表示します。
   `.e` | 入力情報をテーブルに保存し、次のフィールドへの入力要求を表示します。
   `.n` | 現在のフィールドへの入力をやめ、次のフィールドへ移動します。
   `.p` | **前のフィールドへ戻り、再入力要求します（既に入力されたものは失われません） 。連続して`.p`コマンドは使用できません。
   `.q` | 対話型インタフェースを終了し、Empressへ制御を戻します。 入力されたテーブルが作成されます。
   `.r` | 現在のフィールド値をNULLにリセットします。
   `.u` | 前に発行された`.x`コマンドを取り消します。`.x`コマンドの直後 でないと有効ではありません。
   `.v` | 簡略表示と詳細表示の切り替えをします。
   `.x` | 現在のフィールドを削除します。
   `.z` | ラインエディタを起動します。
   `.zz` | システムファイルエディタを起動します。

   ** `.p`コマンドの後では有効ではありません。

例

1. シンプルな更新

   以下にレコードの削除と更新の例を示します。

          * UPDATE personnel;

       number: 10
       name: Kilroyp
       hone: 426-9681
       credit_limit: 500.00

       Ready . x
   | レコードを削除します。
       number: 5
       name: Mosca
       phone: 544-2243 426-9681
       credit_limit: 500.00 750.00

       Ready .d
   | 新しいデータを入力します。 更新された レコードを表示します。
       number: 5
       name: Mosca
       phone: 426-9681
       credit_limit: 750.00

       Ready .e

       number: 17 .q

       Number of Records Deleted = 1
       Number of Records Updated = 1

       *

2. 特定のフィールドのみ更新します。

   `UPDATE`モードでは、全てのフィールドを更新するのではなく、 特定フィールドのみ更新することが可能です。以下に示す例では、`name` フィールドを確認用に表示させ、`phone`フィールドを更新するというもの です。この場合、`name`フィールドと`phone`フィールド以外の フィールドは、表示もされません。

          * UPDATE personnel SHOW name : SET phone;

       name: Kilroy
       phone: 426-9681

       Ready .n

       name: Mosca
       phone: 544-2243 382-2791
   | 電話番号を変更します。
       Ready .d
   | レコードを表示します。
       name: Mosca
       phone: 382-2791

       Ready .e

       name: Wladislaw
       phone: 723-6073 811-5110
   | 電話番号を変更します。
       Ready .e

       name: Jones .q

       Number of Records Updated = 2

       *

3. 条件付きの更新

   `UPDATE`コマンドに`WHERE`句を指定した場合、その条件を満たす レコードのみ更新できます。最初の例は`name`フィールドがMoscaとJonesの レコードのみ更新し、2番目は`name`フィールドWladislawの `credit_limit`フィールドを更新します。

          * UPDATE personnel
               WHERE name = 'Mosca' OR name = 'Jones';

          number: 5
          name: Mosca
          phone: 382-2791
          credit_limit: 250.00  500.00

          Ready .e

          number: 3
          name: Jones
          phone: 667-2951 454-6672
          credit_limit: 500.00

          Ready .e

          Number of Records Updated = 2

          * UPDATE personnel SHOW name : SET credit_limit
               WHERE name = 'Wladislaw';

          name: Wladislaw
          credit_limit: 50.00 10.00

          Ready .d

          name: Wladislaw
          credit_limit: 10.00

          Ready .e

          Number of records updated = 1

          *

4. レコードの更新と確認

   適切なレコードが更新されているかの確認のために、`.d`コマンドを使用 しなくても、新しいデータを自動的に表示するコマンドです。

          UPDATE loans SHOW name, date, amount : SET DATE, AMOUNT
             : SHOW date, amount;

5. テキストデータの更新

   更新時に`TEXT`フィールドのデータを表示する場合、最初に表示長に値する テキストが表示されます。さらに残りの文字数が表示されます。変更を行なう場合 エディタを使用するのであれば、`.z`または`.zz`コマンドを使用 します。

   以下の例では、Empressラインエディタとシステムエディタの `/bin/ed`を使用したものです。

          * UPDATE customers WHERE name MATCH '*lucas*';

       name: Mr. R. Lucas
       address: 1423 Beach Drive,
       Bayville, CA 92308 .z
       1423 Beach Drive,
          8
   | 3を8に変更します。

       1428 Beach Drive,
       Bayville, CA 92308
       comments: Can always be sold something
       [75 More Characters] .zz
       101
       1,$p
       Can always be sold something new and flashy - likes chrome and
       colored stuff, also little gadgets.
       a
       Try to sell him some of the new Italian car seat covers
       - he'll probably take them.
       w
       186
       q

       Ready .e

       Number of Records Updated = 1
       *

## 8.7 エディタの使用

`INSERT`モードでのタイプミスを訂正したり、`UPDATE`モード でのフィールド値を変更するのに、フィールド値全体を入力し直す方法を解説して きました。修正があまり複雑でないものについては、Empressラインエディタは とても有効です。対話型インタフェースから、Empressラインエディタ を起動するには、`.z`コマンドを使用します。複雑なものについては、 `.zz`コマンドを使用してシステムエディタを使用するのが便利です。 どのシステムエディタを使用するかは変数`MSEDITOR`で設定します。

以下の例では、Empressラインエディタを使用したものです。

       * INSERT loans;

       name: Moosca
       date: .^
       name: Moosca .z
       Moosca
        #

       Mosca
       date: 2 February 1983
       amount: 150

       Ready .e

       name: .q

       Number of Records Entered = 1

       *

以下の例は、システムエディタを使用したものです。

       * INSERT INTO 'auto parts'

       supplier: AAA Automotive
       phone: .^
       supplier: AAA Automotive .zz

    .
    .
    .
| システムエディタを起動。

       part name: hubcap
       part no.: 9836653
       price: 18.40

       Ready .e

       supplier: .q

       Number of Records Entered = 1

対話型インタフェースの使用中に、不当な文字（バックスペース、 エスケープ、制御文字など）を入力したり、データとデータタイプが一致しない場合 には、編集モードに移りラインエディタが起動されます。以下は無効な日付データを 入力した場合の状況を示します。

       * INSERT loans;

    name: Mosca
    date: 12 mey 1990

    ** Conversion Error *** invalid month
    ** Entering LINE EDITOR ***
| <Interrupt>で編集を中止します。
    12 mey 1990
        a

    12 may 1990
    amount: 32.50

    Ready .e

UNIX上では、<Interrupt>キーを押すとラインエディタが中止されます。 キーを押すと、そのフィールドに対して再度プロンプトが表示されます。 （オペレーティングシステムによっては、<Interrupt>キーの後に、 <Return>キーを押す必要があるものもあります。）