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