REXX 拡張処理の働き
Z Data Tools は、拡張処理を実行するために指定する REXX ステートメントで使用できる、2 つの特別な REXX 変数、INREC と OUTREC を定義します。Z Data Tools 機能またはパネルが REXX を呼び出す場合、処理するために選択された各入力レコードの内容は、INREC および OUTREC の両方に渡されます。REXX プロシージャーが呼び出されるとき (レコードを再形式設定するためのフィールド・マッピングを実行する出力テンプレートを用いた DSC 機能または「Copy Utility (コピー・ユーティリティー)」(オプション 3.3) を使用している場合を除いて)、INREC および OUTREC の内容は同一です。レコードを再形式設定するために DSC または「Copy Utility (コピー・ユーティリティー)」を使用している場合、REXX が呼び出されるときには、INREC は入力レコードを、OUTREC は再形式設定された出力レコードを含んでいます。
INREC 変数は、参照変数として使用されることを意図したものです。この変数に対して行われた変更は、すべて Z Data Tools によって無視されます。変数 OUTREC は、プロシージャーによって更新でき、REXX 処理が完了するときに、拡張を行っている Z Data Tools パネルまたは機能によって処理のために戻されます (ただし、後述のように以後の処理でレコードを「除去」することがない場合に限ります)。例えば、次の例は、最初の 2 バイトにタイプ標識を持つレコードが含まれているデータ・セットを処理します。タイプ '01' のレコードは、すべて長さが 80 バイトで、変更なしで、出力に受け渡されます。タイプ '02' のレコードは、可変長で、長さが 80 バイトより短く、スラッシュ文字 ('/') で 2 つのセクション (それぞれ、最高 40 バイト) に分割されたデータを含んでいます。これらのレコードは、連結されて 80 バイト・レコードとして出力に受け渡される、半分の 2 つの 40 バイトに再形式設定されます。
/* Reformat varying length records as fixed
using an arbitrarily located delimiter */
If Substr(inrec,1,2) == '02' Then Do
Parse Var inrec left '/' right
outrec = Left(left,40) || Left(right,40)
EndOUTREC 変数の値が、使用している機能またはパネルによって指定されたデータ・セットに許されているレコード長より長ければ、それは切り捨てられます。OUTREC の値がレコード長より短い場合には、「Set Processing Options (処理オプションの設定)」(オプション 0) パネル (パネルを拡張している場合) の「PAD」フィールドで指定した文字または SET 機能 (機能を拡張している場合) の PAD パラメーターで指定した文字を使用して、埋め込みが行われます。