İlişkisel operatörler: >= ve <= şeklinde yazılır
TROIA'da büyük-eşit ve küçük-eşit operatörleri, birçok dilde olduğu gibi >= ve <= şeklinde yazılır — tersi (=>, =<) geçerli değildir:
IF STOKMIKTARI >= 10 THEN
DURUM = 'YETERLI';
ELSE
DURUM = 'KRITIK';
ENDIF;
IF INDIRIMORANI <= 0 THEN
INDIRIMORANI = 0;
ENDIF;
Eşitlik kontrolü ==, eşit değil kontrolü != ile yapılır (= tek başına atama operatörüdür, eşitlik testi değildir).
İki farklı atama yöntemi
MOVE ... TO komutu ifade (expression) desteklemez, yalnızca sabit bir değeri veya değişkeni doğrudan taşır:
MOVE 'Hello World' TO STRINGVAR1;
MOVE STRINGVAR1 TO STRINGVAR2;
MOVE 3 + 1 TO INTEGERVAR1; /* gecersiz, MOVE ifade desteklemez */
= operatörü ise sağ tarafta ifade kullanılmasına izin verir:
INTEGERVAR1 = 3 * (5 + INTEGERVAR1);
INTEGERVAR1 = ABS(5 - 10);
Mantıksal operatörler
TROIA kodunda IF, WHILE, LOOP koşullarında ! (değil), && (ve), || (veya) kullanılır. AND/OR/NOT kelimeleri ise sadece kod içine yazılan SQL cümlelerinde geçerlidir, TROIA koşul ifadelerinde çalışmaz.
Tip dönüşümü: otomatik casting
TROIA'da basit tipler (STRING, INTEGER, DECIMAL, DATE...) arasında ayrı bir casting operatörüne gerek yoktur, atama sırasında otomatik dönüşüm yapılır. Dönüşüm başarısız olursa hedef değişkene varsayılan değeri atanır:
OBJECT:
STRING KAYNAKSTR,
DOUBLE HEDEFDOUBLE,
DATE HEDEFTARIH;
KAYNAKSTR = '6.0';
HEDEFDOUBLE = KAYNAKSTR; /* HEDEFDOUBLE: 6.0 */
KAYNAKSTR = '25.11.1984';
HEDEFTARIH = KAYNAKSTR; /* HEDEFTARIH: 25.11.1984 */
TABLE, VECTOR ve sınıf örnekleri gibi kompleks tipler için otomatik casting desteklenmez — bu tipler arasında veri taşımak için TROIA'nın ayrı komutları vardır (özellikle tablolar için).
Sonuç
Operatör setini doğru yazmak (özellikle >=/<= sırası) küçük ama sık yapılan bir hata kaynağıdır. MOVE ile = arasındaki fark da aynı derecede önemli: ifade kullanmanız gerekiyorsa = kullanmak zorundasınız.
Yorumlar (0)
Yorum Yaz