**ARexx** merupakan perlaksanaan bahasa REXX bagi Amiga, ditulis pada 1987 oleh William S. Hawes, dengan beberapa ciri-ciri khusus bagi Amiga melebihi kemudahan REXX piwaian. Sebagaimana kebanyakan perlaksanaan REXX, ARexx adalah bahasa terjemahan – ‘’interpreted language’’. Aturcara yang ditulis bagi ARexx dikenali sebagai "skrip", atau "makro"; beberapa aturcara menawarkan keupayaan melaksanakan skrip ARexx dalam antaramuka utama mereka sebagai makro.

ARexx dengan mudah mampu berkomunikasi dengan aturcara pihak ketiga yang menggunakan perlaksanaan "port ARexx ". Sebarang applikasi Amiga mempu menetapkan satu set perintah komputar dan fungsi komputer bagi ARexx untuk menggunakannya, dengan itu menjadikan keupayaan aturcara ini tersedia bagi skrip yang ditulis menggunakan ARexx.

ARexx mampu mengawal perinah dan fungsi kepada beberapa applikasi dalam skrip yang sama, dengan itu menawarkan keupayaan untuk campur dan padan fungsi dari aturcara berlainan. Sebagai contoh, skrip ARexx mampu mengeluarkan data dari pangkalan data, memasukkan data ke dalam spreadsheet bagi melaksanakan pengiraan mengunakannya, kemudian memasukkan jadual dan carta berasaskan hasil kedalam dokumen pemproses kata.

Sejarah
-------

ARexx mula dicipta pada tahun 1987, dimajukan bagi Amiga oleh William S. Hawes. Ia berasaskan bahasa REXX yang digambarkan oleh Mike Cowlishaw dalam bukunya *The REXX Language: A Practical Approach to Programming*. ARexx dimasukkan oleh Commodore kedalam AmigaOS 2.0 pada 1990. Versi ARexx berikut ini menurut bahasa REXX rasmi dengan tepat; Hawes kemudiannya terbabit dalam merangka piwaian ANSI bagi REXX.

ARexx ditulis menggunakan Assembly 68000, dan dengan itu tidak dapat berfungsi dengan sempurna dengan CPU PPC baru, bagaimanapun versi ARexx telah ditulis semula khusus untuknya dan disertakan bersama Sistem Pengendalian MorphOS. William Hawes tidak lagi terbabit dengan pembangunan aturcara Amiga kerana pertelingkahannya dengan Commodore berkenaan perlesenan ARexx, dan tidak ada syarikat berkait Amiga membiayai versi baru ARexx. Sungguhpun begitu versi ARexx sedia ada masih terus digunakan.

Ciri-ciri
---------

ARexx merupakan bahasa pengaturcaraan yang mampu berhubung dengan aturcaraan pengunaan lain. Menggunakan ARexx, contohnya, seseorang boleh meminta data dari penggunaan pangkalan data dan menghantarnya kepada penggunaan helaian kerja. Bagi menyokong kemudahan ini, applikasi perlu "serasi ARexx" dengan mampu menerima perintah dari ARexx dan melaksanakannya. Aturcara pangkalan data mungkin memiliki perintah bagi mencari, mengambil, dan menyimpan data — pangkalan data MicroFiche Filer memiliki set perintah ARexx yang luas. Penyunting teks mungkin memiliki perintah ARexx menyamai perintah set suntingannya — penyunting Textra dibekalkan dengan JForth boleh digunakan bagi memberikan persekitaran pengaturcaraan bersepadu. Aturcara persembahan multimedia AmigaVision juga memiliki port ARexx dalaman dan mampu mengawal aturcara lain dengan menggunakan ARexx.

ARexx mampu meningkatkan kuasa komputer dengan menggabung keupayaan pelbagai aturcara. Disebabkan penerimaan meluas ARexx, Commodore memasukkannya dalam AmigaDOS Versi 2.0.

