`Vorangehender Teil`   /   `Fortsetzung` 

11.2.3.4  Manipulationsbefehle, Vergleiche, Sprünge, Unterprogramme

		An einem Datenfeld, dessen Beginn und Länge mit den vorgenannten Befehlen bestimmt wurde, können gewisse Bearbeitungen vorgenommen werden, bevor es tatsächlich abgespeichert (d.h. in den allegro-Datensatz übernommen) wird. 
		Zwischen den Zeilen können, wie beim Export, Leerzeilen und mit Leerzeichen beginnende Kommentarzeilen stehen. 
		Wichtiger Unterschied zur Exportsprache: jeder Befehl steht auf einer eigenen Zeile. 

_ CS1	Lokale Ersetzung, mehrfache Ausführung
_ CS2	wirkt wie die globale Ersetzung (-Ø 11.2.2), aber nur in der aktuellen Kategorie. Jedes vorkommende CS1 wird durch CS2 ersetzt. 
		Sonderfall: wenn das letzte Zeichen von CS2 der Code 0 ist, wird zugleich automatisch das Feldende auf diese Position gesetzt, der hinter CS1 stehende Teil also abgeschnitten. 

%% CS1	Lokale Ersetzung, einfach
_ CS2	wie oben, jedoch wird nur das erste CS1 in der aktuellen Kategorie durch CS2 ersetzt. 
		Sonderfall: Wenn das letzte Zeichen von CS2 der Code 0 ist, wird automatisch das Feldende auf diese Position gesetzt. (Dieser Befehl kann nicht global angewandt werden.) 
		Es kann mehrere lokale Ersetzungsbefehle hintereinander geben. Die Anzahl ist nicht begrenzt. Man muß nur darauf achten, daß jeder Befehl aus zwei Zeilen besteht. 

i k		Ignoriere führende Nullen (k=48), Leerzeichen (k=32) etc. 
		Wenn der ASCI-Code k ein- oder mehrfach am Anfang des aktuellen Feldes steht, wird er weggelassen, d.h. der Textzeiger wird hinter diese Zeichen gestellt. k ist eine Dezimalzahl. 

.		Punkt am Ende nicht beseitigen
		Am Ende eines Datenfeldes werden normalerweise die Interpunktionszeichen ".,:;" sowie Leerzeichen beseitigt. Der Punkt am Ende bleibt stehen, wenn man diesen Befehl gibt. (Z.B. wendet man dies an bei Feldern, die meist am Ende eine Abkürzung enthalten. Wenn am Ende des Feldes eine einbuchstabige Abkürzung steht, wird der Punkt nicht entfernt.) 
		
:		Interpunktion am Ende nicht beseitigen
		Alle evtl. am Ende des Feldes stehenden Interpunktionszeichen bleiben stehen. 

N		Nichtsortierwort am Anfang kennzeichnen
		Das erste Wort der fertig aufbereiteten Kategorie (nicht des Arbeitstextes!) wird mit der Liste der Artikel verglichen. Wenn es darin vorkommt, wird es als Nichtsortierwort gekennzeichnet. (Vgl. dazu die Befehle n und N in der Konfigurationsdatei, Anh.A.) Die Anwendung erfolgt nicht auf den momentanen Arbeitstext, sondern auf das fertige Datenfeld, wenn der Paragraph abgearbeitet ist. 
		Empfehlung, wenn's nicht klappt: anschließend noch diesen Abschnitt 
		#xyz
		kxyz 
		N 

		Write-Befehle, Hintergrundspeicherbefehle
w CS	Präfix : CS wird sofort in den Transferbereich geschrieben, der Arbeitstext bleibt unverändert 
W CS	Postfix : der Arbeitstext wird in den Transferbereich geschrieben, CS dahinter. Nach einem W-Befehl ist also der Arbeitstext nicht mehr für Änderungen verfügbar! 
		Die Zeichenkette CS wird in die allegro-Kategorie eingefügt, und zwar bei 'w' vor bzw. bei 'W' hinter den importierten Text. Vgl. dazu den bei Befehl 'l' beschriebenen Sonderfall. 

o CS	wie  w CS , aber: Ausführung auch bei Wiederholungen mit dem Befehl  m"xyz" , wo  w CS  nur beim ersten Feld ausgeführt wird. Welche von beiden Möglichkeiten man nutzt, hängt vom gewünschten Ergebnis ab. Bei diesem Befehl wird  CS  hinter jedem xyz erscheinen, bei w nur am Beginn des gesamten Feldes,

