`Vorangehender Teil`   /   `Fortsetzung` 

11.2.3	Die Kategorieliste - das Kernprogramm

	Den Hauptteil einer Import-Parameterdatei bildet die Liste der Kategorien. Diese stellt sozusagen ein Programm dar, geschrieben in einer speziellen Sprache, eben der Importsprache. 
	Die Kategorieliste besteht aus Paragraphen. 
	Jeder Paragraph enthält, in dieser Reihenfolge, (Achtung: 1. und 2. dürfen nicht fehlen) 

	 1.	eine Kategorie-Angabe = Angabe einer erlaubten allegro-Kategorie 	(-Ø 11.2.3.1) 
	 2.	einen Positionierungsbefehl, um den Kategorie-Anfang festzulegen, 	(-Ø 11.2.3.2) 
	 3.	evtl. eine oder mehrere Aktionen: 	(-Ø 11.2.3.3-6) 
		 •	Befehle zur Präzisierung von Textanfang und Textlänge (Kategorie-Ende) 
		 •	Vorbearbeitungs-, Vergleichs- und Sprungbefehle.
	 4.	evtl. weitere Positionierungsbefehle plus zugehörige Aktionen, wenn die Kategorie aus mehreren Fremdfeldern zusammengesetzt werden soll; d.h. 2. und 3. können sich innerhalb eines Paragraphen wiederholen 

	Die Paragraphen müssen nicht in der richtigen Reihenfolge der allegro-Kategorien aufeinander folgen, die stellt das Programm selbst her: die vom Paragraphen gelieferte, umgewandelte Kategorie wird sofort im Arbeitsspeicher in den aktuellen Datensatz eingeordnet. 
	Alle genannten Elemente müssen, anders als beim Export, jeweils auf einer eigenen Zeile stehen! 
	Überall können, wie beim Export, Leerzeilen und mit Doppelleerzeichen beginnende Kommentare vorkommen. 

11.2.3.1  Kategorie-Angabe
#xxf	Angabe einer allegro-Kategorie 
		Die Kategorie-Angabe sagt dem Programm: "importiere das, was in den folgenden Zeilen beschrieben wird, in die Kategorie #xxf". 
		f kann entfallen, dann wird dafür ein Leerzeichen angenommen. 
		Bei einem dreistelligen Kategorienschema wie U.CFG muß es #xxxf heißen. 
		Wenn f das Zeichen '.' ist, wird der anschließend aufbereitete Text unmittelbar hinter #xx geschrieben, sonst wird bei fehlendem f, wie gesagt, ein Leerzeichen hinter #xx gesetzt. 
		#xxf ist zugleich der Startbefehl eines Paragraphen und das Ende des vorangehenden Paragraphen. Es muß keine Leerzeile zwischen zwei Paragraphen stehen, jedoch ist dies  übersichtlicher. Wenn das Programm bei der Abarbeitung der Kategorieliste auf ein '#' am Anfang der nächsten Zeile stößt, führt es noch die Protyp-Ersetzungen durch (11.2.2.3), schreibt den zu diesem Zeitpunkt ermittelten und bearbeiteten Textteil in die Kategorie #xxf und ordnet diese ein zwischen die anderen schon im Arbeitsspeicher stehenden, vorher importierten Kategorien. Deshalb kommt es auf die Reihenfolge der Paragraphen nicht an. Wenn allerdings zwei Paragraphen mit gleicher Kategorie-Angabe beginnen, bleibt nur die zuletzt importierte übrig. Es mag Fälle geben, wo man dies nutzen kann. 
		
		Sonderfälle: 
		Wenn f das Zeichen ~ ist, wird die nächstfolgende Wiederholungskennung benutzt, wie in der CFG definiert, also z.B. #402, wenn #40 schon besetzt ist, bzw. #403, wenn #402 schon besetzt ist, usw. 

		Wenn #xxf keine erlaubte Kategorie ist, wird das Ergebnis des Paragraphen nicht gespeichert. Dies läßt sich als Trick ausnutzen, wenn ein Paragraph nur Prüfungen und Sprünge machen soll. 

		Wenn #xxf = #00 oder  #01 ist, dann wird intern ein neuer Datensatz bzw. Untersatz angefangen; d.h. #00 muß normalerweise den ersten Paragraphen der Kategorieliste bilden. 

