[Allegro] Trick 45: Versionskontrolle
Bernhard Eversberg
ev at biblio.tu-bs.de
Mo Jun 4 10:54:18 CEST 2007
Trick 45 : Versionskontrolle
Aufgabe: Schnell mal eben checken, ob a99 oder alcarta in einer
geeigneten Version vorliegt.
Warum? Wenn man einen fortschrittlichen FLEX schreibt, in dem z.B. der
Befehl xcode oder srx vorkommt, dann klappt dieser nicht mit
einer V25.3, sondern erst ab V27.2
Um sicherzugehen, daß der Nutzer des FLEXes damit auch was
anfangen kann, ist dann eine Prüfung sinnvoll, ob er eine V27
hat oder nicht.
Natürlich sollte ein mündiger Anwender immer die aktuelle
Version im Einsatz haben, aber wer FLEXe für größere Anwender-
kreise schreibt, kann davon nicht einfach so ausgehen...
Lösung:
Man macht sich die interne Sondervariable m zunutze. Sie enthält immer
die Versionsnummer in der Form "a99 vnn.n" oder "alc vnn.n"
(avanti: "av-x vnn.n"), also z.B. a99 v26.5
Damit kann man folgende kleine Sequenz schreiben:
var m
var (b"v")
if <27.2 jump gehtnich
... Befehle, die erst ab V27.2 gehen ...
end
:gehtnich
var "Sie haben die Version " m ". Die gewünschte Funktion geht aber"
var +" erst ab V27.2 - sorry!"
mes
end
ABER: Der Befehl var (b"v") geht erst ab V24.42 (Vb.179), also die
Anwendung eines Manipulationsbefehls direkt auf die interne Variable.
Wenn es daher sein kann, daß anwenderseitig etwas noch älteres in
Betrieb ist, dann empfiehlt sich das folgende Konstrukt:
var m
ins #uvv
var #uvv(b" ")
if <"v27.2" jump gehtnich
Das ging schon vor V20, aber "var m" gibt es erst ab V22.0 (Vb.155).
Ohne diesen Befehl kann man nichts machen? Doch, und zwar noch diese
Zeile ergänzen:
if ="m" jump gehtnich
denn vor V22.0 kam dabei nur der Buchstabe m heraus.
Fazit: Die Prüfung gelingt nur, wenn mindestens eine V20 vorhanden ist.
-----------------------------------------------------------------
Schon länger bekannt ist dies:
Wenn etwas nur unter a99 laufen soll, dann
var m
if "alc" mes "Sorry, nicht in alcarta";end
...
Mehr Informationen über die Mailingliste Allegro