CSVRecord-Stereotyp

Der CSVRecord-Stereotyp passt einen Teil des Datensatzes an, der die Basis von Variablen bildet, die wiederum zu einem CSV-Wert gehören.

Jeder Datensatz in einer CSV-Datei enthält eine Zeile mit Daten. Die Informationen jeder Spalte innerhalb der Zeile werden durch ein Begrenzungszeichen wie zum Beispiel ein Komma (Standardwert) abgegrenzt. CSV-Dateien stellen eine einfache, lesbare Standardmöglichkeit dar, Daten von einem Arbeitsblatt oder einer Datenbank zu speichern.

Beispiel

Das folgende Beispiel stellt ein Arbeitsblatt mit drei Zeilen und vier Spalten dar. Die Spalten enthalten Werte der folgenden Typen (in der angegebenen Reihenfolge): INT, CHAR(3), DATE? und STRING:
123,yes,3/9/2007,Rahima
-1,no ,9/9/1999,Jorge
92,yes,,Ludmilla
Der folgende Datensatz soll diese Daten in EGL enthalten:
record CsvRec type CSVRecord 
	{
	  fileName = "empfile", 
	  delimiter = ",",
	  textQualifier = "\"",
	  style = CsvStyle.quoted,
	  labels = [ "Job Code", "Permanent?", "Hire Date", "First Name" ]
	}
	jobCode int;
	permStatus char(3);
	hireDate date?;
	firstName string;
end

Textqualifikationszeichen

Wie EGL Textqualifikationszeichen verwendet, hängt vom Wert der Eigenschaft style ab. EGL interpretiert das Textqualifikationszeichen beim Lesen (mit der Anweisung get next) und fügt da sTextqualifikationszeichen beim Schreiben hinzu (mit der Anweisung add). Die Qualifikationszeichen werden nie als Teil eines CSVRecord gespeichert.

Angenommen, der obige CSVRecord enthält anstelle von Ludmilla den folgenden Wert:
Steve "Sparky"
Wenn EGL das Schreiben dieser Variablen firstName vorbereitet, wird das Textqualifikationszeichen (ein Anführungszeichen) eingebettet in der Zeichenfolge gefunden. Da für die Eigenschaft style der Wert CSVStyle.quoted festgelegt ist, fügt EGL zusätzliche Textqualifikationszeichen an Anfang und Ende der Zeichenfolge ein. Außerdem werden die Instanzen des Textqualifikationszeichens innerhalb der Zeichenfolge verdoppelt. Anschließend schreibt EGL die folgende Zeile in die CSV-Datei:
92,yes,,"Steve ""Sparky"""
Bei identischen Werten mit der bloßen Ausnahme, dass für die Eigenschaft style der Wert CSVStyle.escaped definiert ist, schreibt EGL die folgende Zeile:
92,yes,,Steve ""Sparky""
Wenn für die Eigenschaft style der Wert CSVStyle.escaped und für die Eigenschaft textQualifier der Wert "\\" (ein einzelner Backslash, für den ein zusätzlicher Backslash als Escapezeichen erforderlich ist) definiert ist, schreibt EGL die folgende Zeile:
92,yes,,Steve \"Sparky\"
Wenn eine Zeile von EGL gelesen wird, läuft der umgekehrte Prozess ab. Angenommen beim ursprünglichen Beispiel liest EGL die folgende Zeile aus einer CSV-Datei in den oben dargestellten CSVRecord ein:
92,yes,,"Steve ""Sparky"""
EGL erkennt das erste und das letzte Anführungszeichen als Textqualifikationszeichen und entfernt diese. Außerdem entfernt EGL die zusätzlichen Anführungszeichen und speichert Folgendes in die Variable firstName:
Steve "Sparky"

Weitere Informationen zum Lesen aus und Schreiben in CSV-Dateien finden Sie unter Hinweise zur Anweisung 'add' für Datei-Ein-/Ausgabe und Hinweise zu 'get' für Datei-Ein-/Ausgabe.

Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität für CSV-Datensätze
Plattform Problem
Java™-Generierung und -Debugging Der Ressourcenzuordnungstyp für den CSVRecord sollte seqws sein. CSVRecords verwenden nicht die Felder formFeedOnClose und text in der Ressourcenzuordnung. Die anderen Felder haben die normale Bedeutung.
COBOL-Generierung Der CSVRecord-Stereotyp wird nicht unterstützt.

Feedback