Rexx

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

Rexx
Rexx-img-lg.png
パラダイムマルチパラダイム手続き型構造化
によって設計されたマイク・カウリショー
デベロッパーマイク・カウリショー、IBM
初登場1979 ; 43年前 (1979
安定リリース
ANSI X3.274 / 1996 ; 26年前 (1996
規律の入力動的
ファイル名拡張子.cmd、.bat、.exec、.rexx、.rex、EXEC
主な実装
VM / SP R3、TSO / E V2、SAAREXX、ARexx、BREXX、Regina、[1] Personal REXX、REXX / imc
方言
NetRexxObject REXX、現在はooREXXKEXX
に影響を受けた
PL / IALGOLEXECEXEC 2
影響を受ける
NetRexxObject REXX

RexxRestructured Extended Executor )は、解釈またはコンパイルできるプログラミング言語です これは、 IBMMikeCowlishawによって開発されました[2] [3]これは、学習と読みやすさを考慮して設計された構造化された高級プログラミング言語です。独自のオープンソースのRexxインタープリターは、さまざまなコンピューティングプラットフォームに対応しています。IBMメインフレームコンピューター用のコンパイラーが存在します。[4]

Rexxは、スクリプトマクロ言語、およびアプリケーション開発言語として使用できる完全な言語です。多くの場合、データとテキストの処理およびレポートの生成に使用されます。Perlとのこれらの類似点は、RexxがCommon Gateway Interface (CGI)プログラミングでうまく機能し、実際にこの目的で使用されることを意味します。Rexxは、OS / 2MVSVMAmigaOSなどの一部のオペレーティングシステムの主要なスクリプト言語であり、 SPFPCKEDITTHEZOCなどの他のソフトウェアの内部マクロ言語としても使用されます。ターミナルエミュレータ。さらに、Rexxエンジンのいずれかがインストールされている場合、Rexx言語は、Windows Scripting Host ActiveXスクリプトエンジン言語(VBScriptやJScriptなど)を使用するすべてのプログラムのスクリプトおよびマクロに使用できます。

Rexxには、VM / SPリリース3以降、TSO / Eバージョン2以降、OS / 2(1.3以降、正式にはProcedures Language / 2と呼ばれます)、AmigaOSバージョン2以降、PC DOS7.0または2000)、ArcaOS[5]およびWindows NT 4.0(リソースキット:Regina)。OS / 2用のREXXスクリプトは、ファイル拡張子.cmdを他のスクリプト言語と共有し、スクリプトの最初の行は、使用されるインタープリターを指定します。REXX対応アプリケーションのREXXマクロは、アプリケーションによって決定された拡張機能を使用します。1980年代後半に、RexxはIBM Systems Application Architectureの共通スクリプト言語になり、 「SAA ProcedureLanguageREXX」に名前が変更されました。

Rexxスクリプトまたはコマンドは、 EXEC[6] EXEC 2 [7] 、およびCP / CMSおよびVM / 370からz / VMでのREXXスクリプトに使用されるCMSファイルタイプにちなんでEXECと呼ばれることがあります

機能

Rexxには次の特徴と機能があります。

  • 単純な構文
  • コマンドを複数の環境にルーティングする機能
  • 特定の呼び出し環境に関連する機能、手順、およびコマンドをサポートする機能。
  • 組み込みスタック。ホストスタックがある場合は、ホストスタックと相互運用する機能があります。
  • わずか20個の命令を含む小さな命令セット
  • 自由形式の構文
  • 変数名を含む大文字と小文字を区別しないトークン
  • 文字列ベース
  • 動的データ入力、宣言なし
  • ローカルコンテキストを除いて、予約キーワードはありません
  • インクルードファイル機能なし
  • 任意の数値精度
  • 10進算術、浮動小数点
  • 組み込み関数、特に文字列とワードプロセッシングの豊富な選択
  • 自動ストレージ管理
  • クラッシュプロテクション
  • コンテンツアドレス可能データ構造
  • 連想配列
  • システムコマンドと機能への直接アクセス
  • シンプルなエラー処理、および組み込みのトレースとデバッガー
  • 人工的な制限はほとんどありません
  • 簡素化されたI / O機能
  • 型破りな演算子
  • 特定の実装を除いて、Unixスタイルのコマンドラインパラメータを部分的にのみサポートします
  • 特定の実装を除いて、言語の一部として基本的な端末制御を提供しません
  • 特定の実装を除いて、外部ライブラリからの関数とサブルーチンを含める一般的な方法を提供しません

