機械翻訳について

数値、日付および通貨の書式設定

この項では、数値、日付および通貨の書式設定の詳細を説明します。

次のトピックが含まれます:

数値のフォーマット

「パブリッシャ」では、数値書式を指定するための2つのメソッドがサポートされています。

  • Oracleのformat-number関数(推奨)。

  • Microsoft Wordのネイティブ数値書式マスク。

ノート:

ネイティブXSLのformat-number関数を使用して、数値を書式設定することもできます。 詳細は、「ネイティブXSL番号の書式設定」を参照してください。

次のいずれかのメソッドのみを使用してください。 両方のメソッドを使用して数値書式マスクを指定した場合、データは2回書式設定され、予期しない動作が発生します。

グループ・セパレータと数値セパレータは、テンプレート・ロケールに基づいて実行時に設定されます。 en-US以外のロケールで作業している場合、またはテンプレートで翻訳が必要な場合は、Oracle書式マスクを使用します。

データ・ソース要件

Oracle書式マスクまたはMicrosoft書式マスクを使用するには、データ・ソースの数値は、書式を適用せずにRAW書式である必要があります(たとえば、: 1000.00 ). ヨーロッパ諸国の番号が書式設定されている場合(例: : 1.000、00)の場合、フォーマットは機能しません。

「パブリッシャ」パーサーには、JavaのBigDecimal文字列表現が必要です。 これは、オプションの符号("-")のあとに0個以上の10進数のシーケンス(整数)が続き、オプションでそのあとに小数部が続き、オプションで指数が続きます。 次に例を示します: -123456.3455 e-3.

ローカリゼーションに関する考慮事項

en-US以外のロケールで作業している場合、またはテンプレートで翻訳が必要な場合は、Oracle書式マスクを使用します。

Microsoft書式マスクは、テンプレートが異なるロケール設定で実行される予期しない結果を生成する可能性があります。

書式マスクに「%」を含めないでください。パーセント記号のロケーションは数値表示に固定され、目的のロケーションはロケールに応じて数値の先頭または末尾に固定されます。

Microsoft数値書式マスクの使用

数値を書式設定するには、「テキスト・フォーム・フィールド・オプション」ダイアログで使用可能なMicrosoft Wordのフィールド書式設定機能を使用します。

フォーム・フィールドに数値書式を適用するには:

  1. プレースホルダー・フィールドの「フォーム・フィールド・オプション」ダイアログを開きます。
  2. 「タイプ」をNumberに設定します。
  3. オプションのリストから適切な「数値書式」を選択します。

サポートされているMicrosoft書式マスク定義

いくつかの書式マスク定義を使用して、出力を標準化できます。

次の表に、サポートされているMicrosoft書式マスクの定義を示します。

記号 事業所 意味

0

数値

明示的に設定された各0は、その位置にほかの番号が入っていない場合に表示されます。

例:

書式マスク: 00.0000

データ: 1.234

表示: 01.2340

#

数値

#に設定すると、受信データのみが表示されます。

例:

書式マスク: ##.####

データ: 1.234

表示: 1.234

.

数値

小数点セパレータの位置を決定します。 使用される小数点記号は、テンプレート・ロケールに基づいて実行時に決定されます。

例:

書式マスク: #,## 0.00

データ: 1234.56

英語ロケールで表示: 1, 234.56

ドイツ語ロケールで表示: 1.234,56

-

数値

マイナス数値のマイナス記号の配置を決定します。

,

数値

グループ化セパレータの配置を決定します。 使用されるグループ化区切り記号は、テンプレート・ロケールに基づいて実行時に決定されます。

例:

書式マスク: #,## 0.00

データ: 1234.56

英語ロケールで表示: 1, 234.56

ドイツ語ロケールで表示: 1.234,56

E

数値

mantissaとexponentを科学表記で区切ります。

例:

0.###E+0のプラス記号は、常に正の数で表示されます

0.###E-0プラス記号は正の数値には表示されません

;

サブパターン境界

正と負のサブパターンを区切ります。 表の後のノートを参照してください。

%

プレフィクスまたはサフィクス

100で乗算し、パーセントとして表示

'

プレフィクスまたはサフィクス

プリフィクスまたはサフィクスの特殊文字を引用符で囲みます。

ノート:

