Strukturierung hierarchischer Labellisten mit Overovercode

Manche Dinge sind kompliziert. In unserem alltäglichen Leben zählen Flugzeugmotoren dazu, Ökosysteme und die Ampelschaltung auf der weltweit größten Verkehrskreuzung im Tokioter Stadtteil Shibuya (渋谷). Im täglichen Geschäft eines Tabellierers hingegen können Gewichtungen, gewünschte Tabellenkonstrukte und Labellisten so komplex sein, dass sie schwer zu überblicken sind.

Aktuell haben wir uns mit dem Fall einer Kundin beschäftigt, die sich mit einer langen, verschachtelten Labelliste an uns wandte. Über insgesamt sieben Hierarchie-Ebenen wurden zahllose Labelcodes benannt, angeordnet und sortiert. Das lässt sich logisch aufbauen und technisch umsetzen — GESStabs kann mittlerweile mit bis zu zehn Hierarchie-Ebenen arbeiten –, ist aber auch mithilfe sorgfältigsten Skriptens und Strukturierens nicht banal.

Das neue Schlüsselwort OVEROVERCODE dient nun als Hilfestellung zur Handhabung langer und hierarchisch angeordneter Labellisten. Overovercodes stellen die nächst-höhere Hierarchie-Stufe zu einfachen Overcodes dar und bestehen nur aus Overcodes (und ggfls. Overovercodes). Der Gedanke hinter dem neuen Keyword ist, dass einfache Labelcodes nicht mehrfach referenziert — d.h. zunächst in einem Overcode, dann erneut im darüber angesiedelten Over-Overcode usw. –, sondern nur einmalig einem Overcode zugeordnet werden müssen. Anschließend kann der Overcode weiterverarbeitet werden.

Voraussetzung für die Nutzung ist, dass alle Over- und Overovercodes der Labelliste eindeutige Namen (Localvarname) erhalten. Anders als Overcodes können Overovercodes nur aus Overcodes gebildet werden, die bereits existieren. Sie müssen also im Anschluss an die Overcode-Bestimmungen definiert werden. Atomare Labelcodes können hingegen (wie bisher) auch dann Overcodes und Overovercodes zugeordnet werden, wenn sie noch nicht beschrieben wurden.

Syntaktischer Aufbau für OVEROVERCODE:

OVEROVERCODE <Localvarname>
:<Localvarname von Overcode 1> 
[:<Localvarname von Overcode 2>
...
:<Localvarname von Overcode n>] 
"<Labeltext>"

Hier ein Tabellen- und Syntaxbeispiel:

labels V1 = 
overcode OC1 1:2 "OC Layout" 				
overcode OC2 3:5 "OC Tabellierung"			
overcode OC3 6 7 "OC Datenmanipulation"			
overcode OC4 8 9 "OC Markierung" 			
overcode OC5 10 "OC Texte" 			        
overovercode OOC1 :OC1 :OC2 :OC3 "OOC GESStabs"	
overovercode OOC2 :OC4 :OC5 "OOC GESS ChartFactory"
overovercode OOOC1 :OOC1 :OOC2 "OOOC GESS Software"    
1  "Usefont"
2  "Drawbox"
3  "Mean"
4  "Sort"
5  "Table"
6  "Weight"
7  "Compute"
8  "CellColor"
9  "MarkString"
10 "Fill TEXT_01 with"
;

Tipp: Die im Beispiel verwendeten Prefixe ‚OC‘, ‚OOC‘ usw. sind Teil der Labeltexte und eine einfache Möglichkeit, im Skript den Überblick über lange hierarchisierte Labellisten zu behalten.


GESStabs: Aus der Praxis — für die Praxis.