602SQL-┌plnß dokumentace Index   Tisk  

Definice maker (klientsk² jazyk)

Pomocφ direktivy define lze definovat makra, tedy specifikovat, ₧e se v programu mß urΦit² identifikßtor nahrazovat jin²mi symboly. Direktiva ve tvaru:

#define ident rozvoj_makra

zp∙sobφ, ₧e od tohoto mφsta v programu se vÜechny v²skyty identifikßtoru ident nahradφ rozvojem makra, co₧ je posloupnost libovoln²ch symbol∙.

Definovat lze takΘ makro s parametry ve tvaru:

#define ident(par1, par2, ...)  rozvoj_makra

V tomto p°φpad∞ se makro volß s parametry takto:

ident(sp1, sp2, ...)

a toto volßnφ se nahradφ rozvojem makra, v n∞m₧ se ka₧d² v²skyt par1 nahradφ sp1, v²skyt par2 nahradφ sp2 atd. P°i volßnφ makra je nutno uvΘst stejn² poΦet parametr∙, jako v definici makra.

V makrech se nerozliÜuje mezi velk²mi a mal²mi pφsmeny. Makra bez parametr∙ se pou₧φvajφ zejmΘna p°φ °φzenφ podmφn∞nΘho p°ekladu. Pro oznaΦovßnφ konstantnφch hodnot je vhodn∞jÜφ pou₧φvat mφsto nich deklarace konstant. Makra s parametry zjednoduÜujφ zßpis opakujφcφch se programov²ch konstrukcφ.

Definici makra lze kdykoli zm∞nit tak, ₧e se pou₧ije novß direktiva #define pro stejn² identifikßtor. Definici lze zruÜit pomocφ direktivy:

#undef ident

P°φklad:

Budi₧ definovßno makro:

#define CHYBA(text) begin Info_box("Nastala chyba", text);  halt end

Pokud v textu programu pou₧ijete zßpis:

if i<0 then CHYBA("Nep°φpustnß vstupnφ hodnota");

p°elo₧φ se jako zßpis:

if i<0 then begin Info_box("Nastala chyba", "Nep°φpustnß vstupnφ hodnota");  halt end;

P°eddefinovanß makra

V klientskΘm programovacφm jazyce jsou p°eddefinovßna tato makra:

_602SQL_ - hodnotou je °et∞zec obsahujφcφ Φφslo verze klienta 602SQL, nap°. "8.0". Pomocφ tΘto direktivy lze p°eklßdat program pro r∙znΘ verze 602SQL.

_LANGUAGE_ - hodnotou je °et∞zec znak∙ obsahujφcφ nßzev zvolenΘho jazyka (jak jste si zvolili); pokud aplikace nenφ vφcejazyΦnß nebo pokud nenφ zvolen ₧ßdn² jazyk, pak je to prßzdn² °et∞zec

_WINBASE602_ - toto₧nΘ s makrem _602SQL_.

P°φklad:

#if _LANGUAGE_ = "english"
    PrepocetNaPalce;
#elif _LANGUAGE_ = "cestina"
    PrepocetNaMetry;
#endif