Kxy		Arbeitstext zwischenspeichern : der aktuelle Arbeitstext wird in die Anwendervariable #uxy übertragen.  Mit kuxy (!)  kann man wieder darauf zugreifen (--> 10.2.6.3; 11.2.3.2). 
		Dabei erfolgt keine Umcodierung mittels der u-Befehle in den Exportparametern! Das geschieht aber im Normalfall, wenn der Arbeitstext am Ende eines Paragraphen in ein Datenfeld übernommen wird.

Yxy		Transferbereich zwischenspeichern : Innerhalb eines Paragraphen können mehrere Positionierungsbefehle vorkommen. Jeder neue solche Befehl bewirkt, daß der Arbeitstext in einen anderen Bereich kopiert wird, den Transferbereich. Dieser enthält praktisch den schon fertiggestellten Teil der neuen Kategorie. Der Befehl W CS (s.o.) bewirkt ebenfalls, daß der Arbeitstext an den Transferbereich gehängt wird (und CS selbst hintendran). Der Befehl Yxy kopiert den Inhalt dieser noch unfertigen Kategorie in die Anwendervariable #uxy. 

v a=x	Hilfsvariable a auf den Wert x setzen; a = Buchstabe oder Ziffer, x = beliebiges Zeichen 
		Alle Buchstaben und Ziffern kann man als Namen für Hilfsvariablen benutzen und ihnen beliebige Zeichen als Werte zuweisen. An anderer Stelle kann man diese Variablen mit dem Befehl  V a=y  wieder auswerten (-Ø 11.2.3.5). Besonders wichtig: die Werte bleiben auch für nachfolgende Sätze erhalten. 
h		Hierarchie-Ebene erhöhen   (sehr selten nötig) 
		Haupt- und Untersätze laufen als getrennte Sätze durch die Verarbeitung, wenn re auch zwischen Haupt- und Untersatz steht (-Ø 11.2.1, Typ C) 
		Wenn eine Bedingungsprüfung ergeben hat, daß der aktuelle Satz ein Untersatz des vorangehenden ist, erhöht dieser Befehl die Hierarchiekennung des Satzes, d.h. er macht #01 aus #00 etc. Wichtig: vorher muß die Kategorie #00 eingerichtet werden, sonst würde z.B. #21 aus #20 gemacht, wenn zufällig #20 die erste Kategorie des aktuellen Satzes ist. Wenn man also mit hierarchischen Sätzen arbeitet, sollte man in der Kategorieliste immer mit #00 beginnen. 
H		Neuen Datensatz beginnen
		Der aktuelle Satz wird beendet, die aktuelle Kategorie kommt bereits in den nächsten Datensatz, der nun neu angelegt wird. Mit diesem Befehl kann man erreichen, daß aus einem Fremdsatz mehrere Datensätze gemacht werden. Es wird ein Hauptsatz sein, falls man nicht als erstes dann eine Kategorie #01, #02 etc. erzeugt. 
		Andere Möglichkeit: man legt innerhalb der Bearbeitung eines Satzes eine neue Kategorie #00 an. (D.h. die erste in der CFG definierte Kategorie.) 
U		Zur vorigen Aufnahme zurückkehren
		Von der aktuellen Aufnahme wird zur vorhergegangenen zurückgekehrt, die aktuelle Kategorie wird dort einsortiert. Mit dem Befehl H (im nachfolgenden Paragraphen!) kann man erneut zurückschalten. (Bis V15.0 wurde bei Vorliegen dieses Befehls immer intern auf manuellen Modus geschaltet, als ob man  -m0  gegeben hätte. Dieses Problem wurde beseitigt.) 
x		Feld im Fremdsatz ungültig machen
		Das mit dem letzten Positionierungsbefehl angesteuerte Feld im Fremddatensatz wird dort ungültig gemacht, so daß es mit einem nachfolgenden Positionierungsbefehl nicht mehr gefunden wird. Sinnvoll ist dies, wenn bestimmte Feldkennungen mehrfach vorkommen können, aber nicht alle unter derselben allegro-Kategorie mit Mehrfachbesetzung untergebracht werden sollen, also der Befehl m nicht anwendbar ist. 

