Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

tustep:loesungen:kopieren

Vorbemerkung: Mit dem TUSTEP-Kommando #KOPIERE können Dateien unverändert kopiert oder aber beim Kopieren die Daten (mittels Parametern) auf vielfältige Art analysiert, ausgewertet, modifiziert, ergänzt oder extrahiert werden.

►► Lösungen zu Detailfragen und -Problemen im Zusammenhang mit #KOPIERE finden Sie hier.


Zurück zum Inhaltsverzeichnis - Lösungen und Tipps


Kopieren einer Datei ohne Veränderung der Daten

- schneider-lastin]] schneider-lastin

1. Datei wird unverändert kopiert, die Satznummern bleiben erhalten.
Das Kommando und seine Spezifikationen lauten:
#KOPIERE, QUELLE, ZIEL, MODUS, LOESCHEN

#= 1. Die Quelldatei 'quelle.tf' wird ggf. mit dem Kommando #anmelde angemeldet
#an,quelle.tf

#= 2. Die Zieldatei 'ziel.tf' wird als (permanente) Datei mit dem Kommando #datei erstellt
#da,ziel.tf,seq-ap

#= 3. Datei 'quelle.tf' wird unverändert kopiert (MODUS=-)
#ko,quelle.tf,ziel.tf,-

2. Datei wird beim Kopieren neu durchnummeriert

#= Datei 'quelle.tf' wird neu durchnummeriert (MODUS=+)
#= evtl. vorhandene Daten in der Zieldatei werden gelöscht (LOESCHEN=+)

#ko,quelle.tf,ziel.tf,+,+

Kopieren einzelner Texteinheiten nach Satznummern

- schneider-lastin]] schneider-lastin

Das Kommando und seine Spezifikationen lauten:
#KOPIERE, QUELLE, ZIEL, MODUS, LOESCHEN, PARAMETER

Musterdatei:
psalm.tf [350 KB]


Aus der Datei 'psalm.tf' (= der gesamte Psalter) werden bestimmte Abschnitte (= Psalmen) herauskopiert, im vorliegenden Fall die kompletten Psalmen 12, 15 und 87.

#ko,psalm.tf,psalmziel.tf,-,+,*
nr+       2.0-2.999'15.0-15.999'87.0-87.999
*eof

► Mit dem Parameter nr+ werden die Seiten-Zeilen-Nummern (auch Bereiche) der Sätze angegeben, die kopiert werden sollen; die einzelnen Angaben müssen durch Apostroph getrennt werden. Die Sätze werden in der Reihenfolge eingelesen, in der die Seiten-Zeilen-Nummern angegeben sind. Mehrfachnennungen und Überlappungen sind möglich.

Kopieren einzelner Texteinheiten nach Bedingungen

- schneider-lastin schneider-lastin

Das Kommando und seine Spezifikationen lauten:
#KOPIERE, QUELLE, ZIEL, MODUS, LOESCHEN, PARAMETER

Musterdatei:
psalm.tf [350 KB]


1. Aus der Datei 'psalm.tf' (= der gesamte Psalter) werden diejenigen Sätze (= Verse) kopiert,
die eine bestimmte Zeichenfolge enthalten.
a. die Zeichenfolge „silber“

#ko,psalm.tf,psalmziel.tf,-,+,*
zf+       |silber|
*eof

b. die Zeichenfolgen „silber“ ODER „gold“, aber nicht „golden“

zf+       |silber|gold||golden|

c. die Wörter „Silber“ ODER „Gold“ (aber keine Zusammensetzungen, z.B. „Goldschmuck“)

zf+       |\Silber|\Gold||\Silber{\a}|\Gold{\a}||
          alternativ:
zf+       |\Silber||\Silber{\a}||
zf+       |\Gold||\Gold{\a}||

2. Aus der Datei 'psalm.tf' werden diejenigen Abschnitte (= Psalmen) kopiert,
die die Zeichenfolge „silber“ enthalten

#ko,psalm.tf,psalmziel.tf,-,+,*
aa        |<psalm>|
zf+       |silber|
*eof

Kopieren mit Zusammenfassen best. Sätze

- schneider-lastin schneider-lastin

Aufgabe: In einer Datei sollen bestimmte (TUSTEP-)Sätze zu einem Satz zusammengefasst werden, ohne dass sich die übrige Satzeinteilung der Datei ändert.

Ausgangssituation: linke Spalte – Ergebnis: rechte Spalte