サブパターン境界: パターンには、正および負のサブパターンが含まれます(例: "#,##0.00;(#,##0.00) ")。 各サブパターンには、プリフィクス、数値部およびサフィクスが含まれます。 負のサブパターンはオプションです。 存在しない場合、先頭にローカライズされたマイナス記号(ほとんどのロケールでは「-」)が付いた正のサブパターンが、負のサブパターンとして使用されます。 つまり、「0.00」のみは「0.00 ;-0.00」と同じです。 明示的な負のサブパターンがある場合、負のプレフィクスとサフィクスを指定するだけです。 桁数、最小桁数およびその他の特性は、すべて正のパターンと同じです。 つまり、"#、## 0.0 #;(#)"は、"#,##0.0#;(#,##0.0#) "と同じ動作を正確に生成します。

Oracle書式マスクの使用

フォーム・フィールドでOracle書式マスクを使用できます。

Oracle書式マスクをフォーム・フィールドに適用するには:

  1. プレースホルダー・フィールドの「フォーム・フィールド・オプション」ダイアログ・ボックスを開きます。
  2. 「タイプ」を「標準テキスト」に設定します。
  3. 「フォーム・フィールドのヘルプ・テキスト」フィールドに、次の例に従ってマスク定義を入力します:

    <?format-number:fieldname;'999G999D99'?>

    where

    「フィールド名」は、書式設定するデータ要素のXMLタグ名です

    999G999D99 マスク定義です。

    次の図は、データ要素"empno"の「フォーム・フィールドのヘルプ・テキスト」ダイアログ・エントリの例を示しています。

    サポートされているOracle数値書式マスクの記号とその定義:

    • 0 - Digit. 明示的に設定された各0は、その位置にほかの番号が入っていない場合に表示されます。 例: 書式マスク: 00.0000データ: 1.234表示: 01.2340
    • 9 - Digit. 正の場合は先頭のスペース、負の場合は先頭のマイナスで指定した桁数の値を返します。 ゼロ値を除き、先頭のゼロは空白で、固定小数点の整数部分にゼロを返します。 例: 書式マスク: 99.9999データ: 1.234表示: 1.234
    • C - 指定した位置にISO通貨記号を返します。
    • D - 小数点セパレータの配置を決定します。 使用される小数点記号は、テンプレート・ロケールに基づいて実行時に決定されます。 次に例を示します: 書式マスク: 9G999D99データ: 1234.56英語ロケールで表示: 1、234.56ドイツ語ロケールの表示: 1.234,56
    • EEEE - 科学表記で値を返します。
    • G - グループ化(千単位)セパレータの配置を決定します。 使用されるグループ化区切り記号は、テンプレート・ロケールに基づいて実行時に決定されます。 次に例を示します: 書式マスク: 9G999D99データ: 1234.56英語ロケールで表示: 1、234.56ドイツ語ロケールの表示: 1.234,56
    • L - 指定された位置のローカル通貨記号を返します。
    • MI - 負の値を末尾に"-"で表示します。
    • PR - <>で囲まれた負の値を表示します。
    • PT - (で囲まれた負の値を表示します。
    • S (数字の前) - 先頭に「+」を、負の値の前に「-」を付けて正の値を表示します。
    • S (数字の後) - 末尾に「+」が付いた正の値と、末尾に「-」が付いた負の値を表示します。

日付の書式設定

「パブリッシャ」では、日付書式を指定するための3つのメソッドがサポートされています。

  • Microsoft Wordのネイティブ日付書式マスクを使用して、明示的な日付書式マスクを指定します。

  • Oracleのformat-date関数を使用して明示的な日付書式マスクを指定します。

  • Oracleの抽象日付書式マスクを使用して、抽象日付書式マスクを指定します。 (多言語テンプレートに推奨されます。)

1つのメソッドのみを使用します。 OracleとMSの両方の書式マスクが指定されている場合、データは2回フォーマットされるため、予期しない動作が発生します。

データ・ソース要件

Microsoft書式マスクまたはOracle書式マスクを使用するには、XMLデータ・ソースの日付が標準書式である必要があります。

フォーマットは次のとおりです:

YYYY-MM-DDThh:mm:ss+HH:MM

where

  • YYYYは年

  • MMは月

  • DDは日

  • Tは、日付と時間コンポーネントのセパレータです

  • hhは、24時間形式の時間です

  • mmは分

  • ssは秒です

  • +HH:MMは、協定世界時(UTC)またはグリニッジ標準時からのタイム・ゾーン・オフセットです

この構成の例は次のとおりです:

2005-01-01T09:30:10-07:00

"T"より後のデータはオプションであるため、次の日付: 2005-01-01いずれかの日付書式オプションを使用して書式設定できます。

ノート:

時間コンポーネントおよびタイム・ゾーン・オフセットがXMLソース日付に含まれていない場合、「パブリッシャ」はUTCの12:00 AM (つまり、yyyy-mm-ddT00:00:00-00:00)を表します。

Microsoft日付書式マスクの使用

日付値を書式設定するには、「フォーム・フィールド・オプション」ダイアログで使用可能なMicrosoft Wordのフィールド書式設定機能を使用します。

フォーム・フィールドに日付書式を適用するには:

  1. プレースホルダー・フィールドの「フォーム・フィールド・オプション」ダイアログ・ボックスを開きます。
  2. 「タイプ」を日付、現在の日付または現在の時間に設定します。
  3. オプションのリストから適切な「日付書式」を選択します。

「日付書式」フィールドにマスクを指定しない場合、抽象書式マスク"MEDIUM"がデフォルトとして使用されます。

サポートされているMicrosoft日付書式マスク:

  • d - 月の日。 1桁の日には先頭にゼロがありません。
  • dd - 月の日。 1桁の日には先頭にゼロが付きます。
  • ddd - AbbreviatedDayNamesで定義された曜日の短縮名。
  • dddd - DayNamesで定義されている曜日の完全な名前。
  • M - 数値の月。 1桁の月には先頭にゼロがありません。
  • MM - 数値の月。 1桁の月には前ゼロがあります。
  • MMM - AbbreviatedMonthNamesで定義されている月の短縮名。
  • yy - 世紀のない年。 世紀のない年が10未満の場合、その年は先頭にゼロで表示されます。
  • yyyy - 4桁の年。
  • gg - 期間または年号。 書式設定する日付に期間または年号文字列が関連付けられていない場合、このパターンは無視されます。
  • h - 12時間制の時間。 1桁の時間には前ゼロがありません。
  • H - 24時間制の時間。 1桁の時間には前ゼロがありません。
  • HH - 24時間制の時間。 1桁の時間には先行ゼロがあります。
  • m - 分。 1桁の分には先頭にゼロがありません。
  • mm - 分。 1桁の分は前にゼロが付きます。
  • s - 2番目。 1桁の秒には先頭にゼロがありません。
  • ss - 2番目。 1桁の秒は先頭にゼロが付きます。
  • f - 秒単位の小数を1桁で表示します。
  • ff - 2桁で表される秒の小数を表示します。
  • fff - 3桁で表される秒の小数を表示します。
  • ffff - 4桁で表される秒の小数を表示します。
  • fffff - 5桁で表される秒数の分数を表示します。
  • ffffff - 6桁で表される秒数の分数を表示します。
  • fffffff - 7桁で表される秒数の分数を表示します。
  • tt - AMDesignatorまたはPMDesignatorで定義されたAM/PM指示子(ある場合)。
  • z - システムの現在のタイムゾーンのタイムゾーン・オフセットを時間単位で表示します。 (この要素は書式設定にのみ使用できます)
  • zz - システムの現在のタイムゾーンのタイムゾーン・オフセットを時間単位で表示します。 (この要素は書式設定にのみ使用できます)
  • zzz - システムの現在のタイムゾーンのタイムゾーン・オフセットを時間と分単位で表示します。
  • : - TimeSeparatorで定義されたデフォルトの時間セパレータ。
  • / - DateSeparatorで定義されたデフォルトの日付セパレータ。
  • ' - 引用符で囲まれた文字列。 2つの'文字の間の任意の文字列のリテラル値を表示します。
  • " - 引用符で囲まれた文字列。 2つの"文字の間の任意の文字列のリテラル値を表示します。

Oracle書式マスクの使用

Oracle書式マスクを使用して、日時の表示方法を指定します。

Oracle書式マスクを日付フィールドに適用するには:

  1. プレースホルダー・フィールドの「フォーム・フィールド・オプション」ダイアログ・ボックスを開きます。
  2. 「タイプ」を標準テキストに設定します。
  3. 「ヘルプ・テキストの追加...」ボタンを選択して、「フォーム・フィールドのヘルプ・テキスト」ダイアログを開きます。
  4. 次の構文を挿入して日付書式マスクを指定します:

    <?format-date:date_string; 'ABSTRACT_FORMAT_MASK';'TIMEZONE'?>

    または

    <?format-date-and-calendar:date_string; 'ABSTRACT_FORMAT_MASK';'CALENDAR_NAME';'TIMEZONE'?>

    タイム・ゾーンはオプションです。 次に、書式マスク、カレンダおよびタイムゾーンの詳細な使用方法について説明します。

    書式マスクが指定されていない場合、抽象書式マスク「MEDIUM」がデフォルトとして使用されます。

    フォーム・フィールドのヘルプ・テキスト・エントリの例:

    <?format-date:hiredate;'YYYY-MM-DD'?>

    「サポートされているOracle」書式マスクの記号:

    ノート:

    Excel2007出力(.xlsx)は次の書式マスクをサポートしていません: E, EE, W, WW, X, XX. これらをRTFテンプレートで使用し、Excel2007出力を生成した場合、これらの書式のいずれかの日付は表示できません。 これらの書式マスクの組合せの中には、Excel2007 (.xlsx)出力を開いたときにエラーになるものがあります。
    • - / , . ; : "text" - 句読点と引用符で囲まれたテキストが結果に再現されます。
    • AD A.D. - 期間ありまたは期間なしのADインジケータ。
    • AM A.M. - 期間ありまたは期間なしのメリディアン・インジケータ。
    • BC B.C. - 期間ありまたは期間なしのBCインジケータ。
    • CC - Century. たとえば、2002は21を返し、2000は20を返します。
    • DAY - 空白を9文字まで埋め込んだ曜日の名前。
    • D - 曜日(1-7)。
    • DD - 日付(1-31)。
    • DDD - 日付(1-366)。
    • DL - 長い日付書式で値を返します。
    • DS - 短い日付書式で値を返します。
    • DY - 曜日の短縮名。
    • E - 短縮された年号の名前。
    • EE - 氏名。
    • FF[1..9] - 小数秒。 FFの後ろの数字1から9を使用して、返される日時値の小数秒部分の桁数を指定します。 例 : 'HH:MI:SS.FF3'
    • HH - 時間(1-12)。
    • HH12 - 時間(1-12)。
    • HH24 - 時間(0-23)。
    • MI - 分(0-59)。
    • MM - 月(01-12、1月= 01)。
    • MON - 月の短縮名。
    • MONTH - 空白を9文字まで埋め込んだ月の名前。
    • PM P.M. - 期間ありまたは期間なしのメリディアン・インジケータ。
    • RR - 21世紀には2桁のみを使用して20世紀の日付を保存できます。
    • RRRR - 端数処理年。 4桁または2桁の入力を受け入れます。 2桁の場合は、RRと同じ戻り値を指定します。 この機能を使用しない場合は、4桁の年を入力します。
    • SS - 秒(0-59)。
    • TZD - 夏時間情報。 TZD値は、夏時間情報を含む短縮タイムゾーン文字列です。 TZRで指定されたリージョンに対応している必要があります。 例: PST (太平洋標準時)、PDT (太平洋夏時間)
    • TZH - タイム・ゾーン時間。 (「TZMを参照」書式要素)
    • TZM - タイム・ゾーン(分)。 (「TZHを見る」書式要素) 例 : 'HH:MI:SS.FFTZH:TZM'
    • TZR - タイム・ゾーン・リージョン情報。 値は、データベースでサポートされているタイム・ゾーン・リージョンのいずれかである必要があります。 例: PST (太平洋標準時間)
    • WW - 年の初日に第1週が始まり、その年の7日目まで続く年の週(1から53)。
    • W - 月の週(1から5)。週1は月の初日に始まり、7日に終了します。
    • X - ローカル基数文字。
    • YYYY - 4-digit year.
    • YY Y - 過去2、または年度の1 digit(s)。

デフォルト・フォーマット・マスク

MSメソッドまたはOracleメソッドのいずれかで書式マスクを指定しない場合は、マスク定義を省略してデフォルトの書式マスクを使用できます。 デフォルトの書式マスクは、OracleのMEDIUM抽象書式マスクです。

Microsoftメソッドを使用してデフォルト・オプションを使用するには、「タイプ」をDateに設定しますが、「テキスト・フォーム・フィールド・オプション」ダイアログの「日付書式」フィールドは空白のままにします。

Oracleメソッドを使用してデフォルト・オプションを使用するには、"format-date"関数コールにマスク定義を指定しないでください。 たとえば:

<?format-date:hiredate?>

Oracle抽象書式マスク

抽象日付書式マスクは、I18Nライブラリの日時書式のデフォルトの実装を反映します。

これらのマスクのいずれかを使用する場合、生成される出力は、レポートに関連付けられているロケールによって異なります。

次の構文を使用して、抽象マスクを指定します:

<?format-date:fieldname;'MASK'?>

ここで、「フィールド名」はXML要素タグで、

MASKはOracle抽象フォーマット・マスク名です

たとえば:

<?format-date:hiredate;'SHORT'?>
<?format-date:hiredate;'LONG_TIME_TZ'?>
<?format-date:xdoxslt:sysdate_as_xsdformat();'MEDIUM'?>

次の表に、抽象書式マスクと、USロケール用に生成されるサンプル出力を示します。

マスク USロケールの出力

SHORT

2/31/99

MEDIUM

1999年12月31日

LONG

1999年12月31日(金)

SHORT_TIME

12/31/99 6:15 PM

MEDIUM_TIME

1999年12月31日午後6:15

LONG_TIME

1999年12月31日(金)午後6時15分

SHORT_TIME_TZ

12/31/99 6:15 PM GMT

MEDIUM_TIME_TZ

Dec 31, 1999 6:15 PM GMT

LONG_TIME_TZ

1999年12月31日(金)午後6時15分(GMT)

レポートでのシステム日付(sysdate)の表示

sysdateを正しく表示するには、<?format-date:?>コマンドで関数xdoxslt:sysdate_as_xsdformat()を使用します。

たとえば:

<?format-date:xdoxslt:sysdate_as_xsdformat();'MEDIUM'?>
<?format-date:xdoxslt:sysdate_as_xsdformat();'LONG'?>
<?format-date:xdoxslt:sysdate_as_xsdformat();'LONG_TIME_TZ'?>
<?format-date-and-calendar:xdoxslt:sysdate_as_xsdformat(); 
    'LONG_TIME';'ROC_OFFICIAL';?>

通貨の書式設定

「パブリッシャ」では、実行時に公開されたデータに適用する特定の通貨書式マスクを定義できます。

RTFテンプレートで通貨書式を使用するには:
  1. ランタイム構成プロパティで通貨書式を設定します。 通貨フォーマットは、システムレベルまたはレポート・レベルで定義できます。

    通貨書式プロパティを設定する場合は、国際標準化機構(ISO)の通貨コードを使用して、指定した通貨に使用する書式を定義します。 次の図に例を示します:

  2. RTFテンプレートにformat-currencyコマンドを入力し、実行時にフィールドに書式を適用します。

フィールドへの通貨書式の適用

フォーマット通貨関数のパラメータを理解し、通貨書式をフィールドに適用するには、次のステップに従います。

format-currency関数のパラメータは次のとおりです:

<?format-currency:Amount_Field;CurrencyCode;displaySymbolOrNot?>

where

Amount_Fieldは、データの金額値を保持するXML要素のタグ名を取得します。

CurrencyCodeは、静的値に設定することも、動的に設定することもできます。 レポートの値が静的である場合は、ISO 3文字の通貨コードを一重引用符で囲んで入力します(例: 'USD')。

値を動的に設定するには、ISO通貨コードを保持するXML要素のタグ名を入力します。 通貨コードを含む要素がデータに存在する必要があることに注意してください。

実行時に、Amount_Fieldは、レポート・プロパティで通貨コードに対して設定した書式に従って書式設定されます。

displaySymbolOrNotは、次のいずれかの値を取ります: trueまたはfalse trueに設定すると、CurrencyCodeの値に基づいて通貨記号がレポートに表示されます。 通貨記号を表示しない場合は、falseを入力するか、パラメータを指定しないでください。

例: レポートでの複数通貨書式の表示

次の表に、レポート・プロパティで様々な通貨書式を設定したことを前提とした例を示します。

通貨コード フォーマット・マスク

USD

9G999D99

INR

9G99G99G999D99

この例では、通貨コードを動的に設定する必要はありません。 XMLデータには次の要素があります:

<TOTAL_SALES>
    <US_SALES>8596526459.56</US_SALES>
    <INDIA_SALES>60000000</INDIA_SALES>
</TOTAL_SALES>

テンプレートにこれら2つの合計フィールドを表示します。

US_SALESの場合、「パブリッシャ」プロパティ・フィールドの構文は次のとおりです:

<?format-currency:US_SALES;'USD'?>

実行時には、次の図に示すようにフィールドが表示されます:

例: 単一レポートでの複数通貨コードの表示

この単純なXMLコードには、Amount (Trans_amount)を含む要素と、ISO通貨コード(Cur_Code)を含む要素が含まれます。

<ROW>
  <Trans_Amount>123</Trans_Amount>
  <Cur_Code>USD</Cur_Code>
</ROW>
<ROW>
  <Trans_Amount>-456</Trans_Amount>
  <Cur_Code>GBP</Cur_Code>
</ROW>
<ROW>
  <Trans_Amount>748</Trans_Amount>
  <Cur_Code>EUR</Cur_Code>
</ROW>
<ROW>
  <Trans_Amount>-987</Trans_Amount>
  <Cur_Code>JPY</Cur_Code>
</ROW>

これらの各金額を適切な通貨記号で表示するには、金額を表示するフィールドのテンプレートに次の情報を入力します:

<?format-currency:Trans_Amount;Cur_Code;'true'?>

次の図は、生成される複数通貨レポートを示しています: