REXX
# REXX

REXX (REstructured eXtended eXecutor) è un linguaggio di programmazione interpretato sviluppato da IBM. È un linguaggio di programmazione ad alto livello strutturato che fu progettato per essere semplice sia da apprendere che da leggere. Interpreti sia proprietari che open source per REXX sono disponibili per un'ampia gamma di piattaforme. Inoltre compilatori sono disponibili per mainframe IBM.

REXX è ampiamente utilizzato come linguaggio macro ed è spesso impiegato nell'elaborazione dei dati e testi e per generare report; grazie a tali caratteristiche, così come il linguaggio Perl, REXX è spesso impiegato anche nella programmazione CGI. REXX è anche utilizzato come linguaggio macro interno in alcuni software, tra cui l'emulatore di terminale ZOC. Inoltre, il linguaggio REXX può essere impiegato per operazioni di scripting e macro in qualsiasi programma che usi motori di scripting Windows Scripting Host ActiveX (quali VBScript e JScript).

REXX era fornito con il sistema OS/2 (dalla versione 1.3 in poi), PC-DOS (7.0 o 2000) e Windows NT 4.0. Gli script REXX per OS/2 e Windows NT possiedono estensione .cmd (la prima linea dello script ne specifica il formato). Un interprete REXX per Amiga chiamato ARexx venne incluso nel sistema operativo AmigaOS dalla versione 2.0.

## Caratteristiche

REXX possiede le seguenti caratteristiche:

* sintassi semplice
* piccolo insieme di istruzioni (costituito da una ventina di istruzioni)
* sintassi libera
* variabili senza tipo
* basato su stringhe a carattere
* sistema dei tipi dinamico
* nessuna parola chiave riservata (eccetto in contesti locali)
* precisione numerica arbitraria
* aritmetica decimale (floating point)
* ampia scelta di funzioni built-in (specialmente per l'elaborazione di stringhe e parole)
* gestione automatica della memorizzazione
* protezione dal crash
* array associativi
* accesso immediato ai comandi e alle utilità di sistema
* semplice gestione dell'errore; tracing e debugger built-in
* poche limitazioni artificiali
* utilità di I/O semplificate
* operatori non convenzionali
