Seit Traffic 4.19 gibt's ja Variablen . Mit denen möchte ich jetzt folgendes machen:
Ich möchte eine Variable inline per AP definieren, wodurch sie unterschiedliche Werte annehmen kann (sie soll die Zuglänge in Wagen darstellen). In derselben Bewegungszeile soll die Variable aber auch gleich ausgewertet werden.
Hier mal ein Beispiel: Am Anfang kommt dies.
Code | $DEF V100=DB_V100_10(|L)
$DEF V160=DB_V160(|L)
$DEF Eilzug3=[ZL=3],[C=$MIX(2,DB_3B_AB4YMG51(|L),DB_3A_B4YMG51(|L)),DB_3B_MD4I50(|L)]
$DEF Eilzug4=[ZL=4],[C=$MIX(3,DB_3B_AB4YMG51(|L),DB_3A_B4YMG51(|L),DB_3A_B4YMG51(|L)),DB_3B_MD4I50(|L)] |
Was ich jetzt machen möchte, ist, mittels der Variablen ZL je nach Zuglänge die Lok auswählen. Wenn der Zug 3 Wagen hat, soll ihn die V 100 ziehen; hat er 4 Wagen, soll ihn die V 160 ziehen.
Okay, hier wirkt das unnötig. Aber stellen wir uns mal vor, statt der fix und fertigen C=-Formulierungen da oben werden die Wagenzüge definiert durch ein gigantisches Geflecht aus Präprozessor-Makros mit etlichen Parametern. (Dafür gibt es Gründe.)
Blöderweise ist die Verwendung der Variablen noch nicht wirklich dokumentiert, also ist Experimentieren angesagt.
Mit folgenden Formulierungen fährt der Zug:
$IF mit Dollarzeichen, $ZL mit Dollarzeichen:
Code | V=20;AP=Eilzug3|Eilzug4,[C-=$IF($ZL>3,V160,V100),] |
$IF mit Dollarzeichen, $ZL mit Dollarzeichen als $EVAL ausgewertet:
Code | V=20;AP=Eilzug3|Eilzug4,[C-=$IF($EVAL($ZL)>3,V160,V100),] |
&IF mit Und-Zeichen, ZL ohne Vorzeichen:
Code | V=20;AP=Eilzug3|Eilzug4,[C-=&IF(ZL>3,V160,V100),] |
&IF mit Und-Zeichen, ZL ohne Vorzeichen als &EVAL ausgewertet:
Code | V=20;AP=Eilzug3|Eilzug4,[C-=&IF(&EVAL(ZL)>3,V160,V100),] |
$IF mit ZL quittiert Traffic mit der Fehlermeldung 12721.
&IF mit folgenden Dollarzeichen quittiert Traffic mit der Fehlermeldung 12804.
&IF mit &ZL quittiert Traffic mit der Fehlermeldung 12803.
Aber: $ZL bzw. ZL ist in der Abfrage immer 0. (Wenn das Größer-Zeichen durch ein Kleiner-Zeichen ersetzt wird, fährt in allen Fällen die V 160.)
Kann es sein, daß Variablen nicht in derselben Zeile gesetzt und abgefragt werden können?
Martin |