Strukturierung hierarchischer Labellisten mit Overovercode

Manche Dinge sind kom­pli­ziert. In unse­rem all­täg­li­chen Leben zäh­len Flugzeugmotoren dazu, Ökosysteme und die Ampelschaltung auf der welt­weit größ­ten Verkehrskreuzung im Tokioter Stadtteil Shibuya (渋谷). Im täg­li­chen Geschäft eines Tabellierers hin­ge­gen kön­nen Gewichtungen, gewünsch­te Tabellenkonstrukte und Labellisten so kom­plex sein, dass sie schwer zu über­bli­cken sind.

Aktuell haben wir uns mit dem Fall einer Kundin beschäf­tigt, die sich mit einer lan­gen, ver­schach­tel­ten Labelliste an uns wand­te. Über ins­ge­samt sie­ben Hierarchie-Ebenen wur­den zahl­lo­se Labelcodes benannt, ange­ord­net und sor­tiert. Das lässt sich logisch auf­bau­en und tech­nisch umset­zen — GESStabs kann mitt­ler­wei­le mit bis zu zehn Hierarchie-Ebenen arbei­ten –, ist aber auch mit­hil­fe sorg­fäl­tigs­ten Skriptens und Strukturierens nicht banal.

Das neue Schlüsselwort OVEROVERCODE dient nun als Hilfestellung zur Handhabung lan­ger und hier­ar­chisch ange­ord­ne­ter Labellisten. Overovercodes stel­len die nächst-höhe­re Hierarchie-Stufe zu ein­fa­chen Overcodes dar und bestehen nur aus Overcodes (und ggfls. Overovercodes). Der Gedanke hin­ter dem neu­en Keyword ist, dass ein­fa­che Labelcodes nicht mehr­fach refe­ren­ziert — d.h. zunächst in einem Overcode, dann erneut im dar­über ange­sie­del­ten Over-Overcode usw. –, son­dern nur ein­ma­lig einem Overcode zuge­ord­net wer­den müs­sen. Anschließend kann der Overcode wei­ter­ver­ar­bei­tet wer­den.

Voraussetzung für die Nutzung ist, dass alle Over- und Overovercodes der Labelliste ein­deu­ti­ge Namen (Localvarname) erhal­ten. Anders als Overcodes kön­nen Overovercodes nur aus Overcodes gebil­det wer­den, die bereits exis­tie­ren. Sie müs­sen also im Anschluss an die Overcode-Bestimmungen defi­niert wer­den. Atomare Labelcodes kön­nen hin­ge­gen (wie bis­her) auch dann Overcodes und Overovercodes zuge­ord­net wer­den, wenn sie noch nicht beschrie­ben wur­den.

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 ver­wen­de­ten Prefixe ‘OC’, ‘OOC’ usw. sind Teil der Labeltexte und eine ein­fa­che Möglichkeit, im Skript den Überblick über lan­ge hier­ar­chi­sier­te Labellisten zu behal­ten.


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