Rexx - Panduan Cepat
Rexx (Restructured Extended Executor)dirancang untuk menjadi bahasa scripting. Sasarannya adalah membuat pembuatan skrip menjadi semudah, secepat, dapat diandalkan, dan sebisa mungkin bebas kesalahan. Banyak bahasa pemrograman dirancang untuk kompatibilitas dengan bahasa lama, dan ditulis untuk audiens atau platform tertentu. Rexx mengabaikan tujuan yang tidak relevan. Ini dirancang sejak hari pertama untuk menjadi kuat, namun mudah digunakan.
Rexx dirancang dan pertama kali diimplementasikan, dalam bahasa assembly, sebagai 'sendiri-time' proyek antara 20 th Maret 1979 dan tengah tahun 1982 oleh Mike Cowlishaw dari IBM, awalnya sebagai bahasa pemrograman scripting untuk menggantikan bahasaEXEC and EXEC 2. Ini dirancang untuk menjadimacro or scripting languageuntuk sistem apa pun. Dengan demikian, Rexx dianggap sebagai pendahulu Tcl dan Python. Rexx juga dimaksudkan oleh penciptanya sebagai versi bahasa pemrograman PL / I yang disederhanakan dan lebih mudah dipelajari.
Fitur Rexx
Rexx sebagai bahasa pemrograman memiliki fitur utama berikut -
Sintaks sederhana
Kemampuan untuk mengarahkan perintah ke berbagai lingkungan
Kemampuan untuk mendukung fungsi, prosedur, dan perintah yang terkait dengan lingkungan pemanggilan tertentu.
Tumpukan bawaan, dengan kemampuan untuk beroperasi dengan tumpukan host jika ada.
Set instruksi kecil yang hanya berisi dua lusin instruksi
Sintaks bentuk bebas
Token tidak peka huruf besar kecil, termasuk nama variabel
Dasar karakter string
Pengetikan data dinamis, tanpa deklarasi
Tidak ada kata kunci yang dipesan, kecuali dalam konteks lokal
Tidak termasuk fasilitas file
Ketepatan numerik sewenang-wenang
Aritmatika desimal, floating-point
Beragam pilihan fungsi bawaan, terutama pemroses string dan kata
Manajemen penyimpanan otomatis
Perlindungan dari benturan
Isi struktur data yang dapat dialamatkan
Array asosiatif
Akses langsung ke perintah dan fasilitas sistem
Penanganan kesalahan sederhana, serta pelacakan dan debugger bawaan
Beberapa batasan buatan
Fasilitas I / O yang disederhanakan
Situs resmi untuk Rexx adalah www.oorexx.org
Sebelum Anda dapat mulai mengerjakan Rexx, Anda perlu memastikan bahwa Anda memiliki versi Rexx yang berfungsi penuh yang berjalan di sistem Anda. Bab ini akan menjelaskan instalasi Rexx dan konfigurasi selanjutnya pada mesin Windows untuk memulai dengan Rexx.
Pastikan persyaratan Sistem berikut ini dipenuhi sebelum melanjutkan penginstalan.
Persyaratan sistem
Penyimpanan | RAM 2 GB (disarankan) |
Ruang Disk | Tidak ada persyaratan minimum. Lebih disukai memiliki penyimpanan yang cukup untuk menyimpan program yang akan dibuat menggunakan Rexx. |
Versi Sistem Operasi | Rexx dapat diinstal di Windows, Ubuntu / Debian, Mac OS X. |
Mendownload Rexx
Untuk mengunduh Rexx, Anda harus menggunakan URL berikut - https://www.oorexx.org/download.html
Halaman ini memiliki berbagai unduhan untuk berbagai versi Rexx seperti yang ditunjukkan pada tangkapan layar berikut.
Klik pada 'ooRexx install files' pada tabel dengan tajuk Rilis 4.2.0.
Setelah ini, Anda akan diarahkan kembali ke halaman berikut.
Klik pada ooRexx-4.2.0.windows.x86_64.exe untuk mengunduh 64-bitversi perangkat lunak. Kami akan membahas tentang penginstalan perangkat lunak di bab berikut.
Langkah-langkah berikut akan menjelaskan secara rinci bagaimana Rexx dapat diinstal pada sistem Windows.
Step 1- Luncurkan Installer yang diunduh di bagian sebelumnya. Setelah penginstal dimulai, klik tombol Jalankan.
Step 2 - Klik tombol berikutnya pada layar berikut untuk melanjutkan penginstalan.
Step 3 - Klik di I Agree tombol untuk melanjutkan.
Step 4 - Terima default components lalu klik tombol berikutnya.
Step 5 - Pilih lokasi instalasi dan klik tombol Next.
Step 6 - Terima proses default yang akan diinstal dan klik tombol Berikutnya.
Step 7 - Pilih asosiasi file default dan klik tombol Berikutnya.
Step 8 - Klik pada kotak centang kirim item Rexx ke file yang dapat dieksekusi dan kemudian klik tombol Berikutnya seperti yang ditunjukkan pada gambar layar berikut.
Step 9- Di layar berikutnya, pilih editor untuk bekerja dengan file Rexx. Pertahankan notepad sebagai opsi default. Terima juga ekstensi default untuk setiap file Rexx.
Step 10 - Terima pengaturan default pada layar berikut yang muncul dan klik tombol Next untuk melanjutkan instalasi.
Step 11 - Terakhir klik tombol Install untuk melanjutkan penginstalan.
Step 12 - Setelah penginstalan selesai, Anda perlu mengklik tombol Berikutnya untuk melanjutkan lebih jauh.
Step 13 - Klik tombol Selesai untuk menyelesaikan penginstalan.
Pada bab ini, kita akan membahas tentang cara memasang plugin popular IDE’s (Integrated Development Environment). Rexx sebagai bahasa pemrograman juga tersedia di IDE populer sepertiEclipse. Mari kita lihat bagaimana kita bisa mendapatkan plugin yang diperlukan di IDE ini, sehingga Anda memiliki lebih banyak pilihan untuk bekerja dengan Rexx.
Instalasi di Eclipse
Untuk membuat instalasi Rexx di Eclipse tanpa masalah, Anda harus mengikuti langkah-langkah berikut.
Step 1 - Buka Eclipse dan klik pada item Menu, Help → Eclipse Marketplace seperti yang ditunjukkan pada tangkapan layar berikut.
Step 2 - Di kotak dialog berikutnya, masukkan Rexx di kriteria pencarian dan klik tombol pencarian.
Setelah selesai, klik tombol Instal.
Step 3 - Klik tombol Konfirmasi untuk melanjutkan penginstalan fitur.
Step 4- Eclipse kemudian akan mengunduh file yang diperlukan untuk memulai penginstalan. Setelah selesai, Eclipse akan meminta untuk menerima perjanjian lisensi. Klik untuk menerima perjanjian lisensi dan kemudian klik tombol Selesai seperti yang ditunjukkan pada tangkapan layar berikut.
Eclipse kemudian akan mulai menginstal perangkat lunak di latar belakang.
Step 5- Anda mungkin akan mendapatkan peringatan keamanan (seperti yang ditunjukkan pada gambar layar berikut). Klik tombol OK untuk melanjutkan.
Step 6- Anda akan diminta untuk memulai ulang Eclipse setelah pembaruan dipasang. Klik Ya untuk memulai ulang Eclipse.
Untuk memahami sintaks dasar Rexx, pertama-tama mari kita lihat program Hello World yang sederhana.
Contoh
/* Main program */
say "Hello World"
Orang bisa melihat betapa sederhananya program hello world ini. Ini adalah baris skrip sederhana yang digunakan untuk menjalankan program Hello World.
Hal-hal berikut perlu diperhatikan tentang program di atas -
Itu say command digunakan untuk mengeluarkan nilai ke konsol.
Itu /* */ digunakan untuk komentar di Rexx.
Output dari program di atas adalah -
Hello World
Bentuk Umum Pernyataan
Di Rexx, mari kita lihat bentuk umum dari sebuah program. Lihat contoh berikut.
/* Main program */
say add(5,6)
exit
add:
parse arg a,b
return a + b
Output dari program di atas adalah -
11
Mari kita bahas apa yang telah kita pahami dari program di atas -
Tambah adalah fungsi yang didefinisikan untuk menambahkan 2 angka.
Dalam program utama, nilai 5 dan 6 digunakan sebagai parameter untuk fungsi tambah.
Kata kunci keluar digunakan untuk keluar dari program utama. Ini digunakan untuk membedakan program utama dari fungsi tambah.
Fungsi add dibedakan dengan simbol ':'.
Pernyataan parse digunakan untuk mengurai argumen yang masuk.
Akhirnya, pernyataan return digunakan untuk mengembalikan jumlah nilai numerik.
Subrutin dan Fungsi
Di Rexx, kode biasanya dibagi menjadi subrutin dan fungsi. Subrutin dan fungsi digunakan untuk membedakan kode menjadi unit logika yang berbeda. Perbedaan utama antara subrutin dan fungsi adalah bahwa fungsi mengembalikan nilai sedangkan subrutin tidak.
Di bawah ini adalah contoh perbedaan utama antara subrutin dan fungsi untuk implementasi penambahan -
Implementasi Fungsi
/* Main program */
say add(5,6)
exit
add:
parse arg a,b
return a + b
Implementasi Subrutin
/* Main program */
add(5,6)
exit
add:
parse arg a,b
say a + b
Output dari kedua program tersebut adalah nilai 11.
Perintah Pelaksana
Rexx dapat digunakan sebagai bahasa kontrol untuk berbagai sistem berbasis perintah. Cara Rexx menjalankan perintah dalam sistem ini adalah sebagai berikut. Ketika Rexx menemukan baris program yang bukan merupakan instruksi atau tugas, ia memperlakukan baris itu sebagai ekspresi string yang akan dievaluasi dan kemudian diteruskan ke lingkungan.
Contohnya adalah sebagai berikut -
Contoh
/* Main program */
parse arg command
command "file1"
command "file2"
command "file3"
exit
Masing-masing dari tiga baris serupa dalam program ini adalah ekspresi string yang menambahkan nama file (terdapat dalam konstanta string) ke nama perintah (diberikan sebagai parameter). String yang dihasilkan diteruskan ke lingkungan untuk dieksekusi sebagai perintah. Setelah perintah selesai, variabel "rc" disetel ke kode keluar dari perintah.
Output dari program di atas adalah sebagai berikut -
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)"
Kata kunci di Rexx
Sintaks bebas REXX menyiratkan bahwa beberapa simbol dicadangkan untuk penggunaan prosesor bahasa dalam konteks tertentu.
Dalam instruksi tertentu, beberapa simbol dapat disediakan untuk memisahkan bagian-bagian instruksi. Simbol ini disebut sebagai kata kunci. Contoh kata kunci REXX adalahWHILE in a DO instruction, dan THEN (yang bertindak sebagai terminator klausa dalam kasus ini) mengikuti IF or WHEN clause.
Terlepas dari kasus ini, hanya simbol sederhana yang merupakan token pertama dalam klausa dan yang tidak diikuti oleh "=" atau ":" dicentang untuk melihat apakah mereka adalah kata kunci instruksi. Anda dapat menggunakan simbol dengan bebas di tempat lain dalam klausa tanpa dianggap sebagai kata kunci.
Komentar di Rexx
Komentar digunakan untuk mendokumentasikan kode Anda. Komentar baris tunggal diidentifikasi dengan menggunakan / * * / di posisi mana pun di baris tersebut.
Contohnya adalah sebagai berikut -
/* 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
Komentar juga dapat ditulis di antara baris kode seperti yang ditunjukkan pada program berikut -
/* 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
Output dari program di atas adalah -
11
Anda juga dapat memiliki beberapa baris dalam komentar seperti yang ditunjukkan dalam program berikut -
/* 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
Output dari program di atas adalah -
11
Dalam bahasa pemrograman apa pun, Anda perlu menggunakan berbagai variabel untuk menyimpan berbagai jenis informasi. Variabel hanyalah lokasi memori yang dicadangkan untuk menyimpan nilai. Ini berarti bahwa ketika Anda membuat variabel, Anda menyediakan beberapa ruang di memori untuk menyimpan nilai yang terkait dengan variabel itu.
Anda mungkin ingin menyimpan informasi dari berbagai tipe data seperti String, Karakter, Karakter Lebar, Integer, Floating Point, Boolean, dll. Berdasarkan tipe data variabel, sistem operasi mengalokasikan memori dan memutuskan apa yang dapat disimpan di Penyimpanan.
Jenis Data Bawaan
Rexx menawarkan berbagai tipe data bawaan. Berikut adalah daftar tipe data yang didefinisikan di Rexx.
Integer- String angka yang tidak berisi titik desimal atau pengenal eksponen. Karakter pertama bisaa plus (+) or minus (-) sign. Angka yang diwakili harus antara -2147483648 dan 2147483647, inklusif.
Big Integer- Serangkaian angka yang tidak berisi titik desimal atau pengenal eksponen. Karakter pertama bisa berupa tanda plus (+) atau minus (-). Angka yang diwakili harus antara -9223372036854775808 dan 2147483648, inklusif, atau antara 2147483648 dan 9223372036854775807.
Decimal - Ini akan dari salah satu format berikut -
String angka yang berisi titik desimal tetapi tidak memiliki pengenal eksponen. Itup mewakili presisi dan smewakili skala angka desimal yang diwakili string. Karakter pertama bisa berupa tanda plus (+) atau minus (-).
Serangkaian angka itu does not contain a decimal pointatau pengenal eksponen. Karakter pertama bisa berupa tanda plus (+) atau minus (-). Angka yang direpresentasikan kurang dari -9223372036854775808 atau lebih besar dari 9223372036854775807.
Float- Sebuah string yang merepresentasikan angka dalam notasi ilmiah. String terdiri dari serangkaian numerik diikuti dengan pengenal eksponen (E atau e diikuti dengan tanda plus (+) atau minus (-) opsional dan serangkaian numerik). String dapat dimulai dengan tanda plus (+) atau minus (-).
String - Serangkaian karakter normal.
Berikut adalah beberapa contoh bagaimana setiap tipe data dapat digunakan. Sekali lagi setiap tipe data akan dibahas secara rinci pada bab-bab selanjutnya. Ini hanya untuk mempercepat Anda dengan penjelasan singkat tentang tipe data yang disebutkan di atas.
Bilangan bulat
Contoh bagaimana tipe data angka dapat digunakan ditunjukkan pada program berikut. Program ini menunjukkan penambahan 2 bilangan bulat.
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
Output dari program di atas adalah -
11
Integer Besar
Program berikut menunjukkan kemampuan Rexx untuk menangani bilangan bulat besar. Program ini menunjukkan bagaimana menambahkan 2 bilangan bulat besar.
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
Output dari program di atas adalah -
6.00000000E+21
Desimal
Program berikut menunjukkan kemampuan Rexx untuk menangani bilangan desimal. Program ini menunjukkan cara menambahkan 2 angka desimal.
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
Output dari program di atas adalah -
12.1
Mengapung
Contoh berikut menunjukkan kasus bagaimana angka bisa berfungsi sebagai pelampung.
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
Output dari program di atas adalah -
141200
Tali
Contoh bagaimana tipe data Tuple dapat digunakan ditunjukkan dalam program berikut.
Di sini kami mendefinisikan a Tuple Pyang memiliki 3 istilah. Itutuple_size adalah fungsi bawaan yang didefinisikan dalam Rexx yang dapat digunakan untuk menentukan ukuran tupel.
Example
/* Main program */
display("hello")
exit
display:
parse arg a
say a
Output dari program di atas adalah -
hello
Di Rexx, semua variabel terikat dengan pernyataan '='. Nama variabel terkadang disebut sebagai simbol. Mereka mungkin terdiri dari Huruf, Digit, dan Karakter seperti '. ! ? _'. Nama variabel yang Anda buat tidak boleh dimulai dengan angka atau titik. Nama variabel sederhana tidak menyertakan titik. Nama variabel yang menyertakan periode disebut variabel majemuk dan mewakili larik atau tabel.
Berikut ini adalah tipe dasar variabel di Rexx yang juga telah dijelaskan pada bab sebelumnya -
Integers- Ini digunakan untuk mewakili integer atau float. Contohnya adalah 10.
Big integers - Ini mewakili nilai integer yang besar.
Decimal - Nilai desimal adalah rangkaian angka yang berisi titik desimal tetapi tidak memiliki pengenal eksponen.
Float - Nilai float adalah string yang merepresentasikan angka dalam notasi ilmiah.
String - Serangkaian karakter mendefinisikan string di Rexx.
Berbagai Jenis Fungsi Variabel
Pada bagian ini, kita akan membahas tentang berbagai fungsi yang dapat dilakukan variabel.
Deklarasi Variabel
Sintaks umum untuk mendefinisikan variabel ditampilkan sebagai berikut -
var-name = var-value
dimana
var-name - Ini adalah nama variabelnya.
var-value - Ini adalah nilai yang terikat ke variabel.
Program berikut adalah contoh deklarasi variabel -
Example
/* Main program */
X = 40
Y = 50
Result = X + Y
say Result
Dalam contoh di atas, kami memiliki 2 variabel, satu adalah X yang terikat dengan nilai 40 dan selanjutnya adalah Y yang terikat dengan nilai 50. Variabel lain yang disebut Hasil terikat dengan penambahanX and Y.
Output dari program di atas adalah sebagai berikut -
90
Variabel Penamaan
Nama variabel terkadang disebut sebagai simbol. Mereka mungkin terdiri dari Huruf, Digit, dan Karakter seperti '. ! ? _ '. Nama variabel yang Anda buat tidak boleh dimulai dengan angka atau titik.
Jika variabel belum diberi nilai, itu disebut sebagai tidak diinisialisasi. Nilai variabel yang tidak diinisialisasi adalah nama variabel itu sendiri dalam huruf besar.
Contoh variabel yang tidak ditetapkan adalah sebagai berikut -
Example
/* Main program */
unassignedvalue
say unassignedvalue
Jika Anda menjalankan program di atas, Anda akan mendapatkan output berikut -
UNASSIGNEDVALUE
sh: UNASSIGNEDVALUE: command not found
2 *-* unassignedvalue
>>> "UNASSIGNEDVALUE"
+++ "RC(127)"
Variabel dapat diberi nilai lebih dari sekali. Program di bawah ini menunjukkan bagaimana nilai X dapat diberi nilai beberapa kali.
Example
/* Main program */
X = 40
X = 50
say X
Output dari program di atas adalah sebagai berikut -
50
Mencetak Variabel
Nilai variabel dicetak menggunakan sayperintah. Berikut adalah contoh pencetakan berbagai variabel.
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
Output dari program di atas adalah sebagai berikut -
40
50.5
hello
Operator adalah simbol yang memberi tahu kompiler untuk melakukan manipulasi matematika atau logika tertentu.
Rexx memiliki berbagai jenis operator yang juga dijelaskan secara detail sebagai berikut -
- Operator aritmatika
- Operator relasional
- Operator logika
- Operator bitwise
Operator Aritmatika
Bahasa Rexx mendukung Operator Aritmatika normal seperti bahasa lainnya. Berikut adalah Operator Aritmatika yang tersedia di Rexx.
Tunjukkan Contoh
Operator | Deskripsi | Contoh |
---|---|---|
+ | Penambahan dua operan | 1 + 2 akan menghasilkan 3 |
- | Mengurangi operan kedua dari yang pertama | 1 - 2 akan menghasilkan -1 |
∗ | Perkalian kedua operan | 2 ∗ 2 akan menghasilkan 4 |
/ | Pembagian pembilang dengan penyebut | 2/2 akan menghasilkan 1 |
// | Sisa pembagian bilangan pertama dengan bilangan kedua | 3 // 2 akan menghasilkan 1 |
% | Komponen div akan melakukan pembagian dan mengembalikan komponen integer. | 3% 2 akan memberi 1 |
Operator Relasional
Operator Relasional memungkinkan perbandingan objek. Berikut adalah operator relasional yang tersedia di Rexx. Di Rexx nilai benar dilambangkan dengan 1 dan nilai salah dilambangkan dengan 0.
Tunjukkan Contoh
Operator | Deskripsi | Contoh |
---|---|---|
== | Menguji persamaan antara dua objek | 2 = 2 akan menghasilkan 1 |
< | Memeriksa untuk melihat apakah objek kiri kurang dari operan kanan. | 2 <3 akan menghasilkan 1 |
= < | Memeriksa untuk melihat apakah objek kiri kurang dari atau sama dengan operan kanan. | 2 = <3 akan menghasilkan 1 |
> | Memeriksa untuk melihat apakah objek kiri lebih besar dari operan kanan. | 3> 2 akan menghasilkan 1 |
> = | Memeriksa untuk melihat apakah objek kiri lebih besar dari atau sama dengan operan kanan. | 3> 2 akan menghasilkan 1 |
Operator Logis
Operator Logis digunakan untuk mengevaluasi ekspresi Boolean. Berikut adalah operator logika yang tersedia di Rexx.
Tunjukkan Contoh
Operator | Deskripsi | Contoh |
---|---|---|
& | Ini adalah operator logika “dan” | 1 atau 1 akan memberi 1 |
| | Ini adalah operator logika “atau” | 1 atau 0 akan menghasilkan 1 |
\ | Ini adalah operator logika “bukan” | \ 0 akan memberi 1 |
&& | Ini adalah operator “atau” eksklusif yang logis | 1 && 0 akan menghasilkan 1 |
Operator Bitwise
Groovy menyediakan empat operator bitwise. Di bawah ini adalah operator bitwise yang tersedia di Groovy.
Tunjukkan Contoh
Sr.No. | Operator & Deskripsi |
---|---|
1 | bitand Ini adalah operator bitwise “dan” |
2 | bitor Ini adalah operator bitwise "atau" |
3 | bitxor Ini adalah bitwise "xor" atau Exclusive or operator |
Prioritas Operator
Tabel berikut menunjukkan Operator Precedence untuk operator Rexx dalam urutan prioritas menurun dari mereka.
Operator | Hak lebih tinggi |
---|---|
Operator prefiks | + - \ |
Penambahan dan pengurangan | + - |
Operator perbandingan | = ==> <> = <= |
DAN logis | & |
Logis ATAU | | |
EKSKLUSIF ATAU | && |
Array dalam bahasa pemrograman apa pun memungkinkan Anda mengelompokkan daftar nilai dengan tipe yang sama. Penggunaan array memungkinkan Anda membuat daftar jenis nilai yang serupasortable, searchable dan bisa easily manipulated. Rexx juga memungkinkan seseorang untuk mendefinisikan array. Array ini bisa satu dimensi atau multidimensi.
Larik Rexx mungkin jarang. Artinya, tidak setiap posisi array harus memiliki nilai atau bahkan diinisialisasi. Mungkin terdapat posisi array kosong, atau slot, di antara yang memang berisi elemen data. Atau array bisa padat, di mana slot array yang berurutan semuanya berisi elemen data.
Dalam banyak bahasa pemrograman, Anda harus memperhatikan apa subskrip dari entri pertama dalam sebuah tabel. Apakah subskrip numerik pertama 0 atau 1? Di Rexx, subskrip pertama adalah apa pun yang Anda gunakan! Jadi, masukkan elemen array pertama ke posisi 0 atau 1 sesuai keinginan Anda.
array_name.0 = ‘first element’
atau
array_name.1 = ‘first element’
Mari kita lihat operasi berbeda yang tersedia untuk array.
Membuat Array
Array dibuat dengan konvensi penamaan yang sama yang digunakan untuk variabel di Rexx.
Sintaks umum untuk membuat array adalah sebagai berikut -
Arrayname.index = value
dimana
Arrayname - Ini adalah nama yang diberikan ke array.
Index - Ini adalah posisi indeks dalam larik untuk merujuk ke elemen tertentu.
Value - Ini adalah nilai yang diberikan ke elemen indeks dalam larik.
Contoh deklarasi array adalah sebagai berikut -
Example
/* Main program */
list.1 = 0
list.2 = 0
list.3 = 0
Poin-poin berikut perlu diperhatikan tentang program di atas -
- Nama array diberikan sebagai list
- Ada 3 elemen dari array yang diinisialisasi dengan nilai 0.
Menetapkan Nilai ke Elemen Array
Nilai dapat ditetapkan kembali ke elemen array dengan cara yang sama seperti elemen array diinisialisasi.
Program berikut adalah contoh nilai yang dapat diberikan ke berbagai nilai indeks dari larik yang ada.
/* Main program */
list.1 = 0
list.2 = 0
list.3 = 0
/* Assigning new values to the array*/
list.1 = 10
list.3 = 30
Menampilkan Nilai Array
Nilai dari sebuah array dapat ditampilkan dengan mengacu pada posisi indeks dari elemen array. Contoh berikut menunjukkan untuk mengakses berbagai elemen array.
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
Output dari program di atas adalah sebagai berikut -
10
0
30
Menyalin Array
Semua elemen array dapat disalin ke array lain. Sintaks umumnya adalah sebagai berikut -
Newarray. = sourcearray.
dimana
Newarray - Ini adalah larik baru tempat elemen perlu disalin.
Sourcearray - Ini adalah larik sumber tempat elemen perlu disalin.
Contoh tentang bagaimana operasi penyalinan untuk array dapat dilakukan ditunjukkan dalam program berikut -
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
Output dari program di atas adalah -
10
0
30
Iterasi melalui elemen array
Elemen array juga dapat diulang dengan menggunakan pernyataan iteratif yang tersedia di Rexx. Contoh bagaimana ini dapat dilakukan adalah sebagai berikut -
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
Petunjuk berikut perlu diperhatikan tentang program di atas -
Itu do loop digunakan untuk melakukan iterasi melalui elemen array.
Variabel number_of_elements digunakan untuk menyimpan jumlah elemen dalam array.
Itu variable j digunakan untuk melakukan iterasi melalui setiap elemen array.
Output dari program di atas adalah -
10
20
30
Array Dua Dimensi
Disebutkan juga bahwa kita dapat membuat array multi-dimensi di Rexx. Mari kita lihat contoh bagaimana kita dapat mengimplementasikan array 2 dimensi.
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
Output dari program di atas akan ditampilkan sebagai berikut -
10
11
12
Hal berikut perlu diperhatikan tentang program di atas -
Untuk membuat array multidimensi, kita dapat menggunakan lapisan pengindeksan lain. Jadi dalam contoh kami, kami menggunakanlist.1.1 untuk membuat larik dalam lain untuk nilai indeks 1 larik daftar.
Sejauh ini kita telah melihat pernyataan yang dieksekusi satu demi satu secara berurutan. Selain itu, pernyataan disediakan di Rexx untuk mengubah aliran kontrol dalam logika program. Mereka kemudian diklasifikasikan menjadi aliran pernyataan kontrol yang akan kita pelajari secara rinci.
Pernyataan loop memungkinkan kita untuk mengeksekusi pernyataan atau sekelompok pernyataan beberapa kali. Ilustrasi berikut adalah bentuk umum dari pernyataan loop di sebagian besar bahasa pemrograman.
Mari kita bahas berbagai loop yang didukung oleh Rexx.
Sr.No. | Jenis & Deskripsi Loop |
---|---|
1 | lakukan loop Itu do loopdigunakan untuk mengeksekusi sejumlah pernyataan untuk beberapa kali. Berapa kali pernyataan perlu dieksekusi ditentukan oleh nilai yang diteruskan ke do loop. |
2 | do-while loop Pernyataan do-while digunakan untuk mensimulasikan loop sementara sederhana yang ada dalam bahasa pemrograman lain. |
3 | lakukan sampai loop Loop do-to adalah variasi kecil dari loop do while. Loop ini bervariasi dalam fakta bahwa keluar ketika kondisi yang dievaluasi salah. |
Pengulangan Terkendali
Loop do dapat dilakukan untuk melakukan pengulangan pernyataan yang terkontrol.
Sintaksis
Sintaks umum dari pernyataan semacam ini adalah sebagai berikut.
do index = start [to limit] [by increment] [for count]
statement #1
statement #2
end
Perbedaan dalam pernyataan ini adalah bahwa ada indeks yang digunakan untuk mengontrol berapa kali loop dijalankan. Kedua, ada parameter yang menyatakan nilai awal indeks, di mana harus berakhir dan berapa nilai kenaikannya.
Diagram alir
Mari kita lihat diagram alir dari loop ini -
Dari diagram di atas Anda dapat melihat dengan jelas bahwa loop dijalankan berdasarkan nilai indeks dan bagaimana nilai indeks bertambah.
Program berikut adalah contoh dari pernyataan pengulangan terkontrol.
Contoh
/* Main program */
do i = 0 to 5 by 2
say "hello"
end
Dalam program di atas, nilai file count idiatur ke 0 terlebih dahulu. Kemudian bertambah dalam hitungan 2 sampai nilainya tidak lebih dari 5.
Output dari kode di atas akan menjadi -
hello
hello
hello
Struktur pengambilan keputusan mengharuskan pemrogram menentukan satu atau lebih kondisi untuk dievaluasi atau diuji oleh program.
Diagram berikut menunjukkan bentuk umum dari struktur pengambilan keputusan tipikal yang ditemukan di sebagian besar bahasa pemrograman.
Ada pernyataan atau pernyataan yang harus dieksekusi jika kondisinya ditentukan true, dan secara opsional, pernyataan lain yang akan dijalankan jika kondisi ditentukan untuk dijalankan false.
Mari kita lihat berbagai pernyataan pengambilan keputusan yang tersedia di Rexx.
Sr.No. | Pernyataan & Deskripsi |
---|---|
1 | Jika pernyataan Pernyataan pengambilan keputusan pertama adalah ifpernyataan. Sebuahif pernyataan terdiri dari ekspresi Boolean diikuti oleh satu atau lebih pernyataan. |
2 | Pernyataan If-else Pernyataan pengambilan keputusan berikutnya adalah pernyataan if-else. Sebuahif pernyataan bisa diikuti oleh pernyataan lain opsional, yang dijalankan ketika ekspresi Boolean salah. |
Pernyataan Jika Bersarang
Terkadang ada kebutuhan yang harus dimiliki multiple if statementstertanam di dalam satu sama lain, seperti mungkin dalam bahasa pemrograman lainnya. Di Rexx juga hal ini dimungkinkan.
Sintaksis
if (condition1) then
do
#statement1
end
else
if (condition2) then
do
#statement2
end
Diagram alir
Diagram alir bersarang if pernyataannya adalah sebagai berikut -
Mari kita ambil contoh bersarang if pernyataan -
Contoh
/* 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
Output dari program di atas adalah -
i is greater than 10
Pilih Pernyataan
Rexx menawarkan pernyataan pilih yang dapat digunakan untuk mengeksekusi ekspresi berdasarkan output dari pernyataan pilih.
Sintaksis
Bentuk umum dari pernyataan ini adalah -
select
when (condition#1) then
statement#1
when (condition#2) then
statement#2
otherwise
defaultstatement
end
Cara kerja umum dari pernyataan ini adalah sebagai berikut -
Pernyataan pilih memiliki rentang pernyataan when untuk mengevaluasi kondisi yang berbeda.
Setiap when clause memiliki kondisi berbeda yang perlu dievaluasi dan pernyataan selanjutnya dijalankan.
Pernyataan sebaliknya digunakan untuk menjalankan pernyataan default apa pun jika sebelumnya saat kondisi tidak evaluate to true.
Diagram alir
Diagram alir dari select pernyataannya adalah sebagai berikut
Program berikut adalah contoh pernyataan kasus di Rexx.
Contoh
/* 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
Output dari program di atas adalah -
i is greater than 10
Rexx memiliki tipe data berikut dalam hal angka.
Integer- String angka yang tidak berisi titik desimal atau pengenal eksponen. Karakter pertama bisa berupa tanda plus (+) atau minus (-). Angka yang diwakili harus antara -2147483648 dan 2147483647, inklusif.
Big Integer- Serangkaian angka yang tidak berisi titik desimal atau pengenal eksponen. Karakter pertama bisa berupa tanda plus (+) atau minus (-). Angka yang diwakili harus antara -9223372036854775808 dan 2147483648, inklusif, atau antara 2147483648 dan 9223372036854775807.
Decimal - Salah satu format berikut -
String angka yang berisi titik desimal tapi tidak ada pengenal eksponen, di mana p mewakili presisi dan smewakili skala angka desimal yang diwakili string. Karakter pertama bisa berupa tanda plus (+) atau minus (-).
String angka yang tidak berisi titik desimal atau pengenal eksponen. Karakter pertama bisa berupa tanda plus (+) atau minus (-). Angka yang direpresentasikan kurang dari -9223372036854775808 atau lebih besar dari 9223372036854775807.
Float- Sebuah string yang merepresentasikan angka dalam notasi ilmiah. String terdiri dari serangkaian numerik diikuti dengan pengenal eksponen (E atau e diikuti dengan tanda plus (+) atau minus (-) opsional dan serangkaian numerik). String dapat dimulai dengan tanda plus (+) atau minus (-).
Sekarang mari kita lihat perbedaannya methods available for numbers.
Sr.No. | Metode yang tersedia untuk Bilangan |
---|---|
1 | ABS Metode ini mengembalikan nilai absolut dari angka masukan. |
2 | MAKS Metode ini mengembalikan nilai maksimum dari daftar angka. |
3 | MIN Metode ini mengembalikan nilai minimum dari daftar angka. |
4 | ACAK Metode ini mengembalikan nomor yang dibuat secara acak. |
5 | TANDA Mengembalikan 1 jika bilangan lebih besar dari 0, atau 0 jika angkanya 0, atau -1 jika angkanya kurang dari 0. |
6 | TRUNC Metode ini memotong angka. |
String di Rexx dilambangkan dengan urutan karakter. Program berikut adalah contoh string -
/* Main program */
a = "This is a string"
say a
Output dari program di atas adalah sebagai berikut -
This is a string
Mari kita bahas beberapa metode yang tersedia di Rexx untuk string.
Sr.No. | Metode yang tersedia di Rexx for Strings |
---|---|
1 | kiri Metode ini mengembalikan sejumlah karakter dari kiri string. |
2 | Baik Metode ini mengembalikan sejumlah karakter dari kanan string. |
3 | panjangnya Metode ini mengembalikan jumlah karakter dalam string. |
4 | balik Metode ini mengembalikan karakter dalam format terbalik. |
5 | membandingkan Metode ini membandingkan 2 string. Mengembalikan "0" jika "string1" dan "string2" identik. Jika tidak, ini mengembalikan posisi karakter pertama yang tidak cocok. |
6 | salinan Metode ini menyalin file string n berkali-kali. |
7 | substr Metode ini mendapatkan substring dari string tertentu. |
8 | pos Metode ini mengembalikan posisi satu string di dalam string lainnya. |
9 | delstr Metode ini menghapus substring dari dalam string. |
Kode di Rexx biasanya dibagi menjadi Fungsi dan Subrutin. Menggunakan fungsi membantu memisahkan kode menjadi lebih banyak unit logis. Mari kita lihat fungsi-fungsi ini secara detail.
Mendefinisikan Fungsi
Sintaks deklarasi fungsi adalah sebagai berikut -
FunctionName:
PARSE ARG arguement1, arguement2… arguementN
Return value
Dimana,
FunctionName - Ini adalah nama yang diberikan untuk fungsi tersebut.
PARSE ARG - Ini adalah kata kunci di Rexx yang digunakan untuk menyebutkan bahwa parameter sedang diteruskan ke fungsi.
arguement1, arguement2… arguementN - Ini adalah argumen yang diteruskan ke fungsi.
Return value - Ini adalah nilai yang dikembalikan oleh fungsi.
Program berikut adalah contoh sederhana tentang bagaimana fungsi digunakan di Rexx.
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
return a + b
Hal-hal berikut harus diperhatikan tentang program di atas -
Kami mendefinisikan fungsi yang disebut add yang menerima 2 parameter a dan b.
Fungsi tersebut menggunakan pernyataan return untuk mengembalikan jumlah dari a dan b.
Pernyataan keluar harus digunakan untuk menandai akhir dari program utama.
Output dari program di atas adalah sebagai berikut -
11
Bekerja dengan Argumen
Di Rexx, ada fungsi khusus yang dapat dibuat untuk bekerja dengan argumen. Mari kita lihat beberapa argumen seperti itu.
arg
Metode ini digunakan untuk mengembalikan jumlah argumen yang ditentukan untuk fungsi tersebut.
Syntax -
arg()
Parameters - Tidak ada
Return Value - Metode ini mengembalikan jumlah argumen yang ditentukan untuk fungsi tersebut.
Example -
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
say arg()
return a + b
Output - Saat kita menjalankan program di atas kita akan mendapatkan hasil sebagai berikut.
2
11
arg (indeks)
Metode ini digunakan untuk mengembalikan nilai argumen pada posisi tertentu.
Syntax -
arg(index)
Parameter -
Index - Posisi indeks dari argumen yang akan dikembalikan.
Return Value - Metode ini mengembalikan nilai argumen pada posisi tertentu.
Example -
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
say arg(1)
return a + b
Output - Saat kita menjalankan program di atas kita akan mendapatkan hasil sebagai berikut.
5
11
Fungsi Rekursif
Fungsi atau rutinitas rekursif adalah yang memanggil dirinya sendiri. Setiap fungsi rekursif dapat dikodekan dengan cara non-rekursif tradisional (atau secara berulang), tetapi terkadang rekursi menawarkan solusi masalah yang lebih baik. Tidak semua bahasa pemrograman mendukung rekursi; Rexx melakukannya.
Mari kita lihat contoh program faktorial terkenal yang menggunakan fungsi rekursif di Rexx.
/* 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 )
Output dari program di atas adalah sebagai berikut -
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
Tumpukan terkadang disebut antrian data eksternal, tetapi kami mengikuti penggunaan umum dan menyebutnya sebagai tumpukan. Ini adalah blok memori yang secara logis berada di luar Rexx. Instruksi seperti data tempat dorong dan antrian ke dalam tumpukan, dan instruksi seperti tarik dan parse tarik mengekstrak data darinya. Fungsi built-in antrian melaporkan berapa banyak item dalam tumpukan.
Mari kita lihat contoh tumpukan.
/* 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
Perulangan do pertama dalam program menempatkan tiga baris data ke tumpukan. Ini menggunakan instruksi push untuk melakukan ini. Kami memberi nomor pada garis sehingga ketika mereka diambil dalam urutan LIFO, urutannya terlihat.
Item yang ditempatkan ke dalam tumpukan dengan instruksi dorong diambil dalam urutan LIFO -
do j = 1 to 3
push ‘Stack: line #’ || j /* push 3 lines onto the stack */
end
Blok kode berikutnya menunjukkan penggunaan fungsi built-in antrian untuk menemukan jumlah baris pada stack, serta loop untuk mengambil semua baris dari stack -
do j = 1 to queued() /* retrieve and display LIFO */
pull line
say line
end
Karena tiga item ditempatkan di tumpukan melalui push, mereka diambil dalam urutan LIFO.
Output dari program di atas adalah sebagai berikut.
STACK: LINE #3
STACK: LINE #2
STACK: LINE #1
Rexx menyediakan sejumlah metode saat bekerja dengan I / O. Rexx menyediakan class yang lebih mudah untuk menyediakan fungsi berikut untuk file.
- Membaca file
- Menulis ke file
- Melihat apakah suatu file adalah file atau direktori
Fungsi yang tersedia di Rexx untuk File I / O didasarkan pada input baris dan input karakter dan kita akan melihat fungsi yang tersedia untuk keduanya secara rinci.
Mari jelajahi beberapa operasi file yang ditawarkan Rexx. Untuk keperluan contoh ini, kami akan menganggap bahwa ada file bernamaNewFile.txt yang berisi baris teks berikut -
Example1
Example2
Example3
File ini akan digunakan untuk operasi baca dan tulis dalam contoh berikut. Di sini kami akan membahas tentang cara membaca konten pada file dengan berbagai cara.
Membaca Isi File Baris pada Suatu Waktu
Operasi umum pada file dilakukan dengan menggunakan metode yang tersedia di perpustakaan Rexx itu sendiri. Pembacaan file adalah yang paling sederhana dari semua operasi di Rexx.
Mari kita lihat fungsi yang digunakan untuk melakukannya.
antri
Metode ini mengembalikan baris dari file teks. File teks adalah nama file yang diberikan sebagai parameter input untuk fungsi tersebut.
Syntax -
linein(filename)
Parameter -
filename - Ini adalah nama file dari mana baris perlu dibaca.
Return Value - Metode ini mengembalikan satu baris file dalam satu waktu.
Example -
/* Main program */
line_str = linein(Example.txt)
say line_str
Kode di atas cukup sederhana karena file Example.txtnama file disediakan untuk fungsi linein. Fungsi ini kemudian membaca sebaris teks dan memberikan hasilnya ke variabelline_str.
Output - Saat kita menjalankan program di atas kita akan mendapatkan hasil sebagai berikut.
Example1
Membaca Isi File Sekaligus
Di Rexx, membaca semua konten file dapat dicapai dengan bantuan pernyataan while. Pernyataan while akan membaca setiap baris, satu per satu hingga akhir file tercapai.
Contoh bagaimana hal ini dapat dicapai ditunjukkan di bawah ini.
/* Main program */
do while lines(Example.txt) > 0
line_str = linein(Example.txt)
say line_str
end
Dalam program di atas, hal-hal berikut perlu diperhatikan -
Fungsi garis membaca Example.txt mengajukan.
Fungsi while digunakan untuk memeriksa apakah ada baris lain di file Example.txt.
Untuk setiap baris yang dibaca dari file, file line_strvariabel memegang nilai baris saat ini. Ini kemudian dikirim ke konsol sebagai output.
Output - Saat kita menjalankan program di atas kita akan mendapatkan hasil sebagai berikut.
Example1
Example2
Example3
Menulis Isi ke File
Sama seperti membaca file, Rexx juga memiliki kemampuan untuk menulis ke file. Mari kita lihat fungsi yang digunakan untuk melakukannya.
lineout
Metode ini menulis baris ke file. File tempat baris harus ditulis disediakan sebagai parameter untuk pernyataan lineout.
Syntax -
lineout(filename)
Parameter -
filename - Ini adalah nama file dari mana baris perlu ditulis.
Return Value- Metode ini mengembalikan status fungsi lineout. Nilai yang dikembalikan adalah 0 jika baris berhasil ditulis jika tidak, nilai 1 akan dikembalikan.
Example -
/* Main program */
out = lineout(Example.txt,"Example4")
Output - Setiap kali kode di atas dijalankan, baris "Example4" akan ditulis ke file Example.txt.
Pada bab ini, kita akan membahas tentang beberapa fungsi lain yang tersedia untuk file.
Sr.No. | Fungsi untuk File |
---|---|
1 | Garis Fungsi ini mengembalikan nilai 1 atau jumlah baris yang tersisa untuk dibaca dalam aliran input. Nama file diberikan sebagai masukan untuk fungsi tersebut. |
2 | aliran Fungsi ini digunakan untuk memeriksa status sebuah file. Terkadang diperlukan untuk memeriksa status file sebelum digunakan. Jika file rusak atau tidak tersedia, maka tidak ada operasi lebih lanjut yang dapat dilakukan pada file tersebut. Jadi lebih masuk akal untuk terlebih dahulu memeriksa status file tersebut. |
3 | charin Fungsi ini digunakan untuk membaca karakter satu per satu dari file. Kadang-kadang program perlu membaca karakter file dengan bijaksana dan karenanya fungsi ini dapat digunakan untuk tujuan ini. |
4 | karakter Fungsi ini mengembalikan 1 atau jumlah karakter yang tersisa untuk dibaca di file itu sendiri. Nama file disebutkan sebagai parameter fungsi. |
5 | charout Fungsi ini digunakan untuk menulis satu karakter pada satu waktu ke file. Nama file dimasukkan sebagai parameter fungsi. |
Dalam bahasa pemrograman apa pun, seluruh program dipecah menjadi modul logis. Ini mempermudah penulisan kode yang dapat dikelola dengan mudah. Ini adalah persyaratan dasar untuk bahasa pemrograman apa pun.
Di Rexx, modul dapat ditulis menggunakan Subrutin dan fungsi. Mari kita lihat subrutin secara detail.
Mendefinisikan Subrutin
Sintaks deklarasi fungsi adalah sebagai berikut -
FunctionName:
Statement#1
Statement#2
….
Statement#N
Dimana,
FunctionName - Ini adalah nama yang diberikan ke subrutin.
Statement#1 .. Statement#N - Ini adalah daftar pernyataan yang membentuk subrutin.
Program berikut ini adalah contoh sederhana yang menunjukkan penggunaan subrutin.
/* Main program */
call add
exit
add:
a = 5
b = 10
c = a + b
say c
Hal-hal berikut harus diperhatikan tentang program di atas -
Kami mendefinisikan subrutin yang disebut add.
Subrutin melakukan fungsionalitas tambah sederhana.
Pernyataan keluar harus digunakan untuk menandai akhir dari program utama.
Output dari program di atas adalah sebagai berikut -
15
Bekerja dengan Argumen
Juga dimungkinkan untuk bekerja dengan argumen di Rexx. Contoh berikut menunjukkan bagaimana hal ini dapat dicapai.
/* Main program */
call add 1,2
exit
add:
PARSE ARG a,b
c = a + b
say c
Hal-hal berikut harus diperhatikan tentang program di atas -
Kami mendefinisikan subrutin yang disebut add yang mengambil 2 parameter.
Dalam subrutin, 2 parameter diuraikan menggunakan kata kunci PARSE dan ARG.
Output dari program di atas adalah sebagai berikut -
3
Metode Berbeda untuk Argumen
Mari kita lihat beberapa metode lain yang tersedia untuk argumen.
arg
Metode ini digunakan untuk mengembalikan jumlah argumen yang ditentukan untuk subrutin.
Syntax -
arg()
Parameters - Tidak ada
Return Value - Metode ini mengembalikan jumlah argumen yang ditentukan untuk subrutin.
Example -
/* Main program */
call add 1,2
exit
add:
PARSE ARG a,b
say arg()
c = a + b
say c
Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
2
3
arg (indeks)
Metode ini digunakan untuk mengembalikan nilai argumen pada posisi tertentu.
Syntax -
arg(index)
Parameters
Index - Posisi indeks dari argumen yang akan dikembalikan.
Return Value - Metode ini mengembalikan nilai argumen pada posisi tertentu.
Example -
/* Main program */
call add 1,2
exit
add:
PARSE ARG a,b
say arg(1)
c = a + b
say c
Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
1
3
Setiap bahasa pemrograman memiliki beberapa fungsi bawaan yang membantu programmer melakukan beberapa tugas rutin. Rexx juga memiliki banyak fungsi bawaan.
Mari kita lihat semua fungsi yang tersedia di Rexx.
Sr.No. | Fungsi tersedia di Rexx |
---|---|
1 | ALAMAT Metode ini mengembalikan nama lingkungan tempat perintah Rexx saat ini berjalan. |
2 | BERBUNYI Metode ini menghasilkan suara dalam sistem pada frekuensi dan durasi tertentu. |
3 | Tipe data Metode ini mengembalikan nilai 'NUM' jika inputnya adalah angka yang valid, selain itu akan mengembalikan nilai 'CHAR'. Anda juga dapat menentukan apakah Anda ingin membandingkan nilai input dengan nilai NUM atau CHAR. Dalam setiap kasus, nilai yang dikembalikan akan menjadi 1 atau 0 tergantung pada hasilnya. |
4 | TANGGAL Metode ini mengembalikan tanggal lokal dalam format berikut. |
5 | Digit Metode ini mengembalikan pengaturan angka NUMERIK seperti yang didefinisikan dalam sistem saat ini. |
6 | ERRORTEXT Metode ini mengembalikan pesan kesalahan Rexx yang terkait dengan nomor kesalahan 'errorno'. Harap dicatat bahwa nomor kesalahan harus berupa nilai dari 0 hingga 99. Ini berguna jika program Anda mengembalikan kode kesalahan dan Anda ingin tahu apa arti kode kesalahan tersebut. |
7 | BENTUK Metode ini mengembalikan pengaturan 'NUMERIC FORM' saat ini yang digunakan untuk melakukan perhitungan matematika pada sistem. |
8 | WAKTU Metode ini mengembalikan waktu lokal dalam format jam 24 jam seperti yang ditunjukkan pada program berikut. |
9 | IDENTITAS PENGGUNA Metode ini mengembalikan id pengguna saat ini yang masuk ke sistem. |
10 | XRANGE Metode ini mengembalikan karakter dalam rentang yang ditentukan oleh karakter awal dan akhir. |
11 | X2D Metode ini mengembalikan konversi desimal dari a hexstring value. |
12 | X2C Metode ini mengembalikan konversi karakter dari nilai hexstring. |
Salah satu keuntungan terbesar di Rexx adalah kemampuan untuk membuat skrip yang dapat digunakan kembali. Seringkali dalam organisasi saat ini, memiliki skrip yang dapat digunakan kembali adalah nilai tambah yang besar dalam menghemat waktu untuk melakukan tugas berulang yang umum.
Misalnya, tim teknologi dalam organisasi TI dapat memiliki kebutuhan untuk memiliki skrip yang melakukan tugas umum sehari-hari. Tugas-tugas ini termasuk berinteraksi dengan sistem operasi. Skrip ini kemudian dapat diprogram untuk menangani kode pengembalian yang buruk atau kesalahan.
Rexx menawarkan banyak perintah sistem yang dapat digunakan untuk melakukan tugas berulang seperti itu. Mari kita lihat beberapa perintah sistem yang tersedia di Rexx.
dir
Ini adalah perintah daftar direktori normal yang digunakan di Windows.
Sintaksis
dir
Parameter
Tidak ada
Nilai Kembali
Metode ini mengembalikan daftar direktori saat ini di sistem.
Contoh
/* Main program */
dir
Outputnya tergantung pada direktori di sistem.
Program berikut ini hanyalah sebuah contoh.
Keluaran
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
Contoh lain dari dir commandditampilkan dalam program berikut. Hanya kali ini kami memanfaatkan filespecial rc variable. Variabel ini khusus di Rexx dan memberi Anda status eksekusi perintah sistem. Jika nilai yang dikembalikan 0, berarti perintah berhasil dijalankan. Jika tidak, nomor kesalahan akan diberikan dalam nama variabel rc.
Contoh
/* Main program */
dir
if rc = 0 then
say 'The command executed successfully'
else
say 'The command failed, The error code is =' rc
Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
Keluaran
The command failed, The error code is = 127
Perintah Pengalihan
Rexx juga memiliki fasilitas menggunakan perintah pengalihan. Perintah pengalihan berikut tersedia di Rexx.
< - Perintah ini digunakan untuk menerima input yang berasal dari sebuah file.
>- Perintah ini digunakan untuk menampilkan konten ke file. Jika file tersebut ada, maka akan ditimpa.
>>- Ini juga digunakan untuk menampilkan konten ke file. Tetapi output ditambahkan ke akhir file untuk mempertahankan konten file yang ada.
Mari kita lihat contoh bagaimana kita dapat menggunakan perintah pengalihan. Dalam contoh berikut, kami menggunakan perintah sortir untuk mengurutkan file bernamasortin.txt. Data dari file tersebut dikirim ke perintah sortir. Output dari perintah sortir kemudian dikirim ke file sortout.txt.
Contoh
/* Main program */
'sort <sortin.txt> sortout.txt'
Asumsikan bahwa file sortin.txt memiliki data berikut.
Keluaran
b
c
a
Berkas sortout.txt akan memiliki data berikut.
a
b
c
Fungsi ADDRESS
Metode ini digunakan untuk mengetahui lingkungan default yang digunakan untuk aliran Input, Error, dan Output.
Sintaksis
ADDRESS(options)
Parameter
Pilihan untuk apa alamat dari sistem tertentu.
Nilai Kembali
Metode ini mengembalikan nama lingkungan untuk aliran Input, Error, dan Output.
Contoh
/* Main program */
say ADDRESS('I')
say ADDRESS('O')
say ADDRESS('E')
Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
Keluaran
INPUT NORMAL
REPLACE NORMAL
REPLACE NORMAL
XML adalah bahasa sumber terbuka portabel yang memungkinkan pemrogram mengembangkan aplikasi yang dapat dibaca oleh aplikasi lain, apa pun sistem operasi dan / atau bahasa pengembangannya. Ini adalah salah satu bahasa yang paling umum digunakan untuk bertukar data antar aplikasi.
Apa itu XML?
Extensible Markup Language XML adalah bahasa markup seperti HTML atau SGML. Ini direkomendasikan oleh World Wide Web Consortium dan tersedia sebagai standar terbuka. XML sangat berguna untuk melacak data dalam jumlah kecil hingga sedang tanpa memerlukan backbone berbasis SQL.
Untuk semua contoh kode XML kita, mari gunakan file XML sederhana berikut movies.xml untuk konstruksi file XML dan membaca file selanjutnya.
<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>
Mulai
Secara default, fungsionalitas xml tidak disertakan dalam interpreter Rexx. Untuk bekerja dengan XML di Rexx, langkah-langkah berikut harus diikuti.
Unduh file berikut -
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/
Ekstrak semua file dan pastikan mereka termasuk dalam jalur sistem.
Memuat Fungsi XML
Setelah semua file di bagian di atas diunduh dan berhasil didaftarkan, langkah selanjutnya adalah menulis kode untuk memuat fungsi XML Rexx. Ini dilakukan dengan kode berikut.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
Hal-hal berikut dapat diperhatikan tentang program di atas -
Fungsinya rxfuncadddigunakan untuk memuat pustaka eksternal. Ituxmlloadfuncs fungsi digunakan untuk memuat semua perpustakaan di rexxxml file ke dalam memori.
Jika nilai rcc <> 0, maka akan menghasilkan error. Untuk ini, kita dapat memanggilrxfuncerrmsg untuk memberi kami detail lebih lanjut tentang pesan kesalahan.
Kami akhirnya menelepon ke xmlloadfuncs, sehingga semua fungsionalitas yang berhubungan dengan xml sekarang dapat diaktifkan di program Rexx.
Mari kita lihat berbagai methods available for XML in Rexx.
xmlVersion
Metode ini mengembalikan versi pustaka XML dan XSLT yang digunakan pada sistem.
Sintaksis
xmlVersion()
Parameter
Tidak ada
Nilai Kembali
Metode ini mengembalikan versi pustaka XML dan XSLT yang digunakan pada sistem.
Contoh
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Ketika kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut. Ini lagi-lagi tergantung pada versi pustaka XML yang digunakan pada sistem.
Keluaran
1.0.0 20631 10126
xmlParseXML
Fungsi ini digunakan untuk mengurai data XML yang dikirim ke fungsi. Pohon dokumen dikembalikan oleh fungsi.
Sintaksis
xmlParseXML(filename)
Parameter
Filename - Ini adalah nama file XML yang perlu diurai.
Nilai Kembali
Pohon dokumen dikembalikan oleh fungsi. Lain mengembalikan 0, jika ada kesalahan.
Contoh
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Keluaran
Tidak ada keluaran umum.
xmlFindNode
Metode ini mengevaluasi file XPath expressionditeruskan ke sana. Ini digunakan untuk mem-parsing pohon dokumen untuk menghasilkan anodeset yang dapat diproses lebih lanjut.
Sintaksis
xmlParseXML(XPath,document)
Parameter
XPath - Ini adalah jalur node di file xml.
document - Ini dokumen XML
Nilai Kembali
Mengevaluasi ekspresi XPath dan mengembalikan hasil sebagai kumpulan node yang dapat digunakan nanti.
Contoh
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)
Ketika kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
Keluaran
4
Outputnya menunjukkan jumlah node film dalam daftar xml kami
xmlEvalExpression
Metode di bawah ini digunakan untuk Mengevaluasi ekspresi XPath dan mengembalikan string sebagai hasilnya.
Sintaksis
xmlParseXML(XPath,Node)
Parameter
XPath - Ini adalah jalur node di file xml.
document - Elemen simpul spesifik.
Nilai Kembali
Sebuah string dikembalikan berdasarkan ekspresi XPath yang dikirimkan padanya.
Contoh
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
Ketika kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
Keluaran
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy
Regina adalah penerjemah Rexx lain yang tersedia untuk mengkompilasi dan menjalankan program Rexx. Situs resmi untuk Regina adalah - www.regina-rexx.sourceforge.net/
Beberapa keuntungan menggunakan Regina adalah sebagai berikut -
Regina dapat berjalan di platform apa pun baik itu Windows, Linux, atau Mac OS.
Regina bekerja sesuai dengan semua standar yang tersedia.
Regina memiliki pengikut komunitas yang besar dan karenanya ada banyak forum dan materi pembelajaran yang tersedia untuk Regina.
Regina memiliki banyak alat yang tersedia untuk menulis dan menguji program Rexx.
Di Regina, Anda dapat menjalankan perintah yang tidak dimungkinkan di Rexx Interpreter default. Misalnya, jika Anda menyertakan pengaturan konfigurasi tertentu, Anda sebenarnya dapat menjalankan perintah tingkat sistem dasar, yang tidak mungkin dilakukan di Rexx.
Saat Anda menginstal Rexx melalui penginstalan yang didokumentasikan di Chapter 2 – Rexx Environment, penerjemah Regina dipasang bersamanya.
Sekarang mari kita lihat beberapa metode umum yang tersedia saat menggunakan Regina. Fungsi ini adalah fungsi tambahan yang tidak tersedia melalui penggunaan normal.
Untuk menggunakan fungsi tambahan, Anda perlu menyertakan baris kode berikut. Ini memungkinkan penggunaan fungsi diperpanjang Regina.
options arexx_bifs
Kedua saat menjalankan semua program Rexx, gunakan perintah berikut.
regina main.rexx
Where,
regina - Ini adalah penerjemah yang digunakan untuk program Rexx.
main.rexx - Program Rexx Anda.
Kami sekarang akan membahas secara rinci berbagai functions of Regina Rexx Interpreter.
Sr.No. | Fungsi Penerjemah Regina Rexx |
---|---|
1 | b2c Metode ini digunakan untuk mengubah nilai biner menjadi nilai string. |
2 | bitcomp Metode ini digunakan untuk membandingkan 2 string bit, sedikit demi sedikit. |
3 | bittst Metode ini digunakan untuk menunjukkan keadaan bit yang ditentukan dalam string bit. |
4 | Temukan Metode ini digunakan untuk mencari kemunculan pertama sebuah string dalam string lain. |
5 | getenv Metode ini mengembalikan nilai variabel lingkungan pada sistem. |
6 | getpid Metode ini digunakan untuk mendapatkan nilai id proses yang sedang berjalan. |
7 | hash Metode ini mengembalikan atribut hash dari sebuah string sebagai angka desimal. Ini juga memperbarui nilai hash internal string. |
8 | membenarkan Cara ini digunakan untuk menjumlahkan justify atau memangkas nilai suatu string berdasarkan nilai panjangnya. |
9 | putenv Metode ini digunakan untuk menetapkan nilai variabel lingkungan. |
10 | direktori Metode ini mendapatkan nilai direktori saat ini di sistem. |
11 | chdir Metode ini mengubah nilai direktori kerja saat ini pada sistem. |
12 | randu Metode ini mengembalikan angka acak semu antara 0 dan 1. |
Salah satu fitur Rexx yang paling kuat adalah kemampuannya untuk mengurai nilai teks. Anda mungkin tidak akan melihat ini dalam bahasa pemrograman lain.
Format umum pernyataan parse adalah sebagai berikut -
Sintaksis
PARSE {UPPER|LOWER|CASELESS} source {template}
Where,
UPPER - Sumber diubah menjadi huruf besar sebelum parsing.
LOWER - Sumber diubah menjadi huruf kecil sebelum parsing.
CASELESS - Jika parameter ini dilewatkan, casing diabaikan.
source- Ini adalah sumber yang perlu diurai. Ada banyak opsi yang tersedia untuk ini dan dapat berupa salah satu dari yang berikut -
ARG - Argumen untuk program atau prosedur dapat digunakan sebagai sumber.
LINEIN - Input baris berikutnya dapat digunakan sebagai sumber.
SOURCE - Sumber informasi program dapat digunakan sebagai sumber.
VAR name - Nilai nama variabel dapat digunakan sebagai sumber.
template- Parameter ini menentukan cara mengurai sumber. Ada banyak pilihan yang tersedia untuk ini. Beberapa di antaranya disebutkan di bawah ini.
variable name - Ini adalah nilai yang diberikan ke variabel.
literal string - String literal yang dapat digunakan sebagai pola untuk memisahkan string.
#- Posisi karakter absolut dalam sumber itu sendiri. Jadi jika Anda menentukan nilai 5, karakter ke- 5 akan digunakan.
+#- Posisi karakter relatif dalam sumber itu sendiri. Jadi jika Anda menentukan nilai 5, karakter ke 5 akan digunakan secara relatif.
Mari kita lihat contoh sederhana bagaimana penguraian dapat dilakukan di Rexx.
Contoh
/* Main program */
parse value 'This is a Tutorial' with word1 word2 word3 word4
say "'"word1"'"
say "'"word2"'"
say "'"word3"'"
say "'"word4"'"
Program di atas mengurai kata-kata dalam frasa. Jika nilai terdiri dari kata-kata yang hanya dipisahkan oleh satu spasi, dan tidak ada spasi di depan atau di belakangnya, nilai tersebut akan mudah diurai menjadi sejumlah kata yang diketahui sebagai berikut.
Fungsi parse digunakan di Rexx untuk mengambil nilai string dan kemudian memecahnya menjadi kata-kata. Dalam contoh di atas, kata-kata tersebut kemudian dipisahkan dan kemudian disimpan dalam variabel kata.
Output dari program di atas adalah sebagai berikut -
'This'
'is'
'a'
'Tutorial'
Contoh lain dari penguraian ditampilkan dalam program berikut. Kali ini kami menggunakan klausa while untuk melakukan parsing.
Contoh
/* Main program */
phrase = 'This is a Tutorial'
do while phrase <> ''
parse var phrase word phrase
say "'"word"'"
end
Program di atas akan memberikan keluaran sebagai berikut -
'This'
'is'
'a'
'Tutorial'
Parsing Posisi
Rexx juga memungkinkan seseorang untuk bekerja dengan penguraian posisi. Mari kita lihat contoh bagaimana kita bisa mencapai penguraian posisi dengan pernyataan parse.
Contoh
/* 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
Dari contoh di atas, Anda dapat mencatat bahwa bersama dengan nama variabel, kami juga menentukan di mana string harus diakhiri. Jadi untuk name1, kita harus diakhiri dengan karakter ke-11 dan kemudian mulai parsing name2.
Output dari program di atas adalah sebagai berikut -
Doe
John M.
03/03/78
Mumbai
India
Anda juga bisa menggunakan relative positional parsing pada kasus ini.
Contoh
/* 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
Output dari program di atas akan seperti gambar di bawah ini.
Doe
John M.
03/03/78
Mumbai
India
Di Rexx, instruksi sinyal digunakan secara umum untuk dua tujuan, yaitu -
Salah satunya adalah mentransfer kontrol ke bagian lain dari program. Ini biasanya seperti label masuk yang digunakan dalam bahasa pemrograman lain.
Yang lainnya adalah pergi ke label perangkap tertentu.
Jika perintah sinyal digunakan dalam salah satu dari perintah instruksi berikut, struktur kontrol yang tertunda akan secara otomatis dinonaktifkan.
jika ... lalu ... lain ...
lakukan ... akhiri
do i = 1 to n ... end [dan serupa do loop]
pilih kapan ... lalu ... ... dll. jika tidak ... berakhir
Sintaks umum dari pernyataan sinyal ditampilkan sebagai berikut -
Sintaksis
signal labelName
signal [ VALUE ] labelExpression
Mari kita lihat contoh bagaimana menggunakan pernyataan sinyal.
Contoh
/* 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'
Output dari program di atas akan seperti gambar di bawah ini.
Keluaran
This is an incorrect number.
Jika Anda mengubah nilai variabel n menjadi bilangan bulat seperti yang ditunjukkan pada program berikut -
/* 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 '
Anda akan mendapatkan output berikut -
This is a whole number
Seseorang juga dapat mentransfer ke nilai label seperti yang ditunjukkan pada program berikut -
/* 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
Output dari program di atas akan ditampilkan sebagai berikut -
This is the number 1
Aktivasi / Deaktivasi Trap Label Transfer
Seperti yang telah kami sebutkan sebelumnya, instruksi sinyal juga dapat digunakan untuk mentransfer kontrol ke label perangkap.
Sintaks umum dari transfer label Trap diberikan sebagai berikut -
Sintaksis
signal ON conditionName [ NAME Label ]
signal OFF conditionName
Dimana,
conditionName - Ini adalah kondisi dimana sinyal harus dinyalakan atau dimatikan.
Label - Label opsional tempat program harus dialihkan.
Mari kita lihat contoh penggunaan transfer label jebakan.
Contoh
/* 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'
Dalam contoh di atas, pertama-tama kita mengaktifkan sinyal kesalahan. Kami kemudian menambahkan pernyataan yang akan menghasilkan kesalahan. Kami kemudian memiliki label perangkap kesalahan untuk menampilkan pesan kesalahan khusus.
Output dari program di atas adalah sebagai berikut -
An error has occurred.
Debugging adalah fitur penting dalam bahasa pemrograman apa pun. Ini membantu pengembang untuk mendiagnosis kesalahan, menemukan akar penyebabnya, dan kemudian mengatasinya. Di Rexx, utilitas pelacakan digunakan untuk debugging. Instruksi jejak dapat diimplementasikan dalam 2 cara, satu adalah mode batch dan yang lainnya adalah mode interaktif. Mari kita lihat bagaimana menerapkan kedua opsi tersebut.
Lacak dalam Mode Batch
Perintah jejak digunakan untuk memberikan tingkat detail dari setiap perintah Rexx yang dijalankan.
Sintaks umum pernyataan jejak ditampilkan sebagai berikut -
Sintaksis
trace [setting]
Di mana pengaturan dapat berupa salah satu dari opsi berikut -
A - Melacak semua perintah.
C - Hanya melacak perintah host yang dikirim ke sistem operasi.
E - Hanya melacak perintah host yang dikirim ke sistem operasi yang mengakibatkan kesalahan.
F - Hanya melacak perintah host yang dikirim ke sistem operasi yang mengakibatkan kegagalan.
I - Ini menyediakan penelusuran tingkat menengah dari perintah Rexx.
L - Opsi ini jika Anda ingin memberi label pada pelacakan saat itu terjadi.
N - Ini adalah opsi default di mana tidak ada pelacakan yang terjadi.
Mari kita lihat contoh perintah jejak.
Contoh
/* 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 '
Output dari program di atas adalah sebagai berikut -
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
Dari keluaran, Anda dapat melihat bahwa jejak tambahan telah ditambahkan ke keluaran program. Hal-hal berikut dapat diperhatikan tentang output -
Nomor baris bersama dengan pernyataan yang dieksekusi ditambahkan ke keluaran jejak.
Setiap baris yang dieksekusi ditampilkan dalam keluaran jejak.
Fungsi Jejak
Trace juga dapat diaktifkan dengan bantuan fungsi trace. Sintaks umum dan contoh ditunjukkan di bawah ini.
Sintaksis
trace()
Fungsi di atas mengembalikan tingkat jejak saat ini.
Parameter
Tidak ada
Nilai Kembali
Fungsi di atas memberikan tingkat jejak saat ini.
Contoh
/* 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 '
Output dari program di atas adalah sebagai berikut.
N
This is an incorrect number
Baris pertama N menunjukkan bahwa jejak disetel ke Normal.
Menetapkan Nilai Jejak
Tingkat jejak dapat diatur dengan fungsi jejak. Sintaks umum dan contoh ditunjukkan di bawah ini.
Sintaksis
trace(travel_level)
Parameter
trace_level - Ini mirip dengan opsi yang tersedia untuk menyetel tingkat jejak.
Nilai Kembali
Fungsi di atas memberikan tingkat jejak saat ini.
Contoh
/* 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 '
Output dari program di atas adalah sebagai berikut -
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'
Pelacakan Interaktif
Tracing interaktif dimana, tracing dilakukan saat program berjalan. Sama seperti di IDE seperti Visual Studio untuk .Net, di mana Anda dapat menambahkan breakpoint dan melihat bagaimana setiap pernyataan dijalankan, demikian pula di sini Anda juga dapat melihat program saat setiap baris kode berjalan.
Sintaks umumnya adalah sebagai berikut -
Sintaksis
trace ?options
Di mana, opsinya sama untuk perintah jejak seperti yang ditunjukkan di bawah ini.
A - Melacak semua perintah
C - Hanya melacak perintah host yang dikirim ke sistem operasi.
E - Hanya melacak perintah host yang dikirim ke sistem operasi yang mengakibatkan kesalahan.
F - Hanya melacak perintah host yang dikirim ke sistem operasi yang mengakibatkan kegagalan.
I - Ini menyediakan penelusuran tingkat menengah dari perintah Rexx.
L - Opsi ini jika Anda ingin memberi label pada pelacakan saat itu terjadi.
N - Ini adalah opsi default di mana tidak ada pelacakan yang terjadi.
Mari kita lihat contoh penerapan pelacakan aktif.
Contoh
/* 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'
Output dari program di atas akan seperti yang ditunjukkan pada program berikut. Jejak akan berhenti di setiap baris kode; lalu Anda perlu menekan tombol Enter untuk berpindah ke baris kode berikutnya.
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 memiliki kemampuan untuk juga mengerjakan penanganan Error seperti pada bahasa pemrograman lainnya.
Berikut ini adalah beberapa dari berbagai kondisi kesalahan yang terlihat di Rexx.
ERROR - Ini bahkan dimunculkan setiap kali perintah yang dikirim ke sistem operasi menghasilkan kesalahan.
FAILURE - Ini bahkan dimunculkan setiap kali perintah yang dikirim ke sistem operasi menghasilkan kegagalan.
HALT- Ini biasanya dinaikkan setiap kali suatu operasi bergantung pada operasi lain. Contohnya adalah jika operasi I / O dihentikan karena alasan apa pun.
NOVALUE - Acara ini dimunculkan ketika nilai belum ditetapkan ke variabel.
NOTREADY - Ini dimunculkan oleh perangkat I / O yang tidak siap untuk menerima operasi apa pun.
SYNTAX - Acara ini dimunculkan jika ada kesalahan sintaks dalam kode.
LOSTDIGITS - Peristiwa ini dimunculkan ketika operasi aritmatika mengakibatkan hilangnya digit selama operasi.
Kesalahan Perangkap
Kesalahan terjebak dengan bantuan perintah sinyal. Mari kita lihat sintaks dan contohnya.
Sintaksis
signal on [Errorcondition]
Dimana,
Errorcondition - Ini adalah kondisi kesalahan yang diberikan di atas.
Contoh
Mari kita lihat contohnya.
/* 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'
Dalam contoh di atas, pertama-tama kita mengaktifkan sinyal kesalahan. Kami kemudian menambahkan pernyataan yang akan menghasilkan kesalahan. Kami kemudian memiliki label perangkap kesalahan untuk menampilkan pesan kesalahan khusus.
Output dari program di atas akan seperti gambar di bawah ini.
An error has occurred.
Contoh kode kesalahan ditunjukkan pada program berikut.
/* 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
Output dari program di atas akan seperti gambar di bawah ini.
An error has occured
40
6
Saat Anda menginstal ooRexx sesuai dengan bab lingkungan, Anda juga akan memiliki kemampuan untuk bekerja dengan kelas dan objek. Harap dicatat bahwa semua kode berikut harus dijalankan di interpreter ooRexx. Penerjemah Rexx normal tidak akan dapat menjalankan kode berorientasi objek ini.
Deklarasi Kelas dan Metode
Sebuah kelas didefinisikan dengan deklarasi sintaks berikut.
Sintaksis
::class classname
dimana classname adalah nama yang diberikan untuk kelas.
Metode di kelas ditentukan dengan deklarasi Sintaks berikut.
Sintaksis
::method methodname
Dimana methodname adalah nama yang diberikan untuk metode tersebut.
Properti di kelas didefinisikan dengan deklarasi Sintaks di bawah ini.
Sintaksis
::attribute propertyname
Dimana propertyname adalah nama yang diberikan untuk properti.
Contoh
Berikut ini adalah contoh kelas di Rexx.
::class student
::attribute StudentID
::attribute StudentName
Poin-poin berikut perlu diperhatikan tentang program di atas.
- Nama kelasnya adalah siswa.
- Kelas memiliki 2 properti, StudentID dan StudentName.
Metode Getter dan Setter
Metode Getter dan Setter digunakan untuk secara otomatis mengatur dan mendapatkan nilai properti. Di Rexx, saat Anda mendeklarasikan properti dengan kata kunci atribut, metode pengambil dan penyetel sudah siap.
Contoh
::class student
::attribute StudentID
::attribute StudentName
Dalam contoh di atas, akan ada metode Getter dan Setter untuk StudentId dan StudentName.
Contoh bagaimana mereka dapat digunakan ditunjukkan pada program berikut.
/* 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
Output dari program di atas akan seperti gambar di bawah ini.
1
Joe
Metode Instance
Objek dapat dibuat dari kelas melalui ~new operator. Metode dari kelas dapat dipanggil dengan cara berikut.
Object~methodname
Dimana methodname adalah metode yang perlu dipanggil dari kelas.
Contoh
Contoh berikut menunjukkan bagaimana sebuah objek dapat dibuat dari kelas dan masing-masing metode dipanggil.
/* 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))
Output dari program di atas akan seperti gambar di bawah ini.
60
Membuat Banyak Objek
Seseorang juga dapat membuat beberapa objek kelas. Contoh berikut akan menunjukkan bagaimana ini bisa dicapai.
Di sini kita membuat 3 objek (st, st1 dan st2) dan memanggil anggota instance mereka dan metode instance yang sesuai.
Mari kita lihat contoh bagaimana beberapa objek dapat dibuat.
Contoh
/* 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))
Output dari program di atas akan seperti gambar di bawah ini.
60
70
60
Warisan
Pewarisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari kelas lain. Dengan menggunakan pewarisan, informasi dibuat dapat dikelola dalam urutan hierarki.
Kelas yang mewarisi properti lain dikenal sebagai subclass (kelas turunan, kelas anak) dan kelas yang propertinya diwarisi disebut superclass (kelas dasar, kelas induk).
Mari kita lihat contoh warisan di Rexx. Dalam contoh berikut kami membuat kelas bernamaPerson. Dari sana kami menggunakan kata kunci subclass untuk membuatStudent class sebagai sub-class of Person.
Contoh
/* 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))
Output dari program di atas akan seperti gambar di bawah ini.
60
Portabilitas merupakan aspek penting dalam bahasa pemrograman apa pun. Seperti yang diketahui, Rexx tersedia di berbagai sistem operasi seperti Windows dan Linux. Jadi perlu dipastikan bahwa ketika seseorang mengembangkan sebuah program pada platform Windows, ia memiliki tindakan pencegahan yang diperlukan jika program yang sama berjalan pada platform Linux.
Rexx memiliki kemampuan untuk menjalankan perintah tingkat sistem. Ada perintah yang dapat digunakan untuk memahami apa sistem operasi yang menjalankannya. Berdasarkan keluarannya kemudian dapat mengambil tindakan yang sesuai untuk melihat perintah apa saja yang dapat dijalankan pada sistem operasi ini.
Contoh
Contoh berikut menunjukkan bagaimana fungsi parse digunakan untuk mendapatkan detail sistem operasi yang menjalankan program.
/* 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
Outputnya akan bervariasi bergantung pada sistem operasi. Output sampel diberikan di bawah ini.
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 menyediakan sejumlah fungsi tambahan yang memberikan berbagai macam fungsionalitas, sebagian besar memungkinkan Anda untuk berinteraksi dengan Sistem Operasi. Mari kita lihat beberapa di antaranya secara detail seperti yang dijelaskan di bawah ini.
Sr.No. | Fungsi Diperpanjang |
---|---|
1 | b2c Fungsi ini mengubah nilai biner menjadi nilai string. |
2 | bitclr Fungsi ini digunakan untuk mengubah bit yang ditentukan dalam string biner menjadi 0. |
3 | bitcomp Fungsi ini digunakan untuk membandingkan 2 string biner yang dimulai dengan bit 0. |
4 | buftype Fungsi ini digunakan untuk menampilkan konten tumpukan yang biasanya digunakan dalam tujuan debugging. |
5 | ruang bawah tanah Fungsi ini digunakan untuk mengenkripsi string. |
6 | garpu Fungsi ini digunakan untuk menelurkan proses anak baru di sistem. |
7 | getpid Fungsi ini mendapatkan id dari proses yang sedang berjalan. |
8 | hash Fungsi ini mengembalikan nilai hash dari sebuah string. |
Rexx menyediakan sejumlah instruksi yang memberikan berbagai macam fungsionalitas, sebagian besar memungkinkan Anda untuk berinteraksi dengan Sistem Operasi. Mari kita lihat beberapa di antaranya secara detail.
Sr.No. | Instruksi Rexx |
---|---|
1 | alamat Fungsi ini digunakan untuk menampilkan lingkungan perintah saat ini. |
2 | penurunan Fungsi ini digunakan untuk membatalkan penetapan variabel. |
3 | menafsirkan Menafsirkan atau mengeksekusi instruksi yang ditentukan. |
4 | tidak Fungsi ini berarti tidak melakukan operasi. Perintah ini biasanya digunakan diif statements. |
5 | Tarik Ini digunakan untuk menarik masukan dari tumpukan atau dari aliran default. |
6 | Dorong Ini digunakan untuk mendorong nilai ke tumpukan Rexx. |
Bahasa Rexx memiliki banyak implementasi yang bervariasi seperti yang telah kita lihat di bab-bab sebelumnya. Setiap implementasi memiliki fungsinya sendiri. Mari kita lihat berbagai implementasi yang tersedia untuk Rexx.
OoRexx
Ini adalah versi berorientasi objek dari Rexx. Secara default, implementasi dasar Rexx semuanya berdasarkan prosedur. Tetapi dengan ooRexx Anda dapat menawarkan fleksibilitas yang lebih besar dengan memiliki pendekatan berorientasi Objek ke Rexx. Dengan menggunakan ooRexx Anda dapat menggunakan kembali dengan lebih baik melalui pembuatan kelas dan objek yang dapat digunakan kembali.
Program berikut adalah contoh program Rexx sederhana yang dapat dijalankan dengan pelaksana ooRexx.
Contoh
/* Main program */
say ‘hello’
Untuk menjalankan program ini, jalankan perintah berikut.
rexx main.rexx
Saat Anda menjalankan perintah di atas, Anda akan mendapatkan output berikut.
hello
Netrexx
Ini untuk semua pengembang berbasis Java karena menyediakan alternatif berbasis Java untuk bahasa Rexx. Jadi semua objek didasarkan pada Model Objek Java. Keuntungan dari kerangka kerja ini adalah karena Java adalah bahasa yang sangat populer, menjadi lebih mudah bagi pengembang untuk menggunakan kerangka kerja ini. Jadi dalam implementasi ini, kode Rexx diubah menjadi program Java yang kemudian dapat dijalankan di mesin virtual Java apa pun.
Kode berikut adalah contoh program NetRexx.
Buat file bernama main.nrx dan tempatkan kode berikut di file.
/* Main program */
say ‘hello’
Untuk mengkompilasi kode, jalankan perintah berikut -
NetRexxC main.nrx
Anda kemudian akan mendapatkan output berikut. NetRexxC adalah kompiler yang mengubah program Rexx menjadi java yang setara.
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
Anda sekarang dapat menjalankan program java Anda menggunakan perintah java berikut.
java main
Saat Anda menjalankan perintah di atas, Anda akan mendapatkan output berikut.
Hello
Brexx
Ini adalah implementasi ringan dari Rexx. Ini adalah paket yang lebih ringan daripada pelaksana Rexx standar. Tetapi masih memiliki fungsionalitas penuh dari Rexx.
Kode berikut adalah contoh program BRexx.
/* Main program */
say ‘hello’
Untuk menjalankan program, jalankan perintah berikut.
rexx32 main.rexx
Saat Anda menjalankan perintah di atas, Anda akan mendapatkan output berikut.
hello
NetRexx adalah implementasi java dari Rexx. Di NetRexx, pelaksana digunakan untuk mengubah program Rexx menjadi program java yang kemudian dapat dijalankan di mesin virtual Java apa pun.
Menyiapkan NetRexx
Langkah pertama di NetRexx adalah menyiapkannya di komputer lokal. Untuk melakukan ini, seseorang perlu melakukan langkah-langkah berikut -
Step 1 - Buka situs unduhan NetRexx - http://www.netrexx.org/downloads.nsp
Unduh file NetRexx.3.04.GA.
Step 2- Pastikan java telah terinstal dan berjalan di sistem Anda. Anda dapat memverifikasi bahwa java berjalan dengan menggunakan perintah java – version.
Contoh output ditampilkan di bawah ini.
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- Buka zip konten file zip Netrexx. Salin file dari folder NetRexx3.04GA \ lib ke folder instalasi java / lib / etc.
Step 4 - Tambahkan jalur NetRexx-3.04GA \ bin ke variabel jalur pada sistem.
Menjalankan Program NetRexx Pertama
Buat file bernama main.nrx dan tempatkan kode berikut di file.
/* Main program */
say ‘hello’
Untuk mengkompilasi kode, jalankan perintah berikut.
NetRexxC main.nrx
Anda kemudian akan mendapatkan output berikut. NetRexxC adalah kompilator yang mengubah program rexx menjadi program java yang setara.
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
Anda sekarang dapat menjalankan program java Anda menggunakan perintah java berikut.
java main
Saat Anda menjalankan perintah di atas, Anda akan mendapatkan output berikut.
Hello
Sekarang mari kita bahas beberapa special aspects of the Netrexx library.
String Terindeks
Di NetRexx, string bisa menjadi indeks untuk array. Contohnya ditunjukkan di bawah ini.
Contoh
/* Main program */
value = 'unknown'
value['a'] = 'b'
c = 'a'
say value[c]
Saat kita menjalankan program di atas, kita akan mendapatkan hasil sebagai berikut.
Keluaran
b
Beberapa Indeks
Di NetRexx, Anda dapat memiliki beberapa indeks untuk array. Contohnya ditunjukkan di bawah ini.
Contoh
/* Main program */
value = 'null'
value['a', 'b'] = 1
say value['a', 'b']
Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.
Keluaran
1
Sr.No. | Perintah & Deskripsi |
---|---|
1 | tanya Command Perintah ini digunakan untuk membaca baris dari aliran input default. |
2 | digit Perintah Perintah ini digunakan untuk menampilkan nilai saat ini dari nilai digit. |
3 | bentuk Perintah Perintah ini digunakan untuk menampilkan nilai saat ini dari nilai formulir. |
4 | panjang Perintah Perintah ini digunakan untuk menampilkan panjang nilai string. |
5 | versi Perintah Perintah ini digunakan untuk mengembalikan versi NetRexx yang sedang digunakan. |
6 | melacak Command Perintah ini digunakan untuk mengembalikan setelan pelacakan saat ini yang digunakan oleh NetRexx. |
BRexx adalah implementasi Rexx yang lebih ringan. Ini masih memiliki banyak fungsi untuk ditawarkan sebagai bagian dari implementasi Rexx.
Menyiapkan BRexx
Langkah pertama di BRexx adalah menyiapkannya di komputer lokal. Untuk melakukan ini, seseorang perlu melakukan langkah-langkah berikut -
Step 1 - Buka situs pengunduhan BRexx - https://ftp.gwdg.de/pub/languages/rexx/brexx/html/rx.html
Buka bagian unduhan dan unduh produk.
Step 2 - Buka zip konten file zip Brexx.
Step 3 - Tambahkan jalur BRexx \ bin ke variabel jalur pada sistem.
Step 4 - Buat variabel baru bernama RXLIB dan arahkan ke folder lib di folder Brexx.
Menjalankan Program BRexx Pertama
Buat file bernama main.rexx dan tempatkan kode berikut di file.
/* Main program */
say ‘hello’
Untuk menjalankan program, jalankan perintah berikut.
rexx32 main.rexx
Saat Anda menjalankan perintah di atas, Anda akan mendapatkan output berikut.
hello
Sekarang mari kita bahas beberapa fungsi yang paling umum digunakan yang tersedia di perpustakaan BRexx.
Sr.No. | Fungsi tersedia di Perpustakaan BRexx |
---|---|
1 | Acos Command Perintah ini digunakan untuk mendapatkan konversi arc-cosinus dari sebuah bilangan. |
2 | cos Command Perintah ini digunakan untuk mendapatkan konversi kosinus dari sebuah bilangan. |
3 | Perintah dosa Perintah ini digunakan untuk mendapatkan konversi sinus dari sebuah bilangan. |
4 | asin Command Perintah ini digunakan untuk mendapatkan konversi arc-sinus dari sebuah bilangan. |
5 | Perintah tan Perintah ini digunakan untuk mendapatkan konversi tangen sebuah bilangan. |
6 | atan Command Perintah ini digunakan untuk mendapatkan konversi busur-tangen sebuah bilangan. |
7 | Perintah mkdir Perintah ini digunakan untuk membuat direktori di direktori kerja saat ini. |
8 | Perintah rmdir Perintah ini digunakan untuk menghapus direktori di direktori kerja saat ini. |
9 | dir Perintah Perintah ini digunakan untuk mengembalikan seluruh daftar direktori. |
Rexx memiliki kemampuan untuk bekerja dengan berbagai database yang tercantum di bawah ini.
- HSQLDB
- Oracle
- SQL Server
- MySQL
- MongoDB
Semua informasi untuk database Rexx dapat ditemukan setelah Anda mengklik tautan berikut - https://rexxsql.sourceforge.net/
Dalam contoh kami, kami akan menggunakan MySQL DB sebagai sampel. Jadi langkah pertama adalah memastikan untuk mendownload driver yang diperlukan dari situs Rexx SQL sehingga program Rexx dapat bekerja dengan SQL yang sesuai. Jadi ikuti langkah-langkah selanjutnya untuk memastikan bahwa program Rexx dapat bekerja dengan database MySQL.
Step 1 - Buka halaman unduh driver berikut dari situs Rexx - https://sourceforge.net/projects/rexxsql/files/rexxsql/2.6/
Step 2 - Unduh driver MYSQL - rxsql26B3_my_w32_ooRexx
Step 3 - Buka zip konten ke mesin lokal.
Step 4 - Tambahkan jalur folder yang telah dibuka zipnya ke variabel jalur pada mesin Anda.
Untuk semua contoh berikutnya, pastikan petunjuk berikut ada -
Anda telah membuat database TESTDB.
Anda telah membuat tabel EMPLOYEE di TESTDB.
Tabel ini memiliki bidang FIRST_NAME, LAST_NAME, AGE, SEX dan INCOME.
ID pengguna "testuser" dan kata sandi "test123" disetel untuk mengakses TESTDB.
Pastikan Anda telah mendownload file jar mysql dan menambahkan file tersebut ke classpath Anda.
Anda telah melalui tutorial MySQL
Koneksi Database
Untuk membuat koneksi database, pertama-tama Anda perlu Rexxsql DLL dan kemudian menggunakan fungsi SQLConnect untuk membuat koneksi ke database. Sintaks dan contoh bagaimana hal ini dapat dicapai diberikan di bawah ini.
Sintaksis
SQLConnect(cname,username,password,dbname)
Parameter
cname - Ini adalah nama yang diberikan untuk koneksi.
username - Nama pengguna untuk terhubung ke database.
password - Kata sandi untuk terhubung ke database.
dbname - Skema database yang akan disambungkan.
Nilai Kembali
Nilai yang sama dengan 0 berarti koneksi database berhasil.
Contoh
/* Main program */
Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs'
Call SQLLoadFuncs
say SQLConnect(c1,' testuser ',' test123','testdb')
Output dari program di atas akan seperti gambar di bawah ini.
0
Membuat Tabel Database
Langkah selanjutnya setelah menghubungkan ke database adalah membuat tabel di database kita. Contoh berikut menunjukkan cara membuat tabel di database menggunakan Rexx. Semua perintah di Rexx SQL dijalankan dengan menggunakan fungsi SQLCommand.
Sintaksis
SQLConnect(sname,statement)
Parameter
sname - Ini adalah nama yang diberikan pada pernyataan untuk dieksekusi.
statement - Ini adalah pernyataan yang perlu dijalankan terhadap database.
Nilai Kembali
Nilai yang sama dengan 0 berarti perintah berhasil.
Contoh
/* 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'
Output dari program di atas akan seperti gambar di bawah ini.
Connect Succedded
Changed database to testdb
Employee table created
Operasi pada Tabel Database
Jenis operasi berikut ini paling sering dilakukan pada tabel database.
Sr.No. | Operasi & Deskripsi |
---|---|
1 | Sisipkan Operasi Ini diperlukan ketika Anda ingin membuat rekaman Anda ke dalam tabel database. |
2 | Baca Operasi Operasi BACA pada database apa pun berarti mengambil beberapa informasi berguna dari database. |
3 | Perbarui Operasi Operasi UPDATE pada database apa pun berarti memperbarui satu atau beberapa rekaman, yang sudah tersedia dalam database. |
4 | Hapus Operasi Operasi DELETE diperlukan saat Anda ingin menghapus beberapa rekaman dari database Anda. |
5 | Menutup Koneksi Perintah berikut dapat digunakan untuk menutup koneksi ke database. |
Melakukan Transaksi
Transaksi adalah mekanisme yang memastikan konsistensi data. Transaksi memiliki empat properti berikut -
Atomicity - Entah transaksi selesai atau tidak ada yang terjadi sama sekali.
Consistency - Sebuah transaksi harus dimulai dalam keadaan yang konsisten dan membiarkan sistem dalam keadaan yang konsisten.
Isolation - Hasil antara transaksi tidak terlihat di luar transaksi saat ini.
Durability - Setelah transaksi dilakukan, efeknya tetap ada, bahkan setelah kegagalan sistem.
Berikut adalah contoh sederhana tentang cara mengimplementasikan transaksi.
Contoh
/* 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
Output dari program di atas akan seperti gambar di bawah ini.
Connect Succedded
Changed database to testdb
COMMITTED
Komit Operasi
Operasi komit adalah yang memberi tahu database untuk melanjutkan operasi dan menyelesaikan semua perubahan ke database. Dalam contoh kami di atas, ini dicapai dengan perintah berikut.
Sqlcommit()
Operasi Rollback
Jika Anda tidak puas dengan satu atau beberapa perubahan dan Anda ingin mengembalikan perubahan tersebut sepenuhnya, gunakan metode rollback. Dalam contoh kami di atas, ini dicapai dengan perintah berikut.
SqlRollback()
Perangkat genggam telah berkembang pesat dan Rexx memiliki banyak cara untuk menjalankannya di perangkat ini. Rexx memiliki dukungan untuk Pocket PC, perangkat Palm, PDA dan perangkat telepon pintar lainnya. Keuntungan dari Rexx untuk bekerja pada platform ini adalah bahwa Rexx benar-benar merupakan sistem pemrograman ringan yang hanya berjalan dalam rentang beberapa kilobyte. Oleh karena itu, menjalankan program Rexx di perangkat ini menjadi lebih mudah.
Rexx pada perangkat genggam dapat berjalan dalam mode berikut -
Mode pertama adalah node asli yang dijalankan langsung di sistem operasi itu sendiri. Keuntungan menjalankan dalam mode ini adalah lebih cepat karena dijalankan langsung dari sistem operasi.
Mode selanjutnya ada di atas DOS atau program emulator di atas perangkat genggam. Keuntungan dari mode ini adalah dapat dijalankan pada semua jenis sistem operasi selama emulator berjalan pada sistem operasi tersebut.
Rexx Interpreters untuk berbagai kategori perangkat genggam ditunjukkan di bawah ini.
- Windows CE - Brexx
- Palm OS - Rexx untuk Palm OS
- OS Symbian - Regina
Untuk emulator DOS, langkah-langkah berikut perlu dilakukan -
Step 1- Pertama adalah mengunduh PocketDOS yang merupakan emulator DOS populer. Ini dirancang untuk berjalan di banyak sistem operasi dan memiliki dukungan untuk layar VGA umum serta port serial dan paralel.
Step 2 - Langkah selanjutnya adalah mengunduh file BRexx untuk DOS 16-bit ke PC Windows.
Step 3 - Langkah terakhir adalah menggunakan ActiveSync untuk menyinkronkan program Rexx ke perangkat genggam.
Ada beberapa produk berbasis DOS komersial lainnya yang tersedia. XTM adalah produk yang termasuk dalam kategori ini. Fitur produk ini adalah sebagai berikut -
Dukungan untuk CPU 80186 dan set instruksi.
Ini semacam bekerja dari kode BIOS untuk kinerja yang lebih baik.
Ini dapat memberikan emulasi untuk co-processor Math, versi 8087 MPU
Ini menyediakan akses ke port serial.
Ini mendukung berbagai bahasa seperti Inggris, Prancis, dan Jerman.
Salah satu aspek kunci dari setiap bahasa pemrograman adalah kinerja aplikasi. Praktik khusus perlu dilakukan untuk memastikan bahwa kinerja aplikasi tidak terhambat. Mari kita lihat beberapa pertimbangan yang dijelaskan dalam langkah-langkah untuk pemahaman yang lebih baik -
Step 1- Cobalah untuk mengurangi jumlah instruksi - Dalam Rexx setiap instruksi membawa biaya tambahan. Jadi cobalah untuk mengurangi jumlah instruksi dalam program Anda. Contoh instruksi yang dapat didesain ulang ditunjukkan di bawah ini.
Alih-alih menggunakan beberapa pernyataan if else, seseorang dapat menggunakan pernyataan parse. Jadi seperti pada program berikut, alih-alih memiliki kondisi if untuk setiap nilai, dan mendapatkan nilai dari kata1, kata2, kata3 dan kata4, gunakan pernyataan parse.
/* Main program */
parse value 'This is a Tutorial' with word1 word2 word3 word4
say "'"word1"'"
say "'"word2"'"
say "'"word3"'"
say "'"word4"'"
Step 2- Cobalah untuk menggabungkan beberapa pernyataan menjadi satu pernyataan. Contohnya ditunjukkan di bawah ini.
Misalkan jika Anda memiliki kode berikut yang melakukan tugas untuk - a and b dan meneruskannya ke metode yang disebut proc.
do i = 1 to 100
a = 0
b = 1
call proc a,b
end
Anda dapat dengan mudah mengganti kode yang diberikan di atas dengan kode berikut menggunakan pernyataan parse.
do i = 1 for 100
parse value 0 1 with
a,
b,
call proc a,b
end
Step 3 - Coba ganti do..to loop dengan do..for loopsedapat mungkin. Ini biasanya direkomendasikan ketika variabel kontrol diiterasi melalui loop.
/* Main program */
do i = 1 to 10
say i
end
Program di atas harus diganti dengan program berikut.
/* Main program */
do i = 1 for 10
say i
end
Step 4- Jika memungkinkan, hapus kondisi for dari loop do seperti yang ditunjukkan pada program berikut. Jika variabel kontrol tidak diperlukan, maka masukkan saja nilai akhir di do loop seperti yang ditunjukkan di bawah ini.
/* Main program */
do 10
say hello
end
Step 5 - Dalam a select clause, apa pun yang Anda rasakan adalah kondisi terbaik yang akan dievaluasi harus didahulukan when clause. Jadi dalam contoh berikut, jika kita tahu bahwa 1 adalah opsi yang paling sering, kita masukkanwhen 1 clause sebagai klausa pertama dalam pernyataan pilih.
/* Main program */
select
when 1 then say'1'
when 2 then say'2'
otherwise say '3'
end
Setiap programmer ingin program mereka menjadi yang terbaik dalam hal kualitas dan efisiensi. Berikut ini adalah beberapa praktik pemrograman terbaik atau petunjuk ketika menulis program Rexx yang dapat membantu seseorang mencapai tujuan ini.
Petunjuk 1
Gunakan perintah alamat sebelum Anda mengeluarkan perintah apa pun ke sistem operasi atau prompt perintah. Ini akan membantu Anda mendapatkan ruang alamat sebelumnya di memori dan menyebabkan program Anda berjalan lebih efisien.
Contoh dari perintah alamat ditampilkan di bawah ini.
Contoh
/* Main program */
address system dir
Output dari perintah ini adalah sebagai berikut, tetapi dapat bervariasi dari sistem ke sistem.
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
Petunjuk 2
Pastikan semua perintah ke sistem operasi dalam huruf besar dan dalam tanda kutip jika memungkinkan.
Contoh yang sama ditunjukkan di bawah ini.
Contoh
/* Main program */
options arexx_bifs
say chdir('\REXXML100')
say directory()
Saat kita menjalankan program di atas, kita akan mendapatkan hasil sebagai berikut.
0
D:\rexxxml100
Petunjuk 3
Hindari membuat blok komentar besar seperti yang ditunjukkan pada program berikut.
Contoh
/******/
/* */
/* */
/* */
/******/
/* Main program */
address system dir
Petunjuk 4
Gunakan pernyataan Parse untuk menetapkan nilai default. Contoh yang sama ditunjukkan di bawah ini.
Contoh
parse value 0 1 with
a,
b
Petunjuk 5
Gunakan pernyataan "Left (var1,2)" jika memungkinkan, bukan pernyataan "substr (var1,1,2)".
Petunjuk 6
Gunakan pernyataan "Right (var1,2)" jika memungkinkan, bukan pernyataan "substr (var1, length (var1), 2)".
Untuk menggunakan antarmuka pengguna grafik yang tersedia di Rexx, seseorang perlu menggunakan 2 paket, yang satu disebut ActiveTcl dan yang lainnya adalah Rexxtkpaket. Bersama dengan 2 paket ini, seseorang dapat mendesain formulir normal yang dapat memiliki tombol dan kontrol lain pada formulir.
Pengaturan Lingkungan
Hal pertama yang harus dilakukan adalah pengaturan lingkungan. Mari kita lakukan langkah-langkah berikut untuk menerapkan lingkungan.
Step 1 - Unduh paket Activetcl dari situs web berikut - https://www.activestate.com/activetcl
Step 2- Langkah selanjutnya adalah memulai penginstalan ActiveTCl. Klik tombol Next di layar untuk melanjutkan.
Step 3 - Terima Perjanjian Lisensi dan klik tombol Berikutnya.
Step 4 - Pilih lokasi untuk instalasi dan klik tombol berikutnya.
Step 5 - Pilih lokasi untuk memasang demo dan klik tombol Berikutnya.
Step 6 - Klik tombol Berikutnya untuk melanjutkan penginstalan.
Step 7 - Klik tombol Selesai untuk menyelesaikan penginstalan.
Step 8 - Langkah selanjutnya adalah mengunduh perangkat lunak Rexxtk dari tautan berikut - https://sourceforge.net/projects/rexxtk/
Step 9- Klik dua kali file penginstal dari tautan di langkah sebelumnya untuk memulai penginstalan. Klik tombol selanjutnya untuk melanjutkan.
Step 10 - Di layar berikutnya, klik tombol Ya untuk menyetujui Perjanjian Lisensi.
Step 11 - Di layar berikutnya, pilih lokasi penginstalan dan klik tombol Berikutnya.
Step 12 - Pilih lokasi folder Program dan klik tombol berikutnya.
Setelah penginstalan selesai, sekarang kita dapat mulai dengan memprogram GUI di Rexx.
Program Dasar
Mari kita lihat bagaimana kita dapat merancang program dasar sederhana dengan Rexx dalam format antarmuka pengguna grafis.
Contoh
/* Main program */
call RxFuncAdd 'TkLoadFuncs','rexxtk','TkLoadFuncs'
call TkLoadFuncs
do forever
interpret 'Call' TkWait()
end
call TkDropFuncs
exit 0
Hal-hal berikut perlu diperhatikan tentang program di atas -
Pustaka Rexxtk dan semua fungsinya dimuat menggunakan perintah RxFuncAdd.
Perulangan do forever akan membuat jendela tetap terbuka dan akan menunggu input pengguna.
Setelah input pengguna terdeteksi, program akan keluar.
Ketika program di atas dijalankan, Anda akan mendapatkan output sebagai berikut.
Membuat Menu
Menu dibuat dengan bantuan fungsi TkMenu dan TkAdd. Sintaks dari fungsi-fungsi ini diberikan di bawah ini.
Sintaksis
TkMenu(widgetname,options,0)
Parameter
Widgetname - Nama untuk diberikan ke menu.
Opsinya dapat berupa salah satu dari yang berikut -
selectcolor - jika kotak centang atau tombol radio digunakan sebagai opsi menu, maka opsi ini menetapkan warna yang akan dipilih saat opsi menu apa pun dipilih.
tearoff - Opsi ini digunakan untuk menambahkan sub menu ke menu utama.
title - String yang perlu digunakan untuk memberi judul pada jendela.
Nilai Kembali
Sebuah pegangan ke menu dibuat.
Contoh
/* 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
Hal-hal berikut perlu diperhatikan tentang program di atas -
Bar menu dibuat menggunakan fungsi TkMenu. Parameter 'tearoff' berarti kita perlu membuat submenu yang akan dilampirkan ke menu utama.
Kami kemudian menambahkan 2 opsi menu yang disebut File dan Buka menggunakan fungsi TkAdd.
Ketika program di atas dijalankan, Anda akan mendapatkan output sebagai berikut.
Reginald adalah penerjemah Rexx lain yang dikembangkan oleh Jeff Glantt dan memiliki beberapa penyesuaian tentang bagaimana program Rexx dapat dijalankan. Di bagian ini, kita akan melihat bagaimana mendapatkan pengaturan Reginald dan menjalankan beberapa program Rexx di dalamnya.
Pengaturan Lingkungan
Langkah pertama adalah pengaturan lingkungan yaitu mengunduh file Reginald. Ini dapat dilakukan dari tautan situs web berikut -http://www.manmrk.net/tutorials/rexx/Reginald/win32/rxusrw32.htm
Setelah unduhan selesai dan Anda meluncurkan penginstal, layar berikutnya akan memungkinkan Anda memilih lokasi pemasangan.
Klik tombol Instal untuk melanjutkan.
Setelah selesai, sekarang kita dapat mulai menjalankan satu program sampel di interpreter Reginald. Buat program sederhana seperti yang ditunjukkan di bawah ini.
/* Main program */
say 'Hello'
Kemudian jalankan perintah berikut -
RxLaunch.exe main.rexx
Anda kemudian akan mendapatkan output berikut. Program ini sekarang akan berjalan di interpreter Reginald.
Fungsi Lain Tersedia
Terlepas dari perintah Rexx normal, Reginald memiliki beberapa perintah khusus yang dibuat khusus untuk sistem operasi Windows. DriveMap adalah salah satu perintah tersebut -
DriveMap
Fungsi ini memberikan informasi tentang drive.
Syntax -
Drivemap(,options)
Parameters -
Options - Ini adalah daftar kata kunci yang dapat digunakan untuk mendapatkan berbagai informasi pada drive komputer lokal.
Return Value
Nilai string yang memiliki informasi di drive.
Example -
/* Main program */
say 'Drives on system : ' DriveMap(,'FIXED')
Jika program di atas dijalankan, Anda akan mendapatkan output sebagai berikut. Output ini tergantung dari sistem ke sistem.
List of disk drives : C:\ D:\
Rexx memiliki fasilitas untuk bekerja dengan server web juga. Yang paling umum adalah web server apache. Untuk menggunakan Rexxw dengan server web Apache, Anda harus mengunduh modul Rexx dari tautan berikut -https://sourceforge.net/projects/modrexx/?source=typ_redirect
Setelah selesai, pastikan untuk menambahkan modul mod Rexx ke jalur kelas.
Baris berikut perlu ditambahkan dan dimodifikasi ke file konfigurasi Apache.
Baris berikut perlu ditambahkan ke akhir yang sesuai -
- httpd.conf daftar LoadModule.
- LoadModule rexx_module modules / mod_rexx.dll
Baris berikut harus ditambahkan di akhir http.conf mengajukan.
AddType application / x-httpd-rexx-script .rex .rexx
AddType application / x-httpd-rexx-rsp .rsp
Tambahkan ini untuk dukungan Halaman Server REXX
RexxRspCompiler “c: / Program Files / Apache Group / Apache2 / bin / rspcomp.rex”
Setelah perubahan di atas dilakukan, Anda perlu mematikan dan memulai ulang server web apache Anda.
Baris di atas juga memungkinkan Anda untuk memiliki halaman server berbasis Rexx seperti halaman server Java. Anda dapat menambahkan kode Rexx langsung ke halaman html.
Contohnya ditunjukkan di bawah ini -
<p>The current date and time is
<?rexx
/* Inserting the rexx statement */
say date() time()
?>
</p>
Ketika halaman server berbasis Rexx dijalankan, hal-hal berikut dilakukan -
Pertama, file sementara dibuat.
Kemudian kompiler Server Rexx mengkompilasi file tersebut menjadi program Rexx dan menempatkannya di file sementara.
Langkah selanjutnya adalah menjalankan program Rexx.
Akhirnya, file sementara dihapus.