1           J                                                                                                          Der neue Compiler-Befehle: $OPTION

$ OPTION 0-

Mit der $Option knnen die Optionen, die sonst nur ber GEN (bei GFA-BASIC fr MS-DOS ber DGEN) erreichbar sind, auch vom Programm aus gesetzt werden, z.B.:

$OPTION z+      //lokale Variablen automatisch lschen
$OPTION z-       // lokale Variablen nicht automatisch lschen

Insbesondere die OPTIN 0 ist so erreichbar.

Erklrung der Auswirkung dieser Option (0), die als Voreinstellung gesetzt ist:
Hufig wird in Programmen die Summe (oder Differenz) von Fliekommavariablen und Intgervariablen als Integerausdruck verwendet:
wie in:	a(base% + i) = b(base2% + i) 
Die Variable i ist hier keine Integervariable, wird aber wie eine benutzt. Der Compiler fhrt hier eine Geschwindigkeits- (Codegrenoptiemierungf) durch, die insbesondere bei Rechnern ohne Coprozessor zu einer erheblichen Beschleunigung der Berechnung fhrt.
Anstatt:
base% in eine (temporre) Fleikommavariable zu berrsetzten,
dann eine Fliekommaaddition der Variablen i durchzufhren,
und das Ergebnis dann wieder in eine Integerzahl zu konvertieren,
fhrt der Compiler folgendes durch:
zuerst wird die Fliekommavariable i nach Integer gewandelt,
dann wird die Integervariable base% addiert.

Dieses Vorgehen ist mit weniger Code verbunden und wird auch noch schneller durchgefhrt. In einem Fall ist das Ergebnis  aber nicht gleichdem Ergebenis der langsamen Variante: wenn i negativ und nicht ganzzahlig ist, so ist das Ergebnis um eins verschieden:
z.B.:		base% = 100,i = -3.5
		300 - 3,5 => 300.0 - 3.5 = 296.5 => nach Integerwandlung => 296
		300 - 3.5 => 300 - 3 => 297.

Dieser Fall tritt recht selten ein, da meist nur ganze Zahlen in dieser Weise verwendet werden, meist wird nur  aus Bequemlichkeitsgrnden hier keine Integervariable, sondern eine Fliekommavariable mit ganzzahligem Inhalt (z.B. Schleifenzhler, For Next) gewhlt. In dem Fall, das doch keine Fliekommavariable gewnscht wird, kann man: entweder gen -0 (dgen -0) verwenden, die Fliekommaoperation explizit ins Programm schreiben (etwa Cfloat(base%) + i oder INT(base% + i) /**** richtig: INT ist eine (langsame) Fliekomma-operation, Code wie a% = INT(a% / 5) ist also sehr langsam, sattdessen a% = a% / 5 oder a% = a% DIV 5 verwenden.
(Anmerkung: a% / 5 wird automatisch in a% \ 5 umgewandelt, wenn das Ergebnis als Integer verwendet wird, manchmal optimiert der Compiler auch das hier berflssige INT weg.) .****/. Ab dieser Compilerversion (Datum '95) kann $OPTION 0- alternativ verwendet werden, ggf. mit $OPTION 0+ spter.

$OPTION - Syntax:: Zeichen [0-9 A-Z a-z]+ oder - ; auch mehrere Optionen getrennt duch Komma oder Leerzeichen, mit + oder -, Kommentar wie gehabt ab // oder ' mglich, alles andere wird ignoriert.NT ist eine (langsame) Fliekomma-operation, Code wie       w    s    o J  k 
  jnd
  n  w]
   Z
  
  w]  , gB           
                         T  V            P          F           )  W  Y  ]  z        ^	  
  
  L          F         