0 / 0
資料の 英語版 に戻る

外部ソースステージ:出力タブのフォーマットセクションDataStage®

最終更新: 2025年3月12日
DataStage での External Source ステージ:「出力」タブの「フォーマット」セクション

「フォーマット」セクションを使用して、読み取るソース・データのフォーマットに関する情報を指定します。

このセクション・タブの形式は、「プロパティー」セクションの形式と似ています。

フォーマット設定のいずれも変更しないと、ステージは以下のフォーマットのファイルを作成します。

  • ファイルは、二重引用符で囲まれた可変長の列で構成されます。
  • すべての列は、行の最後の列を除き、コンマで区切られます。
  • 行は UNIX 改行で区切られます。

個々のプロパティーを変更するには、「レコード・レベル」セクション、「フィールドのデフォルト」セクション、または表示されているその他のセクションでオプションの値を指定します。

このタブで設定したプロパティーは、「列メタデータの編集」ダイアログ・ボックスで個々の列のプロパティーを設定することにより、列レベルでオーバーライドできます。

この説明では、「レコード」、「行」、「フィールド」、および「列」という用語を同じ意味で使用しています。

以下のセクションでは、各タイプで使用可能なプロパティー・タイプとプロパティーをリストします。

レコード・レベル

これらのプロパティーは、データ・レコードがフラット・ファイルでフォーマットされる方法の詳細を定義します。 文字を入力できる場合、通常は ASCII 文字にすることができます。 使用可能なプロパティーを以下のリストに示します。

  • 最終区切り文字。 フィールド区切り文字の代わりに、レコードの最後の桁の後に書き込まれる単一文字を指定します。 文字を入力するか、空白、終了、なし、ヌル、タブ、またはコンマのいずれかを選択してください。 IBM DataStage は、ファイルの読み取り時に、指定された区切りストリングをスキップします。 図については、次のダイアグラムを参照してください。
    • 空白。 各レコードの最後の桁には、レコードの終わりにある末尾の空白文字は含まれません。
    • 終了。 各レコードの最後の列には、フィールド区切り文字は含まれていません。 この設定がデフォルトです。
    • なし。 各レコードの最後の列には区切り文字はありません。区切り文字は固定幅フィールドに使用されます。
    • null。 各レコードの最後の列は、ASCII ヌル文字で区切られています。
    • コンマ。 各レコードの最後の列は、ASCII コンマ文字で区切られます。
    • タブ。 各レコードの最後の列は、ASCII タブ文字で区切られます。
  • インタクト。 インタクト・プロパティーは、部分スキーマの ID を指定します。 部分的なスキーマは、スキーマ内で指定された1つ以上の列のみがステージによって変更できることを指定します。 行内の他のすべての列は、未変更で渡されます。 部分スキーマが含まれているファイルは、「出力」タブの「スキーマ・ファイル」プロパティーで指定されます。 このプロパティーには従属プロパティーがあります。
    • インタクトをチェック。 ファイルがインポートされるときに部分スキーマの妥当性検査を強制するには、この設定を選択します。 この設定により、パフォーマンスが低下する可能性があります。
  • レコード区切り文字列。 各レコードの終わりに文字列を指定します。 1 文字以上を入力してください。 この設定は、デフォルトであるレコード区切り文字、およびレコード・タイプとレコード接頭部と同時に使用することはできません。
  • レコード区切り文字。 各レコードの終わりに単一文字を指定します。 文字を入力するか、以下のいずれかのオプションを選択します。
    • UNIX 改行 (UNIX Newline) (デフォルト)
    • null

      (DOS 改行を指定するには、「レコード区切り文字列」プロパティーを「¥ R ¥ N」に設定するか、メニューから「 Format as > DOS 行終了文字 」を選択します。)

      レコード区切り文字は、レコード区切り文字列、レコード接頭部、およびレコード・タイプと相互に排他的です。

  • レコード長。 固定長フィールドが読み取られる場合は「固定」を選択します。 IBM DataStage はレコードの適切な長さを計算します。 あるいは、固定レコードの長さをバイト数として指定します。 この設定はデフォルトでは使用されません(デフォルト・ファイルはコンマ区切りです)。
  • レコード接頭部。 可変長レコードの接頭部に 1 文字、2 バイト、または 4 バイトの長さの接頭部を付けることを指定します。 これはデフォルトで 1 に設定されています。 この設定は、デフォルトであるレコード区切り文字、およびレコード区切り文字ストリングとレコード・タイプと同時に使用することはできません。
  • レコード・タイプ。 可変長ブロック・レコード (可変) または暗黙レコード (暗黙的) で構成されるデータを指定します。 暗黙のプロパティーを選択すると、データは、明示的なレコード境界を持たないストリームとして書き込まれます。 スキーマによって定義されたすべての列が構文解析されると、レコードの終わりが推測されます。 可変プロパティーを使用して、IBMブロック形式またはスパン形式(V、VB、VS、VBS、またはVR)のいずれかを指定できます。 データは、以下のいずれかの形式でインポートされます。 これらの形式はエクスポートに使用できません。

    このプロパティーは、レコード長、レコード区切り文字、レコード区切り文字列、およびレコード接頭部と相互に排他的です。デフォルトでは使用されません。

フィールドのデフォルト

ファイルから読み取られる列のデフォルト・プロパティーを定義します。 これらのプロパティーはすべての列に適用されますが、「列メタデータの編集」ダイアログ・ボックスを使用して、「列」タブから個々の列についてオーバーライドすることができます。 個々の列のプロパティーをオーバーライドする一般的な理由は、コンマ区切り値(CSV)ファイルの読み取り中に発生します。 CSVファイルは、フィールドに特殊文字(フィールド区切り文字など)が含まれている可能性がある場合に、フィールドを引用符で囲むことがよくあります。 この場合は、問題の列のQuoteプロパティーをオーバーライドする必要があります。

文字を入力できる場所では、通常は ASCII 文字です。 使用可能なプロパティーは次のとおりです

  • 実際のフィールド長。 フィールドの長さが NULL フィールド長プロパティーの設定値と等しい場合に、スキップする実際のバイト数を指定します。
  • 区切り文字。 レコード内のすべてのフィールドの末尾区切り文字を指定します。 ASCII 文字を入力するか、空白、終了、なし、NULL、コンマ、またはタブのいずれかを選択してください。 IBM DataStage は読み取り時に区切り文字をスキップします。
    • 空白。 列の末尾にある空白文字は無視されます。つまり、列の一部として扱われません。
    • 終了。 フィールドの終わりは区切り文字として使用されます。つまり、別個の区切り文字はありません。 これは、固定幅の列を持つフィールドに使用される「なし」の設定とは異なります。
    • なし。 区切り文字なし (固定幅で使用されます)。
    • null。 ASCII ヌル文字が使用されます。
    • コンマ。 ASCII コンマ文字が使用されます。
    • タブ。 ASCII タブ文字が使用されます。
  • 区切り文字列。 各フィールドの末尾に文字列を指定します。 1 文字以上を入力してください。 これは「区切り文字」(デフォルト) と一緒には使用できません。 例えば、「, 」 (コンマ・スペース - 逆コンマの入力は不要) を指定すると、個々のフィールドについてオーバーライドされない限り、各フィールドは「, 」で区切られます。 IBM DataStage は、読み取り時に区切り文字列をスキップします。
  • NULL フィールド長。 NULL を含む可変長フィールドの長さ (バイト)。 可変長フィールドが読み取られると、ソース・フィールドの NULL フィールド長の長さは、NULL を含んでいることを示します。 このプロパティーは、NULL フィールド値と同時には使用できません。
  • NULL フィールド値。 ソースがヌルに設定されている場合にヌル・フィールドに与えられる値を指定します。 数値、文字列、または C タイプのリテラル・エスケープ文字にすることができます。 例えば、バイト値を \ooo (各 o は 8 進数の 0〜7 で最初の o は< 4) で表すか、\xhh (各 h は 16 進数の 0〜F) で表すことができます。 印刷不能バイト値をエンコードするには、この形式を使用する必要があります。

    このプロパティーは、NULL フィールド長および実際の長さと同時に使用できません。 固定幅データ表現の場合、指定した値がフィールドの固定幅より短い場合に、埋め込み文字を使用して、反復後書き文字を指定することができます。(タイプ・デフォルトの一般セクションの場合)。

    NULLを表す列に含まれる可能性があるNULL値のリストを指定できます。 依存するヌル・フィールド値分離文字プロパティーに区切り文字を指定してから、この区切り文字を使用してヌル・フィールド値プロパティーのヌル値を区切ります。 例えば、NULL フィールド値区セパレーター をスラッシュ文字 (/) を含むように設定すると、NULL/null/NUL/NUL/nul を指定して、これらの文字列のいずれかがこの列で NULL 値を表すことができるように指定することができます。

  • NULL フィールド値セパレーター

    これは、NULL フィールド値の従属プロパティーです。 ヌル・フィールド値プロパティーで使用できる区切り文字を指定して、NULL値を表す可能性のある値の範囲を指定できます。 セパレーターとして、数値、文字列、または C タイプのリテラル・エスケープ文字 (NULL フィールド値の場合) を指定できますが、コンマ (,) やスラッシュ (/) 文字などの単一文字が最良です。 区切り文字は、ヌル・フィールド値に複数の値を指定する場合にのみ指定する必要があります。区切り文字を使用せずに指定すると、ランタイム・エラーが発生します。

  • 接頭部バイト。 このオプションは、可変長フィールドで使用できます。 可変長フィールドは、文字で区切るか、フィールド長を含む、1バイト、2バイト、または、4バイトの接頭部を前に付けることができます。 IBM DataStage は、接頭部の長さを読み取りますが、接頭部をファイルから読み取るデータ・セット内のセパレーター・フィールドとしては含んでいません。

    このプロパティーは、デフォルトで使用される「区切り文字」プロパティー、「引用符」プロパティー、「最終区切り文字」プロパティーと一緒には使用できません。

  • 印刷フィールド。 このプロパティーは、ジョブのデバッグ用に使用します。 IBM DataStage が読み取るすべてのフィールドに対してメッセージを生成するように設定します。 メッセージのフォーマットは次のとおりです。
    Importing N: D
    ここで、
    • N はフィールド名です。
    • D は、フィールドのインポートされたデータです。 D日に含まれる印刷不能文字には、接頭部としてエスケープ文字が付き、Cストリング・リテラルとして書き込まれます。フィールドにバイナリー・データが含まれる場合は、8進形式で出力されます。
  • 引用符。 可変長フィールドを単一引用符、二重引用符、または別の文字または文字のペアで囲むことを指定します。 「単一」または「二重」を選択するか、あるいは文字を入力してください。 これは、デフォルトでは二重引用符に設定されています。

    読み取り時には、IBM DataStageは、先頭の引用符文字を無視し、末尾の引用符文字まで(末尾の引用符は含まない)のすべてのバイトを読み取ります。

  • ベクトル接頭部。 可変長ベクトルのフィールドの場合は、1バイト、2バイト、または、4バイトの接頭部に、ベクトル内のエレメントの数が含まれることを指定します。 個々のベクトルのこのデフォルト接頭部はオーバーライドすることができます。

    可変長ベクトルでは、ベクトル内のエレメントの数を指定するために、ベクトル上の接頭部または別のフィールドへのリンクのいずれかを使用する必要があります。 可変長ベクトルに接頭部がある場合は、このプロパティーを使用して接頭部の長さを指定します。 IBM DataStage は、長さ接頭部を読み取りますが、それをデータ・セット内の個別フィールドとしては含みません。 デフォルトでは、接頭部の長さは、1バイトであると想定されます。