## 		Pauschal-Import
			Wenn Daten bereits mit den richtigen Kategorienummern vorliegen (Typ F), vereinfacht sich das Importieren ganz erheblich. Man braucht dann nämlich nicht jede Kategorie einzeln explizit mit einem eigenen Importbefehl herüberzuholen, sondern der simple Befehl ## transportiert den gesamten Datensatz vom Einlesebereich in den allegro-Arbeitsspeicher. Dabei ordnet das Programm die Kategorien, wenn nötig, in der Reihenfolge, die in der .CFG-Datei vorgegeben ist. 
			Ein Trick: Wenn bestimmte Kategorien nicht mit importiert werden sollen, nehme man vorher deren Nummern aus der Kategorieliste der .CFG heraus, das Programm nimmt sie dann nicht. 
			Die folgenden Voraussetzungen müssen alle gegeben sein, damit der Befehl anwendbar ist: 

		•	Es gibt eine eindeutige Trennung zwischen den Datensätzen, die mit dem Befehl re anzugeben ist (es handelt sich also nicht um ein ISO-Format) 
		• 	der Startpunkt des ersten Datensatzes der Datei (die erste Ziffer der ersten Kategorienummer) muß mit dem Befehl fh oder rs ermittelbar sein, 
		• 	die Kategorien besitzen eine eindeutige Feldendekennung, die mit fe anzugeben ist, 
		•	die Einzelkategorien müssen als fortlaufende Zeichenketten vorliegen. Eventuell vorhandene Zeilenumbrüche müssen durch einen globalen Ersetzungsbefehl beseitigt werden 
		•	jede Kategorie beginnt mit einer gültigen Kategorienummer (die in der .CFG vorkommt); es kann, aber muß nicht, ein '#' vor der Kategorienummer stehen. Kategorien, die sich wiederholen, erhalten automatisch eine Mehrfachkennung gemäß CFG (z.B. #402, #403, ... ) 

		Ab Version 13: Auf den Befehl ## kann ein Paragraph mit mehreren Befehlen folgen, der dann für jede übernommene Kategorie ausgeführt wird. So kann man eine pauschale Vorbehandlung jeder einzelnen Kategorie vornehmen. 
		Anschließend können noch weitere Paragraphen für einzelne Kategorien folgen, wobei man auch auf die bereits umgewandelten Kategorien zurückgreifen kann (mit dem k-Befehl, s. dort). 
		Wenn das Ausgangsformat USMARC u.ä. ist: M "???" statt ##  (siehe 11.2.3.2) 

	Zu den folgenden Sonderfällen werden die Import-Parameterdateien mitgeliefert, die man nicht nur für A.CFG verwenden kann: 

	.ALG-Dateien	(siehe mitgelieferte Datei ALG.AIM) 

			fh=1			das erste Zeichen der Datei muß übergangen werden
			re=0 13 10 1   	eindeutige Satzende-Zeichenfolge
			y .2 256        	die Codes 02...06 sind beim Einlesen auszublenden
			... 
			y .6 256		(das Importprogramm erkennt an #01 ... #05, daß es sich um Untersätze handelt)
			##			Pauschal-Import

	ASCII-Dateien	erzeugt durch Export mit E-1.APR  (siehe KAT.AIM, KAT00.AIM, -Ø 0.2.2) 
				Wenn mehrfach besetzte Kategorien keine Folgeziffern haben, werden automatisch welche vergeben, beginnend mit fm (-Ø 11.2.1). Hier ist angenommen, daß lange Kategorien einen Zeilenumbruch aufweisen (Unterbrechung nur bei Leerzeichen), wobei Fortsetzungszeilen mit 4 Leerzeichen beginnen. 

			re=13 10 13 10	Satzende: 2 Zeilenvorschübe
			fe=13 10 		Feldende: ein Zeilenvorschub
			_ 13 10 "    "	Hiermit werden die beschriebenen
			_ " "      		Umbrüche langer Kategorien vorab beseitigt
			##			Pauschal-Import

Wozu aber, wird man vielleicht fragen, sollen .ALG- oder .ALD-Dateien importiert werden, denn sie haben doch schon die richtige Struktur? Der Vorteil liegt in der Möglichkeit, globale Veränderungen am Datenbestand vornehmen zu können. Zu der Grundstruktur, die in den Parameterdateien ALG.AIM etc. vorgegeben ist, können noch weitere Befehle nach Bedarf hinzukommen. Und wenn auf den Befehl ## noch weitere Import-Paragraphen folgen, dann ersetzen die so definierten Kategorien die in dem Datensatz eventuell schon vorhandenen Kategorien. 

Wir geben hier Beispiele für einige exemplarisch wichtige Fälle: 
(zu den Befehlen  s  und  j  kommen wir im Abschnitt 11.2.3.2) 
Man nimmt für die folgenden 4 Aufgaben die  ALG.AIM  und macht daran jeweils die beschriebenen Änderungen. Am leichtesten geht es über CockPit mit der Funktion 
 μd <Import-Param> <neue Version erstellen>. 

1. 	Teilung oder Zusammenlegung bestimmter Kategorien 
		wenn z.B. die Kategorie #85 in der Form "Serientitel ; Zählung" erfaßt ist, und man möchte beide Elemente aufteilen auf #85 und #85z, so würde man schreiben: 

		##		Pauschalimport
		#85		Kategorie #85 anlegen (ersetzt dann die schon vorhandene!)
		s 0 "85 "	suche diese Kombination im Quelltext
		e " ; "	beende den Text bei " ; "
		#85z	beginne #85z (als neue Kategorie für die Zählung)
		s 0 "85 "	gehe im Quelltext zur selben Position wie vorher
		b " ; "  	aber nun beginne hinter " ; "

		Entsprechendes könnte man sich für "#20 Sachtitel : Zusatz" vorstellen. 
		Das Umgekehrte: man hat #85 und #85z vorliegen und möchte beide zu #85 zusammenfügen mit " ; " als Trennung: 

		_ 0 "85z"	vor dem Pauschalimport wird #85z "unleserlich" gemacht, indem man 85 durch
		_ 0 "xyz"	xyz ersetzt, was keine nach A.CFG zulässige Nummer ist.
		##  	Pauschalimport
		#85  	beginne Kategorie #85
		s 0 "85 " 
		W " ; "	Spatium-Semikolon-Spatium dahintersetzen
		g 0 "xyz"	Im Quelltext ist Inhalt von #85z hinter dieser Zeichenfolge zu finden

2. 	Änderung von Kategorienummern
		wenn beispielsweise aus #84 die Kategorie #70 gemacht werden soll: 

		_ 0 "84 "	unmittelbar vor der Kategorienummer steht in der .ALG- 
		_ 0 "70 "	Datei der Code 0, daher ist dieser Ersetzungsbefehl eindeutig
		##		alles importieren, dabei werden die Kategorien auch neu sortiert 

3.	Löschen einer schon importierten Kategorie
		Gelegentlich erstellt man eine Kategorie für Hilfszwecke und will sie hinterher nicht mit abspeichern. Nach folgendem Rezept kann man sie aus dem aktuellen Satz wieder löschen: Wenn #99 eine solche Kategorie ist, schreibt man diesen Paragraphen hin: 
		#99		Tue so, als ob erneut die #99 erstellt werden soll, 
		k99		Benutze die vorhandene #99 als Arbeitstext
		w" "	setze ein Leerzeichen davor
		l 0		und übernehme Null Zeichen aus der alten #99. Dann wird sie gelöscht.

4. 	Erzeugung neuer Kategorien
		Nehmen wir an, eine neue Kategorie "#3g Gattung" soll eingerichtet werden. Zunächst muß man sie in A.CFG als erlaubte Kategorie eintragen (-Ø Anh.A). Wenn irgendwo im Fremdsatz die Zeichenkette "Biograph" oder "biograph" vorkommt, soll in "#3g BIO" entstehen, wenn irgendwo "Tagung", "Kongr" oder "Konferenz" vorkommt, soll "#3g CONF" entstehen etc. Man könnte schreiben: 

		#3g		lege Kategorie #3g an
		j0		Positionierung (nur pro forma, weil jeder Paragraph mit einem Positionierungsbefehl anfangen muß, -Ø 11.2.3.2)
		C"Biograph" 
		w "BIO" 0 
		C"biograph" 
		w "BIO" 0 
		C"Konferenz" 
		w "CONF" 0 
		C"Kongre" 
		w "CONF" 0 
		C"Conferenc" 
		w "CONF" 0 
		C"Tagung" 
		w "CONF" 0 

		Ohne die '0' wäre kein Endezeichen da und es stünden dann unvorhersehbare Zeichen hinter den eingesetzten Zeichen. 

5. 	Umwandlung über Konkordanzliste  (-Ø 11.2.3.4) 
		Dieses Konzept läßt sich bei allen normierten Datenelementen anwenden, deren Inhalt von einer festgelegten Liste bestimmt wird. Als Beispiel seien Sprach- oder Ländercodes genannt. 
		Man könnte schreiben, wenn #37c den Ländercode enthalten soll: 

		... 
		_ 0 "37c" 
		_ 0 "xyz"	Kat. #37c ungültig machen, damit sie beim Pauschalimport nicht durchkommt
		... 
		#37c 
		s 0 "xyz" 
		@A 
		##		

		@@A  	Konkordanzliste beginnt: hier Umsetzung für Ländercodes
		"de"  	de wird ersetzt durch GER
		"GER" 
		"us"     	us wird ersetzt durch USA
		"USA" 
		.... 
		@    	Ende der Konkordanzliste

11.2.3.2  Positionierung : Ermittlung des Textbeginns 

		Der erste Befehl eines Paragraphen, auf der ersten Zeile gleich nach der Kategorie-Angabe, muß ein Positionierungsbefehl sein. Damit wird der sog. Textzeiger positioniert (d.h. der Anfang des Arbeitstextes festgelegt), und zwar auf den Anfang der gewünschten Kategorie im Fremdtext. Anschaulich sollte man sich einen Zeiger vorstellen, der vom Positionierungsbefehl genau auf das erste Zeichen des gesuchten Textteils gesetzt wird. Mit den nachfolgenden Befehlen kann dieser Textzeiger unter Umständen noch verschoben werden, z.B. auf den Beginn eines Teilfeldes. Die Textlänge wird zunächst automatisch bestimmt: das Fremdfeld endet bei dem Code 0 bzw. bei der Zeichenkombination fe, falls diese definiert ist (-Ø 11.2.1). Die Textlänge läßt sich außerdem noch durch einige Befehle, z.B. e CS, verändern. 

		Es gibt die folgenden Positionierungsbefehle, die zum Teil nur bei bestimmten Dateitypen sinnvoll sind: 

s CS	suche die Zeichenkette CS im gesamten Fremdsatz 
S CS		(anwendbar bei allen Typen, allerdings bei A und D meist nicht sinnvoll) 
			Im Text der eingelesenen Aufnahme wird die Zeichenkette CS gesucht. Kommt CS nicht vor, so wird der Rest des Paragraphen übergangen (d.h. #xxf entfällt) und mit dem nächsten Paragraphen fortgefahren. Wenn CS vorkommt, wird der Beginn des Kategorietextes für #xxf unmittelbar hinter dem letzten Zeichen von CS angenommen. Man sagt auch, der Textzeiger wird auf das erste Zeichen hinter CS gestellt. 
			Das große S bewirkt, daß beim Suchen der Unterschied von Groß- und Kleinbuchstaben nicht beachtet wird (bis auf Umlaute!). In CS müssen dann ausschließlich Kleinbuchstaben stehen. 
			Die Zeichenfolge CS (-Ø 10.2.0) kann Steuerzeichen und Text enthalten, sie kann auch z.B. so aussehen: 
			s 0 "xyz" oder s 13 10 "xyz"  (was nicht selten sehr nützlich ist). 
			Wenn der Wert fs größer als Null ist, wird der Textzeiger noch um fs Stellen vorgeschoben (-Ø 11.2.1). 
			Wenn keine weiteren Befehle kommen, d.h. der Paragraph nur diesen Positionierungsbefehl enthält, wird der Text in die Kategorie #xxf überführt und der nächste Paragraph bearbeitet. Die Textlänge ergibt sich automatisch aus der Zeichenkette fe, die von der Position des Textzeigers aus gesucht wird und selbst nicht mit zum Text gehört. 
			Wenn fe fehlt, wird der Code 0 als Feldende benutzt! 
		Wichtig:
			s und die anderen Positionierungsbefehle können in einem Paragraphen mehrfach vorkommen. Dann wird jeweils der bereits ermittelte Textabschnitt, der aktuelle Arbeitstext, in einen Transferbereich übertragen (hinten angehängt). Dieser Transferbereich ist also die noch nicht fertige Kategorie #xxf. Der neue Positionierungsbefehl legt dann einen neuen Arbeitstext an, und nachfolgende Manipulationen beziehen sich nur auf diesen, nicht auf den Transferbereich. (Vgl. dazu in 11.2.3.4 die Beschreibungen der Befehle w, W, Kxy und Yxy.  Also kann man allegro-Kategorien aus mehreren Bestandteilen eines Fremdsatzes zusammensetzen, indem man in einem Paragraphen mehrere Positionierungen macht. 
		Vorsicht:	Man vermeide in CS die Form  s "xyz?" , also '?' am Ende von CS. 
				Statt dessen schreibe man  s "xyz"  und dann } 1 in der nächsten Zeile. 
		Soll nur das Vorkommen von CS geprüft werden: -Ø 11.2.3.5 C/Z

g CS	"go to" : suche CS vom aktuellen Textzeiger aus. 
G CS		D.h., die Suche nach CS geht nicht vom Anfang des Fremdtextes aus, sondern von der Stelle, die mit dem letzten s-Befehl gefunden wurde. (Natürlich kann dieses CS ein anderes sein als beim s-Befehl.) Dadurch ist es möglich, eine nachfolgend auftretende Mehrfachkategorie gezielt auszuwerten. Alternativ könnte man im Anschluß an den s-Befehl auch den Befehl x geben (-Ø 11.2.3.4), um das Feld im Fremdtext ungültig zu machen. Dann ist 's' statt 'g' benutzbar. 
Für das große G gilt entsprechend dasselbe wie oben für das S. 

F n		Feld n auswählen   (n = 0, 1, ..., fx) 
			Nur bei Formaten mit fester Feldanzahl je Satz anwendbar (Typ B, fx>0). Der Textzeiger wird auf den Anfang des Feldes Nummer n gestellt. Die Zählung beginnt mit 0 für das erste Feld! 

D "nnn"	sucht im ISO-Directory die Feldnummer nnn (immer dreistellig!). 
			Der Textanfang und seine Länge werden aus der Directory-Eintragung entnommen. Anwendbar nur bei Typ D. 

D0 "nnn"	 macht dasselbe, jedoch wird anschließend die Kategorie "nnn" im Directory ungültig gemacht, kann also bei nachfolgenden Positionierungsbefehlen nicht erneut gefunden werden. Das kann wichtig sein, wenn Felder mehrfach besetzt sein können. 

d "nnn" 	 wirkt wie D, gesucht wird jedoch von der Position ab, wo der letzte D-Befehl endete. Dadurch ist es möglich, eine nachfolgend auftretende Mehrfachkategorie gezielt auszuwerten. Wenn aber vorher D0 benutzt wurde, bewirkt D "nnn" dasselbe. 

D "???"	 sucht nach der ersten noch nicht ungültig gemachten Kategorie. (Geht nur bei ISO-Formaten!) Wenn man z.B. am Ende der Kategorieliste schreibt: 
			#99a 
			D0 "???" 
			m 
			dann werden alle nicht ausgewerteten Kategorien unter #99a, #99b ... aufgeführt, und zwar wird ihre Originalnummer in Klammern dem Text vorangestellt. Man kann dadurch genau analysieren, was die Fremdsätze so alles an noch nicht berücksichtigten (vielleicht sogar nicht dokumentierten oder fehlerhaft erfaßten) Dingen enthalten. 
M "???"	(Pauschalimport für MARC-Formate (Typ D)) : macht dasselbe, verwendet aber im Importsatz dieselbe Kategorie wie im Fremdsatz. 

j n		Sprung (jump) auf die Position n  (n=0 : erstes Byte des Fremdsatzes) 
			Besonders bei Formaten mit fester Satzlänge (Typ A), die dann in der Regel auch feste Feldlängen haben, bestimmt sich ein Feld durch seine Position relativ zum Satzanfang. Mit  j 0  springt man auf das erste Zeichen des Satzes. 
			Dieser Sprungbefehl ist auch geeignet, wenn aus einem Feld fester Länge am Anfang eines Satzes mit variabler Länge ein bestimmter Abschnitt gebraucht wird, z.B. die ISBN oder eine Jahres-, Sprach- oder Länderangabe, wie bei den MARC-Formaten. 
			Die Feldlänge muß anschließend mit einem der Textausschnitt-Befehle bestimmt werden (meistens wohl mit dem Befehl 'l',  -Ø 11.2.3.3) 

kxxf	Kategorie #xxf der aktuellen Aufnahme als Arbeitstext benutzen. Der Textzeiger wird statt auf 
			eine Position im Fremdsatz auf die Kategorie #xxf der aktuellen, gerade in Bearbeitung befindlichen Aufnahme gesetzt. #xxf kann jede zulässige Kategorie sein, aber auch eine der Sonderkategorien (z.B. #dts) sowie eine Anwendervariable #uxy  (-Ø 11.2.3.4). Dann müßte man  kdts  bzw.  kuxy  schreiben.
			Abbruch des Paragr., wenn Kategorie  #kkf  nicht vorhanden. 

		Spezialbefehl für Typ E ("Bibliofile"): 
T k m	suche das "tag"  k*256 + m
			Im "Bibliofile"-Format sind die Feldnummern (dort "tags" genannt) binär in 2 Byte verschlüsselt. Um das Feld 245 = Sachtitel zu finden, muß man bei "Bibliofile" folglich  T 0 245 geben, für Feld 700 = Personenname für Nebeneintragung:  T 2 188  (denn 2*256+188 = 700). Das Programm bestimmt die Länge dann aus den zwei Bytes, die hinter dem tag stehen, addiert ks auf den Textzeiger und subtrahiert fc von der Länge. Diese etwas komplizierte Mechanik war bislang nur beim "Bibliofile"-Format nötig, alle anderen sind etwas einfacher. 

t k m	suche "tag" k*256 + m von der vorigen Position aus 
			Ähnlich wie 'g' im Verhältnis zu 's' sucht dieser Befehl nicht vom Anfang, sondern von der mit dem letzten T gefundenen Stelle. 

11.2.3.3  Textausschnitt bestimmen = Kategorie-Beginn und Ende festlegen 
		Nichts zu tun braucht man, wenn am Feldende der Code 0 steht oder mit den Positionierungsbefehlen D, T oder F gearbeitet wird und der gesamte Text des so gefundenen Fremdfeldes übernommen werden soll. Daher ist es günstig und wird empfohlen, durch einen globalen Ersetzungsbefehl die Feldenden in den Code 0 zu verwandeln (-Ø 11.2.2.2). 
		Es kommt jedoch oft vor, daß man nur einen Teil des Textes in eine Kategorie überführen will. Dafür gibt es folgende Möglichkeiten, die kombinierbar sind, d.h. es können mehrere Befehle aufeinander folgen (jeweils auf neuer Zeile!). 
		Durch Kombination (evtl. Wiederholung) der folgenden Befehle lassen sich beliebige Teile eines Textfeldes isolieren: 

e CS	Textende festlegen
			Das Ende des Textes ist das letzte Zeichen vor der Zeichenkette CS. 
			Achtung:  e 20  bedeutet: Ende bei Code 20, nicht: Ende nach 20 Zeichen (wie beim Export, vgl. 10.2.6.3) Für letzteres muß man hier  l 20  geben, siehe unten. 

b CS	Textbeginn versetzen
B CS		Der Textanfang wird innerhalb des ermittelten Feldes auf die Position hinter CS gesetzt. Wenn CS nicht im Fremdfeld vorkommt, wird der Paragraph ergebnislos beendet (bei 'b') bzw. das Fremdfeld wird vollständig übernommen (bei 'B'), d.h. der Befehl B CS hat dann keine Auswirkung auf die Feldbegrenzung; der Paragraph wird weiter abgearbeitet. 
			Wenn man zweimal, in zwei Zeilen untereinander, denselben Befehl  B CS  gibt, wird der Textzeiger hinter das zweite CS im Fremdfeld gesetzt, usw. 
			Achtung:  b 20  bedeutet: Beginn bei Code 20, nicht: Beginn auf Position 20 (wie beim Export, vgl. 10.2.6.3). Für letzteres muß man hier } 20 geben, siehe unten. 

< CS	Vom Ende her suchen : CS wird im aktuellen Fremdfeld von hinten gesucht. Wenn es gefunden wird, geht der Textzeiger hinter CS, sonst bleibt er unverändert. Sinnvoll ist das, wenn CS in der Fremdkategorie mehrfach vorkommen kann, wie z.B. Interpunktionszeichen, und man den Teil braucht, der hinter dem letzten Code steht. 

{  k	Textzeiger k Zeichen nach links bzw. rechts bewegen. 
}  k		Die Länge wird dabei automatisch so angepaßt, daß das vorher ermittelte Ende nicht verschoben wird  (0 < k < 256).  Wenn das Fremdfeld bei } kürzer als k ist, entsteht nichts. 