Sebagaimana perlaksanaan REXX lain, ARexx menggunakan perwakilan data *tanpa bentuk*. Bahasa pengaturcaraan lain membuat perbezaan anatara nombor integer, floating point, strings, characters, vektor, *dll*. Sebaliknya, sistem REXX menganggap semua data sebagai untaian huruf (*strings of characters*), menjadikannya mudah bagi menulis gambaran dan algorithm.
Sebagaimana dalam kes bahasa skop-dinamik, pemboleh ubah tidak diistihar sebelum menggunakannya, ia wujud dengan penggunaan pertamanya.

Skrip ARexx mendapat keuntungan dari sistem pengendalian ralat yang memantau perlaksanaan dan bertindak balas sepertinya. Pengaturcara boleh memilih samaada menggantung atau meneruskan perlaksanaan aturcara sebagaimana yang diperlukan.

Set perintah ARexx adalah mudah, tetapi tambahan kepada perintah terdapat fungsi perpustakaan rujukan Amiga (rexxsyslib.library). Ia juga mudah bagi memasukkan perpustakaan lain atau fungsi individual lain. Skrip ARexx juga boleh dilaksana sebagai fungsi dari skrip ARexx lain. Sebarang aturcara Amiga yang memiliki port ARexx bina dalam boleh berkongsi fungsinya dengan skrip ARexx.

Contoh penyelesaian ARexx kepada masalah biasa
----------------------------------------------

### Kekurangan ciri-ciri pada aturcara

Sekiranya pengguna akhir menggunakan aturcara yang membina animasi dengan menyambung animasi dengan menyambung pelbagai fail imej bitmap tetapi ketiadaan keupayaan memproses imej, dia boleh menulis skrip ARexx yang melaksanakan tindakan tersebut:

1. ARexx menjumpai fail imej di direktorinya
2. ARexx memuat imej pertama
3. ARexx memuat aturcara cat (*paint program*)
4. Imej dimuat kedalam aturcara cat yang melaksanakan pengubah suai kepada fail
5. imej yang disunting disimpan kedalam direktori lain
6. ARexx mengulang prosedur dengan sebarang imej dalam direktori
7. Aturcara pengecat ditutup dan aturcara animasi dimuatkan
8. Animasi dibina
9. Animasi disimpan dalam direktori
10. Aturcara animasi ditutup

### Mengelak prosedur berulang

EqFiles.rexx adalah contoh terkenal skrip ARexx mudah yang ditulis bagi mengautomatik prosedur berulang dan membosankan. Skrip ini menggunakan aturcara ALeXcompare  untuk membanding fail, dan menjumpai semua ganda dalam set fail dan memberi output dengan menanda sebarang keputusan dalam warna berlainan.

### Meningkat keupayaan AmigaOS

Salah satu ciri utama ARexx adalah fakta bahawa ia meningkatkan keupayaan sistem operasi(AmigaOS) dengan menambah prosedur yang tiada dalam sistem operasi AmigaOS.

Sebagai contoh aturcara mudah ARexx boleh ditulis bagi mencetak pesanan amaran pada monitor, atau membunyikan bunyi amaran sekiranya aturcara Amiga tertentu berhenti, silap atau telah habis kerja yang dirancang.

Skrip berikut merupakan skrip minima ARexx yang memaparkan amaran pada skrin bergantung kepada apa yang berlaku.

```
  /* Alarm.rexx */
  
  ARG event
  
  IF event = 0 THEN EXIT
  IF event = 1 THEN SAY "Program has ended unexpectedly"
  IF event = 2 THEN SAY "Program has finished its job"
  IF event = 3 THEN SAY "Cannot find data in selected directory"
```

Lihat juga
----------

REXX

Rujukan
-------

1. ↑  Cowlishaw, Michael (1985). *The REXX Language: A Practical Approach to Programming* (ed. 1st). Prentice Hall. ISBN ISBN 0-13-780651-5 Check `|isbn=` value: invalid character (bantuan).
2. ↑  Peruggi, Fulvio. "EqFiles".
3. ↑  Kazik, Alex. "ALeXcompare".

Pautan luar
-----------

* Beginning ARexx Tutorial