gymel
| Beispiele
| Globale Manipulation
Parameterbeispiele: Globale Manipulation
Allgemeines
Eine Exportparameterdatei kann an der hierfür reservierten
Sprungmarke #-# Programmcode für die globale
Manipulation bereitstellen. Diese wird dann durch
den Anwender ausgelöst (etwa mit <Strg>-F10 unter
PRESTO).
In der Praxis wird man aber häfig für einen
bestimmten Zweck eine Parameterdatei benutzen, die
nur die globale Manipulation auszuführen hat.
Sie wird dann mit <Shift>-F4 (unter PRESTO) bei Bedarf
dazugeladen, "Ausgabedatei" möglichst NUL.
Das folgende ist ein Gerüst für eine solche
Parameterdatei (abgespeckte E-1.APR, wichtig
ist die Setzung ks=0, die folgenden Beispiele
gehen alle davon aus.
% Beginn der Parameterdatei
pn="Globale Manipulation: Allgemeine Vorlage"
-------- Konstanten ----------------------------------------------------
zl=0 Zeilenlaenge unbegrenzt (kein Umbruch)
ks=0 Beginn des Ausgabetextes beim ersten Zeichen einschliesslich #
ke="" Kategorie-Ende = Code 0
as="" Aufnahme-Start: Nichts spezielles
ae="" Aufnahme-Ende: Nichts spezielles
-------- Anweisungsteil --------------------------------------------------
#+# % keine Ausgabe im "normalen Export2
#-# % Abschnitt fuer globale Manipulation
% an dieser Stelle folgt die Parametrierung für die
% jeweilige Aufgabe
% ...
#+#
% Ende der Parameterdatei
Die Beispiele
Anhägen an / Wegnehmen von Kategorie
Angenommen, in Kategorie #335 soll am Ende
ein Punkt weggenommen werden, falls vorhanden:
...
#335 F"." M
...
Angenommen, an Kategorie #425 soll das Zeichen
"=" angehängt werden, aber nur, falls
es noch nicht vorhanden ist (damit sichern wir uns auch
gegen Doppelte Ausführung ab)
...
#425 +#00a0 c"=" Z % #00a0 ist Sprungmarke
#425 P"=" M
#00a0
...
Bearbeitung von Mehrfachkategorien
An alle Kategorien #100ff und #120ff
soll "$iv" angehängt werden, falls
Teilfeld $i noch nicht existiert. Wir lassen
dies durch ein Unterprogramm #(A erledigen,
weil jeglicher Test die implizite Wiederholungsschleifen
"++" stören könnte. Im Unterprogramm
greifen wir über die Pseudokategorie #cc
auf die Ursprungskategorie (inklusive ihrer Nummer!) zu.
...
#100 ++ P>A Z
#120 ++ P>A Z
...
#+#
...
#(A
#cc +#00a0 c"$i" Z % Teilfeld vorhanden: nichts tun
#cc P"$iv" M % Teileld anhaengen und speichern
#00a0
#)A
...
Schlagwortverknüpfungen herstellen
In Kategorie #31 befinden sich durch " ; "
getrennte Schlagworte. Sind dies die Ansetzungen von
(In Register 3 übernahmefähig indexierten)
Schlagworten, sollen sie durch eine Verknüpfung
ersetzt werden.
Es wird mit #t{s4} die Einstellung
von "ks=0" aufgehoben und später wieder
mit #t{s0} zurückgestellt. Die
Anwendervariable #ucc enthält anfangs
eine Kopie der Ausgangskategorie und wird nach und
nach verkürzt. Die Variable #ucd
startet leer und sammelt das Ergebnis ein.
Wichtig ist, daß (mittels ti im
Beispiel) in der »q-Tabelle«
(!-Befehle) exakt dieselben Umcodierungen
definiert sind, wie sie auch in den Indexparametern
eingesetzt sind: Sonst scheitert das Nachladen
unter dem Schlagwortbegriff!
...
#t{s4}
#31 +A dcc dcd acc
#nr +#98z Z
% Schleife
#-A
% folgenden Zeile erzwingt die Umcodierung durch y2
#ucc +#98a dx3 e" ;" y2 P" _" |38
% Nachladen war also nicht möglich
% Schlagwort unmodifiziert uebernehmen
#ucc e" ;" p" ; " Acd
#nr +#98y Z
#98a
% Uebernahmeschluessel extrahieren
#ux3 b" _" p" ; _" Acd
#98y
% Schleife weiterfuehren
#ucc +A dcc b"; " Acc
% eingesammelte Kategorie in Satz speichern
#ucd f" ;" p"#31 " M
#98z
#t{s0}
...
#+#
% Index-Umcodierungen laden
ti
submit bugs here