You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

[ |../../index.htm#lansa/specfilklists.htm]
現在地:

I/Oコマンドでのファイル・キー・リストの指定

LANSAデータベースのI/Oコマンドの多くは、ファイル・キーを指定することができます。ファイル・キーの設定に使用する方法とロジックは、すべての場合において同じです。
ファイル・キーを指定するときは、次の点に注意が必要です。

  • コマンドにキー・フィールドを指定する順序は、キー・フィールドの内容と同じくらい重要です。
  • 指定されるキー・フィールドは、対応するキー・フィールドと同じ名前である必要はありません(多くの場合、名前は一致しません)。コマンドに指定されるキー・フィールドは、ファイルの実際のキー・フィールドを使用して指定された順序に対応付けられます。 例えば、#ORDNUMの値が123456で、#LINENOの値が1の場合、このコマンドは、ファイルORDLIN内の受注番号=123456、行番号=1である最初のレコードを取得しようとします。

     FETCH   FROM_FILE(ORDLIN) WITH_KEY(#ORDNUM #LINENO)
 
    ただし、コマンドを次のように指定した場合、LANSAは、ファイルORDLIN内の受注番号=1、行番号=123456である最初のレコードを取得しようとします。
     FETCH   FROM_FILE(ORDLIN) WITH_KEY(#LINENO #ORDNUM)
 
    これは、実際のファイル・キーが「受注番号」、「行番号」の順に指定されているためです。LANSAでは、キー・フィールドの名前ではなく、実際のファイル・キーでのキー・フィールドの位置を対応させて、指定されたキー・フィールドを処理します。

  • 指定するキー・フィールドは、ファイル内のキー・フィールドと同じ長さである必要はありません。LANSAでは、必要に応じて自動的に長さを調整します。ただし、指定するキー・フィールドと実際のキー・フィールドは、同一のタイプ(英数字または数値)である必要があります。
  • ほとんどのコマンドでは、「部分」キーの使用をサポートしています。例えば、ファイルのキーがKEY01、KEY02、KEY03である場合、以下のバリエーションを使用することができます。

     KEY01  KEY02  KEY03
     または KEY01  KEY02
     または KEY01
 
     ただし、以下のように指定することはできません。
     ----  ----  KEY03
     または -----  KEY02  KEY03
     または KEY01  -----  KEY03
 

  • キー・リストでは、拡張可能なグループ式を使用することができます。拡張されたリストのエントリー数は、ファイルのキー・リストにあるフィールド数を超えることはできません。また、両者は同一のタイプでなければなりません。
  • キー・リストに日付、時刻、タイムスタンプのフィールドが存在する場合、指定されたキー・フィールドには、有効な日付、時刻、またはタイムスタンプの値が必要です。LANSAでは、このフィールドを検査し、無効な値が指定された場合はエラーを戻します。

以下も参照してください。
I/Oコマンド戻りコード表
レコードがロックされているI/O状況
[ |../../index.htm#lansa/specfilklists.htm]

  • No labels