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状況