8. Modul OSTREAM - ICS Objekte temporär speichern

8.1. Allgemeines

Mit dem Modul OSTREAM (= Objektstrom) können ICS Objekte in temporären Dateien zwischengespeichert und aus dem Zwischenspeicher während der Verarbeitung wieder sequentiell oder über einen Schlüssel ausgelesen werden. Der Modul hat eine sehr ähnliche Funktionalität wie der Modul LIST. Der Unterschied zu LIST besteht darin, das der Zwischenspeicher im Fall von OSTREAM Dateien sind und im Fall von LIST der Hauptspeicher. OSTREAM eignet sich daher für grosse Datenmengen ist dafür aber langsamer als LIST.

OSTREAM wird mit:

|INCL \script\ostream.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

8.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

8.3. Parametermap

Keine Parametermap notwendig.

8.4. Objektmodell

Der Modul OSTREAM speichert bzw. liefert die ICS Objekte so wie die Objekte ihm ursprünglich übergeben wurden. Der Modul OSTREAM hat daher kein eigenes Objektmodell.

8.5. Exportierte Prozeduren und Methoden

Für eine sequentielle Verarbeitung von Objekten.

ProzedurOSTREAM_OPEN ! [s file][]
BeschreibungÖffnet einen Objekstrom mit Namen <file>. <file> wird immer relativ zu OPT.temp_dir angelegt.
Beispiel
'test.dat' OSTREAM_OPEN
ProzedurOSTREAM_READ_OBJECT ! [][b status]
Beschreibung

Liest das nächste Objekt aus dem aktuellen Objektstrom.

Beispiel
OSTREAM_READ_OBJECT [TRUE]
ProzedurOSTREAM_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Alle temorären Dateien werden wieder gelöscht. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
OSTREAM_CLOSE
ProzedurOSTREAM_WRITE_OBJECT1 ! s file
BeschreibungSchreibt das aktuelle IN-Objekt in die temporäre Datei <file>.
Beispiel
... => OSTREAM_WRITE_OBJECT1,test.dat

Für eine Verarbeitung von Objekten über Schlüssel.

ProzedurOSTREAM_WRITE_OBJECT_KEY3 ! s file, s key, m object
BeschreibungSchreibt das Objekt <m> mit dem Schlüssel <key> in die temporäre Datei <file>.
Beispiel
... => OSTREAM_WRITE_OBJECT_KEY3,test.dat,IN.OBJID,IN
ProzedurOSTREAM_WRITE_OBJECT_KEY [s file, s key, m map][]
BeschreibungSchreibt das Objekt <m> mit dem Schlüssel <key> in die temporäre Datei <file>.
Beispiel
'test.dat' IN.OBJID &IN OSTREAM_WRITE_OBJECT_KEY
ProzedurOSTREAM_READ_OBJECT_KEY [s file, s key][m map, b status]
BeschreibungLiest das Objekt <m> mit dem Schlüssel <key> aus der temporäre Datei <file>. Das Objekt <m> wird nur auf dem Stack geliefert, wenn der status = TRUE ist.
Beispiel
'test.dat' '10001' OSTREAM_READ_OBJECT_KEY [m TRUE]

8.6. Skriptbeispiel

! Diese ICS Konfiguration speichert alle LFP Fixpunkte aus 
! einer INTERLIS Datei in einer temporaeren Datei. Am Schluss des 
! Skripts werden die Nummern der in der temporaeren Datei enthaltenen 
! Punkte in die .log Datei ausgegeben.

|LICENSE \license\iltools.lic

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

MAP ILIN_PARAM
   INTERLIS_DEF => \models\Grunddatensatz.ili
   STATISTICS   => ON
   DEBUG        => OFF
END_MAP

MAP INPUT_SOURCES
   I1 => ILIN,OPT.input
   I2 => OSTREAM,lfp.dat
END_MAP

MAP INOUT
   I1 => IN.TOPIC,IN.TABLE
   I1,Fixpunkte,LFP => OSTREAM_WRITE_OBJECT1,lfp.dat
   I1,* => OFF
   I2 => DISPLAY_OBJECT1,IN.Nummer
END_MAP

|INCL \script\util.lib
|INCL \script\ostream.mod
|INCL \script\ilin.mod
|INCL \script\run1.prg