<ken>1</ken> Text Text           <ken>1</ken> Text Text
<ken>2</ken>                     <ken>2</ken> Text Text
Text Text                        <ken>3</ken> Text Text
<ken>3</ken> Text Text           <ken>4</ken> Text Text
<ken>4</ken>                     <ken>5</ken> Text Text
Text Text
<ken>5</ken> Text Text

Skript

#da,ziel,fr=-
#ko,datei.tf,ziel,-std-,+,*
aa        |<ken>|
za        |<ken>|
*eof

Erklärung: Verwendung findet hier der Parameter aa = AbschnittsAnfang, mit dem mehrere Sätze zusammengefasst werden können.

Kopieren mit Manipulation der Satznummern 1

- schneider-lastin schneider-lastin

Aufgabe: Eine Datei, die mehrere Dokumente (etwa Briefe, Urkunden etc.) enthält, soll so umkopiert werden, dass die Seitennummer bei jeder neuen Dokumentnummer um 1 erhöht wird. Die Dokumentnummern stehen im Text (und zwar am Zeilenbeginn) und sind mit <nr>…</nr> getaggt, sie sind lückenlos aufsteigend.

Ausgangsdatei                                 Zieldatei

1.1    <nr>1</nr>                             1.1    <nr>1</nr>
1.2    <p>Text Text ...</p>                   1.2    <p>Text Text ...</p>
1.3    <nr>2</nr>                             2.1    <nr>2</nr>
1.4    <p>Text Text ...</p>                   2.2    <p>Text Text ...</p>
1.5    <nr>3</nr>                             3.1    <nr>3</nr>
1.6    <p>Text Text ...</p>                   3.2    <p>Text Text ...</p>
1.7    <p>Text Text ...</p>                   3.3    <p>Text Text ...</p>

Script:

#ko,quelldatei,zieldatei,+,+,*
sa        |<nr>|
*eof

Kopieren mit Manipulation der Satznummern 2

- schneider-lastin schneider-lastin

Aufgabe: Eine Datei, die mehrere Dokumente (etwa Briefe, Urkunden etc.) enthält, soll so umkopiert werden, dass die Satznummer sich nach der Nummer des Dokuments richtet. Die Dokumentnummern stehen im Text und sind mit <nr>…</nr> getaggt, sie sind aufsteigend, aber nicht fortlaufend. Die Zeilennumer soll mit 0 beginnen.
Vorteile: 1. Ein Dokument kann im Editor gezielt aufgerufen/angezeigt werden; 2. die Satznummern können für die Erstellung von Arbeitsregistern als Referenzen ausgewertet werden.

Ausgangsdatei                                 Zieldatei

1.1    <nr>1</nr>                             1.0    <nr>1</nr>
1.2    <p>Text Text ...</p>                   1.1    <p>Text Text ...</p>
1.3    <nr>2</nr>                             2.0    <nr>2</nr>
1.4    <p>Text Text ...</p>                   2.1    <p>Text Text ...</p>
1.5    <nr>5</nr>                             5.0    <nr>5</nr>
1.6    <p>Text Text ...</p>                   5.1    <p>Text Text ...</p>
1.7    <p>Text Text ...</p>                   5.2    <p>Text Text ...</p>
1.8    <nr>13</nr>                           13.0    <nr>13</nr>
1.9    <p>Text Text ...</p>                  13.1    <p>Text Text ...</p>

Script:

#ko,quelldatei,zieldatei,+,+,*
nr        1 1000
zf+       |<nr>|
al        |<nr>|
el        |</nr>|
liv       i0
rr        s11 = i0; s12 = 0; s13 = 1;
spn       3
*eof

Erklärung: Die Dokumentnummer wird mit den Parametern al, el, liv gelesen und mit liv in die Variable i0 abgespeichert. Der Wert der Variable i0 wird mit dem Parameter rr auf die Variable s11, welche die Seitennummer enthält, gespeichert, die Variable s12, welche die Zeilennummer enthält, wird auf 0 gesetzt. Der Parameter nr ist notwendig, wenn ein Dokument (Brief, Urkunde etc.) mehr als 60 (TUSTEP-)Sätze (Voreinstellung) umfasst; im vorliegenden Beispiel wird die Anzahl der möglichen Zeilen pro (TUSTEP-)Seite auf 1000 hochgesetzt.
Eine Lösung der vorstehenden Aufgabe mit TUSCRIPT finden sie hier


Kopieren mit Vergleichstext / Merk-Vergleichstext

