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 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
...