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


8.1 はじめに

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

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

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

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



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

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

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

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

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

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

CREATEALTER 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 次のフィールド定義に進みます。INSERTCREATEモード内で、 .pコマンドの後で使用できます。
.p Previous 前のフィールドの定義入力へ戻ります。データを再入力しない限り、データは 変更されません。
.r Reset INSERTモードの場合は、データ値をNULL値に戻し、 UPDATEモードでは、元のデータ値に戻します。CREATEモードでは、 全てのフィールドをリセットします。
.x Axe 現在のレコード、またはフィールド定義が削除され、次のフィールドに対する入力 要求を行います。UPDATEモードでは、一度に全てのレコードを削除します。
.u Undo .xコマンドを取り消します。.xコマンド以外には有効 ではありません。

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

コマンド ニーモニック名 概要
.q Quit 対話型インタフェースを終了します。CREATEモードでは、 テーブルが作成され、ALTERモードでは、変更したフィールド定義が保存され ます。INSERTUPDATEモードでは、現在入力中のレコードは保存 しません。入力件数、更新件数は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の後に指定したフィールドは変更できます。 SETSHOWの間のコロン(:)は省略可能です。

  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>キーを押す必要があるものもあります。)