- schneider-lastin schneider-lastin (nach einem Skript von N. Bohnert)

vglliste.tf [2 KB]


Aufgabe: Eine Liste mit Jahreszahlen soll so umkopiert werden, dass nachfolgende gleiche Jahreszahlen unterdrückt werden.

Ausgangssituation: linke Spalte – Ergebnis: rechte Spalte

<j>1963</j> <t>...</t>            <j>1963</j> <t>...</t>
<j>1963</j> <t>...</t>                        <t>...</t>
<j>1974</j> <t>...</t>            <j>1974</j> <t>...</t>
<j>1983</j> <t>...</t>            <j>1983</j> <t>...</t>
<j>1983</j> <t>...</t>                        <t>...</t>
<j>1983</j> <t>...</t>                        <t>...</t>
<j>1991</j> <t>...</t>            <j>1991</j> <t>...</t>
<j>1996</j> <t>...</t>            <j>1996</j> <t>...</t>

Skript

#da,ergliste,fr=-
#ko,vglliste.tf,ergliste,,+,*
av    1   |<j>|
ev    1   |</j>|
vgl   1   0
xx    1   |<j>*</j>|           |
ak1   2   |<j>|
ek1   2   |</j>|
spn       23
sp2        3 5
*eof

Erklärung: Ein mit den Parametern AV und EV definierter Vergleichstext (die Jahreszahl) wird mit einem zuvor gemerkten Vergleichstext verglichen. Parameter VGL prüft, ob die beiden Texte übereinstimmen. Im Falle von Ja wird die Jahreszahl mit dem Parameter XX entfernt und die Texteinheit in die Zieldatei ausgegeben (3); im Falle von Nein wird die Texteinheit unverändert in die Zieldatei ausgegeben (23). Anschließend wird derselbe Vergleichstext (die Jahreszahl) mit den Parametern AK1 und EK1 nochmals eingelesen und im Programmteil 5 zum neuen Merk-Vergleichstext bestimmt, der danach mit dem nächsten eingelesenen Vergleichstext verglichen wird (siehe „Logischer Programmaufbau“ von #KOPIERE im Handbuch).

Die Parameter AV und AK1 können weggelassen werden; sie wurden hier nur zur Verdeutlichung aufgenommen.

Eine Lösung dieser Aufgabe mit TUSCRIPT finden sie hier

Kopieren mit Abfrage

- schneider-lastin schneider-lastin

Aufgabe: Innerhalb eines „#KOPIERE“ mit einer Austauschanweisung soll der Benutzer durch Ja-Nein-Abfrage entscheiden können, ob im Ausgabesatz ein Asteriscus eingefügt werden soll oder nicht, ob also

xx        |eingabe|ausgabe*|
            oder
xx        |eingabe|ausgabe|

ausgeführt werden soll.

Einfache Lösung (Skript: N. Bohnert):

#makro
$$? "Soll ein Asterisk angefügt werden? (Ja/Nein)", antw="ja"
#ko,quelle,ziel,,+,*
$$ IF ("<antw>".AB."Ja") THEN
xx        |eingabe|ausgabe*|
$$ ELSE
xx        |eingabe|ausgabe|
$$ END IF
*eof*
*eof


Lösung mit Frage im Pop-up-Fenster mit Schaltflächen (Skript: M. Trauth):

#makro
$$ MODE TUSCRIPT, {}

SET system = SYSTEM()
IF (system .EQ. "WIN") THEN
   SET frage = *
      DATA ======================================
      DATA ====     Asteriskus ausgeben?     ====
      DATA ======================================
   SET antwort = QUESTION ("Frage:", frage, YES)
ELSE
   ASK "Asteriskus ausgeben?  (j/n*) ", antwort = "n"
END IF
MODE DATA
#ko,quelle,ziel,,+,*
$$ IF (antwort .AB. "ja", "yes") THEN
xx        |eingabe|ausgabe*|
$$ ELSE
xx        |eingabe|ausgabe|
$$ END IF
*eof*
*eof

► Die Frage nach dem Betriebssystem (system) ist nötig, weil die Makrofunktion QUESTION unter Linux nicht funktioniert.
Eine Lösung der vorstehenden Aufgabe (nur) mit TUSCRIPT finden sie hier.


Zurück zum Inhaltsverzeichnis - Lösungen und Tipps

tustep/loesungen/kopieren.txt · Zuletzt geändert: 2021/03/16 05:34 (Externe Bearbeitung)