Textersatz

<< Click to Display Table of Contents >>

Navigation:  Arbeit mit GESStabs > Nützliche Werkzeuge >

Textersatz

#Expand

Mit #EXPAND kann man Platzhalter definieren, die dann während der Ausführung des GESStabs-Skripts durch definierte Inhalte ersetzt werden.

Syntax für Erstellen eines Expands:

#EXPAND #<Name des Expands> <Wert>

Syntax für Aufruf eines Expands:

#<Name des Expands>

Zum Beispiel:

 

#EXPAND #kopf var1 var23 mean( var24.num )

...

...

TABLE #kopf BY var17

TABLE #kopf BY var33

...

Der Name, der mit #EXPAND vereinbart wird, muss mit dem Lattenkreuz (#) beginnen. An allen Stellen, wo dann in der Folge der vereinbarte Name steht, wird dieser durch den Text ersetzt, der im #EXPAND-Statement hinter dem Namen, bis zum Zeilenende steht: hier also durch ’var1 var23 mean( var24.num )’. In diesem Beispiel wird dies dazu benutzt, Tabellensätze mit wechselnden Köpfen zu produzieren.

Ein #EXPAND kann mittels '-X' aus der GESStabs-Kommandozeile als Parameter übergeben werden: -X#<name>:<wert>.

#expand #name wert ist bedeutungsgleich mit -X#name:wert als Parameter. 

Sind im zu expandierenden String Leerzeichen enthalten, muss man den gesamten Parameter in Anführungszeichen setzen, z.B.
"-X#kopf:variable1 variable2 variable3".


#ExpandInc

Syntax:

#EXPANDINC #<Name des Expands> <Wert>

Im Kern ist dies ein #EXPAND. Das Argument <value> muss aber eine ganze Zahl sein, aus den Ziffern 0..9.

Wird der mit dem #EXPANDINC verknüpfte Name expandiert, wird vor der Expansion die gespeicherte Zahl um 1 erhöht.

Also, in einem Beispiel:

#EXPANDINC #keyvalue 1000

#keyvalue würde dann beim ersten Mal den String »1001« liefern, dann »1002«, »1003« usw.


#ExpandInToken

Es gibt eine Reihe von Anwendungen für ein #EXPAND, das auch innerhalb von Token funktioniert, um z.B. Dateinamen etc. global verwalten zu können, ohne dafür immer Makros verwenden zu müssen.

Syntax:

#EXPANDINTOKEN &<search>& <replace>
<search>     ::= zu ersetzender text
<replace>    ::= einzufügender text

Die zu ersetzende Zeichenfolge ist an & anzuschließen.

Ein Beispiel:

#EXPANDINTOKEN &land& germany

DATAFILE = study_xyz&land&.dat;

INCLUDE = tab&land&.inc;

Dies liest der Compiler als:

DATAFILE = study_xyzgermany.dat;

INCLUDE = tabgermany.inc;

Um dies umzusetzen, muss der Präprozessor alle einzelnen Begriffe daraufhin untersuchen, ob in ihnen eine zu expandierende Zeichenfolge vorkommt. Da dies Ressourcen kostet, ist dieser Ersetzungsmodus als Default abgeschaltet. Man muss diesen "freischalten". Da zu erwarten ist, dass derartiger Ersetzungsbedarf nur Teile des Skripts betrifft, kann man die Erlaubnis auf relevante Scriptteile einschränken.

 ALLOWEXPANDINTOKEN = [ YES | NO ];

Token, die mit & beginnen, sind von der Ersetzung ausgeschlossen.