Rexx - Hızlı Kılavuz
Rexx (Restructured Extended Executor)bir betik dili olarak tasarlanmıştır. Amacı, komut dosyası oluşturmayı olabildiğince kolay, hızlı, güvenilir ve hatasız hale getirmektir. Birçok programlama dili, eski dillerle uyumluluk için tasarlanmıştır ve belirli izleyiciler veya platformlar için yazılmıştır. Rexx, gereksiz hedefleri görmezden gelir. İlk günden itibaren güçlü, ancak kullanımı kolay olacak şekilde tasarlandı.
Rexx 20 arasında bir 'kendi zamanlı' proje olarak derleme dilde tasarlanmış ve ilk uygulandığı inci aslen dilleri değiştirmek için bir betik programlama dili olarak, Mart 1979 ve IBM Mike Cowlishaw tarafından 1982 ortasınaEXEC and EXEC 2. Birmacro or scripting languageherhangi bir sistem için. Bu nedenle Rexx, Tcl ve Python'un öncüsü olarak kabul edilir. Rexx, yaratıcısı tarafından PL / I programlama dilinin basitleştirilmiş ve öğrenmesi daha kolay bir versiyonu olarak tasarlandı.
Rexx'in özellikleri
Rexx bir programlama dili olarak aşağıdaki temel özelliklere sahiptir:
Basit sözdizimi
Komutları birden çok ortama yönlendirme yeteneği
Belirli bir çağırma ortamıyla ilişkili işlevleri, prosedürleri ve komutları destekleme yeteneği.
Varsa ana bilgisayar yığınıyla birlikte çalışabilme özelliğine sahip yerleşik bir yığın.
Sadece iki düzine talimat içeren küçük talimat seti
Serbest biçimli sözdizimi
Değişken adları dahil büyük / küçük harfe duyarlı olmayan belirteçler
Karakter dizisi temeli
Dinamik veri türü, bildirim yok
Yerel bağlam dışında ayrılmış anahtar kelime yok
Dosya olanakları içermez
Keyfi sayısal hassasiyet
Ondalık aritmetik, kayan nokta
Zengin bir yerleşik işlev yelpazesi, özellikle dizgi ve kelime işleme
Otomatik depolama yönetimi
Çarpma koruması
İçerik adreslenebilir veri yapıları
İlişkili diziler
Sistem komutlarına ve tesislerine kolay erişim
Basit hata işleme ve yerleşik izleme ve hata ayıklayıcı
Birkaç yapay sınırlama
Basitleştirilmiş G / Ç tesisleri
Rexx'in resmi web sitesi www.oorexx.org'dur.
Rexx üzerinde çalışmaya başlamadan önce, sisteminizde tam işlevsel bir Rexx sürümüne sahip olduğunuzdan emin olmanız gerekir. Bu bölümde, Rexx'i kullanmaya başlamak için Rexx'in bir Windows makinesine yüklenmesi ve sonraki yapılandırması açıklanacaktır.
Kuruluma devam etmeden önce aşağıdaki Sistem gereksinimlerinin karşılandığından emin olun.
sistem gereksinimleri
Hafıza | 2 GB RAM (önerilir) |
Disk alanı | Minimum gereklilik yok. Tercihen Rexx kullanılarak oluşturulacak programları saklamak için yeterli depolama alanına sahip olmak. |
İşletim Sistemi Sürümü | Rexx, Windows, Ubuntu / Debian, Mac OS X'e kurulabilir. |
Rexx'i indirme
Rexx'i indirmek için aşağıdaki URL'yi kullanmalısınız - https://www.oorexx.org/download.html
Bu sayfada, aşağıdaki ekran görüntüsünde gösterildiği gibi çeşitli Rexx sürümleri için çeşitli indirmeler vardır.
Sürüm 4.2.0'ın başlığının bulunduğu tablodaki 'ooRexx yükleme dosyaları'na tıklayın.
Bundan sonra, sonraki sayfaya yeniden yönlendirileceksiniz.
Tıkla ooRexx-4.2.0.windows.x86_64.exe indirmek için 64-bityazılımın sürümü. Aşağıdaki bölümde yazılımın kurulumu ile ilgili tartışacağız.
Aşağıdaki adımlar, Rexx'in bir Windows sistemine nasıl kurulabileceğini ayrıntılı olarak açıklayacaktır.
Step 1- Önceki bölümde indirilen Yükleyiciyi başlatın. Yükleyici başladıktan sonra Çalıştır düğmesine tıklayın.
Step 2 - Kuruluma devam etmek için sonraki ekranda sonraki düğmeye tıklayın.
Step 3 - tıklayın I Agree Devam etmek için düğmesine basın.
Step 4 - Kabul et default components ve ardından bir sonraki düğmeye tıklayın.
Step 5 - Kurulum yerini seçin ve İleri düğmesine tıklayın.
Step 6 - Yüklenecek varsayılan işlemleri kabul edin ve İleri düğmesine tıklayın.
Step 7 - Varsayılan dosya ilişkilendirmelerini seçin ve İleri düğmesine tıklayın.
Step 8 - Rexx öğelerini yürütülebilir dosyalara gönder onay kutularına tıklayın ve ardından aşağıdaki ekran görüntüsünde gösterildiği gibi İleri düğmesine tıklayın.
Step 9- Sonraki ekranda Rexx dosyalarıyla çalışmak için düzenleyiciyi seçin. Not defterini varsayılan seçenek olarak tutun. Ayrıca her Rexx dosyası için varsayılan uzantıyı kabul edin.
Step 10 - Açılan aşağıdaki ekranda varsayılan ayarları kabul edin ve kuruluma devam etmek için İleri düğmesine tıklayın.
Step 11 - Son olarak kuruluma devam etmek için Kur düğmesine tıklayın.
Step 12 - Kurulum tamamlandığında, ilerlemek için İleri düğmesine tıklamanız gerekir.
Step 13 - Kurulumu tamamlamak için Finish butonuna tıklayın.
Bu bölümde, eklentilerin nasıl kurulacağını tartışacağız. popular IDE’s (Integrated Development Environment). Bir programlama dili olarak Rexx, aşağıdaki gibi popüler IDE'lerde de mevcuttur:Eclipse. Rexx ile çalışırken daha fazla seçeneğiniz olması için bu IDE'lerde gerekli eklentileri nasıl elde edebileceğimize bakalım.
Eclipse'de Kurulum
Eclipse'de Rexx'i sorunsuz bir şekilde kurmak için aşağıdaki adımlara uymanız gerekecektir.
Step 1 - Eclipse'i açın ve Menü öğesine tıklayın, Help → Eclipse Marketplace aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 2 - Bir sonraki iletişim kutusunda, arama kriterine Rexx yazın ve ara düğmesine tıklayın.
Tamamlandığında, Yükle düğmesine tıklayın.
Step 3 - Özellik kurulumuna devam etmek için Onayla düğmesine tıklayın.
Step 4- Eclipse daha sonra kuruluma başlamak için gerekli dosyaları indirecektir. Tamamlandığında, Eclipse lisans sözleşmelerini kabul etmenizi isteyecektir. Lisans sözleşmelerini kabul etmeye tıklayın ve ardından aşağıdaki ekran görüntüsünde gösterildiği gibi Bitir düğmesine tıklayın.
Eclipse daha sonra yazılımı arka planda yüklemeye başlayacaktır.
Step 5- Muhtemelen bir güvenlik uyarısı alacaksınız (aşağıdaki ekran görüntüsünde gösterildiği gibi). Devam etmek için Tamam düğmesine tıklayın.
Step 6- Güncellemeler yüklendikten sonra Eclipse'i yeniden başlatmanız istenecektir. Eclipse'i yeniden başlatmak için Evet'e tıklayın.
Rexx'in temel sözdizimini anlamak için önce basit bir Merhaba Dünya programına bakalım.
Misal
/* Main program */
say "Hello World"
Merhaba dünya programının ne kadar basit olduğu görülebilir. Hello World programını çalıştırmak için kullanılan basit bir betik satırıdır.
Yukarıdaki programla ilgili olarak aşağıdaki noktalara dikkat edilmesi gerekir -
say command konsola bir değer vermek için kullanılır.
/* */ Rexx'teki yorumlar için kullanılır.
Yukarıdaki programın çıktısı -
Hello World
Bir Beyanın Genel Şekli
Rexx'te, bir programın genel bir biçimini görelim. Aşağıdaki örneğe bir göz atın.
/* Main program */
say add(5,6)
exit
add:
parse arg a,b
return a + b
Yukarıdaki programın çıktısı -
11
Yukarıdaki programdan anladıklarımızın üzerinden geçelim -
Ekle, 2 numara eklemek için tanımlanan bir işlevdir.
Ana programda, 5 ve 6 değerleri toplama fonksiyonunda parametre olarak kullanılır.
Exit anahtar sözcüğü, ana programdan çıkmak için kullanılır. Bu, ana programı add fonksiyonundan ayırmak için kullanılır.
Add işlevi, ':' sembolüyle farklılık gösterir.
Ayrıştırma deyimi, gelen bağımsız değişkenleri çözümlemek için kullanılır.
Son olarak, return ifadesi sayısal değerlerin toplamını döndürmek için kullanılır.
Altyordamlar ve Fonksiyonlar
Rexx'te kod normalde alt yordamlara ve işlevlere bölünmüştür. Kodu farklı mantıksal birimlere ayırmak için alt programlar ve işlevler kullanılır. Alt yordamlar ve işlevler arasındaki temel fark, işlevlerin bir değer döndürmesi, alt yordamların ise döndürmemesidir.
Aşağıda, bir alt yordam ile bir toplama uygulaması için bir işlev arasındaki temel bir fark örneği verilmiştir -
İşlev Uygulaması
/* Main program */
say add(5,6)
exit
add:
parse arg a,b
return a + b
Altyordam Uygulaması
/* Main program */
add(5,6)
exit
add:
parse arg a,b
say a + b
Her iki programın çıktısı 11 değeri olacaktır.
Komutları Yürütme
Rexx, çeşitli komut tabanlı sistemler için bir kontrol dili olarak kullanılabilir. Rexx'in bu sistemlerdeki komutları yürütme şekli aşağıdaki gibidir. Rexx, ne talimat ne de atama olmayan bir program satırıyla karşılaştığında, bu satırı değerlendirilecek ve daha sonra ortama iletilecek bir dizgi ifadesi olarak ele alır.
Bir örnek aşağıdaki gibidir -
Misal
/* Main program */
parse arg command
command "file1"
command "file2"
command "file3"
exit
Bu programdaki benzer üç satırın her biri, bir dosyanın adını (dize sabitlerinde bulunan) bir komutun adına (parametre olarak verilir) ekleyen bir dize ifadesidir. Ortaya çıkan dize, bir komut olarak yürütülecek ortama geçirilir. Komut bittiğinde, "rc" değişkeni komutun çıkış koduna ayarlanır.
Yukarıdaki programın çıktısı aşağıdaki gibidir -
sh: file1: command not found
3 *-* command "file1"
>>> " file1"
+++ "RC(127)"
sh: file2: command not found
4 *-* command "file2"
>>> " file2"
+++ "RC(127)"
sh: file3: command not found
5 *-* command "file3"
>>> " file3"
+++ "RC(127)"
Rexx'teki anahtar kelimeler
REXX'in özgür sözdizimi, bazı sembollerin dil işlemcinin belirli bağlamlarda kullanımı için ayrıldığını ima eder.
Belirli talimatlar dahilinde, talimatın bölümlerini ayırmak için bazı semboller ayrılabilir. Bu simgelere anahtar sözcükler denir. REXX anahtar kelimelerinin örnekleri,WHILE in a DO instruction, ve THEN (bu durumda bir cümle sonlandırıcı görevi görür) ardından IF or WHEN clause.
Bu durumların dışında, yalnızca bir cümlecikteki ilk simge olan ve ardından "=" veya ":" gelmeyen basit semboller, talimat anahtar sözcükleri olup olmadıklarını görmek için kontrol edilir. Sembolleri, anahtar sözcükler olarak algılanmadan, cümlelerin başka yerlerinde özgürce kullanabilirsiniz.
Rexx için yorumlar
Kodunuzu belgelemek için yorumlar kullanılır. Satırdaki herhangi bir konumda / * * / kullanılarak tek satır açıklamalar tanımlanır.
Bir örnek aşağıdaki gibidir -
/* Main program */
/* Call the add function */
add(5,6)
/* Exit the main program */
exit add:
/* Parse the arguments passed to the add function */ parse arg a,b
/* Display the added numeric values */
say a + b
Yorumlar, aşağıdaki programda gösterildiği gibi bir kod satırı arasına da yazılabilir -
/* Main program */
/* Call the add function */
add(5,6)
/* Exit the main program */
exit
add:
parse /* Parse the arguments passed to the add function */
arg a,b
/* Display the added numeric values */
say a + b
Yukarıdaki programın çıktısı -
11
Aşağıdaki programda gösterildiği gibi bir yorumda birden fazla satırınız da olabilir -
/* Main program
The below program is used to add numbers
Call the add function */
add(5,6)
exit
add:
parse arg a,b
say a + b
Yukarıdaki programın çıktısı -
11
Herhangi bir programlama dilinde, çeşitli bilgi türlerini depolamak için çeşitli değişkenler kullanmanız gerekir. Değişkenler, değerleri saklamak için ayrılmış bellek konumlarından başka bir şey değildir. Bu, bir değişken oluşturduğunuzda, o değişkenle ilişkili değeri depolamak için bellekte biraz yer ayırdığınız anlamına gelir.
String, Character, Wide Character, Integer, Floating Point, Boolean, vb. Gibi çeşitli veri türlerine ait bilgileri depolamak isteyebilirsiniz. hafıza.
Yerleşik Veri Türleri
Rexx, çok çeşitli yerleşik veri türleri sunar. Aşağıda Rexx'te tanımlanan veri türlerinin bir listesi yer almaktadır.
Integer- Ondalık nokta veya üs tanımlayıcı içermeyen bir sayısal dizidir. İlk karakter olabilira plus (+) or minus (-) sign. Temsil edilen sayı, -2147483648 ile 2147483647 arasında olmalıdır.
Big Integer- Ondalık nokta veya üs tanımlayıcı içermeyen bir sayı dizisi. İlk karakter bir artı (+) veya eksi (-) işareti olabilir. Temsil edilen numara, -9223372036854775808 ile 2147483648 arasında veya 2147483648 ile 9223372036854775807 arasında olmalıdır.
Decimal - Aşağıdaki biçimlerden birinden olacaktır -
Ondalık nokta içeren ancak üs tanımlayıcı içermeyen bir sayısal dizidir. p hassasiyeti temsil eder ve sdizenin temsil ettiği ondalık sayının ölçeğini temsil eder. İlk karakter bir artı (+) veya eksi (-) işareti olabilir.
Bir dizi sayısal does not contain a decimal pointveya bir üs tanımlayıcı. İlk karakter bir artı (+) veya eksi (-) işareti olabilir. Temsil edilen sayı -9223372036854775808'den küçük veya 9223372036854775807'den büyük.
Float- Bilimsel gösterimde bir sayıyı temsil eden bir dize. Dizi, bir dizi sayısal ve ardından bir üs tanımlayıcıdan (bir E veya e ve ardından isteğe bağlı bir artı (+) veya eksi (-) işareti ve bir dizi sayısaldan oluşur). Dize bir artı (+) veya eksi (-) işaretiyle başlayabilir.
String - Normal bir karakter dizisi.
Aşağıda, her veri türünün nasıl kullanılabileceğine ilişkin bazı örnekler verilmiştir. Yine her veri türü, sonraki bölümlerde ayrıntılı olarak tartışılacaktır. Bu sadece, yukarıda belirtilen veri türlerinin kısa bir açıklamasıyla sizi hızlandırmak içindir.
Tamsayı
Numara veri türünün nasıl kullanılabileceğine dair bir örnek aşağıdaki programda gösterilmektedir. Bu program 2 Tamsayının eklenmesini gösterir.
Example
/* Main program
The below program is used to add numbers
Call the add function */
add(5,6)
exit
add:
parse arg a,b
say a + b
Yukarıdaki programın çıktısı -
11
Büyük Tamsayı
Aşağıdaki program, Rexx'in büyük tam sayıları işleme kapasitesini göstermektedir. Bu program 2 büyük tamsayının nasıl ekleneceğini gösterir.
Example
/* Main program
The below program is used to add numbers
Call the add function */
add(500000000000,6000000000000000000000)
exit
add:
parse arg a,b
say a + b
Yukarıdaki programın çıktısı -
6.00000000E+21
Ondalık
Aşağıdaki program Rexx'in ondalık sayıları işleme yeteneğini göstermektedir. Bu program 2 ondalık sayının nasıl ekleneceğini gösterir.
Example
/* Main program
The below program is used to add numbers
Call the add function */
add(5.5,6.6)
exit
add:
parse arg a,b
say a + b
Yukarıdaki programın çıktısı -
12.1
Yüzer
Aşağıdaki örnek, bir sayının şamandıra olarak nasıl çalıştığını gösterir.
Example
/* Main program
The below program is used to add numbers
Call the add function */
add(12E2,14E4)
exit
add:
parse arg a,b
say a + b
Yukarıdaki programın çıktısı -
141200
Dize
Tuple veri türünün nasıl kullanılabileceğine dair bir örnek aşağıdaki programda gösterilmektedir.
Burada bir tanımlıyoruz Tuple P3 terim vardır. tuple_size Rexx'te tanımlanan ve başlığın boyutunu belirlemek için kullanılabilen dahili bir işlevdir.
Example
/* Main program */
display("hello")
exit
display:
parse arg a
say a
Yukarıdaki programın çıktısı -
hello
Rexx'te tüm değişkenler '=' ifadesiyle bağlıdır. Değişken adlarına bazen semboller denir. Harfler, Rakamlar ve 'gibi Karakterlerden oluşabilir.. ! ? _'. Oluşturduğunuz değişken adı bir rakam veya nokta ile başlamamalıdır. Basit bir değişken adı nokta içermez. Bir nokta içeren bir değişken adı, bileşik değişken olarak adlandırılır ve bir dizi veya tabloyu temsil eder.
Aşağıdakiler, önceki bölümde de açıklanan Rexx'teki temel değişken türleridir -
Integers- Bu, bir tamsayıyı veya bir kayan noktayı temsil etmek için kullanılır. Buna bir örnek 10'dur.
Big integers - Bu, büyük bir tamsayı değerini temsil eder.
Decimal - Ondalık değer, ondalık nokta içeren ancak üs tanımlayıcı içermeyen bir sayısal dizidir.
Float - Float değeri, bilimsel gösterimde bir sayıyı temsil eden bir dizedir.
String - Rexx'te bir dizi karakter bir dizeyi tanımlar.
Farklı Değişken Fonksiyon Türleri
Bu bölümde, bir değişkenin gerçekleştirebileceği çeşitli işlevleri tartışacağız.
Değişken Beyanlar
Bir değişkeni tanımlamanın genel sözdizimi aşağıdaki gibi gösterilmiştir -
var-name = var-value
nerede
var-name - Bu, değişkenin adıdır.
var-value - Bu, değişkene bağlı değerdir.
Aşağıdaki program, değişken bildirimine bir örnektir -
Example
/* Main program */
X = 40
Y = 50
Result = X + Y
say Result
Yukarıdaki örnekte 2 değişkenimiz var, biri X değere bağlı olan 40 ve bir sonraki Y değerine bağlı olan 50. Sonuç olarak adlandırılan başka bir değişken,X and Y.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
90
Değişkenleri Adlandırma
Değişken adlarına bazen semboller denir. Harfler, Rakamlar ve 'gibi Karakterlerden oluşabilir. ! ? _ '. Oluşturduğunuz bir değişken adı rakam veya nokta ile başlamamalıdır.
Bir değişkene henüz bir değer atanmamışsa, başlatılmamış olarak anılır. İlklendirilmemiş bir değişkenin değeri, değişkenin kendisinin büyük harflerle olan adıdır.
Atanmamış değişkene bir örnek aşağıdaki gibidir -
Example
/* Main program */
unassignedvalue
say unassignedvalue
Yukarıdaki programı çalıştırırsanız aşağıdaki çıktıyı alırsınız -
UNASSIGNEDVALUE
sh: UNASSIGNEDVALUE: command not found
2 *-* unassignedvalue
>>> "UNASSIGNEDVALUE"
+++ "RC(127)"
Değişkenlere birden fazla değer atanabilir. Aşağıdaki program, X değerine nasıl birden çok kez değer atanabileceğini göstermektedir.
Example
/* Main program */
X = 40
X = 50
say X
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
50
Değişkenleri Yazdırma
Değişkenlerin değerleri, saykomut. Aşağıda, çeşitli değişkenlerin yazdırılmasına bir örnek verilmiştir.
Example
/* Main program */
X = 40
/* Display an Integer */
say X
Y = 50.5
/* Display a Float */
say Y
Z = "hello"
/* Display a string */
say Z
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
40
50.5
hello
Operatör, derleyiciye belirli matematiksel veya mantıksal işlemleri gerçekleştirmesini söyleyen bir semboldür.
Rexx, aşağıda ayrıntılı olarak açıklanan çeşitli operatör türlerine sahiptir -
- Aritmetik operatörler
- İlişkisel operatörler
- Mantıksal operatörler
- Bitsel operatörler
Aritmetik operatörler
Rexx dili, herhangi bir dil gibi normal Aritmetik Operatörleri destekler. Aşağıdakiler Rexx'te bulunan Aritmetik Operatörlerdir.
Örnek Göster
Şebeke | Açıklama | Misal |
---|---|---|
+ | İki işlenenin eklenmesi | 1 + 2 3 verir |
- | İlk işlenenden ikinci işleneni çıkarır | 1-2, -1 verir |
∗ | Her iki işlenenin çarpımı | 2 ∗ 2 4 verir |
/ | Paydaya göre pay bölümü | 2/2 1 verecek |
// | İlk sayıyı ikinciye bölmenin kalanı | 3 // 2 1 verir |
% | Div bileşeni bölme işlemini gerçekleştirecek ve tamsayı bileşenini döndürecektir. | % 3 2 1 verir |
İlişkisel Operatörler
İlişkisel Operatörler, nesnelerin karşılaştırılmasına izin verir. Aşağıdakiler, Rexx'te bulunan ilişkisel operatörlerdir. Rexx'te gerçek değer 1 ile gösterilir ve yanlış değer 0 ile gösterilir.
Örnek Göster
Şebeke | Açıklama | Misal |
---|---|---|
== | İki nesne arasındaki eşitliği test eder | 2 = 2 1 verir |
< | Soldaki nesnenin sağ işlenenden daha küçük olup olmadığını kontrol eder. | 2 <3 1 verir |
= < | Soldaki nesnenin sağ işlenenden küçük veya ona eşit olup olmadığını kontrol eder. | 2 = <3 1 verir |
> | Sol nesnenin sağ işlenenden büyük olup olmadığını kontrol eder. | 3> 2 1 verecektir |
> = | Soldaki nesnenin sağ işlenenden büyük veya ona eşit olup olmadığını kontrol eder. | 3> 2 1 verecektir |
Mantıksal operatörler
Mantıksal Operatörler, Boole ifadelerini değerlendirmek için kullanılır. Aşağıdakiler, Rexx'te bulunan mantıksal operatörlerdir.
Örnek Göster
Şebeke | Açıklama | Misal |
---|---|---|
& | Bu, mantıksal "ve" operatörüdür | 1 veya 1 1 verir |
| | Bu, mantıksal "veya" operatörüdür | 1 veya 0 1 verir |
\ | Bu, mantıksal "değil" operatörüdür | \ 0 1 verecek |
&& | Bu, mantıksal dışlayıcı "veya" operatörüdür | 1 && 0 1 verir |
Bitsel Operatörler
Groovy, dört bitsel operatör sağlar. Aşağıda Groovy'de bulunan bitsel operatörler verilmiştir.
Örnek Göster
Sr.No. | Operatör ve Açıklama |
---|---|
1 | bitand Bu bitsel "ve" operatörüdür |
2 | bitor Bu bitsel "veya" operatörüdür |
3 | bitxor Bu bitsel "xor" veya Exclusive veya operatördür |
Operatör Önceliği
Aşağıdaki tablo, Rexx operatörleri için önceliklerinin azalan öncelik sırasına göre Operatör Önceliğini gösterir.
Operatörler | Öncelik |
---|---|
Önek operatörleri | + - \ |
Toplama ve çıkarma | + - |
Karşılaştırma operatörleri | = ==> <> = <= |
Mantıksal AND | & |
Mantıksal VEYA | | |
ÖZEL VEYA | && |
Herhangi bir programlama dilindeki diziler, aynı türdeki değerlerin bir listesini gruplamanıza izin verir. Dizilerin kullanımı, benzer türde değerlerin bir listesini oluşturmanıza olanak sağlamasıdır.sortable, searchable ve olabilir easily manipulated. Rexx ayrıca birinin dizileri tanımlamasına izin verir. Bu diziler tek boyutlu veya çok boyutlu olabilir.
Rexx dizileri seyrek olabilir. Yani, her dizi konumunun bir değeri olması veya hatta başlatılması gerekmez. Veri öğeleri içerenler arasında boş dizi konumları veya yuvalar olabilir. Veya diziler, ardışık dizi yuvalarının hepsinin veri öğeleri içerdiği yoğun olabilir.
Birçok programlama dilinde, tablodaki ilk girişin alt simgesinin ne olduğu ile ilgilenmeniz gerekir. İlk sayısal alt simge 0 mı yoksa 1 mi? Rexx'te ilk alt simge, kullandığınız şeydir! Bu nedenle, ilk dizi öğesini tercih ettiğiniz şekilde 0 veya 1 konumuna girin.
array_name.0 = ‘first element’
veya
array_name.1 = ‘first element’
Diziler için mevcut olan farklı işlemlere bakalım.
Diziler Oluşturma
Diziler, Rexx'te değişkenler için kullanılan aynı adlandırma kuralına göre oluşturulur.
Dizi oluşturmak için genel sözdizimi aşağıdaki gibidir -
Arrayname.index = value
nerede
Arrayname - Bu, diziye verilen addır.
Index - Bu, dizideki belirli bir öğeye başvurmak için dizin konumudur.
Value - Bu, dizideki dizin öğesine atanan değerdir.
Dizi bildirimine bir örnek aşağıdaki gibidir -
Example
/* Main program */
list.1 = 0
list.2 = 0
list.3 = 0
Yukarıdaki program hakkında aşağıdaki noktalara dikkat edilmesi gerekir -
- Dizinin adı liste olarak verilmiştir.
- 0 değeriyle başlatılan dizinin 3 öğesi vardır.
Bir Dizi Öğesine Değer Atama
Değerler, dizi öğelerinin başlatılmasında olduğu gibi, dizi öğelerine yeniden atanabilir.
Aşağıdaki program, mevcut bir dizinin çeşitli indeks değerlerine atanabilecek değerlerin bir örneğidir.
/* Main program */
list.1 = 0
list.2 = 0
list.3 = 0
/* Assigning new values to the array*/
list.1 = 10
list.3 = 30
Bir Dizinin Değerlerini Görüntüleme
Bir dizinin değerleri, dizi öğesinin dizin konumuna atıfta bulunularak görüntülenebilir. Aşağıdaki örnek, dizinin çeşitli öğelerine erişmeyi gösterir.
Example
/* Main program */
list.1 = 0
list.2 = 0
list.3 = 0
/* Assigning new values to the array*/
list.1 = 10
list.3 = 30
say list.1
say list.2
say list.3
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
10
0
30
Dizileri Kopyalama
Bir dizinin tüm elemanları başka bir diziye kopyalanabilir. Bunun genel sözdizimi aşağıdaki gibidir -
Newarray. = sourcearray.
nerede
Newarray - Bu, öğelerin kopyalanması gereken yeni dizidir.
Sourcearray - Bu, öğelerin kopyalanması gereken kaynak dizidir.
Diziler için kopyalama işlemlerinin nasıl gerçekleştirilebileceğine dair bir örnek aşağıdaki programda gösterilmektedir -
Example
/* Main program */
list.1 = 0
list.2 = 0
list.3 = 0
/* Assigning new values to the array*/
list.1 = 10
list.3 = 30
listnew. = list.
say listnew.1
say listnew.2
say listnew.3
Yukarıdaki programın çıktısı -
10
0
30
Dizi öğeleri arasında yineleme
Bir dizinin öğeleri, Rexx'te bulunan yinelemeli ifadeler kullanılarak da yinelenebilir. Bunun nasıl yapılacağına dair bir örnek aşağıdaki gibidir -
Example
/* Main program */
list.1 = 10
list.2 = 20
list.3 = 30
number_of_elements = 3
do j = 1 to number_of_elements
say list.j
end
Yukarıdaki program hakkında aşağıdaki noktalara dikkat edilmesi gerekir -
do loop dizi öğelerini yinelemek için kullanılır.
Değişken number_of_elements dizideki öğelerin sayısını saklamak için kullanılır.
variable j dizinin her bir öğesini yinelemek için kullanılır.
Yukarıdaki programın çıktısı -
10
20
30
İki Boyutlu Diziler
Ayrıca Rexx'te çok boyutlu diziler oluşturabileceğimizden bahsedildi. 2 boyutlu bir diziyi nasıl uygulayabileceğimizin bir örneğine bakalım.
Example
/* Main program */
list.1 = 10
list.1.1 = 11
list.1.2 = 12
say list.1
say list.1.1
say list.1.2
Yukarıdaki programın çıktısı aşağıdaki gibi gösterilecektir -
10
11
12
Yukarıdaki programla ilgili olarak aşağıdaki noktaya dikkat edilmelidir -
Çok boyutlu bir dizi oluşturmak için başka bir indeksleme katmanı kullanabiliriz. Örneğimizde kullandıklist.1.1 liste dizisinin dizin değeri 1 için başka bir iç dizi oluşturmak için.
Şimdiye kadar birbiri ardına sıralı bir şekilde yürütülen ifadeler gördük. Ek olarak, Rexx'te bir programın mantığındaki kontrol akışını değiştirmek için ifadeler sağlanmıştır. Daha sonra, ayrıntılı olarak inceleyeceğimiz bir kontrol ifadeleri akışı olarak sınıflandırılırlar.
Bir döngü deyimi, bir deyimi veya deyim grubunu birden çok kez yürütmemizi sağlar. Aşağıdaki çizim, programlama dillerinin çoğunda bir döngü ifadesinin genel biçimidir.
Rexx tarafından desteklenen çeşitli döngüleri tartışalım.
Sr.No. | Döngü Tipi ve Açıklaması |
---|---|
1 | döngü yapmak do loopbelirli sayıda bir dizi ifadeyi yürütmek için kullanılır. İfadenin kaç kez yürütülmesi gerektiği, do döngüsüne aktarılan değer tarafından belirlenir. |
2 | do-while döngüsü Do-while ifadesi, diğer programlama dillerinde mevcut olan basit while döngüsünü simüle etmek için kullanılır. |
3 | bitene kadar döngü Do-to döngüsü, do while döngüsünün küçük bir varyasyonudur. Bu döngü, değerlendirilen koşul yanlış olduğunda çıkış olması gerçeğiyle değişir. |
Kontrollü Tekrar
Do döngüleri, ifadelerin kontrollü bir tekrarını gerçekleştirmek için sağlanabilir.
Sözdizimi
Bu tür bir ifadenin genel sözdizimi aşağıdaki gibidir.
do index = start [to limit] [by increment] [for count]
statement #1
statement #2
end
Bu ifadedeki fark, döngünün çalıştırılma sayısını kontrol etmek için kullanılan bir indeks olmasıdır. İkinci olarak, indeksin başlaması gereken değeri, nerede bitmesi gerektiğini ve artış değerinin ne olduğunu belirten parametreler vardır.
Akış diyagramı
Bu döngünün akış şemasına bakalım -
Yukarıdaki diyagramdan, döngünün indeks değerine ve indeks değerinin nasıl artırıldığına bağlı olarak yürütüldüğünü açıkça görebilirsiniz.
Aşağıdaki program, kontrollü tekrar ifadesinin bir örneğidir.
Misal
/* Main program */
do i = 0 to 5 by 2
say "hello"
end
Yukarıdaki programda, değeri count iönce 0 olarak ayarlanır. Ardından, değer 5'ten büyük olmayana kadar 2'lik sayılarla artırılır.
Yukarıdaki kodun çıktısı -
hello
hello
hello
Karar verme yapıları, programcının program tarafından değerlendirilecek veya test edilecek bir veya daha fazla koşul belirlemesini gerektirir.
Aşağıdaki diyagram, programlama dillerinin çoğunda bulunan tipik bir karar verme yapısının genel biçimini göstermektedir.
Koşul olduğu belirlenirse yürütülmesi gereken bir ifade veya ifadeler vardır. trueve isteğe bağlı olarak, koşul olarak belirlenirse yürütülecek diğer ifadeler false.
Rexx'te bulunan çeşitli karar verme ifadelerine bakalım.
Sr.No. | Açıklama ve Açıklama |
---|---|
1 | If ifadesi İlk karar verme beyanı, ifBeyan. Birif ifade, bir veya daha fazla ifadenin izlediği bir Boole ifadesinden oluşur. |
2 | If-else ifadesi Bir sonraki karar verme ifadesi, if-else ifadesidir. Birif ifadesinin ardından, Boolean ifadesi yanlış olduğunda yürütülen isteğe bağlı bir else ifadesi gelebilir. |
İç İçe If İfadeleri
Bazen sahip olma şartı vardır multiple if statementsdiğer programlama dillerinde mümkün olduğu gibi birbirinin içine gömülüdür. Rexx'te de bu mümkündür.
Sözdizimi
if (condition1) then
do
#statement1
end
else
if (condition2) then
do
#statement2
end
Akış diyagramı
Yuvalanmış akış diyagramı if ifadeler aşağıdaki gibidir -
İç içe geçmiş bir örnek alalım if ifade -
Misal
/* Main program */
i = 50
if (i < 10) then
do
say "i is less than 10"
end
else
if (i < 7) then
do
say "i is less than 7"
end
else
do
say "i is greater than 10"
end
Yukarıdaki programın çıktısı -
i is greater than 10
İfadeleri Seçin
Rexx, select deyiminin çıktısına bağlı olarak ifadeleri yürütmek için kullanılabilen select deyimini sunar.
Sözdizimi
Bu ifadenin genel şekli -
select
when (condition#1) then
statement#1
when (condition#2) then
statement#2
otherwise
defaultstatement
end
Bu ifadenin genel işleyişi şu şekildedir:
Select deyiminin, farklı koşulları değerlendirmek için bir zaman aralığı vardır.
Her biri when clause değerlendirilmesi gereken farklı bir koşula sahiptir ve sonraki ifade yürütülür.
Aksi takdirde ifade, önceki koşullar olmadığında herhangi bir varsayılan ifadeyi çalıştırmak için kullanılır. evaluate to true.
Akış diyagramı
Akış diyagramı select ifade aşağıdaki gibidir
Aşağıdaki program, Rexx'teki durum açıklamasına bir örnektir.
Misal
/* Main program */
i = 50
select
when(i <= 5) then
say "i is less than 5"
when(i <= 10) then
say "i is less than 10"
otherwise
say "i is greater than 10"
end
Yukarıdaki programın çıktısı şu olacaktır:
i is greater than 10
Rexx, sayılar söz konusu olduğunda aşağıdaki veri türlerine sahiptir.
Integer- Ondalık nokta veya üs tanımlayıcı içermeyen bir sayısal dizidir. İlk karakter bir artı (+) veya eksi (-) işareti olabilir. Temsil edilen sayı, -2147483648 ile 2147483647 arasında olmalıdır.
Big Integer- Ondalık nokta veya üs tanımlayıcı içermeyen bir sayı dizisi. İlk karakter bir artı (+) veya eksi (-) işareti olabilir. Temsil edilen numara, -9223372036854775808 ile 2147483648 arasında veya 2147483648 ile 9223372036854775807 arasında olmalıdır.
Decimal - Aşağıdaki biçimlerden biri -
Bir ondalık nokta içeren ancak üs tanımlayıcı içermeyen bir sayısal dizge; burada p hassasiyeti temsil eder ve sdizenin temsil ettiği ondalık sayının ölçeğini temsil eder. İlk karakter bir artı (+) veya eksi (-) işareti olabilir.
Ondalık nokta veya üs tanımlayıcı içermeyen bir sayısal dizidir. İlk karakter bir artı (+) veya eksi (-) işareti olabilir. Temsil edilen sayı -9223372036854775808'den küçük veya 9223372036854775807'den büyük.
Float- Bilimsel gösterimde bir sayıyı temsil eden bir dize. Dizi, bir dizi sayısal ve ardından bir üs tanımlayıcıdan (bir E veya e ve ardından isteğe bağlı bir artı (+) veya eksi (-) işareti ve bir dizi sayısaldan oluşur). Dize bir artı (+) veya eksi (-) işaretiyle başlayabilir.
Şimdi farklı olana bakalım methods available for numbers.
Sr.No. | Numbers için kullanılabilen yöntemler |
---|---|
1 | ABS Bu yöntem, bir giriş sayısının mutlak değerini döndürür. |
2 | MAX Bu yöntem, bir sayı listesinden maksimum değeri döndürür. |
3 | MIN Bu yöntem, bir sayı listesinden minimum değeri döndürür. |
4 | RASTGELE Bu yöntem rastgele oluşturulmuş bir sayı döndürür. |
5 | İŞARET Sayı 0'dan büyükse 1 veya 0 ise 0 veya sayı 0'dan küçükse -1 döndürür. |
6 | TRUNC Bu yöntem bir sayıyı keser. |
Rexx'te dizeler bir dizi karakterle gösterilir. Aşağıdaki program dizelere bir örnektir -
/* Main program */
a = "This is a string"
say a
Yukarıdaki programın çıktısı aşağıdaki gibidir -
This is a string
Dizeler için Rexx'te bulunan bazı yöntemleri tartışalım.
Sr.No. | Dizeler için Rexx'te bulunan yöntemler |
---|---|
1 | ayrıldı Bu yöntem, dizenin solundan belirli sayıda karakter döndürür. |
2 | sağ Bu yöntem, dizenin sağından belirli sayıda karakter döndürür. |
3 | uzunluk Bu yöntem, dizedeki karakter sayısını döndürür. |
4 | tersine çevirmek Bu yöntem, karakterleri ters formatta döndürür. |
5 | karşılaştırmak Bu yöntem 2 dizgiyi karşılaştırır. "Dize1" ve "dize2" aynıysa "0" döndürür. Aksi takdirde, eşleşmeyen ilk karakterin konumunu döndürür. |
6 | kopyalar Bu yöntem, bir string n defalarca. |
7 | substr Bu yöntem, belirli bir dizeden bir alt dizeyi alır. |
8 | poz Bu yöntem, bir dizenin diğerinin içindeki konumunu döndürür. |
9 | delstr Bu yöntem, bir dizenin içinden bir alt dizeyi siler. |
Rexx'teki kod normalde İşlevler ve Alt Yordamlara bölünmüştür. İşlevleri kullanmak, kodu daha fazla mantıksal birime ayırmaya yardımcı olur. Gelin bu fonksiyonlara detaylı bir şekilde bakalım.
Bir Fonksiyonun Tanımlanması
Bir işlev bildiriminin sözdizimi aşağıdaki gibidir -
FunctionName:
PARSE ARG arguement1, arguement2… arguementN
Return value
Nerede,
FunctionName - Bu, işleve atanan addır.
PARSE ARG - Bunlar, parametrelerin işleve aktarıldığını belirtmek için kullanılan Rexx'te anahtar sözcüklerdir.
arguement1, arguement2… arguementN - Bunlar, işleve iletilen argümanlardır.
Return value - Bu, işlevin döndürdüğü değerdir.
Aşağıdaki program Rexx'te fonksiyonların nasıl kullanıldığına dair basit bir örnektir.
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
return a + b
Yukarıdaki program hakkında aşağıdaki hususlara dikkat edilmelidir -
A ve b 2 parametresini kabul eden add adında bir fonksiyon tanımlıyoruz.
İşlev, a ve b'nin toplamını döndürmek için return ifadesini kullanır.
Çıkış ifadesi, ana programın sonunu belirtmek için kullanılmalıdır.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
11
Bağımsız Değişkenlerle Çalışma
Rexx'te, bağımsız değişkenlerle çalışmak için yapılabilecek belirli işlevler vardır. Bu tür birkaç argümana bakalım.
argüman
Bu yöntem, işlev için tanımlanan argüman sayısını döndürmek için kullanılır.
Syntax -
arg()
Parameters - Yok
Return Value - Bu yöntem, işlev için tanımlanan argümanların sayısını döndürür.
Example -
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
say arg()
return a + b
Output - Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
2
11
arg (dizin)
Bu yöntem, argümanın değerini belirli bir konumda döndürmek için kullanılır.
Syntax -
arg(index)
Parameter -
Index - Döndürülecek bağımsız değişkenin dizin konumu.
Return Value - Bu yöntem, belirli bir konumdaki bağımsız değişkenin değerini döndürür.
Example -
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
say arg(1)
return a + b
Output - Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
5
11
Özyinelemeli İşlevler
Özyinelemeli bir işlev veya rutin, kendisini çağıran işlevdir. Herhangi bir özyinelemeli işlev, geleneksel özyinelemesiz bir şekilde (veya yinelemeli olarak) kodlanabilir, ancak bazen özyineleme daha iyi bir sorun çözümü sunar. Tüm programlama dilleri özyinelemeyi desteklemez; Rexx yapar.
Rexx'te özyinelemeli işlevleri kullanan ünlü faktöryel programın bir örneğini görelim.
/* Main program */
do n = 1 to 5
say 'The factorial of' n 'is:' factorial( n )
end
return
/* Function to get factorial */
factorial : procedure
n = arg(1)
if n = 1 then
return 1
return n * factorial( n - 1 )
Yukarıdaki programın çıktısı aşağıdaki gibidir -
The factorial of 1 is: 1
The factorial of 2 is: 2
The factorial of 3 is: 6
The factorial of 3 is: 24
The factorial of 3 is: 120
Yığın bazen harici veri kuyruğu olarak adlandırılır, ancak yaygın kullanımı izler ve ona yığın olarak atıfta bulunuruz. Mantıksal olarak Rexx'e harici olan bir bellek bloğudur. İtme ve sıraya alma gibi talimatlar, verileri yığına yerleştirir ve çekme ve ayrıştırma gibi talimatlar, buradan veri çıkarır. Sıraya alınmış yerleşik işlev, yığında kaç öğe olduğunu bildirir.
Bir yığın örneğine bakalım.
/* STACK: */
/* */
/* This program shows how to use the Rexx Stack as either a */
/* stack or a queue. */
do j = 1 to 3
push ‘Stack: line #’ || j
/* push 3 lines onto the stack */
end
do j = 1 to queued()
/* retrieve and display LIFO */
pull line
say line
end
do j = 1 to 3 queue ‘Queue: line #’ || j
/* queue 3 lines onto the stack */
end
do queued()
/* retrieve and display FIFO */
pull line
say line
end
exit 0
Programdaki ilk do döngüsü yığına üç satır veri yerleştirir. Bunu yapmak için itme talimatını kullanır. Hatları numaralandırıyoruz, böylece LIFO siparişinde alındıklarında sıraları görünür olacak.
İtme talimatı ile yığına yerleştirilen öğeler LIFO sırasına göre alınır -
do j = 1 to 3
push ‘Stack: line #’ || j /* push 3 lines onto the stack */
end
Bir sonraki kod bloğu, yığındaki satırların sayısını keşfetmek için sıraya alınmış yerleşik işlevin kullanımını ve yığındaki tüm satırları almak için bir döngüyü gösterir -
do j = 1 to queued() /* retrieve and display LIFO */
pull line
say line
end
Üç öğe yığına itme yoluyla yerleştirildiği için LIFO sırasına göre geri alınır.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır.
STACK: LINE #3
STACK: LINE #2
STACK: LINE #1
Rexx, G / Ç ile çalışırken bir dizi yöntem sağlar. Rexx, dosyalar için aşağıdaki işlevleri sağlamak için daha kolay sınıflar sağlar.
- Dosyaları okuma
- Dosyalara yazma
- Bir dosyanın dosya mı yoksa dizin mi olduğunu görmek
Rexx'te Dosya G / Ç için mevcut olan işlevler hem satır girişine hem de karakter girişine dayanmaktadır ve her ikisi için de mevcut olan işlevlere ayrıntılı olarak bakacağız.
Rexx'in sunduğu bazı dosya işlemlerini inceleyelim. Bu örneklerin amaçları doğrultusunda, adında bir dosya olduğunu varsayacağızNewFile.txt aşağıdaki metin satırlarını içeren -
Example1
Example2
Example3
Bu dosya aşağıdaki örneklerde okuma ve yazma işlemleri için kullanılacaktır. Burada bir dosyadaki içeriğin farklı şekillerde nasıl okunacağını tartışacağız.
Bir Dosyanın İçindekileri Tek Seferde Satır Okuma
Dosyaların genel işlemleri, Rexx kütüphanesinde bulunan yöntemler kullanılarak gerçekleştirilir. Dosyaların okunması, Rexx'teki tüm işlemlerin en basitidir.
Bunu gerçekleştirmek için kullanılan işleve bakalım.
Linein
Bu yöntem, metin dosyasından bir satır döndürür. Metin dosyası, işleve girdi parametresi olarak sağlanan dosya adıdır.
Syntax -
linein(filename)
Parameter -
filename - Bu, satırın okunması gereken dosyanın adıdır.
Return Value - Bu yöntem, bir seferde dosyanın bir satırını döndürür.
Example -
/* Main program */
line_str = linein(Example.txt)
say line_str
Yukarıdaki kod oldukça basittir, çünkü Example.txtdosya adı linein işlevine verilir. Bu işlev daha sonra bir metin satırını okur ve sonucu değişkene sağlarline_str.
Output - Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Example1
Bir Dosyanın İçeriğini Tek Seferde Okuma
Rexx'te bir dosyanın tüm içeriğinin okunması while ifadesinin yardımıyla sağlanabilir. While ifadesi dosyanın sonuna gelinceye kadar her satırı tek tek okuyacaktır.
Bunun nasıl başarılabileceğine dair bir örnek aşağıda gösterilmiştir.
/* Main program */
do while lines(Example.txt) > 0
line_str = linein(Example.txt)
say line_str
end
Yukarıdaki programda, aşağıdaki hususlara dikkat edilmesi gerekir -
Satırlar işlevi okur Example.txt dosya.
While işlevi, Example.txt dosyasında başka satırların olup olmadığını kontrol etmek için kullanılır.
Dosyadan okunan her satır için, line_strdeğişken mevcut satırın değerini tutar. Bu daha sonra çıktı olarak konsola gönderilir.
Output - Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Example1
Example2
Example3
Bir Dosyaya İçerik Yazma
Tıpkı dosyaları okumak gibi, Rexx de dosyalara yazma yeteneğine sahiptir. Bunu gerçekleştirmek için kullanılan işleve bakalım.
hat çıkışı
Bu yöntem bir dosyaya bir satır yazar. Satırın yazılması gereken dosya, lineout ifadesinin parametresi olarak sağlanır.
Syntax -
lineout(filename)
Parameter -
filename - Bu, satırın yazılması gereken dosyanın adıdır.
Return Value- Bu yöntem, çizgi çıkışı işlevinin durumunu döndürür. Satır başarıyla yazıldıysa döndürülen değer 0'dır, aksi takdirde 1 değeri döndürülür.
Example -
/* Main program */
out = lineout(Example.txt,"Example4")
Output - Yukarıdaki kod çalıştırıldığında, "Örnek4" satırı dosyaya yazılacaktır Example.txt.
Bu bölümde, dosyalar için kullanılabilen diğer işlevlerden bazılarını tartışacağız.
Sr.No. | Dosyalar için İşlevler |
---|---|
1 | Çizgiler Bu işlev, 1 değerini veya bir giriş akışında okunacak kalan satır sayısını döndürür. Dosya adı, işleve girdi olarak verilir. |
2 | Akış Bu işlev, bir dosyanın durumunu kontrol etmek için kullanılır. Bazen bir dosyanın kullanılmadan önce durumunu kontrol etmek gerekir. Dosya bozuksa veya mevcut değilse, dosya üzerinde başka işlem yapılamaz. Bu nedenle, önce dosyanın durumunu kontrol etmek daha mantıklıdır. |
3 | Charin Bu işlev, bir dosyadan her seferinde bir karakter okumak için kullanılır. Bazen programlar dosyaları karakter açısından okumaya ihtiyaç duyar ve bu nedenle bu işlev bu amaç için kullanılabilir. |
4 | karakter Bu işlev, dosyanın kendisinde okunacak 1 veya kalan karakter sayısını döndürür. Dosya adı, işlevin bir parametresi olarak belirtilir. |
5 | Charout Bu işlev, bir dosyaya her seferinde bir karakter yazmak için kullanılır. Dosya adı, işleve bir parametre olarak girilir. |
Herhangi bir programlama dilinde, tüm program mantıksal modüllere bölünmüştür. Bu, kolayca korunabilen kod yazmayı kolaylaştırır. Bu, herhangi bir programlama dili için temel bir gerekliliktir.
Rexx'te modüller, Altyordamlar ve işlevler kullanılarak yazılabilir. Alt rutinlere ayrıntılı olarak bakalım.
Bir Alt Rutin Tanımlama
Bir işlev bildiriminin sözdizimi aşağıdaki gibidir -
FunctionName:
Statement#1
Statement#2
….
Statement#N
Nerede,
FunctionName - Bu, alt programa atanan addır.
Statement#1 .. Statement#N - Bunlar, alt programı oluşturan ifadelerin listesidir.
Aşağıdaki program, alt rutinlerin kullanımını gösteren basit bir örnektir.
/* Main program */
call add
exit
add:
a = 5
b = 10
c = a + b
say c
Yukarıdaki program hakkında aşağıdaki hususlara dikkat edilmelidir -
Adlı bir alt program tanımlıyoruz add.
Alt rutin basit bir ekleme işlevi yapar.
Çıkış ifadesi, ana programın sonunu belirtmek için kullanılmalıdır.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
15
Bağımsız Değişkenlerle Çalışma
Rexx'te argümanlarla çalışmak da mümkündür. Aşağıdaki örnek bunun nasıl elde edilebileceğini göstermektedir.
/* Main program */
call add 1,2
exit
add:
PARSE ARG a,b
c = a + b
say c
Yukarıdaki program hakkında aşağıdaki hususlara dikkat edilmelidir -
Add adında 2 parametre alan bir alt rutin tanımlıyoruz.
Alt rutinlerde, 2 parametre PARSE ve ARG anahtar sözcüğü kullanılarak çözümlenir.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
3
Bağımsız Değişkenler İçin Farklı Yöntemler
Argümanlar için mevcut diğer bazı yöntemlere bakalım.
argüman
Bu yöntem, alt rutin için tanımlanan argüman sayısını döndürmek için kullanılır.
Syntax -
arg()
Parameters - Yok
Return Value - Bu yöntem, alt rutin için tanımlanan argümanların sayısını döndürür.
Example -
/* Main program */
call add 1,2
exit
add:
PARSE ARG a,b
say arg()
c = a + b
say c
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
2
3
arg (dizin)
Bu yöntem, argümanın değerini belirli bir konumda döndürmek için kullanılır.
Syntax -
arg(index)
Parameters
Index - Döndürülecek bağımsız değişkenin dizin konumu.
Return Value - Bu yöntem, belirli bir konumdaki bağımsız değişkenin değerini döndürür.
Example -
/* Main program */
call add 1,2
exit
add:
PARSE ARG a,b
say arg(1)
c = a + b
say c
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
1
3
Her programlama dili, programcının bazı rutin görevleri yerine getirmesine yardımcı olan bazı yerleşik işlevlere sahiptir. Rexx'in ayrıca birçok yerleşik işlevi vardır.
Rexx'te bulunan tüm bu işlevlere bakalım.
Sr.No. | Rexx'te bulunan işlevler |
---|---|
1 | ADRES Bu yöntem, Rexx komutlarının şu anda içinde çalıştığı ortamın adını döndürür. |
2 | BİP Bu yöntem, sistemde belirli bir frekans ve sürede bir ses üretir. |
3 | Veri tipi Bu yöntem, girdi geçerli bir sayı ise "NUM" değerini döndürür, aksi takdirde "CHAR" değerini döndürür. Giriş değerini NUM veya CHAR değeriyle karşılaştırmak isteyip istemediğinizi de belirtebilirsiniz. Her durumda, döndürülen değer sonuca bağlı olarak 1 veya 0 olacaktır. |
4 | TARİH Bu yöntem yerel tarihi aşağıdaki biçimde döndürür. |
5 | RAKAMLAR Bu yöntem, mevcut sistemde tanımlandığı gibi SAYISAL HANELER'in mevcut ayarını döndürür. |
6 | ERRORTEXT Bu yöntem, hata numarası 'errorno' ile ilişkili Rexx hata mesajını verir. Lütfen hata numarasının 0 ile 99 arasında bir değer olması gerektiğini unutmayın. Bu, programınızın bir hata kodu döndürdüğü ve hata kodunun ne anlama geldiğini bilmek istediğiniz durumlarda kullanışlıdır. |
7 | FORM Bu yöntem, sistemde matematiksel hesaplamalar yapmak için kullanılan 'NUMERIC FORM'un mevcut ayarını döndürür. |
8 | ZAMAN Bu yöntem, aşağıdaki programda gösterildiği gibi yerel saati 24 saatlik biçimde döndürür. |
9 | KULLANICI KİMLİĞİ Bu yöntem, sistemde oturum açmış mevcut kullanıcı kimliğini döndürür. |
10 | XRANGE Bu yöntem, başlangıç ve bitiş karakteriyle belirtilen aralıktaki karakterleri döndürür. |
11 | X2D Bu yöntem, bir hexstring value. |
12 | X2C Bu yöntem, bir onaltılık dizge değerinin karakter dönüşümünü döndürür. |
Rexx'in en büyük avantajlarından biri, yeniden kullanılabilir komut dosyaları oluşturma yeteneğidir. Günümüzde genellikle kuruluşlarda, yeniden kullanılabilir komut dosyalarına sahip olmak, ortak tekrarlayan görevleri yapmak için zaman kazanmaya büyük bir katkı sağlar.
Örneğin, bir BT organizasyonundaki teknoloji ekipleri, ortak günlük görevleri yerine getiren komut dosyalarına ihtiyaç duyabilir. Bu görevler, işletim sistemleriyle etkileşimi içerebilir. Bu komut dosyaları daha sonra kötü dönüş kodlarını veya hataları işlemek için programlanabilir.
Rexx, bu tür tekrarlayan görevleri gerçekleştirmek için kullanılabilecek birçok sistem komutu sunar. Rexx'te bulunan bazı sistem komutlarına bakalım.
dir
Bu, Windows'ta kullanılan normal dizin listeleme komutudur.
Sözdizimi
dir
Parametreler
Yok
Geri dönüş değeri
Bu yöntem, sistemdeki geçerli dizin listesini döndürür.
Misal
/* Main program */
dir
Çıktı, sistemdeki dizine bağlıdır.
Aşağıdaki program sadece bir örnektir.
Çıktı
Volume in drive D is LENOVO
Volume Serial Number is BAC9-9E3F
Directory of D:\
04/06/2016 12:52 AM 268,205 100008676689.pdf
10/20/2015 08:51 PM <DIR> data
06/01/2016 10:23 AM 31 Example.txt
10/28/2014 06:55 PM <DIR> Intel
06/02/2016 11:15 AM 23 main.rexx
12/22/2014 08:49 AM <DIR> PerfLogs
12/13/2015 11:45 PM <DIR> Program Files
12/24/2015 10:26 AM <DIR> Program Files (x86)
07/17/2015 01:21 AM <DIR> Users
12/23/2015 10:01 AM <DIR> Windows
3 File(s) 268,259 bytes
7 Dir(s) 202,567,680 bytes free
Başka bir örnek dir commandaşağıdaki programda gösterilmiştir. Sadece bu seferspecial rc variable. Bu değişken Rexx'te özeldir ve size sistem komutlarının yürütülmesi durumunu verir. Döndürülen değer 0 ise, bu, komutun başarıyla yürütüldüğü anlamına gelir. Aksi takdirde, hata numarası rc değişken adında verilecektir.
Misal
/* Main program */
dir
if rc = 0 then
say 'The command executed successfully'
else
say 'The command failed, The error code is =' rc
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Çıktı
The command failed, The error code is = 127
Yönlendirme Komutları
Rexx ayrıca yeniden yönlendirme komutlarını kullanma olanağına da sahiptir. Aşağıdaki yeniden yönlendirme komutları Rexx'te mevcuttur.
< - Bu komut, bir dosyadan gelen girdiyi almak için kullanılır.
>- Bu komut, içeriği bir dosyaya çıkarmak için kullanılır. Dosya mevcutsa, üzerine yazılacaktır.
>>- Bu, içeriği bir dosyaya çıkarmak için de kullanılır. Ancak, dosyanın mevcut içeriğini korumak için çıktı dosyanın sonuna eklenir.
Yeniden yönlendirme komutlarını nasıl kullanabileceğimize dair bir örneğe bakalım. Aşağıdaki örnekte, adlı bir dosyayı sıralamak için sort komutunu kullanıyoruz.sortin.txt. Dosyadaki veriler sıralama komutuna gönderilir. Sırala komutunun çıktısı daha sonra sortout.txt dosyasına gönderilir.
Misal
/* Main program */
'sort <sortin.txt> sortout.txt'
Sortin.txt dosyasının aşağıdaki verilere sahip olduğunu varsayın.
Çıktı
b
c
a
Dosya sortout.txt daha sonra aşağıdaki verilere sahip olacaktır.
a
b
c
ADRES İşlevi
Bu yöntem, Giriş, Hata ve Çıktı akışları için kullanılan varsayılan ortamın ne olduğunu bulmak için kullanılır.
Sözdizimi
ADDRESS(options)
Parametreler
Belirli bir sistemin adresi için seçenekler.
Geri dönüş değeri
Bu yöntem, Giriş, Hata ve Çıkış akışları için ortamın adını döndürür.
Misal
/* Main program */
say ADDRESS('I')
say ADDRESS('O')
say ADDRESS('E')
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Çıktı
INPUT NORMAL
REPLACE NORMAL
REPLACE NORMAL
XML, programcıların işletim sistemi ve / veya geliştirme dili ne olursa olsun diğer uygulamalar tarafından okunabilen uygulamalar geliştirmesine olanak tanıyan taşınabilir, açık kaynaklı bir dildir. Bu, uygulamalar arasında veri alışverişi için kullanılan en yaygın dillerden biridir.
XML nedir?
Genişletilebilir Biçimlendirme Dili XML, HTML veya SGML'ye çok benzer bir biçimlendirme dilidir. Bu, World Wide Web Konsorsiyumu tarafından önerilir ve açık bir standart olarak mevcuttur. XML, SQL tabanlı bir omurga gerektirmeden küçük ila orta büyüklükteki verileri izlemek için son derece kullanışlıdır.
Tüm XML kodu örneklerimiz için aşağıdaki basit XML dosyasını kullanalım movies.xml XML dosyasının oluşturulması ve daha sonra dosyanın okunması için.
<collection shelf = "New Arrivals">
<movie title = "Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movie title = "Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movie title = "Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<year>1986</year>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stam pede!</description>
</movie>
<movie title = "Ishtar">
<type>Comedy</type>
<format>VHS</format>
<year>1987</year>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom </description>
</movie>
</collection>
Başlangıç
Varsayılan olarak, xml işlevi Rexx yorumlayıcısına dahil değildir. Rexx'te XML ile çalışmak için aşağıdaki adımların izlenmesi gerekir.
Aşağıdaki dosyaları indirin -
Rexxxml - www.interlog.com/~ptjm/
Libxml2 - www.ctindustries.net/libxml/
iconv-1.9.2.win32 - www.xmlsoft.org/sources/win32/oldreleases/
libxslt-1.1.26.win32 - www.xmlsoft.org/sources/win32/oldreleases/
Tüm dosyaları çıkarın ve sistem yoluna dahil edildiklerinden emin olun.
XML İşlevlerini Yükleme
Yukarıdaki bölümdeki tüm dosyalar indirildikten ve başarıyla kaydedildikten sonraki adım, Rexx XML işlevlerini yüklemek için kod yazmaktır. Bu, aşağıdaki kod ile yapılır.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
Yukarıdaki program hakkında aşağıdaki hususlar not edilebilir -
İşlev rxfuncaddharici kitaplıkları yüklemek için kullanılır. xmlloadfuncs işlevi, içindeki tüm kitaplıkları yüklemek için kullanılır. rexxxml hafızaya dosya.
Rcc <> 0 değeri ise bir hataya neden olur. Bunun için arayabilirizrxfuncerrmsg bize hata mesajıyla ilgili daha fazla ayrıntı vermek için.
Sonunda bir çağrı yaptık xmlloadfuncs, böylece xml ile ilgili tüm işlevler artık Rexx programında etkinleştirilebilir.
Bakalım çeşitli methods available for XML in Rexx.
xmlVersion
Bu yöntem, sistemde kullanılan XML ve XSLT kitaplıklarının sürümünü döndürür.
Sözdizimi
xmlVersion()
Parametreler
Yok
Geri dönüş değeri
Bu yöntem, sistemde kullanılan XML ve XSLT kitaplıklarının sürümünü döndürür.
Misal
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız. Bu yine sistemde kullanılan XML kitaplıklarının sürümüne bağlıdır.
Çıktı
1.0.0 20631 10126
xmlParseXML
Bu işlev, işleve gönderilen XML verilerini ayrıştırmak için kullanılır. Belge ağacı, işlev tarafından döndürülür.
Sözdizimi
xmlParseXML(filename)
Parametreler
Filename - Bu, ayrıştırılması gereken XML dosyasının adıdır.
Geri dönüş değeri
Belge ağacı, işlev tarafından döndürülür. Bir hata varsa Else 0 döndürür.
Misal
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Çıktı
Genel çıktı yok.
xmlFindNode
Bu yöntem değerlendirir XPath expressionona geçti. Bu, belge ağacını ayrıştırmak için kullanılır.nodeset hangi daha fazla işlenebilir.
Sözdizimi
xmlParseXML(XPath,document)
Parametreler
XPath - Bu, xml dosyasındaki düğümün yoludur.
document - Bu XML belgesi
Geri dönüş değeri
XPath ifadesini değerlendirir ve sonucu daha sonra kullanılabilecek bir düğüm kümesi olarak döndürür.
Misal
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
say xmlNodesetCount(nodeset)
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Çıktı
4
Çıktı, xml listemizdeki film düğümlerinin sayısını gösterir
xmlEvalExpression
Aşağıdaki yöntem, bir XPath ifadesini değerlendirmek ve sonuç olarak bir dize döndürmek için kullanılır.
Sözdizimi
xmlParseXML(XPath,Node)
Parametreler
XPath - Bu, xml dosyasındaki düğümün yoludur.
document - Belirli düğüm öğesi.
Geri dönüş değeri
Kendisine gönderilen XPath ifadesine göre bir dize döndürülür.
Misal
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
do j = 1 to xmlNodesetCount(nodeset)
value = xmlEvalExpression('type', xmlNodesetItem(nodeset, j))
say value
end
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Çıktı
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy
Regina, Rexx programlarını derlemek ve çalıştırmak için kullanılabilen başka bir Rexx tercümanıdır. Regina'nın resmi sitesi - www.regina-rexx.sourceforge.net/
Regina'yı kullanmanın avantajlarından bazıları şunlardır:
Regina, Windows, Linux veya Mac OS herhangi bir platformda çalışabilir.
Regina, mevcut tüm standartlara göre çalışır.
Regina'nın takip eden büyük bir topluluğu var ve bu nedenle Regina için pek çok forum ve öğrenme materyali mevcut.
Regina, Rexx programlarını yazmak ve test etmek için birçok araca sahiptir.
Regina'da, varsayılan Rexx Yorumlayıcı'da mümkün olmayan komutları çalıştırabilirsiniz. Örneğin, belirli yapılandırma ayarlarını eklerseniz, aslında Rexx'te mümkün olmayan temel sistem seviyesi komutlarını çalıştırabilirsiniz.
Rexx'i burada belgelenen kurulum yoluyla kurduğunuzda Chapter 2 – Rexx Environment, Regina tercümanı da onunla birlikte kurulur.
Şimdi Regina'yı kullanırken mevcut olan yaygın yöntemlerden bazılarına bakalım. Bu işlevler, normal kullanımda bulunmayan genişletilmiş işlevlerdir.
Genişletilmiş işlevleri kullanmak için aşağıdaki kod satırını eklemeniz gerekir. Bu, Regina genişletilmiş işlevlerin kullanılmasını sağlar.
options arexx_bifs
İkinci olarak, tüm Rexx programlarını çalıştırırken aşağıdaki komutu kullanın.
regina main.rexx
Where,
regina - Bu, Rexx programları için kullanılan tercümandır.
main.rexx - Rexx programınız.
Şimdi çeşitli konuları ayrıntılı olarak tartışacağız. functions of Regina Rexx Interpreter.
Sr.No. | Regina Rexx Interpreter'in İşlevleri |
---|---|
1 | b2c Bu yöntem, bir ikili değeri bir dize değerine dönüştürmek için kullanılır. |
2 | bitcomp Yöntem, 2 bitlik dizgileri birer birer karşılaştırmak için kullanılır. |
3 | bittst Bu yöntem, bit dizesindeki belirtilen bitin durumunu belirtmek için kullanılır. |
4 | bulmak Bu yöntem, başka bir dizedeki bir dizenin ilk oluşumunu aramak için kullanılır. |
5 | getenv Bu yöntem, sistemdeki bir ortam değişkeninin değerini döndürür. |
6 | getpid Bu yöntem, geçerli çalışan işlem kimliğinin değerini almak için kullanılır. |
7 | karma Bu yöntem, bir dizenin hash özniteliğini ondalık sayı olarak döndürür. Ayrıca dizenin dahili hash değerini de günceller. |
8 | haklı çıkarmak Bu yöntem, uzunluk değerine göre bir dizenin değerini yaslamak veya kırpmak için kullanılır. |
9 | Putenv Bu yöntem, bir ortam değişkeninin değerini ayarlamak için kullanılır. |
10 | dizin Bu yöntem, sistemdeki mevcut dizinin değerini alır. |
11 | chdir Bu yöntem, sistemdeki mevcut çalışma dizininin değerini değiştirir. |
12 | Randu Bu yöntem, 0 ile 1 arasında sözde rastgele bir sayı döndürür. |
Rexx'in en güçlü özelliklerinden biri, metin değerlerini ayrıştırma yeteneğidir. Muhtemelen bunu başka hiçbir programlama dilinde görmeyeceksiniz.
Ayrıştırma ifadesinin genel biçimi aşağıdaki gibidir -
Sözdizimi
PARSE {UPPER|LOWER|CASELESS} source {template}
Where,
UPPER - Kaynak, ayrıştırılmadan önce büyük harfe dönüştürülür.
LOWER - Kaynak, ayrıştırılmadan önce küçük harfe dönüştürülür.
CASELESS - Bu parametre geçildiğinde, büyük / küçük harf ihmal edilir.
source- Ayrıştırılması gereken kaynak budur. Bunun için birçok seçenek vardır ve aşağıdakilerden herhangi biri olabilir -
ARG - Programın veya prosedürün argümanları kaynak olarak kullanılabilir.
LINEIN - Sonraki satır girişi kaynak olarak kullanılabilir.
SOURCE - Programın kaynak bilgileri kaynak olarak kullanılabilir.
VAR name - Bir değişken adının değeri kaynak olarak kullanılabilir.
template- Bu parametre, kaynağın nasıl ayrıştırılacağını belirtir. Bunun için birçok seçenek mevcuttur. Bazılarından aşağıda bahsedilmiştir.
variable name - Bu, değişkene atanan değerdir.
literal string - Diziyi bölmek için bir desen kullanılabilen bir literal string.
#- Kaynağın içinde mutlak bir karakter konumu. Dolayısıyla, 5 değerini belirtirseniz, 5. karakter kullanılacaktır.
+#- Kaynağın içinde göreceli bir karakter konumu. Dolayısıyla, 5 değerini belirtirseniz, 5. karakter göreceli olarak kullanılacaktır.
Rexx'te ayrıştırmanın nasıl gerçekleştirilebileceğine dair basit bir örneğe bakalım.
Misal
/* Main program */
parse value 'This is a Tutorial' with word1 word2 word3 word4
say "'"word1"'"
say "'"word2"'"
say "'"word3"'"
say "'"word4"'"
Yukarıdaki program, kelime öbeğindeki kelimeleri ayrıştırır. Bir değer, yalnızca bir boşlukla ayrılmış sözcüklerden oluştuğunda ve başında veya sonunda boşluk olmadığında, değerin aşağıdaki gibi bilinen sayıda kelimeye ayrıştırılması kolaydır.
Ayrıştırma işlevi Rexx'te bir dize değeri almak ve ardından bunları kelimelere ayırmak için kullanılır. Yukarıdaki örnekte, kelimeler daha sonra bölünür ve ardından kelime değişkenlerinde saklanır.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
'This'
'is'
'a'
'Tutorial'
Başka bir çözümleme örneği aşağıdaki programda gösterilmiştir. Bu sefer ayrıştırmayı yapmak için bir while cümlesi kullanıyoruz.
Misal
/* Main program */
phrase = 'This is a Tutorial'
do while phrase <> ''
parse var phrase word phrase
say "'"word"'"
end
Yukarıdaki program aşağıdaki çıktıyı verecektir -
'This'
'is'
'a'
'Tutorial'
Konumsal Ayrıştırma
Rexx ayrıca birinin konumsal ayrıştırma ile çalışmasına izin verir. Ayrıştırma ifadesiyle konumsal ayrıştırmayı nasıl başarabileceğimize dair bir örnek görelim.
Misal
/* Main program */
testString = "Doe John M. 03/03/78 Mumbai India";
parse var testString name1 11 name2 21 birthday 31 town 51 country
say name1
say name2
say birthday
say town
say country
Yukarıdaki örnekten, değişken adı ile birlikte dizenin nerede bitmesi gerektiğini de belirlediğimizi not edebilirsiniz. Yani isim1 için, 11. karakterle bitmeli ve sonra isim2 ayrıştırmaya başlamalıyız.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
Doe
John M.
03/03/78
Mumbai
India
Ayrıca kullanabilirsin relative positional parsing bu durumda.
Misal
/* Main program */
testString = "Doe John M. 03/03/78 Mumbai India";
parse var testString name1 +10 name2 +10 birthday +10 town +20 country
say name1
say name2
say birthday
say town
say country
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
Doe
John M.
03/03/78
Mumbai
India
Rexx'te, sinyal talimatı genellikle iki amaç için kullanılır:
Birincisi, kontrolü programın başka bir bölümüne aktarmaktır. Bu normalde diğer programlama dillerinde kullanılan go-to etiketine benzer.
Diğeri ise belirli bir tuzak etiketine gitmektir.
Sinyal komutu aşağıdaki komut komutlarından herhangi birinde kullanılırsa, bekleyen kontrol yapıları otomatik olarak devre dışı bırakılacaktır.
eğer ... o zaman ... başka ...
bitir ... bitir
do i = 1 to n ... end [ve benzer do döngüleri]
ne zaman seçin ... sonra ... ... vb. aksi halde ... son
Sinyal ifadesinin genel sözdizimi aşağıdaki gibi gösterilir -
Sözdizimi
signal labelName
signal [ VALUE ] labelExpression
Sinyal ifadesinin nasıl kullanılacağına dair bir örneğe bakalım.
Misal
/* Main program */
n = 100.45
if \ datatype( n, wholenumber ) then
signal msg
say 'This is a whole number'
return 0
msg :
say 'This is an incorrect number'
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
Çıktı
This is an incorrect number.
Aşağıdaki programda gösterildiği gibi n değişkeninin değerini bir tam sayıya değiştirirseniz -
/* Main program */
n = 100
if \ datatype( n, wholenumber ) then
signal msg
say ' This is a whole number '
return 0
msg :
say ' This is an incorrect number '
Aşağıdaki çıktıyı alacaksınız -
This is a whole number
Aşağıdaki programda gösterildiği gibi etiket değerine de aktarılabilir -
/* Main program */
n = 1
if \ datatype( n, wholenumber ) then
signal msg
if n < 1 | n > 3 then
signal msg
signal value n
3 : say 'This is the number 3'
2 : say ' This is the number 2'
1 : say ' This is the number 1'
return n
msg :
say ' This is an incorrect number '
exit 99
Yukarıdaki programın çıktısı aşağıdaki gibi gösterilecektir -
This is the number 1
Tuzak Etiketi Transferini Etkinleştirme / Devre Dışı Bırakma
Daha önce bahsettiğimiz gibi, sinyal talimatı, kontrolü bir tuzak etiketine transfer etmek için de kullanılabilir.
Tuzak etiket transferinin genel sözdizimi aşağıdaki gibidir -
Sözdizimi
signal ON conditionName [ NAME Label ]
signal OFF conditionName
Nerede,
conditionName - Bu, sinyalin açılması veya kapatılması gereken durumdur.
Label - Programın yönlendirilmesi gereken isteğe bağlı etiket.
Tuzak etiketi aktarımı kullanmanın bir örneğini görelim.
Misal
/* Main program */
signal on error
signal on failure
signal on syntax
signal on novalue
beep(1)
signal off error
signal off failure
signal off syntax
signal off novalue
exit 0
error: failure: syntax: novalue:
say 'An error has occured'
Yukarıdaki örnekte, önce hata sinyallerini açıyoruz. Daha sonra hatayla sonuçlanacak bir ifade ekliyoruz. Daha sonra, özel bir hata mesajı görüntülemek için hata tuzağı etiketine sahibiz.
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır -
An error has occurred.
Hata ayıklama, herhangi bir programlama dilinde önemli bir özelliktir. Geliştiricinin hataları teşhis etmesine, temel nedeni bulmasına ve ardından bunları uygun şekilde çözmesine yardımcı olur. Rexx'te izleme aracı, hata ayıklama için kullanılır. İzleme talimatı, biri toplu mod ve diğeri etkileşimli mod olmak üzere 2 şekilde uygulanabilir. Her iki seçeneğin nasıl uygulanacağına bakalım.
Toplu Modda İzleme
Trace komutu, yürütülen her Rexx komutunun ayrıntılı bir düzeyini vermek için kullanılır.
Trace ifadesinin genel sözdizimi aşağıdaki gibi gösterilir -
Sözdizimi
trace [setting]
Ayar aşağıdaki seçeneklerden herhangi biri olabilir -
A - Tüm komutları takip eder.
C - Yalnızca işletim sistemine gönderilen ana bilgisayar komutlarını izler.
E - Yalnızca işletim sistemine gönderilen ve bir hatayla sonuçlanan ana bilgisayar komutlarını izler.
F - Yalnızca bir arızayla sonuçlanan işletim sistemine gönderilen ana bilgisayar komutlarını izler.
I - Bu, Rexx komutlarının orta düzeyde izlenmesini sağlar.
L - Bu seçenek, izlemeyi gerçekleşirken etiketlemek istemeniz içindir.
N - Bu, hiçbir izleme yapılmayan varsayılan seçenektir.
Trace komutunun bir örneğine bakalım.
Misal
/* Main program */
trace A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg
7 *-* say 'This is a whole number
This is a whole number
8 *-* return 0
Çıktıdan, programın çıktısına ek bir izleme eklendiğini görebilirsiniz. Çıktıyla ilgili olarak aşağıdaki şeyler not edilebilir -
Yürütülen ifade ile birlikte satır numarası izleme çıktısına eklenir.
Yürütülen her satır izleme çıktısında gösterilir.
İzleme Fonksiyonu
İzleme işlevi sayesinde izleme de etkinleştirilebilir. Genel sözdizimi ve örnek aşağıda gösterilmiştir.
Sözdizimi
trace()
Yukarıdaki işlev, geçerli izleme seviyesini döndürür.
Parametreler
Yok
Geri dönüş değeri
Yukarıdaki işlev, mevcut izleme seviyesini verir.
Misal
/* Main program */
say trace()
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say 'This is an incorrect number '
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır.
N
This is an incorrect number
N'nin ilk satırı, izlemenin Normal olarak ayarlandığını gösterir.
İz Değerini Ayarlama
İzleme seviyesi, izleme fonksiyonu ile ayarlanabilir. Genel sözdizimi ve örnek aşağıda gösterilmiştir.
Sözdizimi
trace(travel_level)
Parametreler
trace_level - Bu, izleme düzeyini ayarlamak için mevcut seçeneklere benzer.
Geri dönüş değeri
Yukarıdaki işlev, mevcut izleme seviyesini verir.
Misal
/* Main program */
say trace()
current_trace = trace('A')
say current_trace
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -
N
4 *-* say current_trace
N
6 *-* n = 100.45
7 *-* if \ datatype( n, wholenumber ) then
8 *-* signal msg
12 *-* say 'This is an incorrect number'
'This is an incorrect number'
Etkileşimli İzleme
Etkileşimli izleme, program çalışırken izleme işleminin yapıldığı yerdir. Tıpkı .Net için Visual Studio gibi bir IDE'de olduğu gibi, kesme noktaları ekleyebilir ve her bir ifadenin nasıl çalıştığını görebilir, benzer şekilde burada da her kod satırı çalışırken programı görebilirsiniz.
Genel sözdizimi aşağıdaki gibidir -
Sözdizimi
trace ?options
Burada, seçenekler aşağıda gösterildiği gibi izleme komutu için aynıdır.
A - Tüm komutları takip eder
C - Yalnızca işletim sistemine gönderilen ana bilgisayar komutlarını izler.
E - Yalnızca işletim sistemine gönderilen ve bir hatayla sonuçlanan ana bilgisayar komutlarını izler.
F - Yalnızca bir arızayla sonuçlanan işletim sistemine gönderilen ana bilgisayar komutlarını izler.
I - Bu, Rexx komutlarının orta düzeyde izlenmesini sağlar.
L - Bu seçenek, izlemeyi gerçekleşirken etiketlemek istemeniz içindir.
N - Bu, hiçbir izleme yapılmayan varsayılan seçenektir.
Aktif izleme uygulama örneğine bir göz atalım.
Misal
/* Main program */
trace ?A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg
say 'This is a whole number'
return 0
msg : say 'This is an incorrect number'
Yukarıdaki programın çıktısı aşağıdaki programda gösterildiği gibi olacaktır. İzleme, her kod satırında duracaktır; ardından bir sonraki kod satırına geçmek için Enter düğmesine basmanız gerekir.
This is an incorrect number
+++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
5 *-* n = 100.45 if datatype( n, wholenumber ) then
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
6 *-* signal msg
10 *-* msg :
10 *-* say 'This is an incorrect number'
Rexx, diğer programlama dillerinde olduğu gibi Hata işleme konusunda da çalışma yeteneğine sahiptir.
Aşağıdakiler, Rexx'te görülen çeşitli hata durumlarından bazılarıdır.
ERROR - Bu, işletim sistemine gönderilen bir komut bir hatayla sonuçlandığında bile ortaya çıkar.
FAILURE - Bu, işletim sistemine gönderilen bir komutun bir hatayla sonuçlandığı her durumda ortaya çıkar.
HALT- Bu, normalde bir işlem başka bir işleme bağlı olduğunda yükseltilir. Bir örnek, bir G / Ç işleminin herhangi bir nedenle durdurulmasıdır.
NOVALUE - Bu olay, bir değişkene bir değer atanmadığında ortaya çıkar.
NOTREADY - Bu, herhangi bir işlemi kabul etmeye hazır olmayan herhangi bir G / Ç cihazı tarafından yükseltilir.
SYNTAX - Kodda herhangi bir sözdizimi hatası varsa bu olay ortaya çıkar.
LOSTDIGITS - Bu olay, bir aritmetik işlem, işlem sırasında rakam kaybına neden olduğunda ortaya çıkar.
Yakalama Hataları
Sinyal komutu yardımı ile hatalar yakalanır. Söz dizimine ve bunun bir örneğine bakalım.
Sözdizimi
signal on [Errorcondition]
Nerede,
Errorcondition - Bu yukarıda verilen hata durumudur.
Misal
Bununla ilgili bir örneğe bakalım.
/* Main program */
signal on error
signal on failure
signal on syntax
signal on novalue beep(1)
signal off error
signal off failure
signal off syntax
signal off novalue
exit 0
error: failure: syntax: novalue:
say 'An error has occured'
Yukarıdaki örnekte, önce hata sinyallerini açıyoruz. Daha sonra hatayla sonuçlanacak bir ifade ekliyoruz. Daha sonra, özel bir hata mesajı görüntülemek için hata tuzağı etiketine sahibiz.
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
An error has occurred.
Aşağıdaki programda bir hata kodu örneği gösterilmektedir.
/* Main program */
signal on error
signal on failure
signal on syntax
signal on novalue beep(1)
exit 0
error: failure: syntax: novalue:
say 'An error has occured'
say rc
say sigl
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
An error has occured
40
6
OoRexx'i ortam bölümüne göre kurduğunuzda, sınıflar ve nesnelerle de çalışma olanağına sahip olacaksınız. Lütfen aşağıdaki kodun hepsinin ooRexx yorumlayıcısında çalıştırılması gerektiğini unutmayın. Normal Rexx yorumlayıcısı bu nesne yönelimli kodu çalıştıramaz.
Sınıf ve Yöntem Beyanları
Bir sınıf, aşağıdaki Sözdizimi bildirimiyle tanımlanır.
Sözdizimi
::class classname
nerede classname sınıfa verilen isimdir.
Bir sınıftaki bir yöntem, aşağıdaki Sözdizimi bildirimiyle tanımlanır.
Sözdizimi
::method methodname
Nerede methodname yönteme verilen isimdir.
Bir sınıftaki bir özellik, aşağıdaki Sözdizimi bildirimi ile tanımlanır.
Sözdizimi
::attribute propertyname
Nerede propertyname mülke verilen isimdir.
Misal
Aşağıdakiler, Rexx'teki bir sınıf örneğidir.
::class student
::attribute StudentID
::attribute StudentName
Yukarıdaki programla ilgili aşağıdaki noktalara dikkat edilmelidir.
- Sınıfın adı öğrencidir.
- Sınıfın 2 özelliği vardır, StudentID ve StudentName.
Alıcı ve Ayarlayıcı Yöntemleri
Getter ve Setter yöntemleri, özelliklerin değerlerini otomatik olarak ayarlamak ve almak için kullanılır. Rexx'te, attribute anahtar kelimesi ile bir özellik ilan ettiğinizde, alıcı ve ayarlayıcı metotları halihazırda devreye alınmıştır.
Misal
::class student
::attribute StudentID
::attribute StudentName
Yukarıdaki örnekte, StudentId ve StudentName için Getter ve Setter yöntemleri olacaktır.
Nasıl kullanılabileceklerine dair bir örnek aşağıdaki programda gösterilmektedir.
/* Main program */
value = .student~new
value~StudentID = 1
value~StudentName = 'Joe'
say value~StudentID
say value~StudentName
exit 0
::class student
::attribute StudentID
::attribute StudentName
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
1
Joe
Örnek Yöntemleri
Sınıftan nesneler, ~new operator. Sınıftan bir yöntem şu şekilde çağrılabilir.
Object~methodname
Nerede methodname sınıftan çağrılması gereken yöntemdir.
Misal
Aşağıdaki örnek, bir sınıftan bir nesnenin nasıl oluşturulabileceğini ve ilgili yöntemin nasıl çağrıldığını gösterir.
/* Main program */
value = .student~new
value~StudentID = 1
value~StudentName = 'Joe'
value~Marks1 = 10
value~Marks2 = 20
value~Marks3 = 30
total = value~Total(value~Marks1,value~Marks2,value~Marks3)
say total
exit 0
::class student
::attribute StudentID
::attribute StudentName
::attribute Marks1
::attribute Marks2
::attribute Marks3
::method 'Total'
use arg a,b,c
return (ABS(a) + ABS(b) + ABS(c))
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
60
Birden Çok Nesne Oluşturma
Ayrıca bir sınıfın birden çok nesnesini de oluşturabilirsiniz. Aşağıdaki örnek bunun nasıl elde edilebileceğini gösterecektir.
Burada 3 nesne oluşturuyoruz (st, st1 ve st2) ve buna göre örnek üyelerini ve örnek yöntemlerini çağırıyoruz.
Birden çok nesnenin nasıl oluşturulabileceğine dair bir örneğe bakalım.
Misal
/* Main program */
st = .student~new
st~StudentID = 1
st~StudentName = 'Joe'
st~Marks1 = 10
st~Marks2 = 20
st~Marks3 = 30
total = st~Total(st~Marks1,st~Marks2,st~Marks3)
say total
st1 = .student~new
st1~StudentID = 2
st1~StudentName = 'John'
st1~Marks1 = 10
st1~Marks2 = 20
st1~Marks3 = 40
total = st1~Total(st1~Marks1,st1~Marks2,st1~Marks3)
say total
st2 = .student~new
st2~StudentID = 3
st2~StudentName = 'Mark'
st2~Marks1 = 10
st2~Marks2 = 20
st2~Marks3 = 30
total = st2~Total(st2~Marks1,st2~Marks2,st2~Marks3)
say total
exit 0
::class student
::attribute StudentID
::attribute StudentName
::attribute Marks1
::attribute Marks2
::attribute Marks3
::method 'Total'
use arg a,b,c
return (ABS(a) + ABS(b) + ABS(c))
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
60
70
60
Miras
Kalıtım, bir sınıfın diğerinin özelliklerini (yöntemleri ve alanları) elde ettiği süreç olarak tanımlanabilir. Kalıtımın kullanılmasıyla, bilgiler hiyerarşik bir sırayla yönetilebilir hale getirilir.
Başkasının özelliklerini miras alan sınıf olarak bilinir subclass (türetilmiş sınıf, alt sınıf) ve özellikleri miras alınan sınıf olarak bilinir superclass (temel sınıf, ana sınıf).
Rexx'te bir miras örneği görelim. Aşağıdaki örnekte, adında bir sınıf oluşturuyoruzPerson. Oradan, alt sınıf anahtar kelimesini kullanarakStudent class olarak sub-class of Person.
Misal
/* Main program */
st = .student~new
st~StudentID = 1
st~StudentName = 'Joe'
st~Marks1 = 10
st~Marks2 = 20
st~Marks3 = 30
say st~Total(st~Marks1,st~Marks2,st~Marks3)
exit 0
::class Person
::class student subclass Person
::attribute StudentID
::attribute StudentName
::attribute Marks1
::attribute Marks2
::attribute Marks3
::method 'Total'
use arg a,b,c
return (ABS(a) + ABS(b) + ABS(c))
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
60
Taşınabilirlik, herhangi bir programlama dilinde önemli bir unsurdur. Bilindiği gibi, Rexx, Windows ve Linux gibi çeşitli işletim sistemlerinde mevcuttur. Bu yüzden Windows platformunda bir program geliştirildiğinde, aynı programlar bir Linux platformunda çalışıyorsa gerekli önlemlerin alındığından emin olunmalıdır.
Rexx, sistem düzeyinde komutları çalıştırma yeteneğine sahiptir. Üzerinde çalıştığı işletim sisteminin ne olduğunu anlamak için kullanılabilecek komutlar vardır. Çıktıya bağlı olarak, bu işletim sisteminde çalıştırılabilecek komutların neler olduğunu görmek için uygun eylemleri gerçekleştirebilir.
Misal
Aşağıdaki örnek, programın üzerinde çalıştığı işletim sisteminin ayrıntılarını almak için ayrıştırma işlevlerinin nasıl kullanıldığını gösterir.
/* Main program */
parse version language level date month year.
parse source system invocation filename.
language = translate(language)
if pos('REGINA',language) = 0 then
say 'Error , the default interpreter is not Regina' language
say 'The Interpreter version/release date is:' date month year
say 'The Language level is: ' level say 'The Operating System is'
select
when system = 'WIN32' then
'ver'
when system = 'UNIX' | system = 'LINUX' then
'uname -a'
otherwise
say 'Unknown System:' system
end
if rc <> 0 then
say 'Error :' rc
Çıktı, işletim sistemine bağlı olarak değişecektir. Aşağıda örnek bir çıktı verilmiştir.
The Interpreter version/release date: 5 Apr 2015
The Language level is: 5.00
The Operating System is
Unknown System: WIN64
Bad return code: RC
Rexx, çoğu İşletim Sistemiyle etkileşim kurmanıza olanak tanıyan çok çeşitli işlevsellik sağlayan bir dizi genişletilmiş işlev sunar. Aşağıda açıklandığı gibi bazılarına detaylı olarak bakalım.
Sr.No. | Genişletilmiş Fonksiyonlar |
---|---|
1 | b2c Bu işlev, bir ikili değeri bir dizge değerine dönüştürür. |
2 | bitclr Bu işlev, ikili dizede belirtilen biti 0'a değiştirmek için kullanılır. |
3 | bitcomp Bu fonksiyon, bit 0 ile başlayan 2 ikili dizgiyi karşılaştırmak için kullanılır. |
4 | buftype Bu işlev, normalde hata ayıklama amacıyla kullanılan yığının içeriğini görüntülemek için kullanılır. |
5 | mezar odası Bu işlev bir dizeyi şifrelemek için kullanılır. |
6 | çatal Bu işlev, sistemde yeni bir alt süreç oluşturmak için kullanılır. |
7 | getpid Bu işlev, mevcut çalışan sürecin kimliğini alır. |
8 | karma Bu işlev bir dizenin karma değerini döndürür. |
Rexx, çoğu İşletim Sistemiyle etkileşim kurmanıza olanak tanıyan çok çeşitli işlevler sunan bir dizi talimat sağlar. Bazılarına detaylı bir şekilde bakalım.
Sr.No. | Rexx Talimatları |
---|---|
1 | adres Bu işlev, mevcut komut ortamını görüntülemek için kullanılır. |
2 | düşürmek Bu işlev, bir değişkenin atamasını kaldırmak için kullanılır. |
3 | yorumlamak Tanımlanan talimatı yorumlar veya yürütür. |
4 | hayır Bu işlev, hiçbir işlem yapılmaması anlamına gelir. Bu komut normalde kullanılırif statements. |
5 | Çek Bu, girişi yığından veya varsayılan akıştan çekmek için kullanılır. |
6 | it Bu, Rexx yığınına bir değer göndermek için kullanılır. |
Daha önceki bölümlerde gördüğümüz gibi Rexx dili birçok farklı uygulamaya sahiptir. Her uygulamanın kendi işlevselliği vardır. Rexx için mevcut olan çeşitli uygulamalara bakalım.
OoRexx
Bu, Rexx'in nesne yönelimli sürümüdür. Varsayılan olarak, Rexx temel uygulamasının tamamı prosedürlere dayanmaktadır. Ancak ooRexx ile Rexx'e Nesne odaklı bir yaklaşıma sahip olarak daha fazla esneklik sunabilirsiniz. OoRexx'i kullanarak, yeniden kullanılabilir sınıflar ve nesneler oluşturarak daha iyi bir yeniden kullanıma sahip olabilirsiniz.
Aşağıdaki program, ooRexx uygulayıcısı ile çalıştırılabilen basit bir Rexx programı örneğidir.
Misal
/* Main program */
say ‘hello’
Bu programı çalıştırmak için aşağıdaki komutu çalıştırın.
rexx main.rexx
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
hello
Netrexx
Bu, Rexx dili için Java tabanlı bir alternatif sağladığından tüm Java tabanlı geliştiriciler içindir. Yani tüm nesneler Java Nesne Modeline dayalıdır. Bu çerçevenin avantajı, Java'nın oldukça popüler bir dil olması nedeniyle geliştiricilerin bu çerçeveyi kullanmasının daha kolay hale gelmesidir. Bu uygulamada, Rexx kodu daha sonra herhangi bir Java sanal makinesinde çalıştırılabilen bir Java programına dönüştürülür.
Aşağıdaki kod bir NetRexx programı örneğidir.
Adlı bir dosya oluşturun main.nrx ve aşağıdaki kodu dosyaya yerleştirin.
/* Main program */
say ‘hello’
Kodu derlemek için aşağıdaki komutu çalıştırın -
NetRexxC main.nrx
Daha sonra aşağıdaki çıktıyı alacaksınız. NetRexxC, Rexx programını java eşdeğerine dönüştüren derleyicidir.
java -cp ";;G:\NetRexx-3.04GA\lib\NetRexxF.jar;."
-Dnrx.compiler = ecj org.netrexx.process.NetRexxC main.nrx
NetRexx portable processor 3.04 GA build 4-20150630-1657
Copyright (c) RexxLA, 2011,2015. All rights reserved.
Parts Copyright (c) IBM Corporation, 1995,2008.
Program main.nrx
Compilation of 'main.nrx' successful
Artık aşağıdaki java komutunu kullanarak java programınızı çalıştırabilirsiniz.
java main
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
Hello
Brexx
Bu, Rexx'in hafif bir uygulamasıdır. Bu, standart Rexx uygulayıcısından daha hafif bir pakettir. Ancak yine de Rexx'in tam işlevselliğine sahiptir.
Aşağıdaki kod bir BRexx programı örneğidir.
/* Main program */
say ‘hello’
Programı çalıştırmak için aşağıdaki komutu çalıştırın.
rexx32 main.rexx
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
hello
NetRexx, Rexx'in java uygulamasıdır. NetRexx'te, uygulayıcı, Rexx programını daha sonra herhangi bir Java sanal makinesinde çalıştırılabilecek bir java programına dönüştürmek için kullanılır.
NetRexx'i kurma
NetRexx'teki ilk adım, onu yerel makinede kurmaktır. Bunu yapmak için, aşağıdaki adımları gerçekleştirmeniz gerekir -
Step 1 - NetRexx indirme sitesine gidin - http://www.netrexx.org/downloads.nsp
NetRexx.3.04.GA dosyasını indirin.
Step 2- Java'nın sisteminizde kurulu ve çalışır durumda olduğundan emin olun. Java – version komutunu kullanarak java'nın çalıştığını doğrulayabilirsiniz.
Çıktının bir örneği aşağıda gösterilmiştir.
H:\>java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) Client VM (build 24.79-b02, mixed mode, sharing)
Step 3- Netrexx sıkıştırılmış dosyanın içeriğini açın. Dosyaları NetRexx3.04GA \ lib klasöründen java kurulum / lib / etc klasörüne kopyalayın.
Step 4 - NetRexx-3.04GA \ bin yolunu, sistemdeki yol değişkenine ekleyin.
İlk NetRexx Programını Çalıştırma
Adlı bir dosya oluşturun main.nrx ve aşağıdaki kodu dosyaya yerleştirin.
/* Main program */
say ‘hello’
Kodu derlemek için aşağıdaki komutu çalıştırın.
NetRexxC main.nrx
Daha sonra aşağıdaki çıktıyı alacaksınız. NetRexxC, rexx programını java eşdeğerine dönüştüren derleyicidir.
java -cp ";;G:\NetRexx-3.04GA\lib\NetRexxF.jar;."
-Dnrx.compiler = ecj org.netrexx.process.NetRexxC main.nrx
NetRexx portable processor 3.04 GA build 4-20150630-1657
Copyright (c) RexxLA, 2011,2015. All rights reserved.
Parts Copyright (c) IBM Corporation, 1995,2008.
Program main.nrx
Compilation of 'main.nrx' successful
Artık aşağıdaki java komutunu kullanarak java programınızı çalıştırabilirsiniz.
java main
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
Hello
Şimdi bazılarını tartışalım special aspects of the Netrexx library.
Dizine Alınmış Dizeler
NetRexx'te dizeler, dizilerin dizinleri haline gelebilir. Aşağıda bir örnek gösterilmiştir.
Misal
/* Main program */
value = 'unknown'
value['a'] = 'b'
c = 'a'
say value[c]
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Çıktı
b
Çoklu Dizinler
NetRexx'te, diziler için birden çok dizine sahip olabilirsiniz. Aşağıda bir örnek gösterilmiştir.
Misal
/* Main program */
value = 'null'
value['a', 'b'] = 1
say value['a', 'b']
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
Çıktı
1
Sr.No. | Komut ve Açıklama |
---|---|
1 | Komuta sor Bu komut, varsayılan giriş akışından bir satırı okumak için kullanılır. |
2 | rakamlar Komut Bu komut, rakam değerinin mevcut değerini görüntülemek için kullanılır. |
3 | form Komutu Bu komut, form değerinin mevcut değerini görüntülemek için kullanılır. |
4 | uzunluk Komut Bu komut, bir dize değerinin uzunluğunu görüntülemek için kullanılır. |
5 | sürüm Komut Bu komut, kullanılmakta olan NetRexx'in geçerli sürümünü döndürmek için kullanılır. |
6 | izleme Komutu Bu komut, NetRexx tarafından kullanılan geçerli izleme ayarını döndürmek için kullanılır. |
BRexx, Rexx'in daha hafif bir uygulamasıdır. Yine de Rexx uygulamasının bir parçası olarak sunabileceği çok sayıda işleve sahiptir.
BRexx'i kurma
BRexx'teki ilk adım, onu yerel makinede kurmaktır. Bunu yapmak için, aşağıdaki adımları gerçekleştirmeniz gerekir -
Step 1 - BRexx indirme sitesine gidin - https://ftp.gwdg.de/pub/languages/rexx/brexx/html/rx.html
İndirilenler bölümüne gidin ve ürünü indirin.
Step 2 - Brexx sıkıştırılmış dosyanın içeriğini açın.
Step 3 - BRexx \ bin yolunu sistemdeki yol değişkenine ekleyin.
Step 4 - RXLIB adında yeni bir değişken oluşturun ve onu Brexx klasöründeki lib klasörüne yönlendirin.
İlk BRexx Programını Çalıştırmak
Adlı bir dosya oluşturun main.rexx ve aşağıdaki kodu dosyaya yerleştirin.
/* Main program */
say ‘hello’
Programı çalıştırmak için aşağıdaki komutu çalıştırın.
rexx32 main.rexx
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
hello
Şimdi BRexx kitaplığında bulunan en yaygın kullanılan işlevlerden bazılarını tartışalım.
Sr.No. | BRexx Kitaplığında bulunan işlevler |
---|---|
1 | acos Komutu Bu komut, bir sayının ark-kosinüs dönüşümünü elde etmek için kullanılır. |
2 | cos Komutu Bu komut, bir sayının kosinüs dönüşümünü elde etmek için kullanılır. |
3 | günah Komutanlığı Bu komut, bir sayının sinüs dönüşümünü elde etmek için kullanılır. |
4 | asin Komut Bu komut, bir sayının yay-sinüs dönüşümünü elde etmek için kullanılır. |
5 | tan Komutu Bu komut, bir sayının teğet dönüşümünü elde etmek için kullanılır. |
6 | atan Komutanlığı Bu komut, bir sayının yay-tanjant dönüşümünü elde etmek için kullanılır. |
7 | mkdir Komutu Bu komut, geçerli çalışma dizininde bir dizin oluşturmak için kullanılır. |
8 | rmdir Komutu Bu komut, geçerli çalışma dizinindeki bir dizini kaldırmak için kullanılır. |
9 | dir Komut Bu komut, tüm dizin listesini döndürmek için kullanılır. |
Rexx, aşağıda listelenen çeşitli veri tabanlarıyla çalışma yeteneğine sahiptir.
- HSQLDB
- Oracle
- SQL Server
- MySQL
- MongoDB
Rexx veritabanları için tüm bilgiler aşağıdaki bağlantıya tıkladığınızda bulunabilir - https://rexxsql.sourceforge.net/
Örneğimizde, MySQL DB'yi örnek olarak kullanacağız. Dolayısıyla ilk adım, Rexx programlarının SQL ile uygun şekilde çalışabilmesi için gerekli sürücülerin Rexx SQL sitesinden indirilmesini sağlamaktır. Bu nedenle, Rexx programlarının MySQL veritabanlarıyla çalışabilmesini sağlamak için sonraki adımları izleyin.
Step 1 - Rexx sitesinden aşağıdaki sürücü indirme sayfasına gidin - https://sourceforge.net/projects/rexxsql/files/rexxsql/2.6/
Step 2 - MYSQL sürücülerini indirin - rxsql26B3_my_w32_ooRexx
Step 3 - İçeriği yerel makineye çıkartın.
Step 4 - Sıkıştırılmamış klasörün yolunu makinenizdeki yol değişkenine ekleyin.
Sonraki tüm örnekler için, aşağıdaki işaretçilerin yerinde olduğundan emin olun -
Bir TESTDB veritabanı oluşturdunuz.
TESTDB'de EMPLOYEE tablosu oluşturdunuz.
Bu tabloda FIRST_NAME, LAST_NAME, AGE, SEX ve INCOME alanları var.
"Testuser" kullanıcı kimliği ve "test123" şifresi TESTDB'ye erişmek için ayarlanmıştır.
Mysql jar dosyasını indirdiğinizden ve dosyayı sınıf yolunuza eklediğinizden emin olun.
MySQL eğitiminden geçtiniz
Veritabanı Bağlantısı
Bir veritabanı bağlantısı kurmak için, önce Rexxsql DLL'ye ihtiyacınız vardır ve ardından veritabanına bir bağlantı kurmak için SQLConnect işlevini kullanmanız gerekir. Bunun nasıl elde edilebileceğine dair sözdizimi ve örnek aşağıda verilmiştir.
Sözdizimi
SQLConnect(cname,username,password,dbname)
Parametreler
cname - Bağlantıya verilecek isim budur.
username - Veritabanına bağlanacak kullanıcı adı.
password - Veritabanına bağlanmak için şifre.
dbname - Bağlanılacak veritabanı şeması.
Geri dönüş değeri
0'a eşit bir değer, veritabanı bağlantısının başarılı olduğu anlamına gelir.
Misal
/* Main program */
Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs'
Call SQLLoadFuncs
say SQLConnect(c1,' testuser ',' test123','testdb')
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
0
Veritabanı Tablosu Oluşturma
Veritabanına bağlandıktan sonraki adım, veritabanımızda tabloları oluşturmaktır. Aşağıdaki örnek, Rexx kullanılarak veritabanında bir tablonun nasıl oluşturulacağını gösterir. Rexx SQL'deki tüm komutlar SQLCommand işlevi kullanılarak yürütülür.
Sözdizimi
SQLConnect(sname,statement)
Parametreler
sname - Yürütülecek ifadeye verilecek isim budur.
statement - Bu, veritabanına karşı yürütülmesi gereken ifadedir.
Geri dönüş değeri
0'a eşit bir değer, komutun başarılı olduğu anlamına gelecektir.
Misal
/* Main program */
Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs'
Call SQLLoadFuncs
if SQLConnect(c1,'testuser','test123','testdb') == 0 then say 'Connect Succedded'
if SQLCommand(u1,"use testdb") == 0 then say 'Changed database to testdb'
sqlstr = 'create table employee (first_name char(20) not null, last_name
char(20),age int, sex
char(1), income float)'
if SQLCommand(c2,sqlstr) == 0 then say 'Employee table created'
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
Connect Succedded
Changed database to testdb
Employee table created
Veritabanı Tablosundaki İşlemler
Aşağıdaki işlem türleri en çok bir veritabanı tablosunda gerçekleştirilir.
Sr.No. | Operasyon Açıklaması |
---|---|
1 | İşlem Ekle Kayıtlarınızı bir veritabanı tablosunda oluşturmak istediğinizde gereklidir. |
2 | İşlemi Oku Herhangi bir veritabanı üzerindeki bir OKUMA İşlemi, veritabanından bazı yararlı bilgileri almak anlamına gelir. |
3 | Güncelleme İşlemi Herhangi bir veri tabanında GÜNCELLEME İşlemi, veri tabanında zaten mevcut olan bir veya daha fazla kaydı güncellemek anlamına gelir. |
4 | İşlemi Sil Veritabanınızdan bazı kayıtları silmek istediğinizde DELETE işlemi gereklidir. |
5 | Bir Bağlantıyı Kapatma Veritabanına bir bağlantıyı kapatmak için aşağıdaki komut kullanılabilir. |
İşlem Yapmak
İşlemler, veri tutarlılığını sağlayan bir mekanizmadır. İşlemler aşağıdaki dört özelliğe sahiptir -
Atomicity - Ya bir işlem tamamlanır ya da hiçbir şey olmaz.
Consistency - Bir işlem tutarlı bir durumda başlamalı ve sistemi tutarlı bir durumda bırakmalıdır.
Isolation - Bir işlemin ara sonuçları cari işlemin dışında görünmez.
Durability - Bir işlem yapıldığında, sistem hatasından sonra bile etkiler kalıcıdır.
İşte işlemlerin nasıl uygulanacağına dair basit bir örnek.
Misal
/* Main program */
Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs'
Call SQLLoadFuncs
if SQLConnect(c1,'testuser','test123','testdb') == 0 then say 'Connect Succedded'
if SQLCommand(u1,"use testdb") == 0 then say 'Changed database to testdb'
sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20"
if SQLCommand(c2,sqlstr) == 0 then
if sqlcommit() == 0 then say committed
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
Connect Succedded
Changed database to testdb
COMMITTED
İşlemi Tamamla
Kaydetme işlemi, veritabanına işleme devam etmesini ve veritabanındaki tüm değişiklikleri sonuçlandırmasını söyleyen şeydir. Yukarıdaki örneğimizde, bu aşağıdaki komutla elde edilir.
Sqlcommit()
Geri Alma İşlemi
Bir veya daha fazla değişiklikten memnun değilseniz ve bu değişiklikleri tamamen geri almak istiyorsanız, geri alma yöntemini kullanın. Yukarıdaki örneğimizde, bu aşağıdaki komutla elde edilir.
SqlRollback()
El cihazları uzun bir yol kat etti ve Rexx'in bu cihazlarda çalışabileceği birçok yol var. Rexx, Cep Bilgisayarları, Palm cihazları, PDA'lar ve diğer akıllı telefon cihazlarını destekler. Rexx'in bu platformlarda çalışmanın avantajı, Rexx'in gerçekten küçük bir programlama sistemi olması ve sadece birkaç kilobaytlık bir aralıkta çalışmasıdır. Dolayısıyla bu cihazlarda Rexx programlarını çalıştırmak daha kolay hale gelir.
El cihazlarındaki Rexx aşağıdaki modlarda çalışabilir -
İlk mod, doğrudan işletim sisteminin kendisinde çalıştığı yerel düğümdür. Bu modda çalışmanın avantajı, doğrudan işletim sisteminden çalıştığı için daha hızlı olmasıdır.
Bir sonraki mod, elde tutulan cihazın üstünde DOS veya emülatör programının üstündedir. Bu modun avantajı, öykünücü o işletim sisteminde çalıştığı sürece her tür işletim sisteminde çalışabilmesidir.
Çeşitli el tipi cihaz kategorileri için Rexx Tercümanları aşağıda gösterilmiştir.
- Windows CE - Brexx
- Palm OS - Palm OS için Rexx
- Symbian OS - Regina
DOS emülatörü için aşağıdaki adımların gerçekleştirilmesi gerekir -
Step 1- Birincisi, popüler bir DOS emülatörü olan PocketDOS'u indirmek. Birçok işletim sisteminde çalışacak şekilde tasarlanmıştır ve ortak VGA ekranları ile seri ve paralel bağlantı noktalarını destekler.
Step 2 - Sonraki adım, 16-bit DOS için BRexx dosyalarını bir Windows PC'ye indirmektir.
Step 3 - Son adım, Rexx programını el cihazına senkronize etmek için ActiveSync'i kullanmaktır.
Başka ticari DOS tabanlı ürünler de mevcuttur. XTM bu kategoriye giren bir üründür. Bu ürünün özellikleri aşağıdaki gibidir -
80186 CPU ve komut seti desteği.
Daha iyi performans için BIOS kodu dışında çalışır.
Math yardımcı işlemcisi, sürüm 8087 MPU için öykünme sağlayabilir
Seri bağlantı noktalarına erişim sağlar.
İngilizce, Fransızca ve Almanca gibi çeşitli dilleri destekler.
Herhangi bir programlama dilinin en önemli yönlerinden biri uygulamanın performansıdır. Uygulamanın performansının engellenmemesini sağlamak için özel uygulamalara dikkat edilmesi gerekir. Daha iyi anlamak için adımlarda açıklanan bazı hususlara bakalım -
Step 1- Talimatların sayısını azaltmaya çalışın - Rexx'te her talimat bir ek yük taşır. Bu yüzden programınızdaki talimatların sayısını azaltmaya çalışın. Yeniden tasarlanabilen talimatların bir örneği aşağıda gösterilmiştir.
Birden fazla if else ifadesi kullanmak yerine parse ifadesi kullanılabilir. Bu nedenle, aşağıdaki programda olduğu gibi, her değer için bir if koşuluna sahip olmak ve kelime1, kelime2, kelime3 ve kelime4'ün değerini almak yerine ayrıştırma ifadesini kullanın.
/* Main program */
parse value 'This is a Tutorial' with word1 word2 word3 word4
say "'"word1"'"
say "'"word2"'"
say "'"word3"'"
say "'"word4"'"
Step 2- Birden çok ifadeyi tek bir ifadede birleştirmeyi deneyin. Aşağıda bir örnek gösterilmiştir.
Atamayı yapan aşağıdaki koda sahip olduğunuzu varsayalım - a and b ve bunu adı verilen bir yönteme geçirdi proc.
do i = 1 to 100
a = 0
b = 1
call proc a,b
end
Parse deyimini kullanarak yukarıda verilen kodu aşağıdaki kodla kolayca değiştirebilirsiniz.
do i = 1 for 100
parse value 0 1 with
a,
b,
call proc a,b
end
Step 3 - Değiştirmeyi deneyin do..to loop ile do..for loopmümkün olan her yerde. Bu, normalde kontrol değişkeni bir döngü boyunca yinelenirken önerilir.
/* Main program */
do i = 1 to 10
say i
end
Yukarıdaki program aşağıdaki programla değiştirilmelidir.
/* Main program */
do i = 1 for 10
say i
end
Step 4- Mümkünse, aşağıdaki programda gösterildiği gibi bir do döngüsünden for koşulunu kaldırın. Kontrol değişkeni gerekli değilse, son değeri aşağıda gösterildiği gibi do döngüsüne koyun.
/* Main program */
do 10
say hello
end
Step 5 - bir select clause, ne hissederseniz hissedin, değerlendirilecek en iyi koşul ilk sıraya koyulmalıdır. when clause. Dolayısıyla aşağıdaki örnekte, 1'in en sık kullanılan seçenek olduğunu bilirsek,when 1 clause select ifadesindeki ilk cümle olarak.
/* Main program */
select
when 1 then say'1'
when 2 then say'2'
otherwise say '3'
end
Her programcı, programlarının kalite ve verimlilik açısından en iyisi olmasını ister. Aşağıdakiler, Rexx programlarını yazarken bu hedeflere ulaşılmasına yardımcı olabilecek en iyi programlama uygulamaları veya ipuçlarından bazılarıdır.
1. İpucu
İşletim sistemine veya komut istemine herhangi bir komut vermeden önce adres komutunu kullanın. Bu, adres alanını önceden bellekte almanıza yardımcı olacak ve programınızın daha verimli çalışmasına neden olacaktır.
Adres komutunun bir örneği aşağıda gösterilmiştir.
Misal
/* Main program */
address system dir
Komutun çıktısı aşağıdaki gibidir, ancak sistemden sisteme değişebilir.
Volume in drive H is Apps
Volume Serial Number is 8E66-AC3D
Directory of H:\
06/30/2016 01:28 AM <DIR> Apps
07/05/2016 03:40 AM 463 main.class
07/07/2016 01:30 AM 46 main.nrx
07/07/2016 01:42 AM 38 main.rexx
3 File(s) 547 bytes
Dir(s) 313,085,173,760 bytes free
2. İpucu
İşletim sistemine yönelik tüm komutların büyük harfle ve mümkün olan yerlerde tırnak içinde olduğundan emin olun.
Aynısı için bir örnek aşağıda gösterilmiştir.
Misal
/* Main program */
options arexx_bifs
say chdir('\REXXML100')
say directory()
Yukarıdaki programı çalıştırdığımızda aşağıdaki sonucu alacağız.
0
D:\rexxxml100
3. İpucu
Aşağıdaki programda gösterildiği gibi büyük yorum blokları oluşturmaktan kaçının.
Misal
/******/
/* */
/* */
/* */
/******/
/* Main program */
address system dir
4. İpucu
Varsayılan değerleri atamak için Parse deyimini kullanın. Aynısı için bir örnek aşağıda gösterilmiştir.
Misal
parse value 0 1 with
a,
b
İpucu 5
Mümkün olan her yerde "substr (var1,1,2)" ifadesi yerine "Left (var1,2)" ifadesini kullanın.
İpucu 6
Mümkün olan her yerde "substr (var1, length (var1), 2)" ifadesi yerine "Right (var1,2)" ifadesini kullanın.
Rexx'te bulunan grafik kullanıcı arayüzlerini kullanmak için 2 paket kullanmak gerekir, biri ActiveTcl ve diğeri Rexxtkpaketi. Bu 2 paket ile birlikte, formlar üzerinde buton ve diğer kontrollerin bulunduğu normal formlar tasarlanabilir.
Ortam Kurulumu
Yapılacak ilk şey, çevre kurulumu. Ortamı yerinde tutmak için aşağıdaki adımlardan geçelim.
Step 1 - Activetcl paketini aşağıdaki web sitesinden indirin - https://www.activestate.com/activetcl
Step 2- Bir sonraki adım ActiveTCl kurulumunu başlatmaktır. Devam etmek için ekrandaki İleri düğmesine tıklayın.
Step 3 - Lisans Sözleşmesini kabul edin ve İleri düğmesine tıklayın.
Step 4 - Kurulum için bir konum seçin ve sonraki düğmeye tıklayın.
Step 5 - Demoların kurulumu için bir yer seçin ve İleri düğmesine tıklayın.
Step 6 - Kuruluma devam etmek için İleri düğmesine tıklayın.
Step 7 - Kurulumu tamamlamak için Finish butonuna tıklayın.
Step 8 - Sonraki adım, Rexxtk yazılımını aşağıdaki bağlantıdan indirmektir - https://sourceforge.net/projects/rexxtk/
Step 9- Kurulumu başlatmak için önceki adımdaki bağlantıdan yükleyici dosyasına çift tıklayın. Devam etmek için bir sonraki düğmeye tıklayın.
Step 10 - Sonraki ekranda, Lisans Sözleşmesini kabul etmek için Evet düğmesine tıklayın.
Step 11 - Sonraki ekranda, kurulumun yerini seçin ve İleri düğmesine tıklayın.
Step 12 - Program klasörü konumunu seçin ve sonraki düğmeye tıklayın.
Kurulum tamamlandıktan sonra, GUI'leri Rexx'te programlamaya başlayabiliriz.
Temel Program
Rexx ile basit bir temel programı grafik kullanıcı arayüzü formatında nasıl tasarlayabileceğimize bakalım.
Misal
/* Main program */
call RxFuncAdd 'TkLoadFuncs','rexxtk','TkLoadFuncs'
call TkLoadFuncs
do forever
interpret 'Call' TkWait()
end
call TkDropFuncs
exit 0
Yukarıdaki programla ilgili olarak aşağıdaki noktalara dikkat edilmesi gerekir -
Rexxtk kitaplığı ve tüm işlevleri, RxFuncAdd komutu kullanılarak yüklenir.
Sonsuza dek yap döngüsü pencereyi açık tutacak ve kullanıcı girdisini bekleyecektir.
Kullanıcı girişi algılandığında, program çıkacaktır.
Yukarıdaki program çalıştırıldığında, aşağıdaki çıktıyı alacaksınız.
Menüler Oluşturma
Menüler TkMenu ve TkAdd fonksiyonları yardımıyla oluşturulur. Bu işlevlerin sözdizimi aşağıda verilmiştir.
Sözdizimi
TkMenu(widgetname,options,0)
Parametreler
Widgetname - Menüye verilecek bir isim.
Seçenekler aşağıdakilerden herhangi biri olabilir -
selectcolor - menü seçenekleri olarak onay kutuları veya radyo düğmeleri kullanılıyorsa, bu seçenek herhangi bir menü seçeneği seçildiğinde seçilecek rengi belirler.
tearoff - Bu seçenek, ana menüye alt menüler eklemek için kullanılır.
title - Pencereye bir başlık vermek için kullanılması gereken dize.
Geri dönüş değeri
Oluşturulan menünün tanıtıcısı.
Misal
/* Main program */
call RxFuncAdd 'TkLoadFuncs','rexxtk','TkLoadFuncs'
call TkLoadFuncs
menubar = TkMenu('.m1')
filemenu = TkMenu('.m1.file','-tearoff', 0)
call TkAdd menubar, 'cascade', '-label', 'File', '-menu', filemenu
call TkAdd filemenu, 'command', '-label', 'Open...', '-rexx', 'getfile'
call TkConfig '.', '-menu', menubar
do forever
interpret 'Call' TkWait()
end
call TkDropFuncs
exit 0
Yukarıdaki programla ilgili olarak aşağıdaki noktalara dikkat edilmesi gerekir -
Menü çubuğu, TkMenu işlevi kullanılarak oluşturulur. "Tearoff" parametresi, ana menüye eklenecek alt menüler oluşturmamız gerektiği anlamına gelir.
Daha sonra TkAdd işlevini kullanarak Dosya ve Aç adlı 2 menü seçeneği ekliyoruz.
Yukarıdaki program çalıştırıldığında, aşağıdaki çıktıyı alacaksınız.
Reginald, Jeff Glantt tarafından geliştirilen ve Rexx programlarının nasıl çalıştırılabileceğine dair bazı özelleştirmeleri olan başka bir Rexx tercümanıdır. Bu bölümde, Reginald kurulumunun nasıl alınacağını ve içinde birkaç Rexx programının nasıl çalıştırılacağını göreceğiz.
Ortam Kurulumu
İlk adım, Reginald dosyalarını indirmek için ortam kurulumudur. Bu, aşağıdaki web sitesi bağlantısından yapılabilir -http://www.manmrk.net/tutorials/rexx/Reginald/win32/rxusrw32.htm
İndirme işlemi tamamlandıktan ve yükleyiciyi başlattığınızda, sonraki ekran yükleme konumunu seçmenize izin verecektir.
Devam etmek için Yükle düğmesine tıklayın.
Tamamlandığında, şimdi Reginald yorumlayıcısında bir örnek program çalıştırmaya başlayabiliriz. Aşağıda gösterildiği gibi basit bir program oluşturun.
/* Main program */
say 'Hello'
Ardından aşağıdaki komutu çalıştırın -
RxLaunch.exe main.rexx
Daha sonra aşağıdaki çıktıyı alacaksınız. Bu program şimdi Reginald yorumlayıcısında çalışıyor olacak.
Mevcut Diğer Fonksiyonlar
Normal Rexx komutlarından ayrı olarak Reginald, Windows işletim sistemi için özel olarak hazırlanmış bazı özel komutlara sahipti. DriveMap böyle bir komuttur -
DriveMap
Bu işlev sürücü hakkında bilgi verir.
Syntax -
Drivemap(,options)
Parameters -
Options - Bunlar, yerel bilgisayarın sürücüleriyle ilgili çeşitli bilgileri almak için kullanılabilecek anahtar sözcüklerin bir listesidir.
Return Value
Sürücü hakkında bilgi içeren bir dize değeri.
Example -
/* Main program */
say 'Drives on system : ' DriveMap(,'FIXED')
Yukarıdaki program çalıştırılırsa, aşağıdaki çıktıyı alacaksınız. Bu çıktı sistemden sisteme değişir.
List of disk drives : C:\ D:\
Rexx, web sunucuları ile de çalışma imkanına sahiptir. En yaygın olanı apache web sunucusudur. Rexxw'i Apache web sunucusuyla kullanmak için, önce Rexx modüllerini aşağıdaki bağlantıdan indirmeniz gerekir -https://sourceforge.net/projects/modrexx/?source=typ_redirect
Bittiğinde, mod Rexx modüllerini sınıf yoluna eklediğinizden emin olun.
Aşağıdaki satırların Apache yapılandırma dosyasına eklenmesi ve değiştirilmesi gerekir.
Aşağıdaki satırların uygun olanın sonuna eklenmesi gerekir -
- httpd.conf LoadModule listesi.
- LoadModule rexx_module modülleri / mod_rexx.dll
Aşağıdaki satırlar sayfanın sonuna eklenmelidir. http.conf dosya.
AddType uygulaması / x-httpd-rexx-script .rex .rexx
AddType uygulaması / x-httpd-rexx-rsp .rsp
REXX Sunucu Sayfası desteği için bunları ekleyin
RexxRspCompiler "c: / Program Files / Apache Group / Apache2 / bin / rspcomp.rex"
Yukarıdaki değişiklikler yapıldıktan sonra apache web sunucunuzu kapatıp yeniden başlatmanız gerekir.
Yukarıdaki satırlar, tıpkı Java sunucu sayfaları gibi Rexx tabanlı sunucu sayfalarına sahip olmanızı sağlar. Rexx kodunu doğrudan html sayfalarına ekleyebilirsiniz.
Aşağıda bir örnek gösterilmiştir -
<p>The current date and time is
<?rexx
/* Inserting the rexx statement */
say date() time()
?>
</p>
Rexx tabanlı bir sunucu sayfası çalıştırıldığında, aşağıdaki işlemler gerçekleştirilir -
Önce geçici bir dosya oluşturulur.
Daha sonra Rexx Server derleyicisi dosyayı bir Rexx programında derler ve geçici dosyaya yerleştirir.
Bir sonraki adım, Rexx programını gerçekten çalıştırmaktır.
Son olarak, geçici dosya kaldırılır.