Rexxには、句読点とフォーマットの要件を最小限に抑えた、23の、ほとんど自明の命令(、、、callなどparse)があります。selectこれは本質的にほぼ自由形式の言語であり、データ型は文字列のみです。この哲学は、すべてのデータが表示され(シンボリック)、デバッグとトレースが簡素化されることを意味します。

Rexxの構文はPL / Iに似ていますが、表記が少なくなっています。これにより、(プログラムによる)解析が難しくなりますが、PL / Iの習慣が驚きにつながる可能性がある場合を除いて、使いやすくなります。REXXの設計目標の1つは、驚き最小の原則でした。[8]

歴史

1990年以前

Rexxは、1979年3月20日から1982年半ばにかけてIBMのMike Cowlishawによって、元々は言語EXECおよびEXEC 2に代わるスクリプトプログラミング言語として、アセンブリ言語で設計され、最初に実装されました。[2]あらゆるシステムのマクロまたはスクリプト言語として設計されました。そのため、RexxはTclおよびPythonの前身と見なされます。Rexxはまた、その作成者によって、 PL / Iプログラミング言語の単純化された学習しやすいバージョンになることを目的としていました。ただし、PL / Iとのいくつかの違いは、不注意につまずく可能性があります。

これは、1981年にテキサス州ヒューストンで開催されたSHARE 56カンファレンスで最初に公開され[9] 、 SLACのテッドジョンストンが支持した顧客の反応により、1982年にIBM製品として出荷されました。

長年にわたり、IBMはほとんどすべてのオペレーティングシステム(VM / CMSMVS TSO / EIBM iVSE / ESAAIXPC DOS、およびOS / 2 )にRexxを組み込み、 NovellNetWareバージョンを利用できるようにしました。 WindowsJava、およびLinux

IBM以外の最初のバージョンは、1984/5年にCharlesDaneyによってPCDOS用に作成され[3]、Mansfield Software Group(1986年にKevin J. Kearneyによって設立された)によって販売されました。[2]最初のコンパイラバージョンは1987年に登場し、LundinとWoodruffによってCMS用に作成されました。[10] AtariAmigaOSUnix(多くのバリエーション)、SolarisDECWindowsWindows CEPocket PCDOSPalm OSQNXOS / 2Linux用に他のバージョンも開発されています。BeOSEPOC32 / SymbianAtheOSOpenVMS[11] :p.305  Apple Macintosh、およびMac OSX 。[12]

ARexxと呼ばれるRexxのAmigaバージョンは、AmigaOS 2以降に含まれており、スクリプトおよびアプリケーション制御で人気がありました。多くのAmigaアプリケーションには、Rexxからのアプリケーションの制御を可能にする「ARexxポート」が組み込まれています。1つのRexxスクリプトで、実行中の複数のアプリケーションを制御するために、異なるRexxポートを切り替えることもできます。

1990年から現在まで

1990年、SLACのCathie Dagerは、最初の独立したRexxシンポジウムを開催し、REXX言語協会の結成につながりました。シンポジウムは毎年開催されます。

Rexxのいくつかのフリーウェアバージョンが利用可能です。1992年に、最も広く使用されている2つのオープンソースポートが登場しました。Unix用のIanCollierのREXX / imcと、WindowsおよびUnix用のAndersChristensenのRegina [1](後にMark Hesslingによって採用されました)です。BREXXはWinCEおよびPocketPCプラットフォームでよく知られており、VM / 370およびMVSに「バックポート」されています。

OS / 2には、WatcomVX -REXXのビジュアル開発システムがあります。もう1つの方言は、HockwareのVisProREXXでした。

KilowattによるPortableRexxとQuercusによるPersonalRexxは、DOS用に設計された2つのRexxインタープリターであり、コマンドプロンプトを使用してWindowsでも実行できます。1990年代半ば以降、Rexxの2つの新しいバリアントが登場しました。

1996年、米国規格協会(ANSI)は、Rexxの標準であるANSI X3.274–1996「情報技術–プログラミング言語REXX」を公開しました。[13] 1985年以来、Rexxに関する20冊以上の本が出版されています。

Rexxは2004年3月20日に25周年を迎えました。これは、2004年5月にドイツのベーブリンゲンで開催されたREXX言語協会の第15回国際REXXシンポジウムで祝われました。

2004年10月12日、IBMは、 Common PublicLicenseの下でObjectREXX実装のソースをリリースする計画を発表しましたObject REXXの最近のリリースには、このバージョンのRexx言語を実装 するActiveX Windows Scripting Host (WSH)スクリプトエンジンが含まれています。

2005年2月22日、Open Object Rexx(ooRexx)の最初の公開リリースが発表されました。この製品には、WindowsオペレーティングシステムとアプリケーションをRexxでプログラミングできるWSHスクリプトエンジンが含まれています。これは、Visual BasicJScriptがデフォルトのWSHインストールとPerlTclPythonサードパーティスクリプトエンジンによって実装されるのと同じ方法です。

2017年1月の時点で、REXXはトップ50に属さないトップ100の50言語の1つとしてTIOBEインデックスにリストされています。 [14]

2019年、第30回Rexx言語協会シンポジウムはRexxの40周年を迎えました。シンポジウムはイギリスのハーズリーで開催され、Rexxが最初に設計および実装されました。[15]

ツールキット

Rexx / Tkは、 Tcl / Tkと同じ方法でRexxプログラムで使用されるグラフィック用のツールキットです。

Rexx IDE、RxxxEdは、Windows用に開発されました。[11]ネットワーク通信用のRxSock、およびRegina Rexxの他のアドオンと実装が開発され、Windowsコマンドライン用のRexxインタープリターが、さまざまなバージョンのWindows用のほとんどのリソースキットで提供され、それらすべてで動作します。 DOSと同様に。

スペルと大文字化

もともとこの言語はRexReformed Executor)と呼ばれていました。他の製品名との衝突を避けるために、余分な「X」が追加されました。メインフレームコードが大文字指向であったため、REXは元々すべて大文字でした。当時のスタイルは、ほとんどすべてのコードがまだすべて大文字であったこともあり、すべて大文字の名前を付けることでした。製品についてはREXXになり、MikeCowlishawの本の両方のエディションでオールキャップスが使用されています。REstructured eXtended eXecutorへの拡張は、1984年にシステム製品に使用されました。[8]

構文

ループ

Rexxのループ制御構造は、aで始まり、DOで終わりますENDが、いくつかの種類があります。NetRexxはループLOOPの代わりにキーワードを使用しますがDO、ooRexxはループ時にLOOPDO同等のものとして扱います。

条件付きループ

Rexxは、命令のリストが実行される 前( do while)または後( )のいずれかで条件をテストしている間、さまざまな従来の構造化プログラミングループをサポートします。do until

 [状態]中に行う  
 [指示]
 終わり
 [状態]まで行う  
 [指示]
 終わり

繰り返しループ

ほとんどの言語と同様に、Rexxはインデックス変数をインクリメントしながらループし、制限に達すると停止することができます。

 do  index = start [制限する] [増分] [カウントする] _        
 [指示]
 終わり

増分は省略でき、デフォルトは1です。制限も省略できます。これにより、ループが永久に継続します。