l n		Länge direkt festlegen 
			Die Textlänge beträgt genau n Zeichen, ungeachtet der vorher durchgeführten Operationen. Wenn das Feld vorher schon kürzer war als n Zeichen, ändert sich nichts. (l >= 0) 

		Sonderfall: Wenn man  l 0  gibt und anschließend einen w-Befehl, kann man eine Kategorie mit einem festen Text erzeugen, die nur besetzt wird, wenn ein bestimmtes, vorher mit einem geeigneten Positionierungsbefehl ermitteltes Fremdfeld vorkommt. Beispiel: wenn in den Fremddaten vom Typ C ein Feld  "SO: " vorkommt, soll "#97 ZS" in die Aufnahme eingetragen werden. Angenommen ist hier, daß das Feldende vorher mit globaler Ersetzung auf Code 0 gesetzt wurde: 

		#97  		Dokumenttyp
		s 0 "SO: "  	kommt das Feld SO im Fremdtext vor? (dann muß es 
					so beginnen: nach einem Feldende (0) kommt "SO: " )
		l 0   		setzt Länge auf 0
		w " ZS"  		schreibe " ZS" in #97
		#32  ...		wenn "SO" nicht vorkommt, geht's gleich hier weiter

A		Feldlänge nach der SOIF-Methode bestimmen. (Harvest-Daten) Es muß ein s-Befehl vorangehen, der den Anfangspunkt bestimmt. Die Länge steht bei SOIF-Daten dahinter in { ... }. 

?Vorangehender Teil=h ac11-1 
?Fortsetzung=h ac11-3