Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

@CHECK (Format 2) - Zeilen auf Konvertierbarkeit prüfen

&pagelevel(3)&pagelevel

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
angegebene Bereich keine oder nur Leerzeilen ist das Ergebnis der
Prüfung positiv (Leerzeilen können immer verlustfrei geschrieben werden).

svars

Einer oder mehrere Bereiche von Zeichenfolgevariablen, die überprüft
werden sollen.

cols

Zusammenhängender Spaltenbereich in der aktuellen Arbeitsdatei bzw. in
den angegebenen Zeichenfolgevariablen, der überprüft werden soll.

Enthält die Bereichsangabe nur eine einzelne Spaltenangabe, so wird damit
der Bereich von dieser Spalte bis zum Zeilenende spezifiziert. Ist die erste
Spaltenangabe bereits größer als die Zeilenlänge, wird die Zeile bzw.
Zeichenfolgevariable ignoriert.

Wird kein Spaltenbereich angegeben, wird die gesamte Zeile bzw.
Zeichenfolgevariable überprüft.

CODE=

Spezifiziert direkt oder symbolisch den Zeichensatz, für den die
Überprüfung stattfinden soll.

name

Name des Zeichensatzes, für den die Überprüfung stattfinden soll. Der
angegebene Zeilenbereich bzw. Bereich von Zeichenfolgevariablen wird
probeweise in diesen Zeichensatz konvertiert. Je nach eingestellter Option
werden fehlerhafte Zeilen markiert oder auf SYSOUT ausgegeben.

*EDT

Der Zeichensatz, der für die aktuelle Arbeitsdatei eingestellt ist, soll für die
Prüfung benutzt werden. Da eine Arbeitsdatei keine Sätze mit Zeichen
enthalten kann, die im Zeichensatz der Arbeitsdatei ungültig sind, ist die Angabe
von *EDT nur sinnvoll, wenn nur auf Überschreitung der Maximallänge
geprüft werden soll (siehe Operand LENGTH).

*FILE

Der Zeichensatz, der für die geöffnete Datei oder für das geöffnete
Bibliothekselement im Katalog eingetragen ist, bzw. der bei der Anweisung
@OPEN im Operanden CODE spezifiziert worden ist, soll für die Prüfung
benutzt werden. Falls weder eine Datei noch ein Bibliothekselement geöffnet
ist, wird die Angabe von *FILE mit der Fehlermeldung EDT5467 abgewiesen.
Falls für die Datei der Zeichensatz *NONE eingetragen ist, findet die
Prüfung gegen den Zeichensatz EDF03IRV statt.

MARK=

Die Zeilen, die sich nicht verlustfrei in den angegebenen Zeichensatz
konvertieren lassen, sollen mit einer Satzmarkierung versehen werden. Diese
Option ist nur erlaubt, wenn ausschließlich Zeilenbereiche in der aktuellen
Arbeitsdatei überprüft werden. Wird MARK nicht spezifiziert, werden die
Zeilen bzw. Zeichenfolgevariablen, die sich nicht verlustfrei konvertieren
lassen, nach SYSOUT ausgegeben.

m

Satzmarkierung (1..9), mit der die Zeilen markiert werden sollen, die sich
nicht verlustfrei in den angegebenen Zeichensatz konvertieren lassen. Wird
m nicht angegeben, wird die Satzmarkierung 1 verwendet.

LENGTH=

Es wird eine maximale Länge (in Bytes) spezifiziert, die bei der Konvertierung
der Zeilen bzw. Zeichenfolgevariablen nicht überschritten werden darf.
Da bei der Konvertierung in einen Unicode-Zeichensatz manche Zeichen
durch mehrere Bytes codiert werden, kann eine Zeile bei der Konvertierung
eventuell länger werden. Zeilen bzw. Zeichenfolgevariablen, die bei der
Konvertierung die angegebene maximale Länge überschreiten, werden
daher ebenfalls als fehlerhaft betrachtet.

int

*FILE

Legt explizit eine maximale Länge fest (1..32768).

Die maximale Länge wird aus dem Katalogeintrag der geöffneten Datei
oder des geöffneten Bibliothekselements berechnet. Es wird der Wert
gewählt, der unter Berücksichtigung anderer relevanter Dateieigenschaften
(z.B. des Dateityps und des Satzformats) garantiert, dass alle überprüften
Sätze verlustfrei in die Datei geschrieben werden können. Wenn weder eine
Datei noch ein Bibliothekselement geöffnet ist, wird der Wert 32768
angenommen.

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.