Rexxは、カウントされたループを許可します。この場合、式はループの開始時に計算され、ループ内の命令はその回数だけ実行されます。

  表現をする
 [指示]
 終わり

Rexxは、プログラムが終了するまでループすることもできます。

 永遠にやる 
 [指示]
 終わり

プログラムは、命令を使用して現在のループから抜け出すことができますleave。これは、ループを終了する通常の方法です。do foreverまたは、命令を使用してプログラムを短絡することもできiterateます。

結合されたループ

PL / Iと同様に、Rexxでは、条件付き要素と反復要素の両方を同じループで組み合わせることができます。[16]

 do  index = start [制限する] [増分] [カウント] [ while条件] _ _          
 [指示]
 終わり
 [条件まで] 式を実行します  
 [指示]
 終わり

条件文

でのテスト条件IF

 [条件]場合  
 する
 [指示]
 終わり
 そうしないと
 する
 [指示]
 終わり

このELSE句はオプションです。

単一の命令の場合、DOおよびEND省略できます。

 [条件]場合  
 指示
 そうしないと
 指示

インデントはオプションですが、読みやすさを向上させるのに役立ちます。

複数の条件のテスト

SELECTPL / Iから派生した他の多くの構造体と同様に、RexxのCASE構造体です。他の動的言語でのCASE構造のいくつかの実装と同様に、Rexxの節は、相互に関連する必要のない完全な条件を指定します。その点で、それらはCまたはJavaステートメント のようなものというよりも、カスケードされたコードのセットのようなものです。WHENIF-THEN-ELSEIF-THEN-...-ELSEswitch

 選択する
 とき[状態]そして  
 [命令] またはNOP 
 とき[状態]そして  
 する
 [手順] またはNOP 
 終わり
 それ以外は
 [手順] またはNOP 
 終わり

命令は「操作なし」NOPを実行し、プログラマーが1つ以上の命令が必要となる場所で何もしたくない場合に使用されます。

OTHERWISE句はオプションです。省略され、WHEN条件が満たされない場合、SYNTAX条件が発生します。

単純変数

Rexxの変数はタイプレスであり、最初は大文字で名前として評価されます。したがって、変数の型は、プログラムでの使用によって変わる可能性があります。

 こんにちは / * =>こんにちは* / 
 こんにちは= 25  
 こんにちは / * => 25 * / 
 hello = "say 5 + 3"  
  こんにちはと言う/ * =>と言う5+ 3 * / 
  helloを解釈する/ * => 8 * / 
  こんにちはドロップ
 こんにちは / * =>こんにちは* / 

複合変数

他の多くのプログラミング言語とは異なり、従来のRexxは、数値インデックスによってアドレス指定される変数の配列を直接サポートしていません。代わりに、複合変数を提供します。[17]複合変数は、語幹とそれに続く語尾で構成されます。A。(ドット)は、ステムをテールに結合するために使用されます。使用されるテールが数値の場合、配列と同じ効果を簡単に生成できます。

 do  i = 1から10    
 ステムi = 10 - i    
 終わり

その後、次の値を持つ次の変数が存在します:stem.1 = 9, stem.2 = 8, stem.3 = 7..。

配列とは異なり、語幹変数のインデックスは整数値である必要はありません。たとえば、次のコードが有効です。

 i = '月曜日'  
 ステムi = 2  

Rexxでは、ステムのデフォルト値を設定することもできます。

 ステム= '不明'  
 ステム1 = '米国'  
 ステム44 = '英国'  
 ステム33 = 'フランス'  

これらの割り当ての後、用語stem.3はを生成し'Unknown'ます。

ステム全体は、DROPステートメントを使用して消去することもできます。

 ドロップ ステム

これには、以前に設定されたデフォルト値を削除する効果もあります。

慣例により(言語の一部としてではなく)、複合語stem.0は、語幹に含まれる項目の数を追跡するためによく使用されます。たとえば、リストに単語を追加する手順は、次のようにコーディングできます。

 add_word プロシージャは辞書を公開します   
 argwを解析します  
 n =辞書0 + 1    
 辞書n = w  
 辞書0 = n  
 戻る

