この例題で説明する内容

ここでは、入力データの発注元IDを変数に格納し、前レコードの値と比較を行うことで、発注元ID単位でヘッダおよびフッタを付与する場合の変換例について説明します。

この変換例で入力するファイルと、変換実行後に出力されるファイルを次に示します。

図8.103 変換例(レコードをまたがる判断)

各レコードが、マッピングで設定された順番に処理されます。ただし、後処理(関係線⑥)は最後に実施されます。

変換例での変換処理の順序を以下の表に示します。

表8.8 変換例(レコードをまたがる判断)での変換処理の順序

処理の順番

処理対象のレコード

処理の内容

対応する関係線

内容

1.

レコード1

抽出条件1→出力ファイル

2.

 

抽出条件2→出力ファイル

3.

 

抽出条件3→出力ファイル

4.

 

抽出条件4→変数

5.

 

抽出条件4→出力ファイル

6.

レコード2

抽出条件1→出力ファイル

7.

 

抽出条件2→出力ファイル

8.

 

抽出条件3→出力ファイル

9.

 

抽出条件4→変数

10.

 

抽出条件4→出力ファイル

11.

レコード3

抽出条件1→出力ファイル

12.

 

抽出条件2→出力ファイル

13.

 

抽出条件3→出力ファイル

14.

 

抽出条件4→変数

15.

 

抽出条件4→出力ファイル

16.

レコード4

抽出条件1→出力ファイル

17.

 

抽出条件2→出力ファイル

18.

 

抽出条件3→出力ファイル

19.

 

抽出条件4→変数

20.

 

抽出条件4→出力ファイル

21.

後処理1→出力ファイル

具体的な処理内容を次に示します。なお、説明中の番号は「表8.8 」の「処理の順番」に対応しています。

処理対象:レコード1

発注元ID

商品ID

商品名

数量

単価

ORDID0001

001

商品A

10

1000

1. 出力ファイルに以下の値を出力します。

種別

:

HEAD

(固定文字列)

発注元ID

:

ORDID0001

(レコード1の発注元ID)

 

出力ファイルの内容は以下のとおりになります。

2. 処理対象がレコード1であるため、抽出条件2(入力レコード数!=1)により出力ファイルに値が出力されません。

3. 処理対象がレコード1であるため、抽出条件3(入力レコード数!=1)により出力ファイルに値が出力されません。

4. 変数「発注元ID」に以下の値を設定します。

発注元ID:ORDID0001 (レコード1の発注元ID)

5. 出力ファイルに以下の値を出力します。

種別

:

DATA

(固定文字列)

商品ID

:

001

(レコード1の商品ID)

商品名

:

商品A

(レコード1の商品名)

数量

:

10

(レコード1の数量)

単価

:

1000

(レコード1の単価)

合計

:

10×1000=10000

(「レコード1の数量」×「レコード1の単価」)

 

出力ファイルの内容は以下のとおりになります。

処理対象:レコード2

発注元ID

商品ID

商品名

数量

単価

ORDID0001

002

商品B

15

1200

6. 処理対象がレコード1ではないため、抽出条件1(入力レコード数=1)により出力ファイルに値が出力されません。

7. レコード2の発注元IDと変数「発注元ID」が共に「ORDID0001」であるため、抽出条件2(項目NO.1!=発注元ID)により出力ファイルに値が出力されません。

8. レコード2の発注元IDと変数「発注元ID」が共に「ORDID0001」であるため、抽出条件3(項目NO.1!=発注元ID)により出力ファイルに値が出力されません。

9. 変数「発注元ID」に以下の値を設定します。

発注元ID:ORDID0001 (レコード2の発注元ID)

10. 出力ファイルに以下の値を出力します。

種別

:

DATA

(固定文字列)

商品ID

:

002

(レコード2の商品ID)

商品名

:

商品B

(レコード2の商品名)

数量

:

15

(レコード2の数量)

単価

:

1200

(レコード2の単価)

合計

:

15×1200=18000

(「レコード2の数量」×「レコード2の単価」)

 

出力ファイルの内容は以下のとおりになります。

処理対象:レコード3

発注元ID

商品ID

商品名

数量

単価

ORDID0001

001

商品A

10

1000

ORDID0001

002

商品B

15

1200

ORDID0002

001

商品A

1

1000

11. 処理対象がレコード1ではないため、抽出条件1(入力レコード数=1)により出力ファイルに値が出力されません。

12. 出力ファイルに以下の値を出力します。

種別:TAIL   (固定文字列)

 

出力ファイルの内容は以下のとおりになります。

13. 出力ファイルに以下の値を出力します。

種別

:

HEAD

(固定文字列)

発注元ID

:

ORDID0002

(レコード3の発注元ID)

 

出力ファイルの内容は以下のとおりになります。

14. 変数「発注元ID」に以下の値を設定します。

発注元ID:ORDID0002 (レコード3の発注元ID)

15. 出力ファイルに以下の値を出力します。

種別

:

DATA

(固定文字列)

商品ID

:

001

(レコード3の商品ID)

商品名

:

商品A

(レコード3の商品名)

数量

:

1

(レコード3の数量)

単価

:

1000

(レコード3の単価)

合計

:

1×1000=1000

(「レコード3の数量」×「レコード3の単価」)

 

出力ファイルの内容は以下のとおりになります。

処理対象:レコード4

発注元ID

商品ID

商品名

数量

単価

ORDID0002

003

商品C

100

980

16. 処理対象がレコード1ではないため、抽出条件1(入力レコード数=1)により出力ファイルに値が出力されません。

17. レコード4の発注元IDと変数「発注元ID」が共に「ORDID0002」であるため、抽出条件2(項目NO.1!=発注元ID)により出力ファイルに値が出力されません。

18. レコード4の発注元IDと変数「発注元ID」が共に「ORDID0002」であるため、抽出条件3(項目NO.1!=発注元ID)により出力ファイルに値が出力されません。

19. 変数「発注元ID」に以下の値を設定します。

発注元ID:ORDID0002 (レコード4の発注元ID)

20. 出力ファイルに以下の値を出力します。

種別

:

DATA

(固定文字列)

商品ID

:

003

(レコード4の商品ID)

商品名

:

商品C

(レコード4の商品名)

数量

:

100

(レコード4の数量)

単価

:

980

(レコード4の単価)

合計

:

100×980=98000

(「レコード4の数量」×「レコード4の単価」)

 

出力ファイルの内容は以下のとおりになります。

後処理

21. 出力ファイルに以下の値を出力します。

種別 :TAIL(固定文字列)

 

出力ファイルの内容は以下のとおりになります。