$DEF, $DEFINE, $DEFINE_MACRO

$DEF <Name> = <Text> $DEFINE $DEFINE_MACRO

Definiert ein Makro.

Makros können Fahrzeuge sein, Teile eines Zuges oder sogar ein gesamter Zug. Ihre Verwendung ist immer dann von Vorteil, wenn etwas mehrfach benutzt oder bearbeitet werden muß. Makros dürfen verschachtelt sein, sie dürfen andere Makros enthalten oder auf sie zugreifen.

Beispiel:

$DEF BR218=BR218BB|BR218ROT

$DEF DIESEL_FUR_PERSONENZUG=3:BR218|BR211

Der gleiche Makroname kann mehrfach definiert werden. Die Makros werden im umgekehrter Reihenfolge gelesen, also von unten nach oben oder von der letzten zur ersten Definition. Immer werden jedoch Makros zuerst gespeichert und dann die Bewegungen ausgewertet. Beispiel:

$DEF GS=G_GGS|SNCF_GS41A

M=DR_254,3*GS;

$DEF GS=SNCF_GS311A|SNCF_GS41A

M=DR_106,3*GS;

Das obige Beispiel ist eine nutzlose Doppel-Definition: Nach der Definition aller Makros hat GS den zweiten Wert, nämlich den eines französichen Gs311 oder einer Gs41 - Güterwagens.

Der Grund für eine Redefinition liegt in der Erweiterung der Bedeutung eines Makros oder eines Fahrzeugnamens. Sein ursprünglicher Zweck ist jedoch eher die Nutzung nach einem $INCLUDE - Kommando oder um einige Fahrzuegeigenschaften zu definieren, wenn diese nicht in der Fahrzeugliste gespeichert sind.

Wenn in einer $INCLUDE - Datei folgende Definition steht

$DEF GS=G_GGS|SNCF_GS41A

und nach dem $INCLUDE - Kommando folgendes steht

$DEF GS=SNCF_GS311A|GS

wird der Name GS eine zufällige Auswahl aus allen drei Typen von Güterwagen sein.

Im Falle verschachtelter Makros wird das einzelne Makro von der Position des erweiterten Makros aus rückwärts gelesen. Diese Strategie erlaubt die mehrfache Redefintion eines Makros oder Bildnamens. Die vorgesehene Nutzung dieses Merkmals ist es, optische Änderungen an den Bildern vorzunehmen (wenn man dies nicht bereits in der Bildliste machen möchte) oder das Verhalten einiger Fahrzeuge zu verändern.

Makros können andere Makros aufrufen, die aufgerufenen Makros müssen jedoch vor der Stelle des Aufrufs bereits definiert sein. Zum Beispiel:

$DEF 2CONT80=C2R17|C2R_ITEL|C2R_YHL|C2050|C2006|C2_TRITON|C2054

$DEF VRCONT9=VR_LGJN[O:2CONT80,13,13]

In diesem Beispiel muß die Makrodefinition von 2CONT80 in der Fahrplandatei vor dem Makro VRCONT9 stehen, da VRCONT9 die Definition von   2CONT80 zum Funktionieren benötigt.