インポート・ユーティリティーでの 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

関連するタスク