インポート・ユーティリティーでの REXX プロシージャーの使用
既存の REXX プロシージャーを指定するか、または新規のプロシージャーを作成して、データを選択またはインポートする方法をさらに拡張することができます。
任意の数の REXX ステートメントおよび関数をコーディングして、出力レコードの操作、特定レコードの選択、報告書の印刷、および数値の計算を行うことができます。REXX プロシージャーをコーディングする場合は、以下の点に注意する必要があります。
- インポート・プロシージャーは、入力テンプレート・レコードの選択が行われた後で実行されます。インポート・プロシージャーにより、RETURN DROP を使用してコピーを行うために、(レコードがあった場合に、テンプレート選択プロセスで選択された) レコードが選択解除されることがあります。
- インポート・プロシージャーは、テンプレートによって指定されたフィールド・マッピングまたは変換がすべて完了した後に実行されます。
- テンプレート処理の結果としてレコードが再形式設定された場合には、変数 INREC には入力レコード値が含まれ、変数 OUTREC には再形式設定された出力レコードが含まれます。
- インポート・プロシージャーによって INREC に対して行われた変更は無視されます。OUTREC に対する変更は、Db2® 表をロードするためにインポート・プロセスで使用されます。
- PRINT() 関数を使用する場合は、テンプレートは以下のように決定されます。
- 出力テンプレートのない入力テンプレートが指定されていると、入力テンプレートが使用されます。
- 出力テンプレートが指定され、印刷のために指定されたレコード値が入力レコードであると、入力テンプレートが使用されます。そうでない場合は、出力テンプレートが使用されます。
- レコードが、選択する印刷テンプレートでのレコード・レイアウトに一致しない場合は、そのレコードは、印刷されません。
例 1
レコードをインポートし、40 桁目の後に、長さ 4 の新規フィールドを挿入します。
outrec = fld(1,40)||' '||fld(41)
例 2
タイプ A のレコードをインポートし、最初の 10 個を印刷します。タイプ値は、6 桁目にあります。
if fld(6,1) = 'A' then do /* Type A? */
If prtcount() <= 10 then print(inrec,'CHAR') /* Print 10 */
RETURN /* Copy */
end
return 'DROP' /* Drop the rest */
例 3
インポートの際に、出力レコードを英大文字に変更します。
upper outrec
関連するタスク