複合変数の末尾に複数の要素を含めることもできます。例えば:

 m = '7月'  
 d = 15  
 y = 2005  
 y m d = '金曜日'  

複数の数値テール要素を使用して、多次元配列の効果を提供できます。

Rexx複合変数に似た機能は、他の多くの言語で見られます(AWK連想配列PerlのハッシュJavaのハッシュテーブルなど)。これらの言語のほとんどは、そのような構成のすべてのキー(またはRexx用語ではテール)を反復処理するための命令を提供しますが、これは従来のRexxにはありません。代わりに、必要に応じてテール値の補助リストを保持する必要があります。たとえば、単語をカウントするプログラムでは、次の手順を使用して、単語の各出現を記録できます。

 add_word プロシージャexposecount  _ 単語リスト    
 argwを解析します   
 カウントw =カウントw + 1 / *カウントを想定します。0に設定されています* /     
  カウントする場合w = 1  word_list = word_list w       
 戻る

そして後で:

 do  i = 1 to words  word_list     
 w = word  word_list  i   
  w カウントと言いますw
 終わり

ある程度の明確さを犠牲にして、これらの手法を1つのステムに組み合わせることができます。

 add_word プロシージャは辞書を公開します   
 argwを解析します   
 辞書w =辞書w + 1    
  辞書の場合w = 1 / *辞書を想定します。= 0 * /   
 その後 
 n =辞書0 + 1  
 辞書n = w  
 辞書0 = n  
 終わり
 戻る

以降:

 辞書に i = 1実行します。0    
 w =辞書  
  私は 辞書と言い ますw
 終わり

Rexxはここではセーフティネットを提供しないため、単語の1つがたまたま整数よりも少ない場合、dictionary.0この手法は不思議なことに失敗します。

IBMのObjectREXXやooRexxなどのオープンソース実装を含むRexxの最近の実装には、ステムの値、または配列、テーブル、リストなどの別のコレクションオブジェクトに対する反復を簡素化 する新しい言語構造が含まれています。

  ステム を超え ください
  私は'->'ステムと言います。  
 終わり

キーワードの説明

PARSE

PARSE命令は特に強力ですいくつかの便利な文字列処理機能を組み合わせています。その構文は次のとおりです。

 解析[上部]原点[テンプレート]   

ここで、originはソースを指定します。

  • arg(引数、コマンドラインの最上位テール)
  • linein(標準入力、例:キーボード)
  • pull(Rexxデータキューまたは標準入力)
  • source(プログラムの実行方法に関する情報)
  • value(式)with:式の終わりを示すためにキーワードwithが必要です
  • var(変数)
  • version(バージョン/リリース番号)

テンプレートは次のようになります。

  • 変数のリスト
  • 列番号の区切り文字
  • 文字通りの区切り文字

upperオプションです。指定した場合、データは解析前に大文字に変換されます。

例:

変数のリストをテンプレートとして使用する

 myVar = "ジョンスミス"  
  var  myVar  firstNamelastNameを解析 します
 「名は:」と言うfirstName  
 「姓は:」と言うlastName  

以下を表示します。

名は:ジョン
 姓は:スミス

テンプレートとして区切り文字を使用する:

 myVar = "スミス、ジョン"  
 解析変数 myVarLastName "、 " FirstName    
 「名は:」と言うfirstName  
 「姓は:」と言うlastName  

また、以下を表示します。

名は:ジョン
 姓は:スミス

列番号区切り文字の使用:

 myVar = "(202)123-1234"  
 解析変数 MyVar2  AreaCode 5 7 SubNumber _     
 「市外局番は次のとおりです」と言います。AreaCode  
 「加入者番号は次のとおりです」言います。  

以下を表示します。

市外局番:202
 加入者番号は:123-1234

テンプレートでは、変数、リテラル区切り文字、および列番号区切り文字を組み合わせて使用​​できます。

解釈