タイプのデフォルト

これらのプロパティーは、列レベルで特にオーバーライドされない限り、特定のデータ・タイプのすべての列に適用されます。 これらは、データ型に応じていくつかのサブグループに分割されます。

一般

これらのプロパティーは、いくつかのデータ型に適用されます (列レベルでオーバーライドされていない限り)。
  • バイト・オーダー。 複数のバイト・データ型 (文字列とロウ・データ型を除く) を順序付けする方法を指定します。 以下の中から選択してください。
    • リトル・エンディアン。 高位バイトは右側にあります。
    • ビッグ・エンディアン。 高位バイトは左側にあります。
    • ネイティブ・エンディアン。 マシンのネイティブ・フォーマットによって定義されたとおり。 これはデフォルトです。
  • データ形式。 これは、列のデータ表現フォーマットを指定します。 ストリング、ustring、およびrawを除くすべてのデータ・タイプのフィールドに適用され、ストリングでもrawでもない、少なくとも1つのフィールドを含むレコード、サブレコード、またはタグ付きフィールドに適用されます。 以下の中から選択してください。
    • バイナリー
    • テキスト (デフォルト)

      バイナリーの設定は、異なるデータ型に適用する場合、意味が異なります。

    • 10 進数の場合、バイナリーはパックを表します。
    • 他の数値データ・タイプの場合、バイナリーは「テキストなし」を意味します。
    • 日付の場合、バイナリーは、データ・フィールドに対してユリウス・プロパティーを指定するのと同等です。
    • 時間の場合、バイナリーは、midnight_seconds に相当します。
    • タイム・スタンプの場合、バイナリーは、最初の整数にタイム・スタンプの日付部分のユリウス日カウントが含まれていることを指定し、2 番目の整数は、タイムスタンプの時刻部分を午前 0 時からの秒数として指定します。 バイナリー・タイム・スタンプでは、2 つの 32 ビット整数が書き込まれます。

      デフォルトでは、データは次のようにテキスト形式になります。

    • 日付データ型の場合、テキストは、読み取られるデータに %yyyy-%mm-%dd 形式、またはNLSシステムで新しい日付を定義した場合はデフォルトの日付形式の、テキストベースの日付が含まれることを指定します。
    • 10 進数データ型の場合: フィールドは、先行スペースがある文字列フォーマットの 10 進数を表すか、「-」の後に小数点以下の 10 進数が続き、小数点がゼロでない場合には小数点が埋め込まれます。 宛先文字列の形式は、[+ | -]ddd.[ddd] で、その精度およびスケールの引数は無視されます。
    • 数値フィールドの場合 (int8、int16、int32、uint8、uint16、uint32、sfloat、および dfloat): IBM DataStage は、数値フィールドがテキストとして表現されることを想定しています。
    • 時刻データ・タイプの場合: text は、フィールドがテキスト・ベースの形式 %hh: %nn:%ss で時刻を表すことを指定します。
    • タイム・スタンプ・データ・タイプの場合: text は、%yyyy-%mm-%dd %hh: %nn:%ss の形式でテキスト・ベースのタイム・スタンプを指定します。
  • フィールドの最大幅。 ストリングとして表される、列内の最大バイト数。 数値を入力してください。 これは、数値をテキストとして保管する場合に役立ちます。 固定幅の文字セットを使用している場合は、長さを正確に計算できます。 可変長文字セットを使用している場合は、フィールドに十分な最大幅を計算します。 これは、日付、時刻、タイム・スタンプ、およびローを除くすべてのデータ・タイプのフィールドに適用されます。また、このタイプのフィールドが少なくとも 1 つ含まれている場合は、レコード、サブレコード、またはタグ付きも対象外となります。
  • フィールド幅。 ストリングとして表される、フィールド内のバイト数。 数値を入力してください。 これは、数値をテキストとして保管する場合に役立ちます。 固定幅の文字セットを使用している場合は、バイト数を正確に計算できます。 可変長エンコード方式の場合は、可変幅文字の幅と頻度に基づいて計算します。 これは、日付、時刻、タイム・スタンプ、およびローを除くすべてのデータ・タイプのフィールドに適用されます。また、このタイプのフィールドが少なくとも 1 つ含まれている場合は、レコード、サブレコード、またはタグ付きも対象外となります。

    フィールド幅もフィールドの最大幅も指定しない場合、テキストとして書き込まれる数値フィールドは、次のバイト数を最大幅として使用します。

    • 8 ビット符号付きまたは符号なし整数: 4 バイト
    • 16 ビット符号付きまたは符号なし整数: 6 バイト
    • 32 ビット符号付きまたは符号なし整数: 11 バイト
    • 64 ビット符号付きまたは符号なし整数: 21 バイト
    • 単精度浮動小数点: 14 バイト (符号、数字、小数点、7 桁、「E」、符号、2 指数)
    • 倍精度浮動小数点 : 24 バイト (符号、数字、小数点、16 部分、「E」、符号、 3 指数)
  • 埋め込み文字。 このプロパティーは、出力リンクでは無視されます。
  • 文字セット。 文字セットを指定します。 ASCII または EBCDIC を選択します。 デフォルトは CSIF です。 ロウおよび ustring を除くすべてのデータ型に適用され、ロウまたは ustring 以外のフィールドを含まないレコード、subrec、またはタグが適用されます。

