# この例題で説明する内容

ここでは、入力ファイルのデータのうち、値がすべて正常であるレコードと、値に異常があるレコードで出力先を振り分ける場合の変換例について説明します。

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

図8.106 変換例（出力するファイルの振り分け）

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

表8.17 変換例（出力するファイルの振り分け）での変換処理の順序

処理の順番 | 処理対象のレコード | 処理の内容
--- | --- | ---
対応する関係線 | 内容
1. | レコード1 | ① | 抽出条件1→変数
2. |  | ② | 抽出条件2→出力ファイル（正常）
3. |  | ③ | 抽出条件3→出力ファイル（異常）
4. | レコード2 | ① | 抽出条件1→出力ファイル
5. |  | ② | 抽出条件2→出力ファイル（正常）
6. |  | ③ | 抽出条件3→出力ファイル（異常）
7. | レコード3 | ① | 抽出条件1→出力ファイル
8. |  | ② | 抽出条件2→出力ファイル（正常）
9. |  | ③ | 抽出条件3→出力ファイル（異常）
10. | レコード4 | ① | 抽出条件1→出力ファイル
11. |  | ② | 抽出条件2→出力ファイル（正常）
12. |  | ③ | 抽出条件3→出力ファイル（異常）

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

処理対象:レコード1

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
1000001 | 振分太郎 | 1 | 10

1. 設定された関数に従って、各変数に以下の値を設定します。

社員番号フラグ | : | Y | （レコード1の社員番号が7バイトの数字であるため）
氏名フラグ | : | Y | （レコード1の氏名に半角スペースが含まれていないため）
性別フラグ | : | Y | （レコード1の性別が「1」であるため）
所属フラグ | : | Y | （レコード1の所属が2バイトの数字であるため）
フラグ結合 | : | YYYY | （社員番号フラグの値、氏名フラグの値、性別フラグの値、所属フラグの値）
判定フラグ | : | Y | （変数「フラグ結合」に「N」が含まれていないため）

2. 出力ファイル（正常）に以下の値を出力します。

社員番号 | : | 1000001 | （レコード1の社員番号）
氏名 | : | 振分太郎 | （レコード1の氏名）
性別 | : | 1 | （レコード1の性別）
所属 | : | 10 | （レコード1の所属）

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

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
1000001 | 振分太郎 | 1 | 10

3. 変数「判定フラグ」が"Y"であるため、抽出条件3（判定フラグ=N）により出力ファイル（異常）に値が出力されません。

処理対象:レコード2

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
100002 | 抽出一郎 | 1 | 20

4. 設定された関数に従って、各変数に以下の値を設定します。

社員番号フラグ | : | N | （レコード2の社員番号が7バイトの数字ではないため）
氏名フラグ | : | Y | （レコード2の氏名に半角スペースが含まれていないため）
性別フラグ | : | Y | （レコード2の性別が「1」であるため）
所属フラグ | : | Y | （レコード2の所属が2バイトの数字であるため）
フラグ結合 | : | NYYY | （社員番号フラグの値、氏名フラグの値、性別フラグの値、所属フラグの値）
判定フラグ | : | N | （変数「フラグ結合」に「N」が含まれているため）

5. 変数「判定フラグ」が"N"であるため、抽出条件2（判定フラグ=Y）により出力ファイル（正常）に値が出力されません。

6. 出力ファイル（異常）に以下の値を出力します。

社員番号 | : | 1000002 | （レコード2の社員番号）
氏名 | : | 抽出一郎 | （レコード2の氏名）
性別 | : | 1 | （レコード2の性別）
所属 | : | 20 | （レコード2の所属）

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

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
100002 | 抽出一郎 | 1 | 20

処理対象:レコード3

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
1000003 | 変換 花子 | 2 | 30

7. 設定された関数に従って、各変数に以下の値を設定します。

社員番号フラグ | : | Y | （レコード3の社員番号が7バイトの数字であるため）
氏名フラグ | : | N | （レコード3の氏名に半角スペースが含まれているため）
性別フラグ | : | Y | （レコード3の性別が「2」であるため）
所属フラグ | : | Y | （レコード3の所属が2バイトの数字であるため）
フラグ結合 | : | YNYY | （社員番号フラグの値、氏名フラグの値、性別フラグの値、所属フラグの値）
判定フラグ | : | N | （変数「フラグ結合」に「N」が含まれているため）

8. 変数「判定フラグ」が"N"であるため、抽出条件2（判定フラグ=Y）により出力ファイル（正常）に値が出力されません。

9. 出力ファイル（異常）に以下の値を出力します。

社員番号 | : | 1000003 | （レコード3の社員番号）
氏名 | : | 変換 花子 | （レコード3の氏名）
性別 | : | 2 | （レコード3の性別）
所属 | : | 30 | （レコード3の所属）

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

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
100002 | 抽出一郎 | 1 | 20
1000003 | 変換 花子 | 2 | 30

処理対象:レコード4

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
1000001 | 振分太郎 | 1 | 10
100002 | 抽出一郎 | 1 | 20
1000003 | 変換 花子 | 2 | 30
1000004 | 変数次郎 | 3 | 40

10. 設定された関数に従って、各変数に以下の値を設定します。

社員番号フラグ | : | Y | （レコード4の社員番号が7バイトの数字であるため）
氏名フラグ | : | Y | （レコード4の氏名に半角スペースが含まれていないため）
性別フラグ | : | N | （レコード4の性別が「1」または「2」ではないため）
所属フラグ | : | Y | （レコード4の所属が2バイトの数字であるため）
フラグ結合 | : | YYNY | （社員番号フラグの値、氏名フラグの値、性別フラグの値、所属フラグの値）
判定フラグ | : | N | （変数「フラグ結合」に「N」が含まれているため）

11. 変数「判定フラグ」が"N"であるため、抽出条件2（判定フラグ=Y）により出力ファイル（正常）に値が出力されません。

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

社員番号 | : | 1000004 | （レコード4の社員番号）
氏名 | : | 変数次郎 | （レコード4の氏名）
性別 | : | 3 | （レコード4の性別）
所属 | : | 40 | （レコード4の所属）

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

社員番号 | 氏名 | 性別 | 所属
--- | --- | --- | ---
100002 | 抽出一郎 | 1 | 20
1000003 | 変換 花子 | 2 | 30
1000004 | 変数次郎 | 3 | 40