# 複数の出力コンポーネントの定義

この例では、3つのtLogRowコンポーネントを使用して、未処理レコード、承認されたレコード、およびリジェクトされたレコードをそれぞれテーブル形式で表示し、tJavaコンポーネントを使用して要約情報を表示します。これらのコンポーネントを定義するには、以下の手順に従います。

## 手順

1. 次のスクリプトコードを入力して、最初のtLogRowコンポーネントを追加および定義します。

   このコンポーネントは、tReplicateコンポーネントと同じスキーマ構造を持つ必要があります。
   ```
   // print unprocessed records
   addComponent {
   	setComponentDefinition {
   		TYPE: "tLogRow",
   		NAME: "tLogRow_1",
   		POSITION: 512, 160
   	}
   	setSettings {
   		BASIC_MODE : "false",
   		TABLE_PRINT : "true",
   		VERTICAL : "false",
   		PRINT_UNIQUE : "true",
   		LABEL : "unprocessed_records"
   	}
   	addSchema {
   		NAME: "tLogRow_1",
   		CONNECTOR: "FLOW"
   		addColumn {
   			NAME: "name",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "gender",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "age",
   			TYPE: "id_Integer",
   			LENGTH: 2
   		}
   		addColumn {
   			NAME: "city",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "marriageStatus",
   			TYPE: "id_String"
   		}
   	}
   }
   ```
2. 次のスクリプトコードを入力して、2番目のtLogRowコンポーネントを追加および定義します。

   このコンポーネントは、tFilterRowコンポーネントのACCEPTフローと同じスキーマ構造を持つ必要があります。
   ```
   // print accepted records
   addComponent {
   	setComponentDefinition {
   		TYPE: "tLogRow",
   		NAME: "tLogRow_2",
   		POSITION: 832, 224
   	}
   	setSettings {
   		BASIC_MODE : "false",
   		TABLE_PRINT : "true",
   		VERTICAL : "false",
   		PRINT_UNIQUE : "true",
   		LABEL : "accepted_records"
   	}
   	addSchema {
   		NAME: "tLogRow_2",
   		CONNECTOR: "FLOW"
   		addColumn {
   			NAME: "name",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "gender",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "age",
   			TYPE: "id_Integer",
   			LENGTH: 2
   		}
   		addColumn {
   			NAME: "city",
   			TYPE: "id_String"
   		}
   	}
   }
   ```
3. 次のスクリプトコードを入力して、3番目のtLogRowコンポーネントを追加および定義します。

   このコンポーネントは、tFilterRowコンポーネントのREJECTEDフローと同じスキーマ構造を持つ必要があります。
   ```
   // print rejected records
   addComponent {
   	setComponentDefinition {
   		TYPE: "tLogRow",
   		NAME: "tLogRow_3",
   		POSITION: 832, 288
   	}
   	setSettings {
   		BASIC_MODE : "false",
   		TABLE_PRINT : "true",
   		VERTICAL : "false",
   		PRINT_UNIQUE : "true",
   		LABEL : "rejected_records"
   	}
   	addSchema {
   		NAME: "tLogRow_3",
   		CONNECTOR: "FLOW"
   		addColumn {
   			NAME: "name",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "gender",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "age",
   			TYPE: "id_Integer",
   			LENGTH: 2
   		}
   		addColumn {
   			NAME: "city",
   			TYPE: "id_String"
   		}
   		addColumn {
   			NAME: "errorMessage",
   			TYPE: "id_String",
   			NULLABLE: true,
   			LENGTH: 255,
   			PRECISION: 0
   		}
   	}
   }
   ```

   情報メモ警告:

   errorMessageカラムが必須です。REJECTED出力フローの固定プロパティを含みます。
4. 次のスクリプトコードを入力して、tJavaコンポーネントを追加および定義します。

   このコンポーネントはtLogRowコンポーネントのグローバル変数を呼び出して、それぞれが処理した行数を表示します。このコンポーネントに対してはスキーマカラムを定義する必要はありませんが、実行するJavaコードをsetSettings {}関数に指定する必要があります。
   ```
   // print summary
   addComponent {
   	setComponentDefinition {
   		TYPE: "tJava",
   		NAME: "tJava_1",
   		POSITION: 160, 416
   	}
   	setSettings {
   		CODE : "System.out.println(\"\\n\" +
   \"Total number of records    : \"+globalMap.get(\"tLogRow_1_NB_LINE\") + \"\\n\" +
   \"Number of records accepted : \"+globalMap.get(\"tLogRow_2_NB_LINE\") + \"\\n\" +
   \"Number of records rejected : \"+globalMap.get(\"tLogRow_3_NB_LINE\") + \"\\n\" + \"\\n\" );",
   		LABEL : "print_summary"
   	}
   	addSchema {
   		NAME: "tJava_1",
   		CONNECTOR: "FLOW"
   	}
   }
   ```

   情報メモ警告:

   メタ文字を指定する場合、必ずバックスラッシュ(\)を使用してください。