String

これらのプロパティーは、列レベルでオーバーライドされない限り、文字列データ型の列に適用されます。
  • EBCDIC を ASCII としてエクスポート。 出力リンクには関係ありません。
  • ASCII を EBCDIC としてインポート。 ASCII 文字を EBCDIC 文字として読み取るように指定する場合に選択します。

10 進数

これらのプロパティーは、列レベルでオーバーライドされない限り、10 進数のデータ・タイプの列に適用されます。
  • すべてゼロを許可。 これは、すべてゼロを含むパック 10 進数列 (通常は正しくない) をゼロの有効な表現として扱うかどうかを指定します。 「はい」または「いいえ」を選択します。 デフォルトは「いいえ」です。
  • 小数点。 小数点として機能する文字 (デフォルトではピリオド) を指定します。
  • パック。 10 進数列に含まれる内容を指定するオプションを選択します。以下から選択します。
    • 「はい (Yes)」: 10 進数フィールドにパック 10 進数形式 (デフォルト) のデータを含めることを指定する場合。 これには、以下のサブプロパティーがあります。

      確認: データがパックされていることを確認する場合は「はい」を選択し、確認しない場合は「いいえ」を選択します。

      符号付き (Signed)。 10 進数列の書き込み時に既存の符号を使用する場合は「はい (Yes)」を選択します。 列の実際の符号値に関係なく正符号 (0xf) を書き込む場合は「いいえ (No)」を選択します。

    • いいえ (別個) (No (separate)): 別個の符号バイトを持つアンパック 10 進数を含んでいる場合。 これには、以下のサブプロパティーがあります。

      符号位置。 必要に応じて「先頭 (leading)」または「末尾 (trailing)」を選択します。

    • いいえ (ゾーニング) (No (zoned)): ASCII テキストまたは EBCDIC テキストのいずれかでアンパック 10 進数が含まれていることを指定する場合。 これには、以下のサブプロパティーがあります。

      符号位置。 必要に応じて「先頭 (leading)」または「末尾 (trailing)」を選択します。

    • 「いいえ」(オーバーパンチ)を指定すると、フィールドの先頭または末尾のバイトには、そのバイトの数値と、数値全体が負の符号付きか正の符号付きかの両方を指定する文字が含まれます。 これには、以下のサブプロパティーがあります。

      符号位置。 必要に応じて「先頭 (leading)」または「末尾 (trailing)」を選択します。

  • 精度。 パック 10 進数の精度を指定します。 数値を入力してください。
  • 丸め。 これは、ソース・フィールドを 10 進数に読み取るときに宛先の 10 進数に合うようにソース・フィールドを丸める方法を指定します。 以下の中から選択してください。
    • 上 (天井)。 ソース列を正の無限大方向に切り捨てます。 このモードは「IEEE 754 切り上げ」モードに対応しています。 例えば、1.4 は 2 になり、 -1.6 は -1 になります。
    • 下 (フロア)。 ソース列を負の無限大の方向に切り捨てます。 このモードは「IEEE 754 切り捨て」モードに対応しています。 例えば、1.6 が 1 になると、-1.4 が -2になります。
    • 最も近い値。 ソース列を最も近い表現可能な値の方向に丸めます。 このモードは「COBOL ROUNDED」モードに対応しています。 例えば、1.4 は 1 になり、1.5 は 2 になり、-1.4 は -1 になり、-1.5 は -2 になります。
    • ゼロの方向に切り捨てる。 これはデフォルトです。 符号に関係なく、宛先でサポートされる最も右の小数桁の右側の小数桁を破棄します。 例えば、宛先が整数の場合は、すべての小数桁が切り捨てられます。 宛先が、より小さいスケールを持つ別の 10 進数である場合は、宛先の 10 進数のスケール・サイズに切り捨てます。 このモードは COBOL INTEGER-PART 関数に対応しています。 この方式を使用した場合、1.6 は 1 になり、-1.6 は -1 になります。
  • スケール. ソース・パック 10 進数のスケールを指定します。

