#= 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 ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|schneider-lastin}}]] schneider-lastin\\ \\ Das Kommando und seine Spezifikationen lauten:\\ #KOPIERE, QUELLE, ZIEL, MODUS, LOESCHEN, PARAMETER\\ \\ **Musterdatei:**\\ {{files_open:daten:psalm.tf|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 ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|schneider-lastin}} schneider-lastin\\ \\ Das Kommando und seine Spezifikationen lauten:\\ #KOPIERE, QUELLE, ZIEL, MODUS, LOESCHEN, PARAMETER\\ \\ **Musterdatei:**\\ {{files_open:daten:psalm.tf|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 ||
zf+ |silber|
*eof
====== Kopieren mit Zusammenfassen best. Sätze ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|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**\\
1 Text Text 1 Text Text
2 2 Text Text
Text Text 3 Text Text
3 Text Text 4 Text Text
4 5 Text Text
Text Text
5 Text Text
**Skript**\\
#da,ziel,fr=-
#ko,datei.tf,ziel,-std-,+,*
aa ||
za ||
*eof
**Erklärung:** Verwendung findet hier der Parameter **aa** = **A**bschnitts**A**nfang, mit dem mehrere Sätze zusammengefasst werden können.\\ \\
====== Kopieren mit Manipulation der Satznummern 1 ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|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 Ausgangsdatei Zieldatei
1.1 1 1.1 1
1.2 Text Text ...
1.2 Text Text ...
1.3 2 2.1 2
1.4 Text Text ...
2.2 Text Text ...
1.5 3 3.1 3
1.6 Text Text ...
3.2 Text Text ...
1.7 Text Text ...
3.3 Text Text ...
**Script:**\\
#ko,quelldatei,zieldatei,+,+,*
sa ||
*eof
====== Kopieren mit Manipulation der Satznummern 2 ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|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 Ausgangsdatei Zieldatei
1.1 1 1.0 1
1.2 Text Text ...
1.1 Text Text ...
1.3 2 2.0 2
1.4 Text Text ...
2.1 Text Text ...
1.5 5 5.0 5
1.6 Text Text ...
5.1 Text Text ...
1.7 Text Text ...
5.2 Text Text ...
1.8 13 13.0 13
1.9 Text Text ...
13.1 Text Text ...
**Script:**\\
#ko,quelldatei,zieldatei,+,+,*
nr 1 1000
zf+ ||
al ||
el | |
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 [[tuscript:loesungen:kopieren_und_manipulieren#Kopieren mit Manipulation der Satznummern|hier]]**\\ \\ \\
====== Kopieren mit Vergleichstext / Merk-Vergleichstext ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|schneider-lastin}} schneider-lastin (nach einem Skript von N. Bohnert)\\ \\ {{files_open:daten:vglliste.tf|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**\\
1963 ... 1963 ...
1963 ... ...
1974 ... 1974 ...
1983 ... 1983 ...
1983 ... ...
1983 ... ...
1991 ... 1991 ...
1996 ... 1996 ...
**Skript**\\
#da,ergliste,fr=-
#ko,vglliste.tf,ergliste,,+,*
av 1 ||
ev 1 | |
vgl 1 0
xx 1 |* | |
ak1 2 ||
ek1 2 | |
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 [[tuscript:loesungen:kopieren:Ersetzen nach Bedingungen|hier]]**\\ \\
====== Kopieren mit Abfrage ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|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 ("".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 [[tuscript:loesungen:kopieren#Kopieren mit Abfrage|hier.]]**\\
----
[[tustep:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]