REXX(レックス)は、
IBMが開発した汎用
プログラミング言語であり、1979年3月20日にマイク・カウリシャーによって考案されました。この言語は、バッチ言語やマクロ言語の機能と汎用
プログラミング言語の機能を兼ね備え、
IBMの各種オペレーティングシステムで広く利用されてきました。
メインフレームのVM(CMS)で誕生しましたが、
IBM SAAで標準の手続き型言語として採用され、MVS、ミッドレンジ
コンピュータのAS/400、さらにはOS/2やPC DOS 7にも搭載され、家庭用や個人用としても普及しました。
MS-DOSや
Amiga、Macintoshといった環境でも利用可能な処理系が存在しました。
REXXの大きな特徴は、その習得の容易さにあります。初心者でも3~7日程度の学習で、簡単なテキストフィルターを作成できるようになります。構造化された制御文(DOループ、サブルーチンのCALL、IF文、SELECT文)や、変数のスコープ管理も提供されています。変数の宣言が不要で、使用時に大文字化された名前の変数として扱われる点も特徴的です。また、数値型と文字列型の間での自動変換が行われ、変数は動的に生成・消滅します。文字列を添字とする配列(連想配列)が利用でき、テンプレートマッチングによるパージングも標準でサポートされています。シェルコマンドの実行も容易に行えますが、提供されているデータ構造はスタックとキューのみで、リスト構造は提供されていません。
後に、オブジェクト指向を取り入れたObject REXXが開発され、現在ではオープンソースとして利用可能です。また、Rexx/gciを使用することで、各種APIを制御することもできます。現在では、UNIXやLinux用の処理系も存在し、代表的なものとしてはReginaやOpen Object REXXなどがあります。
REXXという名称は、「restructured extended executor language」に由来します。
REXXの特徴
習得が容易:初心者でも短期間で簡単なプログラムを作成できる。
構造化された制御文:DOループ、サブルーチン、IF文、SELECT文など、プログラムの流れを制御するための機能が豊富。
変数の動的処理:変数の宣言が不要で、必要に応じて動的に生成・消滅。
柔軟な型変換:数値型と文字列型の自動変換に対応。
連想配列のサポート:文字列を添字とする配列(連想配列)が利用可能。
テンプレートマッチング:文字列のパージングが容易。
シェルコマンド実行:OSのシェルコマンドをプログラムから実行可能。
REXXのデータ構造
スタックとキューのみを提供(リスト構造は提供されていない)。
REXXのコード例
rexx
/
Hello Worldを表示する簡単なプログラム /
say 'Hello, World!'
REXX関連の解説書
REXX関連の書籍は、和書では4冊程度しかなく、すべてが絶版となっています。2000年以降は新刊も出版されておらず、1990年代に刊行された書籍は入手が困難です。そのため、主に
IBMの公式サイトから入手できる資料や洋書を利用することが推奨されます。
過去に刊行された主な書籍として以下のものがあります。
REXX による OS/2 入門 山下 直彦・CQ出版
やさしい Rexx 入門 山田文人・ダイワアート
IBMから入手可能な和訳資料の例として、以下のものがあります。
Japanese:Object REXX(Win) リファレンス V.2.1(SH88-5503-00)
Japanese:Object REXX(Win) プログラミング・ガイド バージョン2.1(SH88-5504-00)
参考資料
Linux に Rexx が必要な理由
IBM Research | Mike Cowlishaw
IBM REXX Family
The REXX Language Association
*
Regina - Cross-platform Rexx Interpreter