REXX サポート

この章では、REXX がどのようにサポートされるのかを説明します。

概要

REXX は、テキスト操作のための広範な機能を備えた高級言語です。CLIST は、Server Enterprise Edition のもとではサポートされません。そのため、CLIST を REXX プログラムに変換することをお奨めします。

REXX 言語とその使用方法の詳細については、IBM OS/390 TSO/E REXX Reference および IBM OS/390 TSO/E REXX User's Guide を参照してください。

A REXX プログラムは、exec と呼ばれます。exec を実行する前に、その exec をプロジェクトに追加するか、通常の方法でメインフレームからダウンロードする必要があります。REXX exec は、TSO CLIST と区別できるように、文字ストリング REXX を含むコメントで始まらなければなりません。その例を次に示します。

/************** REXX **************/

REXX exec には、ファイル拡張子 .rex を付ける必要があります。

オプションとして、exec を区分データ・セット (PDS) のメンバーとして定義することができます。通常、DD 名の SYSEXEC および SYSPROC は、REXX exec を含む PDS に使用されます。これらの各 DD 名には、複数の PDS を割り当てることができます。SYSEXEC PDS には exec だけを含めることができます。

MSS では、exec が JCL アプリケーションと同じ場所 (つまり、[Edit Server > Properties > JES] ページの [JES Program Path] で指定された場所) にあることを前提としています。

MSS は、exec が実行されるときにその exec を解釈します。事前のコンパイル段階やリンク段階はありません。

MSS は、JCL (非 TSO) 環境でのみ REXX exec の使用をサポートします。これは、ユーザーとの対話および TSO サービスへのアクセスを必要としない exec に使用できます。

JCL 環境

JCL 環境では、IRXJCL ユーティリティーを使用して REXX exec を実行できます。

例えば、次の JCL ジョブストリームは、SYSEXEC に割り当てられた userid.rexx.exec という PDS 内の jcltest という REXX exec を実行します。

//jobname  JOB ............
//*
//jobstep  EXEC PGM=IRXJCL,PARM='JCLTEST'
//SYSEXEC  DD DSN=USERID.REXX.EXEC,DISP=SHR
//SYSTSPRT DD SYSOUT=A
//SYSTSIN  DD *
input to exec
/*
//

パラメータの引き渡し

次の例のように、REXX exec には通常の方法でパラメータを渡すことができます。

add という名前の exec では、ARG 命令を使用して 2 つのパラメータ (42 と 21) を受け取ることができます。

ホスト・コマンドの組み込み

次の例のようにホスト・コマンドを引用符で囲むことにより、ホスト・コマンドを REXX exec に組み込むことができます。

"EXECIO * DISKR MYINDD (FINIS STEM MYVAR"

REXX 言語プロセッサーは、認識しないコマンドおよび他のソース・コードを実行のためにホスト・コマンド環境に渡します。

MSS は、MVS ホスト・コマンド環境をエミュレートします。その環境によって認識されないホスト・コマンドを使用した場合は、戻りコード変数 RC が -3 に設定されます。

ユーザーは、ADDRESS 組み込み関数を使用して現在の環境の名前を検索し、ADDRESS 命令を使用してその名前を変更できます。

Exec のデバッグ

REXX デバッグ機能を使用すると、exec のデバッグに役立ちます。この機能により、ユーザーは実行中の exec と対話し、変数の値を監視できます。

TRACE 命令を使用すると、exec 内からデバッグ機能の起動と制御を行うことができます。

長さがゼロの行順次ファイルに対するレコード長の指定

MFREXX_LSEQ_RECSIZE_MAX 環境変数を使用すると、ゼロのレコード長でカタログされた行順次ファイルの読み取りまたは書き込み時に REXX EXECIO コマンドのレコード長を指定できます。

この環境変数は、エンタープライズ・サーバーを起動する前に、ES Admin の [Add Server] または [Edit Server] ページにある [Configuration Information] フィールドで次のように設定する必要があります。

[ES-Environment]
MFREXX_LSEQ_RECSIZE_MAX=rec-length

別の方法として、エンタープライズ・サーバーを起動する前にコマンド・ラインで設定することもできます。

MFREXX_LSEQ_RECSIZE_MAX=rec-length
export MFREXX_LSEQ_RECSIZE_MAX

ここで、rec-lengthは、使用するレコード長です。デフォルトは 255 (使用可能な最小値) です。無効な値や 255 未満の値を指定すると、デフォルト値が使用されます。

OR および NOT 演算子に対する代替文字の指定

REXX の OR または NOT 演算子にデフォルト以外の文字を使用する必要がある場合、MSS では 2 つの環境変数 (MFREXX_ORMFREXX_NOT) を使用してこれを行うことができます。これらの環境変数を有効にするには、エンタープライズ・サーバーを起動する前に、ES Admin の [Add Server] または [Edit Server] ページにある [Configuration Information] フィールドで、あるいはコマンド・ラインでこれらの環境変数を設定する必要があります。

各演算子には 1 つまたは複数の文字を指定できます。指定した各文字は、デフォルトの演算子 (OR を表す "|" と NOT を表す "¬") に加えて使用されます。追加の文字を指定する場合は、各文字が単一引用符または二重引用符で囲まれて定義されているか、あるいは 16 進数で定義されていることを確認してください。複数の文字を指定する場合は、各文字をスペースまたはコンマで区切ります。英文字または数字の指定など、追加文字の指定に誤りがあると、その環境変数は無視されます。

例:

[ES-Environment]
MFREXX_NOT="^"
MFREXX_NOT=0x5e "!"
MFREXX_NOT=X'5e' '!' "~" 

制限事項

次のメインフレーム REXX 機能は、MSS ではサポートされません。