@X		Umsetzung per Konkordanzliste

		Zusätzlich zu den globalen und lokalen (kategoriespezifischen) Ersetzungen gibt es die Möglichkeit, umfangreichere Umsetzungen mit Hilfe von Konkordanzlisten vorzunehmen. 
		Die lokalen Ersetzungen werden in der gesamten Kategorie, nicht nur am Anfang, ausgeführt. 
		Allzuviele globale Ersetzungen verlangsamen den Ablauf. Man sollte sie nur anwenden, wenn die zu ersetzenden Zeichenketten innerhalb des Datensatzes an beliebigen Stellen stehen können. Darunter fallen Zeilenbegrenzungen (die aus mehr als einem Zeichen bestehen) und Einrückungen umbrochener Zeilen. 
		Eine Konkordanzliste ermöglicht die Zuordnung und den Austausch von Kategorieinhalten durch andere Inhalte, und zwar mit hoher Geschwindigkeit. 

	Dazu folgendes Beispiel, das in der Import-Parameterdatei MARCBF.AIM enthalten ist: 
	Die Library of Congress Classification ist in der MARC-Kategorie 050 zu finden. Für die Datenbankstruktur CAT (-Ø 1.0) sollen die Hauptgruppen dieser Klassifikation in die SWD-Sachgruppen der Deutschen Bibliographie umgesetzt werden. Das leistet dieser Importparagraph: (für das Bibliofile-MARC) 

         Befehle    Kommentare 

         #30a	"allegro"-Kategorie #30a soll das Element aufnehmen:
         T 0 50	finde die MARC-Kategorie ("tag") 050
          		(z.B. für das OCLC-MARC müßte es hier D "050" heißen, 
 				für das BNB-MARC von der CD-ROM dagegen s "050" ...)
         @A 		Konkordanzliste A zur Umsetzung benutzen  (s.u.)
         m"; "	kann mehrfach auftreten: Elemente mit "; " trennen.

	und dazu gehört die Konkordanzliste A, die am Ende der Import-Parameterdatei steht und so beginnt und endet: 

		@@A		Beginn Liste A
		"A"		wenn der Kategorieinhalt mit "A" beginnt, wird dieses
		"01" 0	durch die Zeichenfolge "01" und Byte 00 (als Abschluß) ersetzt.

		"BF10"	"BF10" wird durch "11p" 0  ersetzt.
		"11p" 0 

		"BF"	andere mit "BF" beginnende Klassifikationen durch "11" 0
		"11" 0 
		"BA" 
		"10" 0 
		   ... usw.  usf. ...

		"Z2"  	electronic publishing
		"28" 0   	wird zu 28 = Informatik geschlagen

		"Z"    	Buchwesen wird ansonsten Gruppe 02 zugeordnet
		"02" 0  
		@		Ende der Liste

Regeln für Konkordanzlisten: 

 •	Es kann mehrere solche Listen geben. Jede kann in mehr als einer Kategorie zur Anwendung kommen. 
 •	Die Listen stehen am Ende der Import-Parameterdatei, hinter dem letzten Paragraphen der Kategorieliste. 
 •	Jede Liste beginnt mit @@X (mit einem Großbuchstaben X) und endet mit @ 
 •	Die Liste besteht aus Paaren von Zeichenketten, die in der üblichen CS-Notation anzugeben sind (druckbare Zeichen in "..", Steuerzeichen als Dezimalzahlen). Die jeweils erste Zeichenkette des Paares wird durch die zweite ersetzt, aber nur, wenn sie am Anfang des vorher aufbereiteten Kategorietextes steht. Der Rest des Textes bleibt erhalten, es sei denn, die zweite Zeichenkette endet mit 0 (siehe oben!). 
	Im Prinzip ist also die Syntax dieselbe wie bei den anderen Ersetzungen, nur ohne das Zeichen '_' am Anfang. Alle Listen einer Parameterdatei können zusammen 1.000 solche Paare von Zeichenketten enthalten. Es müssen keine Leerzeilen zwischen den Paaren stehen, doch verbessert das die Übersicht. 
 •	Die Länge einer Zeichenkette ist auf 255 Zeichen begrenzt, die Gesamtlänge der Konkordanzen dadurch, daß alle Parameter zusammen (Import und Export) in einen Bereich von 64K passen müssen. 
 •	Kommentare können, wie sonst auch, durch mindestens zwei Leerzeichen abgesetzt oder auf eigenen Zeilen, die mit Leerzeichen beginnen, zwischengefügt werden. 
 •	Der eigentliche Austausch wird durch den Befehl @X vorgenommen, der nach eventuellen Manipulationsbefehlen eingesetzt wird (s.o.). Bei diesem Vorgang wird die Liste von oben nach unten abgearbeitet. Deshalb hat man die Möglichkeit, wie man oben sieht, z.B. "Z2" durch "28" zu ersetzen, und danach dann alle anderen mit "Z" beginnenden Zeichenketten durch "02". D.h.: die Liste ist nicht alphabetisch zu ordnen, sondern so, daß die Abarbeitung sinnvolle Resultate liefert. 

