[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