外部ファイルの取り扱い

外部ファイルのロードコマンドを実行すると、外部ファイルをテーブルとみなし、その列をLANSAのフィールドとして表した「ファイル定義」が作られます。フィールドは既存のものでもかまいませんが、なければ自動的に生成されます。既存のフィールド定義をそのまま使うのは、フィールド名、タイプ、長さ、小数点の位置などが完全に一致する場合に限ります。少しでも違えば、別にフィールド定義を生成することになります。

データベースに固有のタイプで、LANSAが未対応のものがいくつかあります。外部ファイルのロードコマンドでは、そのようなタイプの列は無視されます。LANSAアプリケーションを使ってこのファイルにデータを挿入するのであれば、本来このファイルを管理するデータベースの側で、この列に省略値を設定しておく必要があります。

プライマリ・キーに無視された列が含まれている場合、IBM i外部ファイルであれば、通常、LANSAではプライマリ・キーのないテーブルという扱いになります。一方、PC用のファイルの場合、固有のインデックスが別にあればそれをプライマリ・キーとして扱い、論理ビューとして読み込みます。

論理ファイルのキーが無視された列に当たる場合、その論理ファイルは読み込まれません。

RDMLXを有効にした区画に外部ファイルを読み込む場合、区画の保守ダイアログで該当するタイプを使用可と設定したか否かにかかわらず、LANSAに組み込まれたタイプはすべて使えます。したがって、LANSAの外部ファイル操作機能はすべて、自動的に活用できるようになります。他のアプリケーションで新しいタイプを定義していても、それを意識する必要はありません。

状況によっては、生成されたフィールドのタイプや長さが想定通りでない、あるいは既存のフィールドを再利用しようと考えていたのにそうならないことがあります。この場合、仮想フィールドを追加して適宜変換してください。ファイルを読み込み直しても、この仮想フィールドはそのまま残ります。

RDMLXを有効にした区画にDateTime型のフィールドを読み込む場合、現地の時間帯で記録されたデータとみなします。他の時間帯のデータである場合はSUTC/DUTC属性を追加してください。詳細については、『LANSA テクニカル リファレンスガイド』の「Datetime」を参照してください。

外部ファイルのロード後、外部ファイルの一部のフィールドに対して、キーボードのシフト設定を変更できます。これを行うには、LANSAエディターでフィールドを開き、フィールドの [定義] タブに移動して、適切なキーボード・シフト値を選択します。

BLOBタイプまたはCLOBタイプのフィールドしかない外部ファイルは扱えません。このようなフィールドの検索には、別のフィールドが必要になるからです。

外部ファイルに識別列(自動番号づけ)があれば、これを認識した上で処理されます。詳細については、「識別列」を参照してください。

さまざまな理由により、列やテーブルを挿入/更新できない場合があります。外部ファイルに対して行を更新/挿入しようとしたとき、LANSA側に関係ないエラーが発生するようであれば、その原因を詳しく調べる必要があるでしょう。データベース側の規則に抵触する場合でも、LANSAで事前に確認することができなければ、データベース側にデータを渡した時点でエラーになる場合があります。そのような場合、LANSA側に妥当性規則を追加する必要があります。しかしこの方法でエラーを回避することができないのであれば、そのテーブルは読み込み専用として扱うべきです。PC用の外部ファイルであれば、問題のあるフィールドをファイル定義から削除するか、ファイル自体に読み込み専用である旨の印をつけてください。

次のトピックも参照してください。

PC 外部ファイル

IBM i RDMLX外部ファイル

1.7.11 LANSAの内部テーブル