Mit diesem Format der Anweisung @CHECK kann geprüft werden, ob der angegebene Bereich der aktuellen Arbeitsdatei bzw. von Zeichenfolgevariablen verlustfrei in den angegebenen Ziel-Zeichensatz konvertiert werden kann.
Operation | Operanden | F-Modus, L-Modus |
@CHECK | [ {lines | svars} [,...][:cols[:]]] [,] CODE = {name | *EDT | *FILE} [,MARK[=m]] [,LENGTH = {int | *FILE} ] |
lines | Einer oder mehrere Zeilenbereiche, die überprüft werden sollen. Enthält der |
svars | Einer oder mehrere Bereiche von Zeichenfolgevariablen, die überprüft |
cols | Zusammenhängender Spaltenbereich in der aktuellen Arbeitsdatei bzw. in Enthält die Bereichsangabe nur eine einzelne Spaltenangabe, so wird damit Wird kein Spaltenbereich angegeben, wird die gesamte Zeile bzw. |
CODE= | Spezifiziert direkt oder symbolisch den Zeichensatz, für den die |
name | Name des Zeichensatzes, für den die Überprüfung stattfinden soll. Der |
*EDT | Der Zeichensatz, der für die aktuelle Arbeitsdatei eingestellt ist, soll für die |
*FILE | Der Zeichensatz, der für die geöffnete Datei oder für das geöffnete |
MARK= | Die Zeilen, die sich nicht verlustfrei in den angegebenen Zeichensatz |
m | Satzmarkierung ( |
LENGTH= | Es wird eine maximale Länge (in Bytes) spezifiziert, die bei der Konvertierung |
int *FILE | Legt explizit eine maximale Länge fest ( Die maximale Länge wird aus dem Katalogeintrag der geöffneten Datei |
Wird weder lines
noch svars
angegeben, wird die gesamte aktuelle Arbeitsdatei überprüft.
Eine Zeile bzw. Zeichenfolgevariable wird als fehlerhaft im Sinne der von @CHECK durchgeführten Überprüfung betrachtet, wenn sie nach der Konvertierung entweder länger als der bei LENGTH
spezifizierte Wert wird oder wenn sie Zeichen enthält, die bei der Konvertierung in den angegebenen Zeichensatz auf ein eventuell spezifiziertes Ersatzzeichen (siehe Anweisung @PAR SUBSTITUTION-CHARACTER) abgebildet werden müssten.
Findet der EDT während der Überprüfung keine fehlerhaften Zeilen bzw. Zeichenfolgevariablen oder werden nur Längenüberschreitungen moniert (siehe unten), kann der Anwender sicher sein, dass eine Konvertierung in den angegebenen Zeichensatz auch dann möglich ist, wenn kein Ersatzzeichen spezifiziert wurde. Andernfalls kann sich der Anwender entscheiden, ob er ein Ersatzzeichen spezifiziert (wenn dies nicht schon geschehen ist) und den dann entstehenden Informationsverlust in Kauf nimmt, oder ob er an den betroffenen Zeilen bzw. Zeichenfolgevariablen Änderungen durchführt, um eine verlustfreie Konvertierung zu ermöglichen.
Zeilen bzw. Zeichenfolgevariablen, bei denen eine Längenüberschreitung moniert wird, werden beim Schreiben in eine Datei, eine Jobvariable oder eine S-Variable abgeschnitten, falls die überprüfte Länge in diesem Fall physikalisch relevant ist (z.B. bei Dateien mit fester Satzlänge). Die Kürzung erfolgt in jedem Fall an einer gültigen Grenze zwischen zwei Zeichen. Die wirklich geschriebene Länge kann also um maximal 3 Byte kürzer sein als die überprüfte Länge. Wenn das Abschneiden nicht akzeptabel ist, muss der Anwender die monierten Zeilen bzw. Zeichenfolgevariablen selbst sinnvoll aufteilen oder kürzen.
Zusätzlich zur Markierung bzw. Ausgabe der fehlerhaften Zeilen bzw. Zeichenfolgevariablen wird eine Meldung ausgegeben, in der das Ergebnis der Prüfung zusammengefasst wird. Falls nur ungültige Zeichen gefunden wurden, wird die Meldung EDT5453
ausgegeben, falls nur Längenüberschreitungen gefunden wurden, die Meldung EDT5462
. Falls sowohl ungültige Zeichen als auch Längenüberschreitungen vorkommen wird die Meldung EDT5456
ausgegeben.
Wird die Anweisung mit [K2] unterbrochen und der EDT-Lauf mit /INFORM-PROGRAM
fortgesetzt, so wird die Bearbeitung der Anweisung abgebrochen und die Meldung EDT5501
ausgegeben.