CX_ASCII_FILE::SetRecordFormat
Beschreibung:
Mit dieser Funktion wird ein festes Datei-Format festgelegt. Das bedeutet, dass jeder Satz die gleiche Anzahl an Feldern und ein bestimmtes Feld in jedem Satz dieselbe Länge hat. Dabei spielt es keine Rolle, ob die Datei schon geöffnet ist oder nicht, so dass man zwischen zwei Schreibvorgängen das Format wechseln kann. Unter dem Satzformat ist dabei nicht der komplette Aufbau eines Satzes, sondern nur die Definition der Felder, die für die aktuell anstehende Verarbeitung benötigt werden, zu verstehen.
Code-Beispiel:
In dem Beispiel-Programm wird ein festes Datei-Format vereinbart, bei dem das erste Feld an Position 3 beginnt und 2 Zeichen lang ist und das zweite Feld an Position 9 beginnt und 5 Zeichen lang ist. Die einzelnen Sätze sollen durch den Zeilenvorschub voneinander getrennt werden.
Var(file) CreateTransObject(CX_ASCII_FILE) -> file [ 3 2 9 5 ] 14 TRUE file Call(SetRecordFormat)
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_ASCII_FILE | die Datei |
Top-1 | INTEGER | Wahrheitswert, der anzeigt, ob in dem Vektor auch Positionen enthalten sind | |
Top-2 | INTEGER | die gesamte Satzlänge (ohne den Satz-Trenner) |
|
Top-3 | VECTOR | die Feldlängen (und evt. Positionen) | |
Stack(Out) | Top | - | - |
Der Zahlen-Vektor kann sowohl Längenangaben, als auch Positionsangaben, enthalten. Wird in dem Wahrheitswert TRUE übergeben, so besteht der Vektor aus Paaren, die sich jeweils aus einer Position und einer Längenangabe zusammensetzen. Dabei können u.U. Leerräume entstehen, falls eine Position um mehr als eine Stelle von der Position, die sich aus der Summe der vorhergehenden Position und deren Längenangabe zusammensetzt, entfernt ist. Ein Beispiel hierfür ist weiter unten aufgeführt. Wird hingegen FALSE übergeben, so besteht der Vektor nur aus Längenangaben, was auch zur Folge hat, dass keine Leerräume mehr entstehen können.