DYREKTYWY KOMPILATORA
Dyrektywy kompilatora mogą wystąpić w dowolnym miejscu tekstu źródłowego i mają postać:
{$dyrektywa}
lub
{$dyrektywa parametry}
Dyrektywy dzielimy na
przełączające, które ustalają odpowiednie cechy kompilatora na włączone lub wyłączone (aktywne lub nieaktywne)
sparametryzowane, które przekazują informacje (nazwy zbiorów i rozmiary pamięci) kompilatorowi za pomocą parametrów
warunkowe, które stosowane są w celu sterowania warunkową kompilacją określonych części tekstu źródłowego
Dyrektywy przełączające mogą obejmować swoim zasięgiem cały proces kompilacji (dyrektywy globalne) lub tylko część (dyrektywy lokalne). Pierwsze z nich powinny występować przed częścią opisową programu lub modułu, a dyrektywy lokalne mogą występować w dowolnym miejscu.
Nazwa dyrektywy przełącznikowej składa się z pojedynczej litery, po której występują bezpośredni znak - lub +. Znak - ozn., że dana opcja jest wyłączona (nieaktywna), a znak + włączona (aktywna).
Dyrektywy przełącznikowe mogą być grupowane w pojedynczą dyrektywę. Pojedyncze dyrektywy oddziela się w takim przypadku przecinkami.
Przykłady:
{$B+} lub {$B-} włącza lub wyłącza pełne wartościowanie wyrażeń logicznych
{$I+} lub {$I-} włącza lub wyłącza komendy operacji wejścia i wyjścia
{$N+} lub {$N-} włącza lub wyłącza zadanie używania koprocesora arytmetycznego (w trybie{$N-}
dostępny jest tylko typ rzeczywisty Real, a trybie {$N+} dostępne są typy real, single, double, extender, comp)
{$E+} lub {$E-} włącza lub wyłącza emulację koprocesora elektronicznego
IORESULT- zwraca kod błędu powstały w czasie ostatniej operacji wejścia/wyjścia. Wartość 0 oznacza poprawnie wprowadzona dana, inna wartość oznacza numer wykrytego błędu. Wywołanie instrukcji IORESULT po dyrektywie {$!+} jest konieczne, ze względu na sprawdzenie każdej operacji wejścia/wyjścia. Brak odwołania się do tej funkcji spowoduje zablokowanie dalszych operacji wejścia/wyjścia.
Przykład:
Program dyrektywy;
Var n:integer;
ok.: boolean;
begin
repeat write('Podaj liczbe 1..99');
{$!-}
readln(n);
{$!+}
ok:=(IORESULT=0) and (n>0) and (n<OO);
if ok then writeln(# 7, 'Złe dane')
else writeln(`Dobre dane');
until OK;
readln;
end.
Dyrektywy sparametryzowane
{$1 nazwa pliku}
włącza plik tekstowy o podanej nazwie do tekstu źródłowego i standardowo przyjęte jest rozszerzenie
PAS. Ten plik będzie szukany w katalogu bieżącym oraz w katalogu wyspecyfikowanym za pomocą
opcji OPTIONS/DIRECTORIES/INCLUDE DIRESTORIES
Przykład
var i,j: integer;
($1 ab.pas}