un	Standard-Unterprogramm n ausführen

		Es gibt mehrere vorgefertigte Standard-Unterprogramme für besondere Aufgaben: 
	   n =  1	Jahreszahl aus dem Text herauslösen. Im Textfeld wird nach einer Jahreszahl gesucht und nur diese dann in das aktuelle allegro-Feld übernommen. 
		   2	Römische Zahlen in Großbuchstaben umsetzen: die Buchstaben ivxlcdm werden in Großbuchstaben umgesetzt. (Anwendbar z.B. bei den Seitenzahlen aus MARC-Daten) 
		   3	Namen in RAK-WB-Form ändern. Der zweite Vorname wird auf die Initiale gekürzt, weitere Vornamen weggelassen (nicht mehr zu empfehlen, die Regel wurde abgeschafft). 
		   4	Nur die erste Initiale wird übernommen, der Rest und alle anderen Vornamen entfallen. 
		   5	alle Vornamen auf Initialen kürzen 
		   6	Bindestriche in ISBN einsetzen (in MARC-Daten ist die ISBN oft ohne Bindestriche angegeben). Bei mit '9' beginnenden ISBNs gibt es aber Ungenauigkeiten. 
		   7	MARC subfield codes durch "--" ersetzen. 
		   8	MARC subfield codes umsetzen: aus "?x" wird " x) " 
		   9	Nichtsortierkennzeichnung gemäß MAB (^Der ^Name der Rose) ersetzen durch Kennzeichnung gemäß NMN (¬Der Name der Rose). 
		  10	Zusatz zum Sachtitel groß schreiben. Der erste Buchstabe hinter der Zeichenkombination " : " wird in einen Großbuchstaben umgewandelt. 
		  11	Jedes Wort des Datenfeldes mit großem Anfangsbuchstaben versehen. Wenn die Fremddaten z.B. alle in Großbuchstaben sind, setzt man vorher mit dem Befehl 
			y A/Z a
			alles in Kleinschreibung um und wendet dann u11 bei jedem Datenfeld an, wo es sein soll. 
		  12	Umsetzung Groß->klein auf Feldebene. Wenn z.B., wie bei "Current Contents on Diskette", ein einzelnes Feld in Großbuchstaben ankommt, kombiniert man  (auf zwei Zeilen hintereinander, u12  u11, dann wird es wie gewünschtin Normalschrift umgesetzt. Umlaute werden berücksichtigt, andere Zeichen (z.B. akzentuierte Buchstaben) jedoch nicht. 
		Vor der Verwendung von 3 - 5 wird ausdrücklich gewarnt: erstens hat man die RAK-WB-Form der Personnenamen so gut wie abgeschafft, zweitens, wenn man es denn will, kann man diese Form, z.B. für einen Zetteldruck, auch beim Export herstellen. Wenn man schon vollständige Namen bekommt (z.B. von der DB, die nie gekürzt hat), warum sollte man sie dann verstümmeln? 

>P		Eigenes Unterprogramm ausführen
		Hat man irgendwo in einem anderen Paragraphen (weiter oben in der Liste) eine Zeilengruppe mit dem Buchstaben P markiert (siehe unten), kann diese Zeilengruppe von jedem anderen Paragraphen aus aufgerufen werden. Sie wird dann ausgeführt und auf den aktuellen Arbeitstext angewendet, als wäre sie Teil desselben Paragraphen. P kann jedes beliebige Zeichen sein, d.h. man kann sehr viele Unterprogramme machen. Hier jedoch, im Gegensatz zu den Sprungmarken, kann nur ein einzelnes Zeichen als Name benutzt werden. Außerdem sind keine Verschachtelungen möglich, d.h. kein Aufruf eines UP aus einem anderen heraus. 

(P		Unterprogramm P beginnt	Diese Befehle müssen innerhalb desselben Paragraphen stehen. Sie stören 
)P		Unterprogramm P endet		den Ablauf selbst nicht, bilden aber eine Zeilengruppe, die von anderswo (weiter unten) als Unterprogramm aufrufbar ist. Diese zwei Befehle müssen jeweils auf eigener Zeile stehen. (Siehe auch: Vergleichsbefehle, 11.2.3.5) 

Steuerbefehle : Vergleiche und Sprünge

Außer denjenigen Befehlen, die sich direkt auf einzelne Kategorien beziehen, gibt es auch noch einige Befehle zur Ablaufsteuerung. Hierdurch erst wird die Importsprache tatsächlich zu einer speziellen Programmiersprache. 

Wichtig: Diese Befehle können nur innerhalb von Paragraphen vorkommen, nicht dazwischen. Also z.B. nicht sofort hinter einer Sprungmarke: dort kann nur eine Kategorie-Angabe stehen. Auch nicht sofort unter einer Kategorie-Angabe, dort muß zuerst ein Positionierungsbefehl stehen. 

11.2.3.5  Vergleichsbefehle

Alle Vergleichsbefehle haben dieselbe Wirkungsweise: Die einem Vergleichsbefehl folgende Zeile des Paragraphen wird nur ausgeführt, wenn die Bedingung erfüllt ist, sonst wird sie übergangen. Wenn die betr. Zeile ein Sprungbefehl ist, ergibt sich dadurch auf einfache Weise ein bedingter Sprung. 
Textzeiger und Textlänge bleiben unverändert. 
Umwandlungen durch y-Befehl und globale Ersetzungen sind bei den Vergleichen zu berücksichtigen, denn sie werden vorher, gleich nach dem Einlesen, ausgeführt. 

Sonderfälle: 
	•	Wenn auf den Vergleichsbefehl ein lokaler Ersetzungsbefehl folgt, der ja immer aus zwei Zeilen besteht (-Ø 11.2.3.4), wird das Programm im Falle eines negativen Vergleichsergebnisses diese Zeilen beide übergehen. Also kann man sehr leicht Ersetzungen von Vergleichen abhängig machen. 

	•	Wenn die dem Vergleichsbefehl folgende Zeile nur aus "(P"  oder "(" besteht, werden alle nachfolgenden Zeilen übergangen, bis eine kommt, die mit ")" anfängt. Also kann man Befehle ganz einfach zu Zeilengruppen zusammenfassen (aber immer nur innerhalb eines Paragraphen!), die als Ganzes ausgeführt oder übergangen werden. Wichtig ist, daß die Klammer jeweils am Zeilenanfang stehen muß und dahinter höchstens noch ein Kommentar. Die Klammern bilden demnach eigene Befehlszeilen. Ist ein Buchstabe oder anderes Zeichen hinter der Klammer, kann diese Zeilengruppe von weiter unten als Unterprogramm aufgerufen werden (siehe oben). 

= CS	Prüfen auf Gleichheit
= #nnn		Mit Beginn an der Stelle des vorher ermittelten Textzeigers wird der Text mit CS verglichen. Bei Gleichheit wird die nachfolgende Zeile(ngruppe) ausgeführt, sonst wird sie übergangen. Statt einer Zeichenkette CS kann auch eine Kategorienummer #nnn verwendet werden oder eine #u-Variable. Deren Inhalt wird dann zum Vergleich benutzt. 

L n CS	Vergleich an anderer Position
R n CS		Der Vergleich wird n Zeichen links bzw. rechts vom Textzeiger ausgeführt 

c CS	Ist CS im Fremdfeld enthalten? 
			Wenn die Zeichenkette CS in der aktuellen Fremdkategorie vorkommt, wird die nächste Zeile(ngruppe) ausgeführt, sonst übergangen. 
z CS	dasselbe, aber Groß-/Kleinschreibung werden ignoriert (CS in Kleinbuchstaben angeben) 
C CS	Ist CS in der gesamten Aufnahme enthalten? 
			Wenn die Zeichenkette CS irgendwo in der eingelesenen Aufnahme vorkommt, wird die nächste Zeile(ngruppe) ausgeführt. (s.a. -Ø 11.2.3.2) 
Z CS	dasselbe, aber Groß-/Kleinschreibung werden ignoriert (CS in Kleinbuchstaben angeben) 
V a=y	Hilfsvariable prüfen : wenn Hilfsvariable a den Wert y hat, nächste Zeile(ngruppe) ausführen. Die Hilfsvariable a muß vorher mit einem Wert besetzt worden sein (-Ø 11.2.3.4). 

11.2.3.6  Sprungbefehle

/		Nächste Zeile(ngruppe) bedingungslos übergehen
			Sinnvoll ist dies nur hinter einem Vergleichsbefehl: die Vergleichslogik wird dadurch umgekehrt. Wenn eine Zeilengruppe folgt (runde Klammern am Anfang und Ende) wird sie als Ganzes übergangen (-Ø 11.2.3.5 unter "Sonderfälle"). 

+LABEL	Feld abschließen, dann Sprung
			Das Textfeld wird mit der vorher ermittelten Länge in die allegro-Kategorie #xxf übertragen, dann sucht das Programm die Sprungmarke -LABEL (s.u.) und macht mit dem darauf folgenden Paragraphen weiter. Hier kann LABEL ein beliebig langes "Wort" aus Buchstaben und Ziffern sein, Sonder- und Leerzeichen sind nicht erlaubt. 
			(Man beachte den Unterschied zum Exportprogramm, wo leider nur Einzelzeichen als Sprungmarken erlaubt sind.) 

qLABEL	Sprung ohne Speicherung ("quit") 
			Hinter einem Vergleichsbefehl kann es sinnvoll sein, die Bearbeitung des Feldes abzubrechen, ohne es zu speichern. Dazu dient dieser Befehl. Der Paragraph wird ohne Wirkung beendet, #xxf wird nicht gespeichert, ansonsten wirkt qLABEL wie +LABEL. 

		Wenn LABEL nicht existiert, wirkt der Sprungbefehl in beiden Fällen als Endebefehl, d.h. der aktuelle Satz gilt als fertiggestellt, die Bearbeitung des nächsten beginnt. 

>P	Unterprogramm P ausführen  (-Ø 11.2.3.4) 

-LABEL	Sprungmarke 
			unmittelbar vor einem Paragraph, d.h. vor einem Kategoriebefehl (nicht innerhalb eines Paragraphen) kann eine Sprungmarke stehen. Sie beeinflußt selbst den Ablauf nicht, sondern wird mittels der Befehle +LABEL und qLABEL angesprungen. Rücksprünge sind möglich (Schleifengefahr!). Wenn -LABEL mehrfach vorkommt, wirkt nur das erste. 
			Wenn das Programm während der normalen Abarbeitung auf eine Sprungmarke stößt, wird sie ignoriert. LABEL darf kein Leerzeichzen enthalten.

mk	Mehrfachbesetzung - Kategorie-Wiederholung 
			Wenn mk am Ende eines Paragraphen steht, wird dieser mehrfach durchlaufen. Der Positionierungsbefehl wird dann wiederholt und die Kategorie #xxf mehrfach besetzt, wenn die gesuchte Zeichenkette mehrfach vorkommt. Wenn eine Ziffer k angegeben ist, wird sie auf f addiert für jede weitere Kategorie. Wenn f fehlt, wird bei der zweiten Kategorie der Wert fm eingesetzt, bei jeder weiteren wird k bzw. fr (wenn k fehlt) addiert (-Ø 11.2.1). 
			Hinweis: Wenn die nächste laut CFG erlaubte Folgekategorie benutzt werden soll, muß man vorgehen wie in 11.2.3.1 erläutert! (~ als Folgezeichen). 

m"xyz"	Mehrfachbesetzung - Wiederholung innerhalb Kategorie 
			mehrfach besetzte Felder werden alle in dieselbe allegro-Kategorie  #xxf  überführt, getrennt jeweils durch die Zeichenkette xyz. Ein Beispiel wäre 
			m"; " . 
			Achtung: Kein Leerzeichen zwischen m und " 

Zu beachten ist, daß alle diese Sprungbefehle nur innerhalb eines Paragraphen vorkommen dürfen. Insofern sind es immer bedingte Sprünge: sie funktionieren nur, wenn eine Kategorieangabe und eine Positionierung vorangeht. Bei  q  kann die Positionierung entfallen: 
Einen unbedingten Sprung zur Marke -LABEL konstruieren Sie am besten so: 

#99		Kategorieangabe pro forma
qLABEL		Absprung nach -LABEL (ohne daß eine #99 erzeugt wird)

?Vorangehender Teil=h ac11-2 
?Fortsetzung=h ac11-4