Troia

Değişkenler ve Kapsam

Değişken Komutları Ve Sistem Değişkenleri

1.1 Değişken Kapsamı (Scope)

Bir değişkenin kapsamı (scope), o değişkenin geçerli (erişilebilir) olduğu yazılım bölgesini ifade eder. TROIA’da değişkenler üç farklı kapsamda tanımlanabilir:

1.1.1 Global Kapsam (Global Scope)

  • Global değişkenler, tüm uygulama (transaction) boyunca geçerlidir.
  • Her yerden erişilebilir: dialoglardan, class metodlarından ya da eventlerden.
  • Ancak tüm bu bileşenlerin aynı transaction (uygulama) içinde çalışıyor olması gerekir.
  • En geniş kapsama sahip değişken türüdür.

1.1.2 Üye Kapsamı (Member Scope)

  • Member (üye) değişkenler, tanımlandıkları class içindeki tüm metodlarda geçerlidir.
  • Değişken sadece o class’a aittir ve class dışından doğrudan erişilemez.
  • Erişim için @ operatörü kullanılır. Bu, diğer dillerdeki (.) operatörüne benzerdir. (SınıfAdı@değişken)

1.1.3 Yerel Kapsam (Local Scope)

  • Local (yerel) değişkenler, sadece tanımlandıkları method veya event içinde geçerlidir.
  • TROIA’da daha dar kapsam (örneğin, blok içi) tanım desteklenmez.
  • Yani, bir metodun içinde tanımlanan local değişken, o metodun her yerinden erişilebilir.

Aynı isimde bir değişken üç seviyede de tanımlanmışsa, önce LOCAL kullanılır; yoksa MEMBER, o da yoksa GLOBAL kullanılır.

LOCAL: STRING AD, STRING SOYAD, INTEGER NOT;

MEMBER: STRING AD, STRING SOYAD, INTEGER NOT;

GLOBAL: STRING AD, STRING SOYAD, INTEGER NOT;

1.2 Değişken Tanımlama (Defining Variables)

TROIA programlama dilinde değişken tanımlamanın birden fazla yöntemi vardır. Bu yöntemler, değişkenin kullanım amacına, kapsamına (scope) ve nerede tanımlandığına göre değişiklik gösterir.

Komut Açıklama
LOCAL Yalnızca bir method veya event içinde geçerli olan yerel değişken tanımlar.
GLOBAL Uygulama (transaction) içinde her yerden erişilebilen genel değişken tanımlar.
MEMBER Sadece sınıf içinde geçerli olan üye değişken tanımlar.
OBJECT Bir sınıf örneği (instance) oluşturmak için kullanılır.

1.3 Değişken Tanım Komutları

GLOBAL Komutu: Global değişken tanımlar. Tüm uygulama boyunca, tüm method, dialog, class ve eventlerden erişilebilir. En geniş kapsamlı değişkenlerdir.

MEMBER Komutu: Sınıfa (class) ait üye değişkenleri tanımlar. Sadece tanımlandığı sınıfın içinde ve metotlarında geçerlidir. MEMBER komutu sadece class içinde kullanılabilir. Dialog ya da raporlarda kullanılamaz; kullanılırsa derleme hatası verir. Tanımlanan değişkenlere class dışından INSTANCE@DEGISKEN şeklinde erişilir.

LOCAL Komutu: Yerel değişken tanımlar. Sadece tanımlandığı method veya event içinde geçerlidir.

OBJECT Komutu: TROIA’daki en eski ve en yaygın değişken tanımlama komutudur. Ancak kapsamı, nerede ve hangi türle tanımlandığına göre değişir.

OBJECT komutunun kapsamı tahmin etmesi zordur, çünkü veri tipi ve bulunduğu yer kapsamı belirler. Bu yüzden GLOBAL, LOCAL, MEMBER komutlarının kullanımı okunabilirlik açısından önerilir. Ancak TROIA’daki birçok eski uygulamada OBJECT çok sık kullanılır. Bu yüzden anlamını bilmek zorunludur.

Komut Nerede Kullanılır Kapsam Okunabilirlik
GLOBAL Her yerde Tüm uygulama ✅ Yüksek
MEMBER Sadece class içinde Class örneği ✅ Yüksek
LOCAL Yalnızca method/event içinde Sadece o method ✅ Yüksek
OBJECT Her yerde Bağlama göre değişir ⚠️ Düşük (ama yaygın)

1.4 Sistem Değişkenleri  (System Variables)

TROIA’da sistem değişkenleri, sistemin kendisi tarafından önceden tanımlanmış, global ve çoğunlukla salt okunur (read-only) olan özel değişkenlerdir. Bu değişkenler, kullanıcının oturumu, sistem durumu, uygulama bağlamı gibi birçok bilgiyi taşır ve her yerden erişilebilir durumdadır.

🔍 Genel Özellikler:

  • Global kapsamlıdır; tüm uygulama boyunca erişilebilirler.
  • Genellikle salt okunurdur. Değerleri doğrudan değiştirilemez.
  • Veri tipleri, değişkenin amacına göre değişir (LONG, STRING, vb.).
  • Büyük çoğunluğu SYS_ ön eki ile başlar.
  • Bu değişken isimleriyle yeni değişken tanımlanamaz.

📌 Sık Kullanılan Sistem Değişkenleri:

Sistem Değişkeni Açıklama
SYS_CURRENTDATE Şu anki tarih/zamanın LONG değerini döner.
SYS_CLIENT Kullanıcının login olurken seçtiği client (firma) değerini döner.
SYS_LANGU Kullanıcının login olurken seçtiği dil (language) kodunu döner.
SYS_USER Oturum açan kullanıcının kullanıcı adını döner.
SYS_VERSION Kullanılan TROIA platformunun versiyon numarasını verir.
SYS_AFFECTEDROWCOUNT Son yapılan veritabanı işlemi (INSERT/UPDATE/DELETE) ile etkilenen satır sayısını verir.
SYS_CURRENTDIALOG Şu anda açık olan dialog (ekran) adını verir.
CONFIRM CONFIRM MESSAGE veya OPTION MESSAGE sonrası kullanıcının seçimini verir.
SQL Veritabanına en son gönderilen SQL sorgusunu verir.

Hacı Mustafa Özden

Canias ERP Specialist - TROIA Developer - Software Engineer || Kırlareli Üniversitesi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu