変更データ・タグおよび modified プロパティー
テキスト書式の各フィールドには、変更データ・タグ があります。このタグは、前回書式を表示した際にユーザーが書式に変更を行ったかどうかを示す状況値です。 CICS® に関して変更データ・タグが持つ利点の 1 つは、ネットワーク・トラフィックが削減されることです。 これは、ユーザーからプログラムへのデータ転送に、変更されたフィールドのみが含まれるようになるためです。
後述するように、変更データ・タグとフィールドの modified プロパティーは別のものです。このプロパティーは、変更データ・タグの値を事前設定するために、プログラム内に設定されるものです。
ユーザーとの対話
- データ・テーブルまたは関数を使用して、変更されたデータを検証する (フィールドの変更データ・タグが YES になると自動的に実行)。
- 以下の構造を持つ if
ステートメントにフィールドの名前を組み込むことによって、ユーザーがフィールドに変更を行ったかどうかを検出する。
詳しくは、テキスト UI 書式の論理式を参照してください。if (field is modified) ; end
変更データ・タグは、フィールド内で文字を入力したり削除したりすることによって設定します。 書式を送信する前にフィールドの内容を表示されたときの値に戻した場合でも、変更データ・タグは設定されたままです。
検証には 2 つのフェーズが含まれます。フェーズ I には、InputRequired などのプロパティー、およびデータ・テーブルに関連した検証が含まれます。フェーズ II ではバリデーター関数を実行します。フェーズ I でのエラーにより書式が再表示された場合でも、プログラムが converse または show を実行した後で変更されたすべてのフィールドで、変更データ・タグは YES に設定されています。 ただし、フェーズ II でのエラーにより書式が再表示された場合は、バリデーター関数がタグをリセットした場合を除いてどのフィールドでも変更データ・タグはオンになっていません。
modified プロパティーの設定
- ユーザーがフィールドにデータを入力しなかった場合にもパスワード・フィールドの検証を実行することができます。
- プログラムが常に特定の相互フィールド検証を実行するように、クリティカル・フィールド (保護フィールドの場合も含む) に対して検証関数を指定することができます。つまり、フィールドのグループを検証して、あるフィールドの値が他のフィールドの妥当性にどのように影響するかをプログラム・ロジックで確認できます。
- 書式の表示より前にあるロジックに、set field modified ステートメントを組み込みます。 結果として、書式が表示されたときに、フィールドの変更データ・タグは YES に事前設定されています。
- 書式宣言で、フィールドの modified プロパティーを YES に設定します。
この場合は、以下の規則が適用されます。
- 書式を最初に表示する際、フィールドの変更データ・タグは YES に事前設定されています。
- 書式を表示する前に以下のいずれかの状態になっている場合、書式を表示する際の変更データ・タグは YES に事前設定されています。
- コードにより実行された set field initial ステートメントで、フィールドの元の内容およびプロパティー値が再割り当てされている。
- コードにより実行された set field initialAttributes ステートメントで、書式上の各フィールドの元のプロパティー値 (内容は対象外) が再割り当てされている。
- コードにより実行された set form initial ステートメントで、書式上の各フィールドの元の内容およびプロパティー値が再割り当てされている。
- コードにより実行された set form initialAttributes ステートメントで、書式上の各フィールドの元のプロパティー値 (内容は対象外) が再割り当てされている。
if (field is modified)
;
end
ロジックで最初に書式を表示する前に、フィールドの変更データ・タグをテストしようとすると、実行時にエラーが発生します。- 書式宣言でフィールドの modified プロパティーを NO に設定する場合、set field modified ステートメントは使用しないでください。 このステートメントがない場合、各書式を表示する前に、modified プロパティーが自動的に NO に設定されます。
- 書式宣言でフィールドの modified プロパティーを YES に設定する場合は、書式の表示より前にあるロジックで set field normal ステートメントを使用してください。 このステートメントにより modified プロパティーが NO に設定され、(第 2 の結果として) 無保護の通常輝度のフィールドが表示されます。
書式が変更されているかどうかのテスト
いずれかの可変書式フィールドの変更データ・タグが YES に設定されている場合、その書式全体が変更されていると見なされます。 ユーザーに対してまだ表示されなかった書式の変更状況をテストした場合、そのテスト結果は FALSE です。
例
- フィールド field01 の modified プロパティーが NO に設定されている。
- フィールド field02 の modified プロパティーが YES に設定されている。
以下のロジックは、さまざまなテストの結果を示したものです。
// tests false because a converse statement
// was not run for the form
if (form01 is modified)
;
end
// causes a runtime error because a converse
// statement was not run for the form
if (field01 is modified)
;
end
// assume that the user modifies both fields
converse form01;
// tests true
if (field01 is modified)
;
end
// tests true
if (field02 is modified)
;
end
// sets the modified property to no
// at the next converse statement for the form
set field01 initialAttributes;
// sets the modified property to yes
// at the next converse statement for the form
set field02 initialAttributes;
// tests true
// (the previous set statement takes effect only
// at the next converse statement for the form
if (field01 is modified)
;
end
// assume that the user does not modify either field
converse form01;
// tests false because the program set the modified
// data tag to no, and the user entered no data
if (field01 is modified)
;
end
// tests true because the program set the modified
// data tag to yes
if (field02 is modified)
;
end
// assume that the user does not modify either field
converse form01;
// tests false
if (field01 is modified)
;
end
// tests false because the presentation was not
// the first, and the program did not reset the
// field properties to their initial values
if (field02 is modified)
;
end