Lokale Zeichensätze
Im Unicode-Modus des EDT V17.0A kann für jede Arbeitsdatei ein anderer Zeichensatz eingestellt werden. Dabei sind die schon bisher unterstützten 7-Bit- und 8-Bit-Zeichensätze sowie zusätzlich die Unicode-Zeichensätze UTF8
, UTF16
und UTFE
, die von XHCS unterstützten ISO-Zeichensätze sowie in XHCS deklarierte benutzerdefinierte Zeichensätze erlaubt.
In Anweisungen innerhalb von Literalen aber auch in Daten können Unicode-Zeichen über eine Ersatzdarstellung durch die Angabe des Hex-Wertes ihres UTF16
-Codes angegeben werden.
Die Zeichensätze für die einzelnen Arbeitsdateien werden entweder implizit durch das Einlesen einer entsprechend codierten Datei eingestellt oder explizit über die @CODENAME-Anweisung.
Das Arbeiten mit lokalen Zeichensätzen, insbesondere beim Datentransfer zwischen Arbeitsdateien oder zwischen EDT-Variablen und Arbeitsdateien wird ausführlich im Abschnitt „Zeichensätze“ beschrieben.
Lange Sätze
Im Unicode-Modus des EDT V17.0A wird die Begrenzung der Satzlänge auf 256 Zeichen aufgehoben. Der EDT kann beim Lesen aus und Schreiben in eine DVS-Datei (je nach Dateiformat) maximal 32768 Byte lange Sätze verarbeiten. Diese Grenze ist durch das DVS vorgegeben und bezieht sich auf die Byteanzahl. Bei Bibliothekselementen liegt die durch LMS vorgegebene Grenze bei 32763 Bytes. Da bei Verwendung von Unicode-Zeichensätzen Zeichen auch durch mehrere Bytes codiert sein können, ist die Anzahl erlaubter Zeichen pro Satz möglicherweise geringer. Intern arbeitet der EDT mit längeren Puffern, so dass diese Begrenzung erst wirksam wird, wenn die Sätze zum Schreiben in den Zeichensatz der Ausgabedatei umcodiert werden. Der EDT bietet eine Anweisung an (@CHECK, Format 2), mit der sich überprüfen lässt, ob Sätze beim Schreiben gekürzt werden müssen.
Für POSIX-Dateien ist die Zeilenlänge nur durch die maximale Zeilenlänge im EDT auf 32768 Zeichen (nicht Bytes) begrenzt.
Die Aufhebung der Satzlängenbegrenzung betrifft Datensätze in den Arbeitsdateien, Zeichenfolgevariablen und die Anweisungslänge gleichermaßen und findet ihren Niederschlag auch in der Syntax der Anweisungen (z.B. bei Spaltenangaben), im Layout der Zustandsanzeige, in der Aufteilung des Bildschirms beim @EDIT LONG sowie in der Unterprogramm-Schnittstelle.
Konsistente Behandlung von Leerzeilen
Die vom EDT zu verarbeitenden Dateien können Sätze der Länge 0 enthalten.
Bei POSIX-Dateien oder SAM-Dateien handelt es sich dabei real um Sätze der Länge 0, bei ISAM-Dateien mit Standardeigenschaften um Sätze der Länge 8 bzw. der Länge 16 (bei in UTF16
codierten Dateien).
Um Sätze der Länge 0 im Datenfenster darstellen zu können, kennzeichnet der EDT im Unicode-Modus das Satzende mit dem datenstationsspezifischen Zeichen [LZE] (Logisches Zeilenende).
Der Rest der Bildschirmzeile rechts vom [LZE] wird von der Datensichtstation (DSS) mit geschützten NIL
-Zeichen (X'00'
) gefüllt. Wenn sich das Satzende außerhalb des Datenfensters befindet, wird [LZE] nicht dargestellt. Die Bildschirmzeile endet dann mit dem letzten noch sichtbaren Zeichen des Satzes bzw. besteht nur aus geschützten NIL
-Zeichen. Ein Satz der Länge Null wird also durch eine Bildschirmzeile im Datenfenster dargestellt, die nur aus dem Zeichen [LZE] in Spalte 1 und geschützten NIL
-Zeichen besteht (Leerzeile). Wird in einer Zeile in Spalte 1 [LZE] eingegeben, dann wird für diese Zeile ein Satz der Länge 0 in der Arbeitsdatei angelegt.
Leerzeilen sind zu unterscheiden von neuen Zeilen, die der EDT im F-Modus nach dem letzten Satz der Datei bzw. bei der Bearbeitung der Kurzanweisungen 1..9
oder I
anbietet. Diese Zeilen entsprechen (noch) keinem Satz in der Arbeitsdatei und bestehen nur aus (überschreibbaren) NIL
-Zeichen (X'00'
) ohne [LZE].
Bei der Eingabe kann das Zeichen [LZE] normalerweise weggelassen werden.
Es muss lediglich dann eingegeben werden, wenn der Satz mit NIL
-Zeichen enden soll. Der EDT ignoriert bei der Eingabe im F-Modus alle NIL-Zeichen am Ende der eingegebenen Zeile, d.h. alle NIL
-Zeichen bis zu dem ersten Zeichen ungleich NIL
(dies kann ein [LZE] oder ein anderes Zeichen sein) werden von rechts abgeschnitten. Das [LZE] selbst wird ebenfalls bei der Eingabe ignoriert. Da neue Zeilen nur aus NIL
-Zeichen bestehen, werden sie bei der Eingabe als Ganzes ignoriert und nicht in die Arbeitsdatei eingefügt. Im Gegensatz dazu würde die Eingabe eines [LZE] in Spalte n
einer neuen Zeile dazu führen, dass nach der Datenübertragung standardmäßig ein Satz mit n-1
Leerzeichen in die Arbeitsdatei eingefügt wird (oder mit n-1 NIL
-Zeichen, je nach Festlegung durch @SYMBOLS FILLER). Insbesondere würde für n=1
ein Satz der Länge 0 eingefügt.
Die DSS gestattet keine Eingaben in einer Zeile rechts vom Zeichen [LZE]. Beim Anfügen von Zeichen an eine Zeile ist also entweder der Einfügemodus der DSS einzuschalten oder das Zeichen [LZE] zu überschreiben. Diese Inkompatibilität zu EDT V16.6B wird zu Gunsten der konsistenten Behandlung von Leerzeilen im Unicode-Modus in Kauf genommen.
Eine genauere Beschreibung des Verhaltens bei der Eingabe von Zeilen, die NIL
-Zeichen oder Füllzeichen enthalten, finden Sie im Abschnitt „F-Modus“.
Verfügbarkeit aller Arbeitsdateien
Im F-Modus kann jetzt auch mittels Eingabe der entsprechenden Nummer in die Anweisungszeile in eine der Arbeitsdateien 10 bis 22 gewechselt werden. Bisher war dies nur im L-Modus mit der @PROC-Anweisung möglich (siehe dazu den Abschnitt „F-Modus“).
Vereinheitlichung von Anweisungs-Schnittstellen
Im EDT V17.0A kann jetzt auf Dateien aller unterstützten Dateitypen mit einem einheitlichen Satz von Anweisungen (@OPEN, @CLOSE, @COPY, @WRITE) zugegriffen werden (siehe dazu Kapitel „Dateibearbeitung“ sowie die Beschreibung der einzelnen Anweisungen).
Die Anweisungen wurden dafür um entsprechende Operanden erweitert. Die Verwendung der alten Anweisungen ist zwar weiterhin möglich, es wird jedoch empfohlen, nur noch die neuen Anweisungen zu verwenden.
Auch bei anderen Anweisungen wurden zum Zwecke der Vollständigkeit und Vereinheitlichung neue Operanden eingeführt. Einzelheiten können Sie den Anweisungsbeschreibungen entnehmen.