`Vorangehender Teil`   /   `Fortsetzung` 

10.2.5	Export: Kategorie-Parameter
Diese Parameter beziehen sich auf die einzelnen, auszugebenden Kategorien (= Datenfelder). 
Im nachfolgenden Abschnitt wird erklärt, wie die Exportbefehle eigentlich abgearbeitet werden. 

ks=n	Startposition des Ausgabetextes innerhalb der Kategorie  (wichtig)	<4/5> 
		Als  Standard wird der Wert genommen, der in der .CFG-Datei mit dem Befehl k gesetzt wird. Bei A.CFG ist dies 4, bei U.CFG 7, bei D.CFG 6. 
		1  würde bewirken, daß die Kategorienummer mit ausgegeben wird 
		0  würde außerdem noch das Zeichen '#' mit ausgeben. 
		Dieser Wert gilt global für alle Kategorien. Jede einzelne kann mit dem Befehl bn individuell zugeschnitten werden (-Ø 10.2.6.3). 
		Der Wert ks kann mit Strukturbefehl si temporär verändert werden (-Ø10.2.0). 
	Empfehlung:  nicht benutzen, wenn NUR der eigentliche Text auszugeben ist. Das ist der Normalfall. 

ke=CS	Kategorie-Ende-Codes (= Standard-Postfix) 	<""> 
		ke wird als Standardwert hinter einer Kategorie ausgegeben, wenn in der Kategorieliste (-Ø 10.2.6) für diese Kategorie kein Postfix angegeben ist. 
		Notwendig ist ke bei Pauschalexport (Befehl ##, -Ø 10.2.6.1), es wird dann hinter jeder einzelnen Kategorie, also als Feldtrennung, ausgegeben. 
		Im Gegensatz zu ze wird ke in den Zeilenumbruch einbezogen, wie jedes andere Postfix auch. 
		Aufpassen: 
		1. Wenn ke gesetzt wurde, aber bei einer Kategorie dann ausnahmsweise kein Postfix gewünscht wird, muß man #zz 0 an den Kategoriebefehl anhängen 
		2. In Indexparametern ist  ke  sinn- und wirkungslos, d.h. wird ignoriert.
		Weil man das leicht vergißt, wird empfohlen: ke nur verwenden, wenn mit Pauschalexport gearbeitet, also der Befehl ## verwendet wird. 
		Anm.: In einer Param.Datei für Globale Manipulation (Sprungmarke #-# ) ist  ke  ohne Wirkung. 

kh=x	Hierarchie-Separator	<,> 
		Mehrteilige Bandbezeichnungen werden auf den Hierarchiestufen #02... durch Aneinanderhängen der zugehörigen übergeordneten Stufen gebildet (siehe Sonderkategorie #hi, -Ø 10.2.6.5). Zur Trennung der einzelnen Zählungselemente wird dabei ein Komma verwendet. Wenn man z.B. 
		kh=/
		gibt, wird statt dessen ein Schrägstrich benutzt. 

kb=1	Folgezeichen (Wiederholungszeichen) der Kategorienummer durch Leerzeichen ersetzen	<0> 

  =0	Folgezeichen unverändert lassen 
		relevant ist dieser Parameter nur, wenn ks (s.u.) gesetzt ist: das Wiederholungszeichen der Kategorienummer wird bei kb=1 durch ein Leerzeichen ersetzt. Man braucht diese Funktion evtl. dann, wenn die Daten als ASCII-Text an andere Software übergeben werden soll, die wiederholbare Kategorien ohne unterscheidendes Folgezeichen verlangt. 

  =2	Folgezeichen ersatzlos beseitigen 
		Das Zeichen an der Wiederholungsposition fällt dann ganz weg. 

kt	Kategorietextlänge begrenzen
  =0	gesamten Kategorietext ausgeben, keine Längenbegrenzung	<0> 
  =n	alle Kategorien pauschal beim n. Zeichen abschneiden (z.B. für Tabellen) 
	Auch dieser Wert gilt global. Zum Beschneiden einzelner Kategorien verwendet man die Manipulationsbefehle e und b (-Ø 10.2.6.3) (Es wurde noch kein Fall bekannt, wo man kt brauchte. Seine Begründung ist in Vergessenheit geraten, Abschaffung wird erwogen.) 

10.2.6	Die Kategorieliste 
	Das Kernprogramm beim Export 

Das notwendige Beiwerk ist beschrieben, jetzt kommt der Hauptteil. 

Alle Zeilen, die mit '#' oder '!' beginnen, sind Exportbefehle und bilden zusammen die Kategorieliste. 

Es gibt zwei Sorten solcher Befehle: 
•	`Anweisungen` (mit Kategorienummer hinter dem Zeichen, z.B. #20 ... ) und 
•	`Steuerbefehle` (Sprungbefehle und andere Ablaufsteuerungen, -Ø10.2.6.4, z.B.  #t{ ... }, #+X, #-Y  ). 
·	·	Zwischen den Zeilen können, wie überall, Kommentare (d.h. mit Leerzeichen beginnende Zeilen) oder andere Parameterangaben stehen, ohne den Ablauf zu stören. 
Die Zeilen der Kategorieliste werden von oben nach unten abgearbeitet, wenn nicht Sprungbefehle oder Unterprogrammaufrufe Verzweigungen verursachen. 
Nur in diesem Teil der Parameterdatei kommt es auf die Reihenfolge an, denn daraus ergibt sich unmittelbar die Reihenfolge der Ausgabedaten. Alle anderen Teile der Parameterdatei können an beliebigen Stellen stehen. Kommt ein Befehl mehrfach vor, z.B. ks, gilt nur der letzte! Übersichtlichkeit läßt sich folglich nur erzielen, wenn man selber darauf achtet. 

So wird ein Datensatz exportiert : Schritt für Schritt 

 1.	Wenn es keinen ak-Befehl gibt, geht es gleich bei Schritt 3. los. 
	Das Programm nimmt sich den ersten ak-Befehl vor (-Ø10.2.1) und bestimmt das erste sich daraus ergebende Datenelement - eine Kategorie oder ein Teilstück einer solchen. Dieses merkt es sich als Sonderkategorie #u1 (und evtl. #u2, wenn der Kopfbefehl noch eine Zusatzkategorie angibt). 
	Wenn der erste ak-Befehl nichts ergibt, wird der nächste genommen. 

 2.	Wenn zu dem ak-Element ein Sprungbefehl +M gehört, wird in der Kategorieliste nach der Sprungmarke "#-M" gesucht (-Ø10.2.6.5). 

 3.	Wenn bei dem ak-Element kein Sprungbefehl steht oder wenn gar keine ak-Zeile vorhanden ist, begibt sich das Programm zur ersten Zeile der Kategorieliste, d.h. zur ersten mit '#' oder  '!' beginnenden Zeile. (-Ø10.2.6.1). 

 4.	Die Export-Bearbeitung beginnt mit der so ermittelten Zeile der Kategorieliste und arbeitet die Zeilen der Reihe nach ab. Wenn dabei die Sonderkategorie #u1 vorkommt, hat sie den vorher ermittelten Inhalt, #ch enthält außerdem den gesamten Kategorietext, aus dem #u1 entnommen ist. 
	Die Abarbeitung einer einzelnen Anweisungszeile kann sehr aufwendig sein, wenn diese mehrere Manipulationsbefehle enthält. Im nächsten Abschnitt wird der Aufbau einer solchen Zeile gezeigt und ihre Abarbeitung dann erklärt. 
	Die Anweisungen beziehen sich immer auf eine zu bearbeitende Kategorie oder Variable. Dazwischen können Steuerbefehle stehen für Bedingungsprüfungen, Sprünge, Unterprogrammaufrufe (-Ø 10.2.6.4/5). 

 5.	Die Bearbeitung endet, wenn die letzte Zeile erledigt ist, oder wenn der Endebefehl #+# oder der Abbruchbefehl #+- auftritt, oder wenn ein Sprung auf eine nicht existierende Marke verlangt wird. 
	Die Ausgabe erfolgt nicht unmittelbar: zuerst wird der gesamte Ausgabetext intern aufbereitet, erst am Ende werden die entstandenen Zeilen hintereinander, durch ze getrennt, ausgegeben. Kompliziert, aber sonst könnten z.B. einige der Strukturbefehle nicht funktionieren (-Ø 10.2.0). 

 6.	Wenn es hierarchische Untersätze gibt, werden diese im Anschluß an den Hauptsatz einzeln durchgearbeitet, und zwar beginnt das Programm jeweils mit der ersten Zeile der Kategorieliste, also nicht wieder bei der Sprungmarke! Ist für die Unteraufnahmen eine Sonderbehandlung nötig, sollte man an den Anfang der Kategorieliste den Befehl  #hi +U e0  schreiben, wobei dann der Abschnitt für die Sonderbehandlung mit Sprungmarke #-U  beginnt. (Vgl. dazu auch Param. ag, -Ø 10.2.1). 

 7.	Das nächste Element, das sich aus den ak-Zeilen ergibt, wird bestimmt und unter #u1 zwischengespeichert, und der nächste Exportsatz wird entsprechend erzeugt, d.h. es geht wieder bei Nr. 2. weiter, nun mit einem neuen Inhalt in #u1. 

 8.	Wenn es keine ak-Befehle gibt oder wenn keines der in den ak-Zeilen definierten Elemente im zu exportierenden Datensatz vorhanden ist, beginnt das Programm mit der ersten Zeile der Kategorieliste und produziert genau einen Exportsatz, es sei denn, man hat  ad=0 gesetzt - dann kommt für den betreffenden Satz nichts heraus. 

10.2.6.1   Anweisungen : Allgemeine Form  ( = Zeilen, die mit # oder ! anfangen)

	Eine Anweisung bezieht sich auf eine bestimmte Kategorie oder Variable (-Ø 10.2.6.2) und beschreibt , wie diese auszugeben ist, was vorher und was danach passieren soll. Zwischen den Anweisungen können Zeilen mit Steuerbefehlen stehen, die Verzweigungen und andere Aktionen auslösen (-Ø 10.2.6.4/5). 
	Jede Anweisung beginnt auf Position 1 einer eigenen Zeile und sieht schematisch so aus: 

Kxx[f] [BS] [MB] [#kt1 z1 #kt2 z2 #kt3 z3 ... #ktn zn] 
Kategorie    Bedingt.Spr.  Manipulation  Bedingte Postfixe

	Sehr wichtig: Zwischen den einzelnen Elementen muß jeweils genau ein Leerzeichen stehen. 
	Es darf nicht #kt1 direkt auf Kxx folgen, dann muß zumindest  0  dazwischen. 
	Die eckig geklammerten Teile können entfallen. Im einfachsten Fall besteht eine Anweisung also nur aus der Angabe #xx für eine auszugebende Kategorie, d.h. die einfachste Parameterdatei ist nur eine schlichte Liste der auszugebenden Kategorien.  Die einzelnen Teile bedeuten: 

K =	#    bzw.   ! 	Kategorie #xxf nehmen, umwandeln per Normal- bzw. Alternativtabelle (`10.2.4`) 
  oder	#^   bzw. 	!^	wenn zusätzlich der '^' steht, wird die Kategorie #xxf aus der Hauptaufnahme entnommen, falls gerade ein hierarchischer Untersatz in Arbeit ist. 
  oder	#_   bzw.  !_	wenn zusätzlich der '_' steht, wird die Kategorie nur aus der Unteraufnahme genommen, wenn gerade eine solche in Arbeit ist 
  oder	#¯   bzw.   #¯	mit dem Zusatzzeichen ¯ erreicht man, daß die Kategorie in den evtl. vorhandenen Unteraufnahmen gesucht wird, wenn sie in der Hauptaufnahme fehlt. 
Eine Angabe  !xyz ist gleichwertig mit #xyz y2  (siehe Manipulationebefehl y) 
Umcodiert wird der Arbeitstext erst dann, wenn die Befehlszeile vollständig abgearbeitet ist und ausgegeben wird. 
Ausnahmen: die MB-Befehle enthalten einen Befehl y0/y1/y2 , oder einer der Befehle wirkt sich auf die Länge aus, denn beim Umcodieren kann sich die Länge verändern! Dann wird vor diesem Befehl umcodiert, und zwar gemäß # oder ! mit den p- bzw. q-Befehlen.

xxf	ist eine gültige Kategorie-Nummer (das Folgezeichen f kann fehlen), oder auch eine Sonderkategorie (-Ø 10.2.6.2). Wenn für f ein . steht, wird die erste vorhandene Kategorie #xxf genommen. (Nützlich, wenn man nicht weiß, welche von mehreren möglichen besetzt sein wird.) 
BS  	der bedingte Sprung wird benötigt, wenn es nach der Verarbeitung von #xxf nicht mit der nächsten Zeile weitergehen soll. (Wenn #xxf unbesetzt ist, passiert nichts.) Für BS kann stehen: 
	a)	ein Sprungbefehl der Form  	+M  	dann geht's anschließend hinter der Sprungmarke #-M weiter. Sie kann auch oberhalb der Anweisung stehen. 
	b)	der Wiederholungsbefehl	++     	um Folgekategorien von #xxf gleichfalls abzuarbeiten 
	c)	der Endebefehl			+#     	der laufende Exportsatz wird abgeschlossen 
	d)	der Abbruchbefehl			+-     	der laufende Exportsatz wird nicht ausgegeben 
										Aber im Unterprogr.: UP beenden
	e)	ein Sprungbefehl der Form	+#yyf
		d.h. statt der Sprungmarke M steht hier eine Kategorienummer #yyf, die in der Kategorieliste irgendwo weiter unten vorkommt (kann auch !yyf sein). Bis zu dieser Stelle wird gesprungen, wenn #xxf in der aktuellen Aufnahme besetzt ist und MB ausführbar ist.  Für #yyf kann stehen: 
		1. eine gültige Kategorienummer, die im Satz nicht unbedingt vorkommen muß, auch in der Form +#yy.
		2. eine Sonderkategorie oder #u-Variable 
 		Diese Form spart Zeit und eine Sprungmarke! Wenn man z.B. schreibt: 
		#nr +#yyf e0     hat man damit einen de facto unbedingten Sprung. 
Achtung:
Hat eine Anweisung einen bedingten Sprung und/oder bedingte Postfixe, so muß sie einen Manipulationsbefehl enthalten. Soll nichts geschehen, setzt man dafür nur die Ziffer 0 . 

MB	ist ein sogenannter Manipulationsbefehl (auch Vorbearbeitungsbefehl), oder eine Kette derartiger Befehle. (Diese Befehle sind die mächtigsten Werkzeuge der Exportsprache.) 
	Mit solchen Befehlen kann man den Kategorietext in vielfacher Weise "vorbehandeln" lassen, bevor er ausgegeben wird. Diese Befehle werden in einem eigenen Abschnitt beschrieben (-Ø 10.2.6.3). Unter anderem kann hier ein Präfix gesetzt werden: eine Zeichenkette, die vor den eigentlichen Kategorietext zu setzen ist. 

#kt1 z1 ... #ktn zn                         [Diese sog. "Bedingten Postfixe" sind nur sehr selten notwendig!] 
	Die Kategorienummern #kti müssen in aufsteigender Reihenfolge angeordnet sein, und zwar in der Reihenfolge, die in der CFG festgelegt ist. (Also nicht unbedingt numerisch!!) 
	zi sind Nummern (0..99) von Zwischenteilen, die als Postfixe benutzt werden sollen 
	oder		Unterprogramm-Aufrufe, z.B.  >U   (-Ø10.2.6.5) 
	aber nicht	Textangaben der Form P"..." wie bei direkten Postfixen! (-Ø 10.2.6.3) 
	Bedingung: Wenn #kti vorkommt, darf auch zi nicht fehlen. 
	Hinweis: 
	Wenn die #kti-Angaben fehlen, wird hinter die Kategorie die Zeichenkette ke,  das Standard-Postfix, gesetzt (-Ø 10.2.5).  Um das zu verhindern, muß man die Zeile mit #zz 0 abschließen. 
	Wie die bedingten Postfixe abgearbeitet werden, wird auf der nächsten Seite unter 7. und 8. beschrieben. 

Eine Anweisungszeile wird in folgenden Schritten abgearbeitet: 

 1.	Stelle fest, ob Kategorie #xxf im aktuellen Satz vorhanden ist, sonst ignoriere diese Zeile völlig (auch den bedingten Sprung) und bearbeite die nächste. (Wenn hinter '#' eines der drei Zeichen ^, _ oder ¯ steht, wird die Kategorie evtl. in angrenzenden Datensatzteilen gesucht (s.o.)). 
	Mache eine Kopie des Inhalts von Feld #xxf ab Zeichen ks. Diese Kopie gilt für alles weitere als Arbeitstext (d.h. zunächst wird noch nichts ausgegeben - der Arbeitstext muß evtl. noch vorbearbeitet werden:) 
 2.	wende Befehlskette MB auf den Arbeitstext an (-Ø 10.2.6.3); ist ein Befehl dieser Kette nicht ausführbar, so wird die Befehlszeile abgebrochen, ohne daß etwas passiert, und zur nächsten übergegangen, und auch der bedingte Sprung wird ignoriert. Durch jeden Manipulationsbefehl wird aus dem Arbeitstext ein neuer, veränderter Arbeitstext. Wenn einer der Befehle bn, Bn, en, En, s oder r in MB vorkommt, wird unmittelbar vor seiner Ausführung die Zeichenumcodierung erledigt, denn dabei könnte sich die Länge des Textes ändern. Sonst kommt die Umcodierung erst nach der MB-Abarbeitung: 
 3.	Führe die Zeichenumcodierung aus, und zwar über die Normaltabelle (wenn K = '#') bzw. über die Alternativtabelle (wenn K = '!')  (-Ø 10.2.4), 
 4.	Erst jetzt wird wirklich etwas ausgegeben, und zwar hintereinander in dieser Reihenfolge: 
	1.	das bedingte Postfix, das sich aus der vorangegangenen Anweisung ergibt (siehe unten), 
	2.	die indirekten Präfixe der aktuellen Kategorie 
	3.	das Ergebnis der aktuellen Zeile (die letzte Version des Arbeitstextes: darin sind direkte Prä- und Postfixe enthalten, also Befehle  p"abc" und P"xyz") 
	4.	das indirekte Postfix (aus dem evtl. vorhandenen Manip.Befehl  P{ ... } ) 
	Wenn jedoch infolge der Manipulationen sich ein Abbruch ergibt (weil z.B. eine Manipulation nicht ausführbar ist), gehe zur nächsten Kategoriezeile (ignoriere also auch den bedingten Sprung) und beginne damit wieder bei Punkt 1., andernfalls:
 5.	wenn ein bedingter Sprung BS angegeben ist, führe diesen aus. Dabei gibt es 3 Möglichkeiten: 
	a)	hat BS die Form +#yyf, suche in der Kategorieliste weiter unten die Zeile, die mit der Kategorienummer #yyf anfängt, und mache dort weiter, 
	b)	wenn BS die Form +M hat, fahre fort hinter der Sprungmarke  #-M; diese kann auch oberhalb der aktuellen Zeile liegen (Achtung: Schleifengefahr!) 
		In beiden Fällen gilt: wird das Sprungziel nicht gefunden, endet die Verarbeitung, d.h. der Ausgabesatz gilt als fertig. Dann wird noch Parameter ae ausgegeben (-Ø 10.2.1). 
		Sonderformen:  +# wirkt als bedingter Endebefehl,   +- als Abbruchbefehl. 
	c)	wenn BS = ++ ist, wiederhole die Anweisung, wenn die Kategorie #xx mehrfach vorkommt; aus den Postfix-Angaben ergibt sich, welche Zeichen zwischen die einzelnen Kategorien zu setzen sind. Ein Präfix (evtl. in MB enthalten) kommt nur vor die erste, vor die weiteren kommt das, was mit Manipulationsbefehl m dafür definiert ist. 
 6.	wenn kein BS angegeben ist, fahre mit der auf #xxf folgenden Exportzeile fort. 
	Das hinter der Kategorie auszugebende bedingte Postfix steht jetzt noch nicht fest, sondern zuerst ist festzustellen, welche Kategorie als nächste drankommt: 
 7.	Arbeite (nach Ausführung von BS, wenn ein solcher vorhanden ist) die nachfolgenden Zeilen der Kategorieliste durch und finde die nächste ausführbare Zeile, d.h. diejenige, deren #xxf im aktuellen Satz vorkommt, und deren MB ein Ergebnis liefert. Bevor dann deren Text ausgegeben wird, kommt das bedingte Postfix, das von der vorigen Anweisung noch ansteht: 
	Ist die aktuelle Kategorie <= #kt1, dann ist Zwischenteil z1 (bzw. das durch z1 bezeichnete Unterprogramm) das bedingte Postfix, ist sie > #kt1, aber  <= #kt2, dann z2 usw. 
	(Deshalb sind die #kti in aufsteigender Reihenfolge, der .CFG entsprechend, anzuordnen.) 
	Sonderfall: #zz anstelle #ktn bedeutet: unbedingte Ausgabe von zn, wenn die nachfolgende Kategorie oberhalb aller #kti liegt. 
	Wenn die nächste gefundene Kategorie eine #u-Variable ist ODER wenn statt einer Kategorie ein #t-Befehl (Direkt-Ausgabebefehl) kommt, dann wird in jedem Fall Zwischenteil z1 genommen.
	Mit  #zz 0  erreicht man, daß kein bedingtes Postfix ausgegeben wird, auch nicht ke. Folglich muß man  #zz 0  angeben, wenn ke gesetzt ist, aber im konkreten Fall entfallen soll. 

 8.	Fehlt #kt1 ..., d.h. sind die bed. Postfixe weggelassen, so wird statt dessen der Parameter  ke  benutzt (-Ø 10.2.5). Dies geschieht auch, wenn nach #xxf als nächste eine Kategorie bearbeitet wird, die größer als #ktn ist.  Und nun geht das ganze mit der neuen Zeile wieder bei 1. los. 

	In bestimmten Fällen ist es sinnvoll, alle Kategorien einfach hintereinander in der internen Reihenfolge, mit immer gleicher Interpunktion auszugeben. Ein Beispiel wäre der Abdruck der erfaßten Daten mit Kategorienummern, um eine Liste zum Korrekturlesen zu haben. Dafür gibt es einen sehr einfachen Befehl: 

## 	Pauschalexport des gesamten Datensatzes, evtl. mit Ausnahme bestimmter Kategorien (siehe unten) 

	Wenn diese Zeile innerhalb einer Kategorieliste auftritt, werden an dieser Stelle alle Kategorien hintereinander ausgegeben, getrennt jeweils durch den Parameter ke. 
	(Normalerweise setzt man ke=C  (= Zeilenvorschub).) 
	Es kann natürlich sein, daß bestimmte Kategorien weggelassen werden sollen. Diese gibt man auf jeweils eigenen Zeilen mit dem Befehlszeichen '/' an:, z.B. 
/39	bedeutet: #39 weglassen 
/27.	alle #27er Kategorien (beliebige Folgezeichen) weglassen 
/852	#85 mit Folgezeichen 2 weglassen 
/4.2	alle #4er Kategorien mit Folgeziffer 2 weglassen 
/9	oder /9.    alle #9er Kategorien weglassen 
	In solchen Befehlszeilen dürfen keine Kommentare stehen! 
	Achtung: Zusammen dürfen diese Befehle nicht länger als 255 byte sein. 
	Die Parameterdatei E-0.APR zeigt, wie man mit diesen Mitteln eine Ausgabe aller Kategorien in interner Reihenfolge mit Nummern erreicht. Das ergibt eine mit anderen Programmen leicht einlesbare Textdatei. (In anderen Zusammenhängen wird so etwas oft "ASCII file" genannt). Auch in den Dateien S-LANG.APT und I-0.APR (früher PA.APR) wird vom Pauschal-Exportbefehl Gebrauch gemacht. 

#L 	Pauschalexport aller Kategorien, aber mit Feldbezeichnungen, und zwar denen, die in der CFG definiert sind. Das funktioniert nur, wenn eine CFG der neueren Art (ab V13) vorhanden ist (-Ø Anh. A.1). 

10.2.6.2  Sonderkategorien
	An der Stelle von #xxf in der Anweisungszeile können verschiedene Elemente vorkommen, die keine echten Kategorien sind, die aber genauso verwendet werden können. 

#ax	aktuelle Indexdatei und Register  
	Dies sind zwei Zeichen: der Buchstabe der aktuellen Indexdatei (normalerweise also d ) und die Ziffer des aktuellen Registers (: für 10 und ; für 11). Diese Sonderkategorie gibt es erst ab V27.2 wegen der MultiX-Funktion. 

#cc	aktuelle Kategorie ("current category")   Zu empfehlen nur in Unterprogrammen! Sonst unsicher.
	für #cc wird der Wert der zuletzt aufgerufenen Kategorie angenommen und zwar der noch unveränderte Text. Insbesondere ist dies in Unterprogrammen (-Ø10.2.6.5) nützlich: in #cc steht dann der Wert der zuletzt vor dem UP-Aufruf benutzten Kategorie. Daher lassen sich UPs auch kategorieunabhängig formulieren. Innerhalb eines UP bleibt der Wert von #cc dann erhalten, auch wenn dort zunächst andere Kategorien benutzt oder noch weitere UPs aufgerufen werden. Interessant ist dies im Zusammenhang mit dem Steuerbefehl Indikatoraktion (-Ø 10.2.6.4). 

#cca	aktuelle Kategorie incl. # und Kategorienummer des aktuell nachgeladenen Satzes.  Zu empfehlen nur in Unterprogrammen! Sonst unsicher.
	Ansonsten dasselbe wie #cc. Bequem, wenn man im UP die Nummer braucht. Die Setzung  ks  für die Text-Startposition hat hier keinen Einfluß.

#ch	aktuelle Kopfkategorie ("current heading") 
	Fast dasselbe wie #u1 , aber: unter #ch hat man jederzeit den gesamten Text der mit dem aktuellen ak-Befehl ausgewählten Kategorie, während #u1 nur den separierten Bestandteil enthält! Von einem Kopfbefehl ak=4." = "+G ausgehend, hat man unter Sprungmarke  #-G  mit  #u1 nur den jeweiligen Ausschnitt und weiß nicht, woher er stammt, unter #ch steht jedoch die gesamte Kategorie. Das ist z.B. wichtig für Indikatorprüfungen (-Ø 10.2.6.3). 
	Bei einfachen Kopfbefehlen (ohne Trennvorschrift) sind #u1 und #ch gleich. 

#dt	Datum in deutscher Form, z.B.  Mo., 24. Sep 1990 . Mit dem Manipulationsbefehl  b5  oder mit b", "  kann man z.B. erreichen, daß der Wochentag wegfällt. 

#dts	Datum/Uhrzeit in Sortierform : für Sortieraufgaben wichtig. Dasselbe Datum würde mit Uhrzeit in der Form YYYYMMDD/hh:mm:ss erscheinen, also z.B. 19920819/13:32:55. Mit Hilfe der Manipulationsbefehle hat man nun alle Möglichkeiten, Datum und Uhrzeit in jeder Weise umzugestalten: z.B. würde  #dts e4 p"(" P")"  das Jahr nehmen und einklammern. 

#fna	Dateiname (File Name) der aktuellen .ALD- bzw. .ALG-Datei 
#mv	Multi-Volume Indicator : diese Kategorie existiert, wenn es sich um ein mehrbändiges Werk handelt. Sie enthält dann die Bandnummer des ersten Bandes, genauer: den Inhalt der ersten vorkommenden Kategorie #01. Sinnvoll ist #mv, weil man damit innerhalb der Kategorieliste feststellen kann, ob es sich um ein mehrbändiges Werk handelt. Der Befehl 
	#mv +K e0
	würde einen Sprung zur Sprungmarke #-K auslösen, wenn es sich bei dem gerade bearbeiteten Satz um einen hierarchischen handelt. In KAT.API wird davon Gebrauch gemacht: wenn auf Stufe #00 die #75 besetzt ist, aber nicht die #76 (Verlag, aber kein Jahr), dann soll keine Verlagseintragung für Index 6 gemacht werden, denn die Erscheinungsjahre befinden sich dann bei den Bänden und erzeugen von dort aus die richtigen Einträge des Typs "Verlag:Jahr". 
#nr	Satznummer : wenn eine .ALD-Datei exportiert wird (mit PRESTO oder SRCH), ist #nr die interne Satznummer der Datenbank, bei .ALG-Dateien dagegen wird eine fortlaufende Nummer, beginnend mit an am Dateianfang (-Ø 10.2.1), automatisch gebildet. 
#nra	Satznummer des nachgeladenen Satzes : wenn in dem Moment der aktuelle Satz einer ist, den man mit einem Nachladebefehl geladen hat (-Ø 10.2.6.7). Sonst ist #nra unbesetzt. 
#op	Bearbeiter ("Operator"). Wenn beim Programmstart die Option -O Meyer gegeben wird, hat die Sonderkategorie den Inhalt  Meyer . 
	a99: Befehl Operator=... in der INI-Datei. Default: "op". 
#p0	Seitenzahl der aktuellen Seite, aber nur wenn sie gerade ist, sonst leer 
#p1	Seitenzahl, wenn sie ungerade ist, sonst leer. Zu verwenden für Seitenkopf oder -fuß, wenn man die geraden Nummern rechts und die ungeraden links plazieren will. (Beispiel in P-0.APR) 
#p2	Seitenzahl (ohne Berücksichtigung von gerade und ungerade) 
#pa	aktuelle Seitenzahl von Parameter-Set 1. Bekanntlich kann man im Exportprogramm (SRCH) mehrere Exporte parallel fahren. Wenn nun der erste Export (Parameter-Set 1) eine gedruckte Liste mit Seitenzahlen erstellt, kann dazu als zweiter Export (Set 2) eine sortierfähige Namensdatei entstehen, die die Seitenzahlen der Hauptliste mit enthält. Daran kann sich das Sortieren der Namensliste und schließlich eine Druckausgabe eines Namensregisters mit Angabe der Seitenzahlen des Hauptteils anschließen. Beispiel in A-0.APR . 
#pz0	Nummer der aktuellen Zeile, auf der gerade gedruckt wird (beginnend bei 1) 
#pz1	Anzahl insgesamt produzierter Zeilen für den aktellen Datensatz 
#pz2	Anzahl bereits erzeugter Zeilen auf der aktuellen Seite (wenn zm >0 ist). 
#pzp	Aktuelle Länge = Position des zuletzt ausgegebenen Zeichens in der momentan erzeugten Zeile. 
#u1	Sonderkategorien z.B. für Kartenköpfe 
#u2	Die Kategorien #u1 und #u2 spielen eine Sonderrolle. Wenn man sie von Hand eingibt, stehen sie vor der Kategorie #00. (Das kann man nutzen, um von vornherein sortierfähige Sätze zu haben.) Wenn in der Kategorieliste #u1 und #u2 vorkommen, werden sie jedoch temporär mit den Inhalten gefüllt, die sich aus der aktuellen ak-Zeile ergeben (-Ø 10.2.1) bzw. die im Befehl #dxxf/yyf angegeben wurden (-Ø 3.3, Befehl #d). 
	Sonderfall: Wenn keine ak-Befehle vorhanden sind, #u1 und/oder #u2 jedoch wie normale  Kategorien in der Aufnahme belegt sind, dann sind sie auch wie normale Kategorien exportierbar. 
	Der Sinn ist dieser: wenn man eine Sortierdatei hat, dann sind in der Regel #u1 und #u2 mit Sortierbegriffen gefüllt. Diese können dann gleich für den Druck benutzt werden. Z.B. in den Dateien P-*.APR gibt es deswegen keine ak-Befehle. 
	#u1 und #u2 sind spezielle Anwendervariablen: 

#uxy	Anwendervariable: Diese werden erzeugt durch die Manipulationsbefehle  axy  und  Axy  sowie  =xy (-Ø 10.2.6.3, Typ 2), oder durch Vorbesetzung mit der Startoption -UxyTEXT: dadurch gelangt TEXT beim Start in #uxy . Diese Variablen lassen sich wie normale Kategorien exportieren. Besonders wichtig sind sie in Fällen, wo man Inhalte einer Aufnahme aufbewahren will, um sie bei der nächsten wieder zu verwenden. Solche Anforderungen treten auf, wenn man z.B. 
	•	Listen druckt, in denen ein sich wiederholender Kopf nicht jedesmal ausgedruckt werden soll, sondern ab dem zweiten Mal ersetzt durch etwas wie "***"  (Beispiel: P-NORMAL.APR), 
	•	Rechnungen durchführt, wobei Zwischenergebnisse aufbewahrt und von einer Aufnahme zur nächsten jedesmal fortgeschrieben werden müssen  (-Ø 10.2.6.3, Befehle =, a, A, x). (Beispiel: R-0.APR) 

#u0k	(k = 0..3)  #u00 enthält die Anzahl der Kategorien der aktuellen Aufnahme, #u01 die erste Kategorie, #u02 die jeweils nächste (zum Programmieren von Schleifen!), und #u03 die letzte. Sobald man (in einer Schleife) das letzte Feld überschritten hat, ist #u02 nicht vorhanden. 
	Die entscheidende Zeile einer Schleife kann damit so formuliert werden: 
	#u02 +X ...
#ui0	Letzte Nutzereingabe im Register; verwendbar für Flips 
#uxa	Diese Sonderkategorie enthält die Indexzeile, von der aus zuletzt zugegriffen wurde. 
#uxb	Enthält die Nummer des aktuellen Index, also 1, 2, ... 9 oder : oder ; 
#uxc	Enthält die Kurzzeile, über die zugegriffen wurde - falls der Zugriff so stattfand 
#uxd	Die Nummer (1,2,3) der aktuellen Datenbank, wenn mehr als eine beim Start angegeben wurden (nur DOS) 
#uxq	Hier steht die Antwort auf den letzten #q-Befehl (-Ø 10.2.6.4). 
#uxi	(i = 1..9 : ;)  Diese Sonderkategorie enthält die Indexzeile, die mit dem letzten Nachladebefehl im Index i gefunden wurde (-Ø 10.2.6.7). Besonders wichtig bei Nachlademodus 8 und 9. 
	Tip zum Testen: Die #u-Variablen kann man im Editor mit Befehl #a betrachten (-Ø Kap.3.5.3). 
	#ux0 wird außerdem mit dem eingegebenen Suchbefehl belegt, wenn dieser nicht korrekt ist. Auswertung kann dann in  onfnda99.flx erfolgen. 
#uzV	Zuletzt ausgewählte Zeile einer ViewListe (a99). 

Nur a99/alcarta: 
#uzo	Hier steht 000 drin bzw. 001, falls der aktuelle Satz ein online- bzw. offline-Satz ist. 

Wenn man in einem FLEX den Befehl  var zc gegeben hat, steht anschließend in der "internen Variablen" die aktuelle Anzeigezeile (wo sich die Schreibmarke befindet) 
	und: 
#uzC	dieselbe Zeile, aber __ (2x Unterstrich) an der Stelle, wo die Schreibmarke sich befindet 
#uzD 	Fliptext, falls Schreibmarke innerhalb eines solchen 
#uzF 	Flipbefehl (zugehörige Kategorie #uZi, einschl. der Nummer, also #uzF#uZi...) 

	Sonderkategorien für mehrbändige Werke und Stücktitel
	Die folgenden zwei Sonderkategorien haben nur in untergeordneten Sätzen (Bände von mehrbändigen Werken) einen Wert: 

#gt	Gesamttitel: bei Stücktitel-Aufnahmen von Bänden (auf beliebigen Hierarchiestufen!) wird für #gt der Sachtitel #20 der Hauptaufnahme (Stufe #00) mit der Verfasserangabe #40 und der Hierarchiegliederung #01/#02... dieses Bandes eingesetzt (funktioniert nur bei A.CFG!). 
#hi	Hierarchie-Gliederung in Sortierform bzw. in Druckform 
#hi1	Hat man z.B. folgende Gliederung einer hierarchischen Aufnahme (nur angedeutet): 
	#00 
	#20 übergeordneter Gesamttitel
	... 
	#01 1 = Bd. 1            (Sortierform = Druckform)
	#20 Sachtitel von Band 1
	... 
	#01 5 = Bd. 5 
	... 
	#02 1 = Teil 1 
	... 
	#02 3 = Teil 3 
	... 
	dann gilt, während der letzte Teil abgearbeitet wird,  #hi 5,3  und  #hi1 Bd.5,Teil 3 . Sollen die einzelnen Zählungselemente durch '/' statt Komma getrennt werden, müßte man den Hierarchie-Separator mit dem Befehl  kh=/  ändern (-Ø 10.2.5). 
	Ein Tip: wenn man das Postfix  P{ ". " #250 }  oder ein entsprechendes Zwischenteil hinter #hi verwendet, werden Folgezeilen sinnvoll eingerückt. 
	#hi enthält nur dann etwas, während ein Untersatz verarbeitet wird. Folglich kann man bedingte Sprünge konstruieren:  #hi +V e0  bewirkt: wenn der aktuelle Satz ein Untersatz ist, erfolgt Sprung nach #-V ohne Ausgabe von #hi (e0 setzt die Länge auf 0). 
	#hi existiert nicht, wenn ag=0 gesetzt wurde, die Untersätze also selbständig abgearbeitet werden, als wären sie Hauptsätze. 
	Gibt man im Editor den Druckbefehl #d, wenn #02 3 gerade die aktuelle Aufnahme ist, so wird eine "Stücktitelkarte" gemacht, d.h. die fehlenden Kategorien werden aus den hierarchisch übergeordneten Einheiten zusammengesucht. #gt wird dabei benutzt, um den Titel #20 des übergeordneten Gesamtwerks auf der Stücktitelkarte mit auszugeben. Er erscheint dann bei diesem Beispiel in der Form 
			Übergeordneter Gesamttitel / Verfassername ; 5,3 . 
	Einschränkung: #gt funktioniert in dieser Weise nur, wenn das Standard-Kategorienschema A.CFG benutzt wird! Bei anderen Konfigurationen oder anderen Wünschen muß man den Effekt mittels Anwendervariablen nachbilden (-Ø 10.2.6.3) und/oder mit #^xx arbeiten, um Elemente aus der Hauptaufnahme "herunterzuholen". (-Ø 10.2.6.1). Studieren Sie die Parameterdatei D-1.APR, um die Zusammenhänge genau zu verstehen, und probieren Sie alles damit aus. 

`Vorangehender Teil`   /   `Fortsetzung` 

?Vorangehender Teil=h ac10-4 
?Fortsetzung=h ac10-6 
?Steuerbefehle=h ac10-8 
?Anweisungen=h ac10-5=10.2.6.1   Anweisungen 
?10.2.4=h ac10-4=10.2.4.1