Informationen aus einem späteren Datensatz in einen früheren Datensatz einfügen
Informationen aus einem späteren Datensatz in einen früheren Datensatz einfügen
<eins>{#}</eins><zwei></zwei>
<eins>{#}</eins><zwei></zwei>
<eins>{#}</eins><zwei></zwei>
<eins>{#}</eins><zwei></zwei><eins>1</eins><zwei>2</zwei>
<eins>2</eins><zwei>3</zwei>
<eins>3</eins><zwei>4</zwei>
<eins>4</eins><zwei></zwei>#MAKRO
$$ MODE TUSCRIPT, {}
SET quelle = "Hier der Name der Quelldatei"
SET ziel = "Hier der Name der Zieldatei"
SET daten = FILE(quelle)
- Wir drehen die Reihenfolge der Datensätze um, lesen also von hinten nach vorne
SET daten = REVERSE(daten)
- Wir suchen eine Zahl, die zwischen <eins> und </eins> steht
- {[} = linker Rand; {]} = rechter Rand
BUILD S_TABLE s1 = "|<eins>{[}{#}{]}</eins>|"
- Schleife über alle Datensätze (Zeilen)
- Bei jedem Durchgang wird die aktuelle Zeile aus der Variable daten
- gelöscht (LOOP/CLEAR), die Nummer eingesetzt und dann die so geänderte Zeile
- wieder hinzugefügt. Dadurch spart man sich den Speicher für eine zweite
- Sternvariable.
SET nummer = ""
LOOP/CLEAR zeile = daten
BUILD X_TABLE x1 = "|<zwei></zwei>|<zwei>{nummer}</zwei>|"
SET zeile = EXCHANGE(zeile, x1)
RELEASE X_TABLE x1
SET daten = APPEND(daten, zeile)
- Die Nummer wird für den nächsten Durchgang extrahiert
SET von = SEARCH(zeile, s1, 0, 0, 1, bis)
SET nummer = EXTRACT(zeile, #von, #bis)
ENDLOOP
- Wir drehen die Reihenfolge wieder und schreiben in die Zieldatei
SET daten = REVERSE(daten)
FILE/ERASE ziel = daten
*eofFolgende Problemstellung wurde gemeldet:
Es liegt eine TUSTEP-Datei in folgender Form vor:
<eins>{#}</eins><zwei></zwei>
<eins>{#}</eins><zwei></zwei>
<eins>{#}</eins><zwei></zwei>
<eins>{#}</eins><zwei></zwei><eins>1</eins><zwei>2</zwei>
<eins>2</eins><zwei>3</zwei>
<eins>3</eins><zwei>4</zwei>
<eins>4</eins><zwei></zwei>#MAKRO
$$ MODE TUSCRIPT, {}
SET quelle = "Hier der Name der Quelldatei"
SET ziel = "Hier der Name der Zieldatei"
SET daten = FILE(quelle)
- Wir drehen die Reihenfolge der Datensätze um, lesen also von hinten nach vorne
SET daten = REVERSE(daten)
- Wir suchen eine Zahl, die zwischen <eins> und </eins> steht
- {[} = linker Rand; {]} = rechter Rand
BUILD S_TABLE s1 = "|<eins>{[}{#}{]}</eins>|"
- Schleife über alle Datensätze (Zeilen)
- Bei jedem Durchgang wird die aktuelle Zeile aus der Variable daten
- gelöscht (LOOP/CLEAR), die Nummer eingesetzt und dann die so geänderte Zeile
- wieder hinzugefügt. Dadurch spart man sich den Speicher für eine zweite
- Sternvariable.
SET nummer = ""
LOOP/CLEAR zeile = daten
BUILD X_TABLE x1 = "|<zwei></zwei>|<zwei>{nummer}</zwei>|"
SET zeile = EXCHANGE(zeile, x1)
RELEASE X_TABLE x1
SET daten = APPEND(daten, zeile)
- Die Nummer wird für den nächsten Durchgang extrahiert
SET von = SEARCH(zeile, s1, 0, 0, 1, bis)
SET nummer = EXTRACT(zeile, #von, #bis)
ENDLOOP
- Wir drehen die Reihenfolge wieder und schreiben in die Zieldatei
SET daten = REVERSE(daten)
FILE/ERASE ziel = daten
*eof