3.7 LANSA作成ファイル内の@@UPIDフィールド

(他のシステムではなく) LANSA で作成され保守される物理ファイルには、付加的なフィールドがあります。このフィールドは @@UPID と呼ばれ、パック 10 進 (7,0) フィールドとして定義されます。このフィールドは必ずファイルの最後にあります。

LANSA はこの @@UPID フィールドを使用して、自動的に「相互更新」検査を行います。この検査ロジックは、以下のように非常に簡単なものです。

ユーザーのアプリケーション・プログラム (LANSA 以外のアプリケーション) を作成し、新規レコードを書き込んだり、LANSA で作成されたデータベース・ファイル内の既存のレコードを更新する場合は、以下の処理を行うことをお勧めします。

1. 新規レコードを書き込む際に、@@UPID を 1 に設定します。

2. 既存レコードを更新する際に、@@UPID に 1 を加えます。

これにより、すべての LANSA ファンクションで自動的に使用されるロジックをエミュレーションすることができます。

注: @@UPID というフィールド名は、COBOL プログラムでは使用しないでください。

これを解決するには、@@UPID フィールドのデータ・ディクショナリの定義を変更して、COBOL でも使用可能な別名を付けます (@@UPID のデータ・ディクショナリの定義をまだ変更していない場合)。

すべてのデータベース・ファイル (まだ別名の付いていないもの) を強制的に再作成した後、COBOL プログラム内で COPY DD オプションを使用してフィールドに別名を付けます。COBOL プログラム内では、実際の名前ではなくこの別名が使用されます。

警告: @@UPID フィールドは、その使用方法について LANSA から特別の指示を受けている場合を除き、4GL レベルでは使用しないでください。

注: ファイルに BLOB または CLOB フィールドが含まれている場合は、@@UPID が 1 回の UPDATE コマンドについて複数回 1 が加算される場合があります。これは、主ファイルに対して 1 回、UPDATE コマンドに含まれている各 BLOB フィールドまたは CLOB フィールドについて 1 回 1 が加えられるために発生します。

また、以下も参照してください。

『LANSA テクニカル リファレンスガイド』の「RESET_@@UPID組み込み関数」

Ý 3.6 ファイルの属性