数値

これらのプロパティーは、列レベルでオーバーライドされない限り、整数フィールドと浮動フィールドに適用されます。
  • C フォーマット。 ストリング・データから整数または浮動小数点へのデータのデフォルト以外の変換を実行します。 このプロパティーは、整数または浮動小数点ストリングの読み取りに使用される、C言語フォーマット・ストリングを指定します。 これは sscanf() に渡されます。例えば、C フォーマットの %x を指定し、フィールド幅 8 を指定すると、32 ビットの整数が 8 バイトの 16 進数文字列としてフォーマットされるようになります。
  • In_format。 ストリングから整数または浮動小数点データへのデータの変換に使用される書式制御ストリング。これは、sscanf()に渡されます。デフォルトでは、IBM DataStageは、Csscanf()関数を起動して、ストリングとしてフォーマット設定された数値フィールドを整数または浮動小数点データに変換します。 この関数がデータを満足のいくフォーマットで出力しない場合は、in_format プロパティーを指定して、フォーマット引数を sscanf() に渡すことができます。
  • Out_format。 このプロパティーは、出力リンクには関係ありません。

日付

これらのプロパティーは、列レベルでオーバーライドされない限り、日付データ型の列に適用されます これらはすべて、テキストのデータ形式設定とは互換性がありません。
  • 以降の日数. 日付は、指定された日付以降の日数を含む符号付き整数として書き込まれます。 NLS システムで新しい日付を定義した場合は、%yyyy-%mm-%dd 形式またはデフォルトの日付形式で日付を入力してください。
  • 書式制御ストリング。 日付の文字列フォーマット。 デフォルトでは、これは %yyyy-%mm-%dd です。
  • ユリウス暦。 これは、ユリウス日を含む数値として日付が書き込まれることを指定する場合に選択します。 ユリウス日は、西暦紀元前 4713 年 1 月 1 日 12:00 (正午) GMT からの日数として日付を指定します。

時刻

これらのプロパティーは、列レベルでオーバーライドされない限り、時刻データ型の列に適用されます これらはすべて、テキストのデータ形式設定とは互換性がありません。
  • 書式制御ストリング。 時刻をストリングとして表す列のフォーマットを指定します。 デフォルトでは、%hh-%mm-%ss です。
  • midnight seconds です。 これは、直前の午前 0 時から経過した時間 (秒) を含む 2 進 32 ビット整数として時刻が書き込まれることを指定する場合に選択します。

タイム・スタンプ

これらのプロパティーは、列レベルでオーバーライドされない限り、タイムスタンプ・データ型の列に適用されます。
  • 書式制御ストリング。 タイム・スタンプをストリングとして表す列のフォーマットを指定します。 このフォーマットは、日付ストリングおよび時刻ストリングのフォーマットを結合します。