Lade...
 

CX_ASCII_FILE::SetRecordFormat

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. 

SetRecordFormat darf nur mit Single-Byte-Codepages verwendet werden (ANSICode und CP850Code). Beim Versuch, eine Unicode-Codepage zu setzen, obwohl bereits ein RecordFormat gesetzt wurde, wird ein Fehler geworfen. Gleiches gilt, wenn bei einer gesetzten Unicode-Codepage SetRecordFormat aufgerufen wird.
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
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.

Funktionsaufruf: Call(SetRecordFormat)