21. Modul TXTOUT - Textdateien schreiben

21.1. Allgemeines

Mit dem Modul TXTOUT können Objekte in eine Textdatei geschrieben werden.

Der Modul TXTOUT wird mit:

|INCL \script\txtout.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

21.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

21.3. Parametermap TXTOUT_PARAM

Folgende Parameter können in der Map TXTOUT_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
TRACEoON oder OFF, Default = OFF. Tracemodus ein oder aus.
STATISTICSoON oder OFF, Default = OFF. Objektstatistik am Ender der .log Datei anzeigen.
HEADERoON oder OFF, Default = ON. Soll Zeilenheader geschrieben werden.
DELIMITERostring, Default = 9. ASCII Code oder Character für Trennzeichen. 9 = Tabulator.
TEXTENCLOSUREostring, ASCII Code oder Character für Einfassung
OUTPUT_APPENDoON oder OFF, Default = OFF. Soll der Output an ein bestehendes Outputfile angehängt werden.

21.4. Objektmodell

Der Modul verlangt für jedes OUT-Objekt folgende Systemkomponenten:

Komponentereq/optBeschreibung
OUT.FILE(s) r

File für Objekt.

OUT.<Attribute>(*) o

Attribut mit Wert.

Dieses Objektmodell gilt für die Anwendung mit der Prozedur TXTOUT_WRITE_OBJECT und TXTOUT_WRITE_OBJECT1.

21.5. Record Definitionen

Mit Record Definitionen können nicht Objekte vereinfacht geschrieben werden. Die Record Definitionen werden von der Prozedur TXTOUT_WRITE_RECORD1 verarbeitet. Eine Record Definition sieht wie folgt aus.

MAP RECORD_<name>
   FILE => <FILE-Name>
   :
   <Attribute-Name> => <Attribute-Value>
   :
END_MAP

Die einzelnen Bestandteile einer Record-Definition sind:

RECORD_<name>

Eine Record Definition ist eine Map. Der Map-Name muss mit dem Prefix RECORD_ beginnen und einen eindeutigen Namen <name> für die Record Definition beinhalten.

FILE

Diese Komponente ist required und definiert das Output-File.

<Attribute-Name>

Definiert als Komponente einen Attribut-Namen des Files. Es können beliebig viele Attribute als Komponenten definiert werden.

<Attribut-Value>

Definiert den Wert für das Attribut. Als Wert können absolute Werte oder ICS-Variablen, die einen Wert beinhalten - z.B. IN.OBJID - verwendet werden.

Beispiel einer Record Definition.

MAP RECORD_LFP1
   FILE     => LFP1.txt
   Art      => IN.TABLE
   Nummer   => IN.Nummer
   X        => IN.X
   Y        => IN.Y
   Z        => IN.Z
END_MAP

21.6. Exportierte Prozeduren und Methoden

ProzedurTXTOUT_OPEN ! [s file][]
BeschreibungErzeugt die Textdatei <file>. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
'c:\test.txt' TXTOUT_OPEN
ProzedurTXTOUT_WRITE_OBJECT ! [][]
Beschreibung

Schreibt das OUT-Objekt in die Outputdatei.

Beispiel
&OUT MAPCLEAR
'data.txt'   => OUT.FILE
'hello world => OUT.Name
TXTOUT_WRITE_OBJECT
ProzedurTXTOUT_WRITE_OBJECT1 ! file
Beschreibung

Schreibt das OUT-Objekt in die Outputdatei.

Beispiel
... => TXTOUT_WRITE_OBJECT1,data.txt
ProzedurTXTOUT_WRITE_RECORD1 ! record
Beschreibung

Schreibt einen Record.

Beispiel
... => TXTOUT_WRITE_OBJECT1,RECORD_1
ProzedurTXTOUT_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
TXTOUT_CLOSE

21.7. Skriptbeispiel

! Dieser Skript uebersetzt Fixpunkte einer INTERLIS
! Datei in eine Textdatei. Die erste Zeile der Textdatei
! enthaelt alle Attributnamen. Die weiteren Zeilen enthalten
! die Punktfelder getrennt durch Tabulatorzeichen (ASCII = 9).

MAP USER_INPUT1
   DIALOG => FILE
   MESSAGE => 'Enter .itf Input File'
   FILE_FILTER => itf
   FILE_EXISTS => TRUE
   OPT => input
END_MAP

MAP USER_INPUT2
   DIALOG => FILE
   MESSAGE => 'Enter .txt Output File'
   FILE_FILTER => txt
   FILE_EXISTS => FALSE
   OPT => output
END_MAP

MAP ILIN_PARAM
   INTERLIS_DEF => \models\DM01AVCH24D.ili
   STATISTICS   => ON
   ENUM_TO_TEXT => ON
END_MAP

MAP TXTOUT_PARAM
   STATISTICS   => ON
   DELIMITER    => 9       ! ASCII-Code or Character
   HEADER       => ON      ! ON|OFF
END_MAP

MAP RECORD_LFP1
   FILE     => LFP1.txt
   Art      => IN.TABLE
   Nummer   => IN.Nummer
   X        => IN.X
   Y        => IN.Y
   Z        => IN.Z
END_MAP

MAP RECORD_LFP2
   FILE     => LFP2.txt
   Art      => IN.TABLE
   Nummer   => IN.Nummer
   X        => IN.X
   Y        => IN.Y
   Z        => IN.Z
END_MAP

MAP RECORD_LFP3
   FILE     => LFP3.txt
   Art      => IN.TABLE
   Nummer   => IN.Nummer
   X        => IN.X
   Y        => IN.Y
   Z        => IN.Z
END_MAP

MAP INPUT_SOURCES
   I1 => ILIN,OPT.input
END_MAP

MAP INOUT
   I1 => IN.TOPIC,IN.TABLE
   I1,FixpunkteKategorie1,LFP1 => LFP_prepare_0,R_1,RECORD_LFP1
   I1,FixpunkteKategorie2,LFP2 => LFP_prepare_0,R_1,RECORD_LFP2
   I1,FixpunkteKategorie3,LFP3 => LFP_prepare_0,R_1,RECORD_LFP3
   I1,* => OFF
END_MAP

MAP MACRO ! macros
   R_1  => TXTOUT_WRITE_RECORD1
   DIN  => DISPLAY_OBJECT1,IN
   DOUT => DISPLAY_OBJECT1,OUT
END_MAP

PROCEDURE LFP_prepare_0
  IN.Geometrie POINTX '3' ROUND => IN.X
  IN.Geometrie POINTY '3' ROUND => IN.Y
  IN.HoeheGeom        '3' ROUND => IN.Z
END_PROCEDURE

|INCL \script\ilin.mod
|INCL \script\txtout.mod
|INCL \script\run1.prg