Her programlama dilinde olduğu gibi karar verme süreçleri Troia’da da var ve if else yapısı Troia dilinde de mevcuttur.

Genel Yapı

IF Sorgulama İfadesi THEN

     KODLAR 

ELSE

     KODLAR

ENDIF;

 

Bir önceki dersimize aşağıdan göz atabilirsiniz orada bir hesap makinesi yapmıştık şimdi biraz daha o program üzerinden sistemi ileri taşıyıp bir IF ELSE blogu ile daha düzenli hale getireceğiz.

Canias ERP Troia Eğitimleri 12 – Object İşlemleri 2 (Proje 2)

Transaction İsmi : EDUTEST

Başlangıç Diyalogu : EDUD01D000

Oluşturacağımız Diyalog :  EDUD01D002

Tasarım

Yapılacak İşlem

Sayı1 ve Sayı 2 değerleri alınıp ISLEM kısmında girilen (+ – * /) değerlerine göre işleme tabi tutulacak. Eğer işlem kısmına bunlar dışında bir değer gilirse geçersiz işlem uyarı verilecek.

Daha önceden bahsettiğim gibi Troia da özelleşmiş butonlarımız vardı. Butonumuzun boyutunu 28*28 durumuna getirip OK yazarsak aşağıdaki özelleşmiş buton kendisi oluşacaktır.

Kodlar

OBJECT:
INTEGER S1,
INTEGER S2,
STRING ISLEM1,
STRING MSSG,
INTEGER S3;
S1=SAYI1;
S2=SAYI2;
ISLEM1=ISLEM;

IF ISLEM1 == '+' THEN
	S3=S1+S2;
	SONUC=S3;
ELSE

	IF ISLEM1 == '-' THEN
		S3=S1-S2;
		SONUC=S3;
	ELSE

		IF ISLEM1 == '*' THEN
			S3=S1*S2;
			SONUC=S3;
		ELSE

			IF ISLEM1 == '/' THEN
				S3=S1/S2;
				SONUC=S3;
			ELSE
				MSSG='Geçersiz İşlem';
				SONUC=MSSG;
			ENDIF;

		ENDIF;

	ENDIF;

ENDIF;

SHUTDOWN;

OK Click üzerinde durmamız gerekiyor.

İç içe if kullanmanın yöntemi şudur.

IF DEĞER THEN

   KODLAR

Else

    IF DEĞER THEN

       KODLAR

    ELSE

      IF DEĞER THEN

        KODLAR

      ELSE

        KODLAR;

      ENDIF;

   ENDIF;

ENDIF;

Her IF bir ENDIF  komutuyla bitmek zorundadır.

Kısaca birde kodları açıklayalım.

ISLEM2 den değer + gelirse yapacağı işlem belli. Eğer farklı gelirse bunu ELSE komutuyla yakalıyoruz o ELSE içinde yeni bir IF komutu ile gelen değer – mi sorusunu soruyoruz eğer böyle ise kendi ENDIF komutunu bulup çalışmayı durduracaktır. Eğer tüm aramalar sonucunda istediğimiz değeri bulamadıysak en sondaki ELSE komutu gerçekleşecektir.

Bu kodlamamızda yoktu ama değinmemiz gereken bir kaç durum daha var bu yapıyla alakalı.

Eğer bir IF yapısı içinde birden fazla durumun kontrolü sağlanıp bunun sonuca göre işlem yapılması gerekiyorsa şu şekilde yapılabilir.,

Eğer şartlar ve bağlacı ile bağlanmışsa

IF SORGU IFADESİ1 && SORGU İFADESİ2 && SORGU İFADESİ3 THEN

    KODLAR;

ENDIF;

Eğer şartlar Veya bağlacı ile bağlanması gerekiyorsa

IF SORGU IFADESİ1 || SORGU İFADESİ2 || SORGU İFADESİ3 THEN

    KODLAR;

ENDIF;

Şeklinde olabilir.

Değerlerin eşit olmaması gibi bir durum aranıyorsa

IF Değer1 != Değer2 THEN

    KODLAR;

ENDIF;

!= ifadesi eşit değil anlamını taşır.

İki değerin bir birinden büyüklüğü yada eşitliği kontrol ediliyorsa aşağıdaki gibi.

IF Değer1 >= Değer2 THEN

    KODLAR;

ENDIF;

Küçüklüğü yada eşitliği kontrol ediliyorsa aşağıdaki gibi yapılmalıdır.

IF Değer1 <= Değer2 THEN

    KODLAR;

ENDIF;

Ekran Görüntüleri

 

System Flags

Troia’da bazı işlemleri çok daha kolay yapabilmek için özel olarak oluşturulmuş sistem flagleri vardır.

Aynı zamanda birde sistem global değişkenleri

Bunlar;

SYS_USER, SYS_CLIENT, SYS_LANGU  sistem global değişkenleridir.

SYS_STATUS, SELECTED, NOTSELECTED, UPDATED, INSERTED, DELETED  action flags’dir.
Kullanımları ise şu şekildedir.
O anda sistem üzerinde çalışma yapan kişi SYS_USER da kullanıcının CLIENT bilgisi SYS_CLIENT’da giriş yapılan dil bilgiside SYS_LANGU değişkeninde tutulur.
Herhangi bir durumda bir kullanıcı ile bu durumları karşılaştırabilirsiniz.
IF CLIENT == SYS_CLIENT THEN

   KODLAR;

ENDIF;

Sistem Flagleri ise 1 ve 0 değerlerini geri dönerler.

IF SELECTED == 1 THEN 

KODLAR;

ENDIF;

YADA

IF SELECTED == 0 THEN

KODLAR;

ENDIF;

Diğer tüm sistem flagleri için durum aynıdır.

IF ELSE karar yapısı Troia’da bu şekildeydi. Bir sonraki eğitim yazımda görüşmek üzere.


muratbilginer