INTERPRET命令はその引数を評価し、その値をRexxステートメントとして扱います。INTERPRETは、タスクを実行するための最も明確な方法である場合がありますが、たとえば、を使用してより明確なコードが可能な場合によく使用されvalue()ます。

INTERPRETの他の使用法は、Rexx(10進数)の任意精度の算術演算(ファジー比較を含む)、プログラムテンプレート、ステム配列、およびスパース配列でのPARSEステートメントの使用です。[どうやって?]

 / * square(4)=> 16でINTERPRETを示します* /
 X = '二乗'  
 '言う' Xを解釈する|| '(4); 出口'    
 SQUARE return arg 1 )** 2  

これにより、16が表示されて終了します。Rexxの変数の内容は、指数を含む有理数やプログラム全体を含む文字列であるため、Rexxは文字列を評価された式として解釈することを提案します。

この機能は、積分を計算するプロシージャにSINまたはCOSを渡すなど、 関数を関数パラメータとして渡すために使用できます。

Rexxは、ABS、DIGITS、MAX、MIN、SIGN、RANDOMなどの基本的な数学関数と、ビット演算を使用した16進および2進変換の完全なセットのみを提供します。SINのようなより複雑な関数は、最初から実装されたか、サードパーティの外部ライブラリから取得されました。一部の外部ライブラリ(通常は従来の言語で実装されているもの)は、拡張精度をサポートしていませんでした。

それ以降のバージョン(非クラシック)はCALL variable構造をサポートします。組み込み関数と一緒にVALUE、CALLはの多くの場合の代わりに使用できますINTERPRETこれは古典的なプログラムです:

 / *入力「exit」などで終了* /
 永遠に行う; linein ()を解釈します; 終わり      

もう少し洗練された「Rexx計算機」:

 X = '終了するBYEを入力'  
 X = 'BYE'まで行う; '言う' Xを解釈します; Xを引く; 終わり             

PULLの省略形ですparse upper pull同様に、ARGはの省略形ですparse upper arg

INTERPRET命令の能力には、他の用途がありました。Valorソフトウェアパッケージは、 OOP環境を実装するためのRexxの解釈能力に依存していました別の用途は、致命的なエラーの後に完全に回復することができたTimeMachine 呼ばれる未リリースのWestinghouse製品で見つかりました。

NUMERIC

 数字を言う()ファズ()フォーム()/ * => 9 0 SCIENTIFIC * /    
 たとえば999999999+ 1 / * => 1.000000000E + 9 * /  
 数字10 / *使用可能なメモリによってのみ制限されます*  /  
 たとえば999999999+ 1 / * = > 1000000000 * /  

 たとえば0.9999999999 = 1 / * => 0(false)* /  
 数値 ファズ3 
 たとえば0.99999999 = 1 / * => 1(真)* /  
 たとえば0.99999999 == 1 / * => 0(false)* /  

 たとえば100 * 123456789 / * => 1.23456789E + 10 * /  
 数値 形式 工学
 たとえば100 * 123456789 / * => 12.34567890E + 9 * /  

 たとえば53 // 7 / * => 4(除算の残り)* /      
  √2を計算します eを計算します
コード
 数字50  _ 
 n = 2
 r = 1
 永遠に行う/ *ニュートン法* /  
 rr =( n / r + r )/ 2
  r = rrの場合、そのままにします  
 r = rr
 終わり
 「sqrt」と言うn '=' r    
 数字50  _ 
 e = 2.5
 f = 0.5
  n = 3を実行します
 f = f / n
 ee = e + f
  e = ee場合  
 e = ee
 終わり
 「 e = " e  
出力 sqrt 2 = 1.414213562373095048801688724209698078569671875377 e = 2.7182818284590452353602874713526624977572470936998

SIGNAL

SIGNAL命令は、制御フローの異常な変化を対象としています(次のセクションを参照)。ただし、他の言語で見られるGOTOステートメントのように誤用され、扱われる可能性があります(ただし、ループや他の構造を終了するため、厳密には同等ではありません)。これにより、読みにくいコードが生成される可能性があります。

