`Vorangehender Teil`   /   `Fortsetzung` 

10.2.6.3	Manipulationsbefehle der Exportsprache:  Vorbehandlung von Kategorietexten
Nach der bisherigen Beschreibung sieht es so aus, als könnten Datenfelder nur als Ganzes oder in globaler Verkürzung (siehe Parameter ks und kt) ausgegeben werden. Es gibt aber sehr viele Möglichkeiten, einen Feldtext als Arbeitstext vorzubehandeln: z.B. kann man vorn und hinten etwas abschneiden, Teile ausschneiden und/oder Textelemente davor und dahinter setzen, den Inhalt prüfen, zwischenspeichern oder mit Zahlenwerten verrechnen. 
Das alles macht man mit den sog. Manipulationsbefehlen, die in den `Anweisungszeilen` (-Ø`10.2.6.1) zwischen dem bedingten Sprung BS  und den bedingten Postfixen 
( ... #kt1 z1 ... #ktn zn ) stehen können. 
Fast alle Manipulationsbefehle können in einer Befehlszeile sogar mehrfach auftreten und beliebig miteinander kombiniert werden. Man schreibt einfach mehrere Befehle hintereinander, immer genau ein Leerzeichen dazwischen. (Zwei Leerzeichen bewirken auch hier, daß der Rest der Zeile als Kommentar behandelt, also ignoriert wird.) 
Für das folgende sind weiterhin die Bezeichnungsregeln (n k X x CS ...) von 10.2 gültig. 
Es sind 5 Typen von Befehlen zu unterscheiden: 
	`Typ 1`: Befehle für sofortige Veränderungen am Arbeitstext (AT), 
	`Typ 2`: arbeitet mit Anwendervariablen (AV), 
	`Typ 3`: veranlaßt Zeichenausgaben vor oder ndem Arbeitstext, 
	`Typ 4`: besteht aus Bedingungsprüfungen, die dann Reaktionen auslösen können, und 
		`Typ 5`: Sonderaktionen, z.B. Vorschübe und Nachladungen. 
Ferner gibt es noch ein paar `Index-Sonderbefehle ` 

	* heißt: Befehl nicht mehrfach in einer Zeile anwendbar
Befehl	Typ	Wirkung							[Seite im Handbuch ab V26]
!	5	nur zum Testen: Anzeige des aktuellen Arbeitstextes u.a. am Bildschirm	[201]	
=xy	2	Vergleiche AT mit Inhalt von #uxy und speichere AT in #uxy   gleich: nächster Befehl, ungleich: Ausgabe des AT und bed.Sprung	[199]	
|im   *  	5	AT als Schlüssel nehmen, im Index i mit Modus m suchen, Aufnahme laden. m=8 oder 9: gefundenen Schlüssel in #uxi laden	[212]	
²x oder $x	1	Teilfeld x aus AT herausholen und als neuen AT verwenden	[198] 
~x	1	Teilfeld ²x aus AT entfernen (wenn es mehrfach vorkommt, nur das erste)	V15	[198]	
,"_X_Y_"	1	Lokale Ersetzung: ersetze im Arbeitstext X durch Y		[197]	
axy	2	AT + #uxy in #uxy speichern (AT nicht ausgeben)	[199]	
Axy	2	#uxy + AT in #uxy speichern (AT nicht ausgeben)	[199]	
bk	1	Beginne AT nach Position k. Wenn AT kürzer ist: Abbruch der Anweisung, keine Ausgabe, kein bedingter Sprung	[196]	
bX	1	Beginne AT hinter Zeichenkette X. Wenn X nicht vorhanden: Abbruch	[196]	
Bk	1	Beginne AT nach dem k-ten Zeichen. Wenn AT kürzer, bleibt er unverändert.	[196]	
BX	1	Beginne AT hinter Zeichenkette X; wenn X nicht vorhanden, AT unverändert	[197]	
C	5	Zeilenvorschub vor Ausgabe des AT (Param. ze ausgeben)	[201]	
cX	4	Prüfe, ob AT die Zeichenkette X enthält. Wenn ja: Anweisung fortsetzen (AT bleibt unverändert); wenn nein: Abbruch	[201]	
dxy	2	Anwendervariable #uxy löschen	[200]	
ek	1	Beende AT hinter dem kten Zeichen (Sonderfall k=0, siehe Z)	[197]	
Ek	1	wie ek , aber letztes Wort weglassen, wenn es sonst zerschnitten würde	[197]	
eX	1	Beende AT vor Zeichenkette X; wenn X nicht vorh., bleibt AT unverändert	[197]	
EX	1	Beende AT hinter der Zeichenkette X; wenn X nicht vorhanden, bleibt AT unverändert	[197]	
fk / Fk	1	Entferne ASCII-Code k am Anfang/Ende des AT (evtl. mehrere)	[197]	
fx / Fx	1	Entferne Zeichen x am Anfang / Ende des AT (evtl. mehrere)	[197]	
fX / FX	1	Entferne alle in X enthaltenen Zeichen am Anfang/Ende des AT	[197]	
ik,x	4	Anweisung nur fortsetzen, wenn auf Position k das Zeichen x steht  (Position 1 = erste Kategorieziffer)		[201]	
Ik,x	4	Anweisung nur fortsetzen, wenn auf Position k nicht x steht	[201]	
Ji	1	Index-Präfix "|i" vor den AT setzen (Neu in V26). Gleichwertig:  p"|i"
Kz  kz	1	"Matchcode" bilden, z.B. Titelschlüssel; für Index nutzbar. Beispiel: #20 K4 K2 K2 K1  :  4221-Schlüssel aus Titel bilden	[203] 	
lxy	5	Länge des aktuellen Arbeitstextes in #uxy schreiben		[202] 
Lxy	5	Label des im AT befindlichen Feldes aus CFG in die #uxy kopieren	[202]	
l>k / l<k 4	Längenprüfung: Ist AT länger/kürzer als k Zeichen?		[201]
mX m{CS}*	3	Direktes und Indirektes Mehrfachpräfix (Zeichenkette/Steuerkette)	[196]	
m>K  *	3	Unterprogramm #(K ... #)K vor Mehrfachkategorie ausführen	[201]	
mz  *	3	Indirektes Mehrfachpräfix (Zwischenteil)				[201] 
M  *	5	AT als neues Datenfeld in den aktuellen Datensatz einordnen. Notwendig für "Glob. Manipulation"  (Kap. 1.5) (AT muß mit gült. Kategorienummer beginnen)		[202]	
N	5	Seitenumbruch vor Ausgabe des AT				[202] 
p{CS}  *	3	Indirektes Präfix: Steuerzeichenkette CS vor fertigem AT ausgeben	[200]	
P{CS}  *	3	Indirektes Postfix: Kette CS ausgeben, nachdem AT ausgegeben ist	[201]	
p>K	3	Unterprogramm #(K aufrufen, bevor AT ausgegeben wird		[200] 
P>K  *	3	Unterprogramm #(K aufrufen, nachdem AT ausgegeben ist	[201]	
pX	1	Direktes Präfix: X vorn an den AT anfügen			[196] 
PX	1	Direktes Postfix: X hinten an AT anfügen			[196] 
pz	3	Indirektes Präfix: Zwischenteil Nummer z vor AT ausgeben	[200]	
Pz  *	3	Indirektes Postfix: Zwischenteil Nummer z nach AT ausgeben	[201]	
R	1	AT rechtsbündig in aktuelle Zeile stellen (geht nur bei zl>0 )	[198]	
rk,x	1	AT k-stellig rechtsbündig machen, links mit x auffüllen		[198] 
sk,x	1	AT k-stellig linksbündig machen, rechts mit x auffüllen		[198] 
tk	1	k Zeichen vom Ende des AT entfernen				[197] 
Tk	1	die letzten k Zeichen des AT als neuen AT nehmen		[197] 
tX	1	vom AT hinten den mit X beginnenden Teil entfernen		[197] 
TX	1	hinteren Teil des AT ab Zeichenkette X als neuen AT nehmen	[197]	
u  u[]  U   U[] 
	1	Entfernen der Übergehwörter bzw. zwischen [] eingeschlossene Teile; U genauso, aber erstes Wort dann in Großschreibung ändern	[198] 
vk,x	4	Anweisung nur fortsetzen, wenn Zeichen auf Pos. k kleiner als x ist	[201]	
Vk,x	4	Anweisung nur fortsetzen, wenn Zeichen auf Pos. k größer als x ist	[201]	
w	1	AT als Kategorienummer interpretieren, deren Inhalt wird neuer AT	[198]	
x"OpW"	1	Rechenbefehl: AT als Zahl nehmen, Operation Op mit Wert W ausführen, das Ergebnis wird als neuer AT genommen	[209]	
X   *	5	Aus dem Arbeitstext einen Sondereintrag für satzübergreifende Suche machen	[202]	
y0	1	Verhindern der Umcodierung des AT, dann Anweisung fortsetzen	[198]	
y1 / y2	1	Codierung mit p- bzw. q-Befehlen sofort ausführen, Anweisung fortsetzen	[198]	
y3	1	Ersetzungen ausführen: Texel- und V23-Ersetzungen (vb163/164)	
y4 	1	Ausblenden von UTF-8-Codes aus der Umcodierung mit y1 / y2
y"n"	1	Vom AT nur die Zeichen bestimmten Typs nehmen, die anderen weglassen  [198]	
Z   *	5	Unterdrücken des Ausgabe des AT (gleiche Wirkung wie e0)	[202]	

Wichtig	deshalb nochmal deutlich: der Originaltext eines Datenfelds bleibt durch die Manipulationsbefehle unangetastet: das Programm erstellt sich einen Arbeitstext, das ist zunächst einfach eine Kopie des Feldtextes, und daran werden dann die Manipulationen ausgeführt. Durch jeden Befehl des Typs 1 entsteht ein neuer Arbeitstext, auf den dann der nächste Befehl wirkt. Nach Abarbeitung der Befehlskette wird schließlich der entstandene Arbeitstext ausgegeben, nicht der Originaltext. Dann wird der Arbeitstext sofort wieder vergessen, und für das nächste auszugebende Feld wird ein neuer angelegt. 

`Vorangehender Teil`   /   `Fortsetzung` 

?Typ 1=h ac10-7 
?Typ 2=h ac10-7=Typ 2 
?Typ 3=h ac10-7=Typ 3 
?Typ 4=h ac10-7=Typ 4 
?Typ 5=h ac10-7=Typ 5 : Sonderaktionen 
?Index-Sonderbefehle =h ac10-7=INDEX-Sonderbefehle 
?Anweisungszeilen=h ac10-5=10.2.6.1   Anweisungen 
?Vorangehender Teil=h ac10-5 
?Fortsetzung=h ac10-7