This is an old revision of the document!
There are macros in Traffic both in the vehicle list (see also there) and in timetable. However, they each have slightly different meanings and are handled even more differently.
In the timetable they facilitate z. As the train formation considerably when certain vehicles or vehicle groups are repeated. Whatever can be entered in vehicle motion after C = can also be used in a macro.
Once a macro has been defined, it can be used as often as required in a timetable, but of course only in lines behind its definition.
Die Definiton eines Makros erfolgt auf einer dieser Weisen:
$DEF <Name des Makros>=<Inhalt des Makros>
$DEFINE <Name des Makros>=<Inhalt des Makros>
$DEFINE_MACRO <Name des Makros>=<Inhalt des Makros>
In der Praxis dürfte sich die erste, kürzeste Schreibweise durchsetzen, die Funktionsweisen sind aber gleich.
Konkret sähe es beispielsweise so aus:
$DEF V188=DB_V188R|V188~SO
Wann immer nun in einer Fahrzeugreihung oder einem anderen Makro V188 eingetragen wird, löst Traffic es zu seinem eigentlichen Inhalt auf, also zu einer der beiden aus der Fahrzeugliste übernommenen V188ern.
Wenn ein Makro eine Reihe von Fahrzeugen enthält, kann diese von der Fahrtrichtung unabhängig gemacht werden, indem hinter dem Gleichzeichen entweder ein Kleiner- oder ein Größer-Zeichen eingesetzt wird. Zum Beispiel:
$DEF DB_624=<BR624OL~LIP,BR924O~LIP,BR624O~LIP
Soll nur ein Teil des Makros fahrtrichtungsunabhängig sein, wird dieser in Klammern gesetzt und das Kleiner- bzw. Größerzeichen mit in die Klammer übernommen.
$DEF TEE_WR=(<ARDUMH105L,WRUMH132_TEEL)|(>ARDUMH105,WRUMH132_TEE)|ARUMZ217BL|ARUMZ217B
Makros können, wie gesagt, alles enthalten, was auch eine Fahrzeugreihung in einer Bewegungszeile enthalten kann, seien es zufällige Fahrzeugauswahlen, seien es Fahrzeuggruppen, seien es Makros oder beliebige Kombinationen. Man kann z. B. bestimmte Wagenbauarten in einem Makro zusammenfassen, dieses Makro in einem Makro einsetzen, das einen Zug definiert, das Zugmakro wiederum in ein anderes Makro eintragen, das andere ähnliche Zugreihungen enthält usw.
Man kann aber auch Makros überschreiben, ihnen also einen neuen Inhalt geben, wenn der alte Inhalt im Laufe des Fahrplans nicht mehr gebraucht wird – und man kann Makros sogar in sich selbst verwenden.
$DEF Schuerzenwagenzug=DRG_AB4U38_2C,(3-5)*DRG_C4U38_2CL|DRG_C4U38_2C $DEF Schuerzenwagenzug=DRG_PW4U37,Schuerzenwagenzug
Oder auch mit nachträglicher Richtungsunabhängigkeit:
$DEF Schuerzenwagenzug=DRG_AB4U38_2C,(3-5)*DRG_C4U38_2CL|DRG_C4U38_2C $DEF Schuerzenwagenzug=DRG_PW4U37,(<Schuerzenwagenzug)|(>Schuerzenwagenzug)
Makros dürfen an beliebiger Stelle des Fahrplans definiert werden, aber immer vor ihrer Verwendung.
Bestimmte Zeichen sollten in Makronamen nicht verwendet werden. Sie dürfen zwar mit Ziffern anfangen und komplett aus Ziffern bestehen, Umlaute sind aber beispielsweise nach Möglichkeit zu vermeiden.
Makros können nicht nur Fahrzeuge enthalten, sondern auch Vorder- und Hintergrundbilder oder Zusätzliche Parameter. Auch diese können verschachtelt werden, so kann in einem Makro eine Vordergrundsequenz definiert werden, in einem zweiten eine Hintergrundsequenz, und ein drittes vereint die beiden zu einem Zusätzlichen Parameter.
In Makros können sogar POOLs eingetragen werden. Hierbei ist aber darauf zu achten, daß in allen eingetragenen POOLs tatsächlich Bewegungen stattfinden. Andernfalls gibt Traffic eine Fehlermeldung aus, daß ein POOL nicht gefunden wurde.
Zu erwähnen wäre hier noch die Einbindung externer Fahrpläne mittels $INCLUDE oder $REQUIRE. Man kann in solchen Fahrplänen Makros definieren, diese Fahrpläne dann in dem Fahrplan einbinden, der aktuell in Traffic laufen soll, und die Makros nutzen, als stünden sie im aktuellen Fahrplan.