REXX Programlama Dili - Alt Yordamlar ve İşlevler - Alt Yordamlar
REXX programlama dilinde alt yordamların tanımlanması işlemi, diğer yordamsal programlama temelli dillerdeki aynı mantık esası çerçevesinde gerçekleşmektedir. Bu işlemin gerçekleştirilmesini sağlayan anahtar kelime, Procedure anahtar kelimesidir. Bu anahtar kelimenin sağladığı olanaklar ışığında bir alt yordamın tanımlanması işlemine ait temel noktalar, izleyen satırlarda sıralandığı gibidir.
Nokta - 1
Alt yordamın ismi belirlenir. Bu isim belirleme işlemi gerçekleştirilirken İngiliz alfabesinde bulunan harflerin büyük/küçük yazılışları, rakamlar ve REXX yorumlayıcıları için özel anlamı olmayan karakterler, 256 karakter uzunluğunda kullanılabilir.
Nokta - 2
İsim belirleme işlemi yapıldıktan sonra, onu izleyen karakter konumuna veya bir boşluk bırakarak sonraki karakter konumuna bir tane iki-nokta-üst-üste (":") karakteri konulur.
Nokta - 3
Ardı sıra Procedure anahtar kelimesine ait Expose anahtar kelimesi kullanılarak, alt yordama değiştirge olarak geçirilecek değişkenlerin tanımı yapılır. Aynı şekilde, alt yordamdan çıkacak değerleri tutacak değişkenlerin tanımı yapılır.
Bu tanımlama işlemi yapılırken, kullanılacak değiştirge isimlerinin, alt yordamı bulunduran ana program içerisindeki değişkenlerle aynı isimde olmasına dikkate edilmelidir.
Ayrıca, belirtilen değişkenlerin dışında herhangi bir değişkenin belirtilmesi halinde bunun dikkate alınmaması isteniyorsa, bir tane nokta (".") işareti değişken listesinin sonuna konulmalıdır.
Nokta - 4
Alt yordamın gövdesine ait dizilimler yazılır.
Nokta - 5
Alt yordamdan dönecek değer, alt yordamın adından sonra belirtilecek değiştirge listesinde yer almayacaksa, geri dönüş değeri olarak belirtilecek değer, Return anahtar kelimesi kullanılarak geri gönderilir.
Nokta - 6
Alt yordamı dizilimsel anlamda sonlandırmak amacıyla bir tane Return anahtar kelimesi sona yerleştirilir.
Buraya kadar değinilen 6 noktanın dikkate alınması sonucu tanımlanan alt yordamın çağrılması işleminin gerçekleştirilmesi için izleyen satırlarda belirtilen noktaların dikkate alınması önerilir.
Nokta - 1
Call anahtar kelimesinin ardı sıra alt yordamın ismi yazılır.
Nokta - 2
Ardı sıra, alt yordama giriş değiştirgesi olarak aktarılacak değişkenler ile varsa alt yordamdan çıkış değeri olarak kullanılacak değişkenlerin listesi yazılır.
Nokta - 3
Eğer alt yordamdan çıkış değeri olarak herhangi bir değişken kullanılamayacaksa, RESULT özel değişkenin değeri kullanılır.
Buraya kadar değinilen toplam 9 noktanın ışığında örnek bir alt yordamın tanımlanması ve çağırılması işlemine ait ayrıntılar, izleyen satırlarda belirtildiği gibidir.
Ayrıntı - 1
Çağırılmak istenen alt yordamın adı "ay1" şeklinde olsun. Bu alt yordam için geçerli olacak giriş değiştirgesinin adı da "giris" şeklinde olsun. Alt yordamın gövdesinde, kendisine "giris" isimli değiştirge ile verilen değerin standart normal çıktı ortamına yazılmasına ilişkin dizilim olsun. Üstelik, bu alt yordam şimdilik bir değer döndürmesin. Bu durumda
/* */
giris = 200
Call ay1 giris
Exit 0
/* ----- */
ay1 : Procedure Expose giris
Say 'Giriş Değeri = ' giris
Return
dizilimleri yazılabilir. Dikkate edilmesi gereken nokta, Procedure Expose değişkeni ile belirtilen "giris" isimli değişkenin, ana program içerisinde de yer almasıdır. Eğer farklı bir isim belirtilseydi, bu durum hataya neden olabilirdi.
Ayrıntı - 2
"ay1" isimli alt yordama "giris" değiştirgesi ile aktarılan değer 2 ile çarpılsın ve alt yordamdan geri gönderilsin. Bu durumda, alt yordamdan dönecek değer RESULT özel değişkeni kullanılarak ele alınıp işlenebilir. Bu durumu örnekleyen dizilimler olarak da
/* */
giris = 200
Call ay1 giris
sonuc = RESULT
Say 'Dönen Değer = ' sonuc
Exit 0
/* ----- */
ay1 : Procedure Expose giris
donus = giris * 2
Return ( donus )
Return
/* ----- */
şeklindeki düzgü kesiti verilebilir.
Ayrıntı - 3
"ay1" isimli alt yordamdan dönecek değeri, "cikis" ismini taşıyan ve Call anahtar kelimesi kullanılırken alt yordam adından sonra belirtilen değiştirge listesi üzerinden elde edebilmek amacıyla
/* */
giris = 200
Call ay1 giris cikis
Say 'Çıkış Değeri = ' cikis
Exit 0
/* ----- */
ay1 : Procedure Expose giris cikis
cikis = giris * 2
Return
/* ----- */
dizilimlerine benzer bir yapının kullanılması yerinde olur.
Açıklama(lar)