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.