uCosminexus Interschema ユーザーズガイド

[目次][用語][索引][前へ][次へ]

6.5.3 出力データに対する規則

MDL(FDL)で出力先のコンポーネントに対してサイズあふれ時の対応や,不要文字の削除が指定できます。通常,入力データを基に出力データのマップ式を評価した結果の値が,MDLで定義されている出力側の要素の型と不一致,又はサイズが超過する場合,トランスレータでエラーになります。

<この項の構成>
(1) 通常の出力形式
(2) 不要文字削除指定時の処理
(3) 桁あふれ時の処理
(4) 日付時刻型出力時の規則
(5) その他出力時の規則

(1) 通常の出力形式

トランスレータは,不足サイズ分を出力側要素の型定義で指定されている埋め字で補います。

基本的にトランスレータは,文字列型数値属性で埋め字が0の場合は,前符号と数字列の間に埋め字を置きます。その他の属性は,出力エリアの端からデータ部分までの間に埋め字を置きます。数値は有効桁部分を出力します。ただし,最大桁数指定がある場合は,数字列部分に前0を付け,桁数をそろえて出力します。

最大桁数指定ありで最大桁数に満たない数値を有効桁以降だけを出力したい場合には,不要文字削除指定が必要です。

小数点は小数部桁数に含めません。

不要文字削除指定なしで,入力データ中に埋め字がある文字列を出力する場合,入力データの埋め字部分も文字列として出力します。

(2) 不要文字削除指定時の処理

不要文字削除指定をした場合,データ中から不要な文字を削除して出力します。また,数値の場合は,桁数合わせのための0を付けないで出力します。不要文字削除指定が有効になる属性は,文字列型数値,文字列型,及び日付時刻型です。

不要文字として削除されるのは,最小出力サイズを超える部分のスペース文字(数値型文字列,文字列,日付時刻型),又は0(数値型文字列,日付時刻型の秒パート小数部)です。日付,時刻を文字列型数値と見なした場合の上位桁の0も不要文字と見なします。

暗黙的小数部付数値型の場合,この指定があっても小数部の下位桁の0は必ず出力します。

(3) 桁あふれ時の処理

出力するデータが指定されているサイズより大きくてもエラーにしない場合や,小数部があるデータを整数型要素に出力する場合などに指定します。原則的に,数値は小数部から切り捨て,次に上位の桁からカットします。暗黙的小数部付数値の小数部桁は残します。文字列やバイト列は,データの末尾から切り捨てます。日付時刻は,文字列に組み立てた状態のデータを末尾から切り捨てます。

データの切り捨てをした場合,トランスレータはワーニングを出力します。

(4) 日付時刻型出力時の規則

ゾーン部の指定(文字列)があれば,指定されたゾーン部文字列を出力します。ゾーン部出力指定があり,ゾーン文字列の定義がない場合,入力値がゾーン部を持つ日付時刻型であれば,入力値のゾーン部文字列を出力します。その他はゾーン部なしで出力します。

各パート値については,通常は範囲を検証しません。実行時オプション「-DTM」の指定がある場合,「6.2.4(3) 日付時刻型」の「表6-8 日付時刻型のパート」に示す範囲内であるかを検証します。

(5) その他出力時の規則

埋め字,不要文字削除,桁あふれ切り捨ての処理の優先順序を次に示します。

不要文字削除>桁あふれ切り捨て>埋め字