Jedes Feld in einem Textformular hat ein Tag für modifizierte Daten. Dabei handelt es sich um einen Statuswert, der angibt, ob der Benutzer das Formularfeld geändert hat, als das Formular zuletzt dargestellt wurde. Im Vergleich zu CICS ist ein Vorteil des geänderten Tags für modifizierte Daten, dass der Datenaustausch im Netz reduziert wird, weil die Datenübertragung vom Benutzer zum Programm nur die geänderten Felder einschließt.
Wie später beschrieben wird, unterscheidet sich ein Tag für modifizierte Daten von der Eigenschaft modified für das Feld, die im Programm festgelegt wird und den Wert des Tags für modifizierte Daten voreinstellt.
if (field is modified)
;
end
Details hierzu finden Sie unter Logische Ausdrücke für Text-UI-Formulare.Der Benutzer legt das Tag für modifizierte Daten fest, indem er ein Zeichen in das Feld eingibt oder daraus löscht. Das Tag für modifizierte Daten bleibt unverändert, selbst wenn der Benutzer, bevor er das Formular übergibt, den Feldinhalt an den Wert zurückgibt, der dargestellt wurde.
Die Auswertung umfasst zwei Phasen. Phase I bezieht Eigenschaften wie InputRequired ein, ebenso wie Auswertungen von Datentabellen. In Phase II werden Validator-Funktionen ausgeführt. Wenn ein Formular aufgrund eines Fehlers in Phase I erneut angezeigt wird, ist das Tag für modifizierte Daten in jedem Feld, das geändert wurde, nachdem das Programm converse oder show ausgeführt hat, immer noch auf YES festgelegt. Wenn jedoch ein Formular aufgrund eines Fehlers in Phase II erneut angezeigt wird, ist das Tag für modifizierte Daten in keinem Feld mehr aktiv, es sei denn, eine Validator-Funktion setzt das Tag zurück.
if (field is modified)
;
end
Wenn Sie versuchen, das Tag für modifizierte Daten für ein Feld zu testen, bevor Ihre Logik das Formular zum ersten Mal darstellt, tritt ein Laufzeitfehler auf.Das gesamte Formular wird als geändert betrachtet, wenn das Tag für modifizierte Daten für eines der variablen Formularfelder auf YES gesetzt ist. Wenn Sie den geänderten Status eines Formulars testen, das dem Benutzer noch nicht präsentiert wurde, lautet das Testergebnis FALSE.
Die folgende Logik zeigt das Ergebnis der verschiedenen Tests an:
// 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