エラー処理と例外

Rexxでは、SIGNAL命令を使用して、エラーやその他の例外をインターセプトして処理することができます。システム条件には、ERROR、FAILURE、HALT、NOVALUE、NOTREADY、LOSTDIGITS、SYNTAXの7つがあります。それぞれの処理は、必要に応じてソースコードでオンとオフを切り替えることができます。

次のプログラムは、ユーザーが終了するまで実行されます。

 停止時の信号;  
  a = 1を実行します  
	 言う _
	 100000を実行/ *遅延* /  
	 終わり
 終わり
 停止
 「プログラムはユーザーによって停止されました」と言います 
 出口

ステートメントは、未定義の変数の使用をインターセプトします。そうでない場合は、値として独自の(大文字の)名前を取得します。条件の状態に関係なく、変数のステータスは、定義された変数のVARを返す 組み込み関数を使用して常にチェックできます。signal on novalueNOVALUESYMBOL

このVALUE関数を使用すると、NOVALUE条件をトリガーせずに変数の値を取得できますが、その主な目的は、POSIXやと同様に環境変数を読み取って設定することです。 getenvputenv

条件

ERROR
システムコマンドからの正のRC
FAILURE
システムコマンドの負のRC(例:コマンドが存在しない)
HALT
異常終了
NOVALUE
未設定の変数が参照されました
NOTREADY
入力または出力エラー(ファイルの終わりを超えた読み取り試行など)
SYNTAX
無効なプログラム構文、またはその他のエラー状態
LOSTDIGITS
有効数字が失われます(ANSI Rexx、TRL第2版にはありません)

条件がによって処理されるSIGNAL ON場合、SIGLおよびRCシステム変数を分析して状況を理解できます。RCにはRexxエラー・コードが含まれ、SIGLにはエラーが発生した行番号が含まれています。

Rexxバージョン4以降、条件は名前を取得でき、CALL ON構成もあります。これは、外部関数が必ずしも存在しない場合に便利です。

 ChangeCodePage procedure / * SIGNAL設定を保護します* /  
 構文ChangeCodePageシグナルトラップ    
  SysQueryProcessCodePage ()を返します
 ChangeCodePage トラップ1004を返す/ * OS / 2でwindows-1252 * /   

も参照してください

参考文献

  1. ^ a b Mark Hessling(2012年10月25日)。「ReginaRexxインタープリター」SourceForgeプロジェクトregina-rexx 2014年2月10日取得
  2. ^ a b c M.F.カウリショー「IBMREXXの簡単な歴史」IBM 2006年8月15日取得
  3. ^ ab メリンダバリアン「REXXシンポジウム、1995年5月」
  4. ^ 「すべてのドキュメントのカタログ(filter = rexx)」IBMライブラリーサーバー。2005 2014年2月10日取得
  5. ^ 「ArcaOSにはREXXサポートが含まれていますか?」2020年9月3日取得
  6. ^ IBM Virtual Machine Facility / 370:EXECユーザーズガイド(PDF)(第2版)。インターナショナルビジネスマシーンズコーポレーション。1975年4月。GC20-1812-1。
  7. ^ EXEC 2リファレンス(PDF)(第2版)。インターナショナルビジネスマシーンズコーポレーション。1982年4月。p。92.SC24-5219-1。
  8. ^ a b M. F. Cowlishaw(1984)。「REXX言語のデザイン」(PDF)IBM Systems Journal(PDF)。IBMリサーチ23(4):333。doi10.1147 /sj.234.0326 2014年1月23日取得新機能に関連する高い驚きの要因があるでしょうか?機能が誤ってユーザーによって誤って適用され、ユーザーに予測できない結果をもたらす場合、その機能には高い驚きの要素があり、したがって望ましくありません。必要な機能に驚愕の要素が高い場合は、機能の再設計が必要になる場合があります。
  9. ^ MFカウリショー(1981年2月18日)。「REX-コマンドプログラミング言語」共有します。2006年8月15日取得
  10. ^ Lundin、Leigh; ウッドラフ、マーク(1987年4月23日)。「T / REXX、CMS用のREXXコンパイラー」米国著作権局ワシントンDC:Independent Intelligence Incorporated(TXu000295377)。
  11. ^ a b ハワード・フォスディック(2005)。Rexxプログラマーリファレンスワイリー出版p。390. ISBN 0-7645-7996-7
  12. ^ 「Rexxの実装」RexxLA。2006年9月24日にオリジナルからアーカイブされました2006年8月15日取得
  13. ^ ANSI INCITS 274-1996 / AMD1-2000(R2001)およびANSI INCITS 274-1996(R2007)は有料ですが、無料のドラフトをダウンロードできます:「情報システムの米国規格–プログラミング言語REXX」(PDF)X3J18-199X。
  14. ^ 「次の50のプログラミング言語」TIOBEインデックスtiobe.com。2017年。 2017年1月19日のオリジナルからアーカイブ2017年1月10日取得
  15. ^ 「RexxLA-シンポジウムのスケジュール」
  16. ^ MFカウリショー(1990)。Rexx言語-プログラミングへの実用的なアプローチ(第2版)。プレンティスホールISBN 0-13-780651-5
  17. ^ 「Rexxの6つの経験則」

