10.1 Koşullu derleme

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 10. Önişlemci >

10.1 Koşullu derleme

YönergeNe yapar
#IF <koşul>Koşul doğruysa dalı açar (koşul dili aşağıda)
#IFDEF <AD>Makro tanımlıysa dalı açar
#IFNDEF <AD>Makro tanımlı değilse dalı açar
#ELIF <koşul>, #ELSEIF <koşul>Aynı işleyici: önceki dallar alınmadıysa koşula bakar
#ELSE, #ENDIFKalan dal; bloğun sonu

Zincir kuralları C önişlemcisininkiyle aynıdır: bir zincirde yalnız bir dal alınır; alınmış bir daldan sonraki #ELIF'in koşulu değerlendirilmez bile. Kapalı bir dış bloğun içindeki hiçbir koşul değerlendirilmez ve içindeki #DEFINE, #INCLUDE, #MODE gibi yönergeler çalışmaz. Çözümlenemeyen bir koşul hata verir ve blok kapalı sayılır. Fazla #ENDIF hatadır. İç içe en fazla 64 düzey yazılabilir.

10.1.1 Koşul dili

koşul := koşul (AND | &&) koşul
       | koşul (OR | ||) koşul
       | (NOT | !) koşul
       | ( koşul )
       | terim [ (= | == | <> | != | < | <= | > | >=) terim ]
terim := tamsayı | 'metin' | "metin" | DEFINED(<ad>) | ENV(<ad>) | <gömülü simge> | <makro adı>
  • AND, OR'dan sıkı bağlar: a OR b AND c = a OR (b AND c).
  • İki terim de tam sayıysa sayısal, değilse büyük/küçük harf duyarsız metin karşılaştırması yapılır.
  • Tek terimli koşulda doğruluk: sayıysa sıfırdan farklı olması, değilse boş ve "0" dışında bir şey olması.
  • Tanımsız bir ad 0 sayılır; değersiz tanımlanmış bir makro 1. Tanımlılığı ayırt etmek için DEFINED(ad) ya da #IFDEF kullanılır.
  • Gömülü bir simge, aynı adlı bir makroyu gölgeler.
Gömülü simgeDeğeri
ERRORLEVELSon #SHELL* yönergesinin çıkış kodu
PLATFORM'WINDOWS' ya da 'LINUX'
WINDOWS, LINUXPlatform için 1 / 0 (#IF WINDOWS kısa yazımı)
DEBUGHata ayıklama derlemesinde 1, değilse 0
DATABASEGeçerli veritabanının adı (yoksa boş)
STORAGE_ENGINEGeçerli veritabanının depolama motoru adı (yoksa boş)
USERBağlantının kullanıcı adı (yoksa boş)
DEFINED(x)x makrosu tanımlıysa 1
ENV(x)x ortam değişkeninin değeri (yoksa boş)
#define SURUM 5
#define ETIKET "deneme"

#if SURUM >= 5 AND ETIKET = 'deneme'
  --// bu dal alınır
#elif DEFINED(SURUM)
  --// alınmış daldan sonra buraya bakılmaz
#else
  --// ...
#endif

#if PLATFORM = 'WINDOWS' OR ENV('PATH') <> ''
  --// ...
#endif

#shell cmd /c exit 3
#if ERRORLEVEL > 0
  --// komut hata verdi
#endif