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では、このフィールドを検査し、無効な値が指定された場合はエラーを戻します。