さらに読む

  • キャロウェイ、メリル。ARexxクックブック:CommodoreAmigaパーソナルコンピュータ上のARexx言語のチュートリアルガイドホワイトストーン、1992。ISBN978-0963277305 
  • キャロウェイ、メリル。Rexxクックブック:OS / 2のRexx言語とIBMパーソナルコンピューターのワープのチュートリアルガイドホワイトストーン、1995。ISBN0-9632773-4-0 
  • カウリショー、マイケル。Rexx言語:プログラミングへの実用的なアプローチPrentice Hall、1990。ISBN0-13-780651-5 
  • カウリショー、マイケル。NetRexx言語Prentice Hall、1997年。ISBN0-13-806332 -X 
  • デイニー、チャールズ。REXXでのプログラミングMcGraw-Hill、TX、1990。ISBN0-07-015305-1 
  • エンダー、トム。Rexxを使用したオブジェクト指向プログラミングJohn Wiley&Sons、1997。ISBN0-471-11844-3 
  • フォスディック、ハワード。RexxプログラマーリファレンスWiley / Wrox、2005。ISBN0-7645-7996-7 
  • ガルギウロ、ガブリエル。OS / 2、TSO、およびCMS機能を備えたREXXMVSトレーニング、1999年(2004年第3版)。ISBN1-892559-03 -X 
  • ゴールドバーグ、ガブリエルとスミス、フィリップH.レックスハンドブックMcGraw-Hill、TX、1992。ISBN0-07-023682-8 
  • ゴラン、リチャードK.REXXリファレンスサマリーハンドブックCFS Nevada、Inc.、1997年。ISBN0-9639854-3-4_ 
  • IBMレッドブック。SdsfでのRexxサポートの実装Vervante、2007年。ISBN0-7384-8914 -X 
  • Kiesel、Peter C. Rexx:プログラマーのための高度なテクニックMcGraw-Hill、TX、1992。ISBN0-07-034600-3 
  • マルコ、経験豊富なプログラマーのためのルーISPF / REXX開発CBM Books、1995。ISBN1-878956-50-7 
  • オハラ、ロバートP.とゴンバーグ、デビッドルース。Rexxを使用した最新のプログラミングPrentice Hall、1988。ISBN0-13-597329-5 
  • ラッド、アンソニーS.「TSOREXXの実用的な使用法」。CreateSpace、2012。ISBN978-1475097559 
  • シンドラー、ウィリアム。EarthRexxまでパーフェクトニッチソフトウェア、2000。ISBN0-9677590-0-5 

外部リンク