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

LANSA

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コマンド