GRAPHIC スカラー関数

GRAPHIC 関数は、最初の引数のタイプの固定長グラフィック・ストリング表現を戻します。

変更の開始

構文:整数からグラフィック

FL 502

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRAPHIC( 整数式)
変更の終わり
変更の開始

構文: 10進数からグラフィック

FL 502

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRAPHIC( 小数式,十進文字)
変更の終わり
変更の開始

構文:浮動小数点からグラフィック

FL 502

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRAPHIC( 浮動小数点演算式)
変更の終わり
変更の開始

構文:小数浮動小数点からグラフィック

FL 502

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRAPHIC( 十進浮動小数点表現)
変更の終わり

構文:文字から図形へ:

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRAPHIC( character-expression,整数,CODEUNITS16CODEUNITS32)

構文:グラフィックからグラフィックへ:

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRAPHIC( グラフィック表現,整数,CODEUNITS16CODEUNITS32)

スキーマは SYSIBM です。

GRAPHIC 関数は、次のもののグラフィック・ストリング表現を返します。

  • 変更の開始FL 502 最初の引数が SMALLINT、INTEGER、または BIGINT の場合、整数値変更の終わり
  • 変更の開始FL 502 最初の引数が小数点以下の数字の場合、小数点以下の数字変更の終わり
  • 変更の開始FL 502 最初の引数がDOUBLEまたはREALの場合、倍精度浮動小数点数変更の終わり
  • 変更の開始FL 502 最初の引数が DECFLOAT の場合、小数浮動小数点数変更の終わり
  • 文字ストリング (最初の引数が任意のタイプの文字ストリングの場合)
  • グラフィック・ストリング (最初の引数が EBCDIC または Unicode グラフィック・ストリングの場合)

結果は NULL になる可能性があります。第 1 引数が NULL の場合、結果は NULL 値となります。

結果の長さ属性は、結果がグラフィック・ストリングなので、2 バイト文字単位で 測定されます。

変更の開始

整数からグラフィックに

FL 502

整数式
整数データ・タイプ (SMALLINT、INTEGER、または BIGINT) の値を戻す式。

結果は、SQL 整数定数の形式で引数を表現した固定長グラフィック・ストリングです。 結果は、引数の値を表すために使用できる最小文字数で、ブランクが埋め込まれます。 結果は、引数の値を表す n 文字の有効数字から成ります。引数が負数の場合は、負符号が前に付きます。 正の値は数字で始まり、常に少なくとも 1 つの末尾ブランクを含みます。 これに先行ゼロは含まれません。 結果は、左揃えになります。

  • 引数が短精度整数の場合、結果の長さは 6 です。 結果の文字数が 6 未満の場合は、結果の右側にブランクが埋め込まれます。
  • 引数が長精度整数の場合、結果の長さは 11 です。 結果の文字数が 11 未満の場合は、結果の右側にブランクが埋め込まれます。
  • 引数が 64 ビット整数の場合、結果の長さは 20 です。 結果の文字数が 20 より少ない場合は、結果の右側にブランクが埋め込まれます。

結果の CCSID は 1200 (UTF-16) です。

変更の終わり
変更の開始

10 進数からグラフィックに

FL 502

小数式
組み込み 10 進データ・タイプの値を戻す式。 精度や位取りを変えたい場合は、DECIMAL スカラー関数を使用して変更することができます。 式の値に別の精度と位取りを指定するには、GRAPHIC 関数を適用する前に DECIMAL 関数を適用します。
十進文字
結果のグラフィック・ストリング内の 10 進数字を区切るために使用される 1 バイト文字定数を指定します。 この文字は数字、正符号 (+)、 負符号 (-)、またはブランクであってはなりません。 デフォルトはピリオド (.) またはコンマ (,) です。どの要因が選択に影響するかについては、小数点表記を参照してください。

結果は、最初の引数の固定長グラフィック・ストリング表現です。 結果は、引数の値を表すために使用できる最小文字数です。ただし、後続ゼロは含まれません。 結果には、小数点文字と最大 P 桁までの数字が含まれます。ここで、P は、引数が負の場合に先行する負符号 (-) を持つ 10 進数式 の精度です。 正の値は、数字または小数文字で始まり、常に少なくとも 1 つの末尾ブランクを含みます。 先行ゼロは返されません。 decimal-expression の位取りがゼロの場合、小数点文字は戻されません。 結果のバイト数が定義された結果の長さより少ない場合、結果の右側にブランクが埋め込まれます。

結果の長さは、 小数表現 の精度pを 2+p とします。

結果の CCSID は 1200 (UTF-16) です。

変更の終わり
変更の開始

浮動小数点数からグラフィックに

FL 502

浮動小数点式
浮動小数点データ・タイプ (DOUBLE または REAL) である値を戻す式。

結果は、SQL 浮動小数点定数の形式の引数の固定長グラフィック・ストリング表現です。 結果の最初の文字は、引数が負であれば、負符号となります。負でなければ、 最初の文字は数字です。 引数がゼロであると、結果は 0E0 になります。

結果の長さは 24 文字です。 結果には、引数の値を表すことができる最小文字数が含まれます。小数部は、ゼロ以外の 1 桁の数字と、それに続くピリオドと数字のシーケンスで構成されます。 結果の文字数が 24 より少ない場合は、結果の右側にブランクが埋め込まれます。

結果の CCSID は 1200 (UTF-16) です。

変更の終わり
変更の開始

10 進浮動小数点数からグラフィックに

FL 502

10 進浮動小数点式
組み込み 10 進浮動小数点データ・タイプ (DECFLOAT) の値を戻す式。

結果は、SQL 10 進浮動小数点定数の形式による引数の固定長グラフィック・ストリング表現です。

結果値が Infinity、sNaN、または NaN の場合、ストリング「INFINITY」、「SNAN」、および「NAN」がそれぞれ返されます。 DECFLOAT 特殊値 sNaN は、ストリングへの変換時に例外になりません。

結果の長さは 42 です。 結果の文字数が 42 未満の場合は、結果の右側にブランクが埋め込まれます。 後続ゼロは有効数字です。 引数が負である場合、結果の先頭の文字は負符号 (-) になります。 それ以外の場合、先頭文字は数字、または DECFLOAT 値が Infinity、sNaN、または NaN の場合は文字です。

結果の CCSID は 1200 (UTF-16) です。

変更の終わり

文字からグラフィックに

文字表現
EBCDIC エンコードまたは Unicode エンコードの文字ストリングの値を戻す式。 これは BIT データであってはなりません。 引数は混合データである必要はありませんが、 ストリング内に X'0E' および X'0F' が現れる場合は 、EBCDIC の混合データの規則に従う必要があります。 (これらの規則については文字列を参照)

integer が無指定の場合、または、そのストリングが EBCDIC ストリングで X'0E0F' を含んでいる場合、式の値は空ストリングであってはなりません。

整数
結果の固定長グラフィック・ストリングの長さであり、 明示的または暗黙的に指定された単位で表されます。 値は、1~127の範囲の整数定数でなければなりません。 character-expression の長さが指定された長さより短い場合、 結果は結果の長さになるまで 2 バイトのブランクが埋め込まれます。

CODEUNITS16 または CODEUNITS32 が指定されている場合、結果文字列の長さ属性を計算する方法については、「最終結果の長さ属性の決定」を参照してください。

integer を指定しない場合、EBCDIC ストリングの結果の長さは、 シフト文字を除き、最小値が 127 で 、character-expression の長さ属性になります。 Unicode (UTF-8) ストリングの場合、長さはデータにより異なりますが、127 以下です。

CODEUNITS16 または CODEUNITS32
integer を表すのに使用する単位を指定します。 CODEUNITS16 または CODEUNITS32 を 指定し、その入力が EBCDIC であり、EBCDIC GRAPHIC データ用のシステム CCSID がない場合、エラーが発生します。
CODEUNITS16
integer が、16 ビットの UTF-16 コード単位の形で表現されるこ とを指定します。
CODEUNITS32
integer が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。

CODEUNITS16 と CODEUNITS32 の詳細については、 文字列単位仕様を参照してください。

結果の CCSID は、character-expression の文字 CCSID に対応するグラフィック CCSID です。 入力が EBCDIC で、EBCDIC GRAPHIC データのシステム CCSID がない場合、 結果の CCSID は X'FFFE' になります。

EBCDIC データでは、character-expression の各文字によって、結果の文字が決まります。 結果が導き出される前に、引数をネイティブ形式の混合データに変換する必要が ある場合もあります。 M を混合データ用のシステム CCSID にしてください。 以下のいずれかに当てはまる場合、引数は変換されません。

  • 引数が混合データで、その CCSID が M である。
  • 引数が SBCS データで、 その CCSID が SBCS データ用のシステム CCSID と同じである。 この場合は、引数の CCSID が M であるものとして演算は進められます。

これ以外の場合、引数は、M で識別されるコード化文字セット に引数の文字を変換することによって得られた、新しいストリング S になります。 EBCDIC 混合データのシステム CCSID がない場合は、SBCS データのシステム CCSID が識別するコード化文字セットに変換されます。

結果は、以下のステップを使用して S から導き出されます。

  • 各シフト文字 (X'0E' または X'0F') を取り除く。
  • 各 2 バイト文字はそのまま残す。
  • 1 バイト文字を 2 バイト文字に置き換える。

SBCS 文字は、それに相当する DBCS 文字があればその 文字に置き換えられます。 それ以外は、X'FEFE' に置き換えられます。 相当する DBCS 文字の存在は M によって異なります。 混合データ用のシステム CCSID がない場合、EBCDIC の X'xxxx' に相当する DBCS は X'42xx' です。ただし X'40' の場合は例外で、これに相当する DBCS は X'4040' になります。

Unicode データの場合:

character-expression の各文字によって、結果の文字が決まります。 結果が導き出される前に、引数をネイティブ形式の混合データに変換する必要が ある場合もあります。 M を混合データ用のシステム CCSID にしてください。 以下のいずれかに当てはまる場合、引数は変換されません。

  • 引数が混合データで、その CCSID が M である。
  • 引数が SBCS データで、 その CCSID が SBCS データ用のシステム CCSID と同じである。 この場合は、引数の CCSID が M であるものとして演算は進められます。

これ以外の場合、引数は、M で識別されるコード化文字セット に引数の文字を変換することによって得られた、新しいストリング S になります。

結果は、以下のステップを使用して S から導き出されます。

  • 非補足文字は、それぞれ Unicode の 2 バイト文字 (UTF-16 コード・ポイント) によって置き換えられます。 UTF-8 の補助文字以外の文字は、1~3バイトの範囲です。
  • それぞれの補足文字は、1 対の Unicode の 2 バイト文字 (1 対の UTF-16 コード・ ポイント) で置き換えられます。

1 バイト文字は、それに相当する Unicode 文字があれば、 その文字に置き換えられます。 それ以外は、X'FEFE' に置き換えられます。

グラフィックからグラフィックに

グラフィック表現
GRAPHIC ストリング値を戻す式。 integer が無指定の場合、グラフィック・ストリン グは空ストリングであってはなりません。
整数
結果の固定長グラフィック・ストリングの長さであり、 明示的または暗黙的に指定された単位で表されます。 値は、1~127の範囲の整数定数でなければなりません。 graphic-expression の長さが指定された長さより短い場合、 結果は結果の長さになるまで 2 バイトのブランクが埋め込まれます。

CODEUNITS16 または CODEUNITS32 が指定されている場合、結果文字列の長さ属性を計算する方法については、「最終結果の長さ属性の決定」を参照してください。

integer を指定しない場合、 結果の長さは、127 と graphic-expression の長さ属性のうちの最小値になります。

CODEUNITS16 または CODEUNITS32
integer を表すのに使用する単位を指定します。 CODEUNITS16 または CODEUNITS32 を 指定し、その入力が EBCDIC であり、EBCDIC GRAPHIC データ用のシステム CCSID がない場合、エラーが発生します。
CODEUNITS16
integer が、16 ビットの UTF-16 コード単位の形で表現されるこ とを指定します。
CODEUNITS32
integer が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。

CODEUNITS16 と CODEUNITS32 の詳細については、 文字列単位仕様を参照してください。

graphic-expression の長さが、結果の指定された長さを超えている場合、 結果は切り捨てられます。 切り捨てられたすべての文字が ブランクの場合以外は、警告が戻されます。

結果の CCSID は graphic-expression の CCSID と同じです。

変更の開始

FL 502 数値データのUnicodeへの変換:
最初の引数が数値データの場合、GRAPHIC 関数の結果は Unicode (UTF-16) になります。 GRAPHIC 関数は、次のステートメントが含まれている場合にのみ、最初の引数に数値データを指定して呼び出すことができます。
  • Unicode 基本表またはビューのみを参照し、ステートメントが単一のコード化スキーム・ステートメントになるように修飾されている。
  • は複数のコード化スキーム・ステートメントと見なされ、アプリケーションのコード化スキームは Unicode です。
変更の終わり

例 1:
MYCOL が TABLEY 内の VARCHAR 列であるとします。 以下の関数は MYCOL 内のストリングを固定長グラフィック・ストリングとして 戻します。
   SELECT GRAPHIC(MYCOL)
     FROM TABLEY;
変更の開始例 2:変更の終わり
変更の開始

EMPLOYEE サンプル表に類似した EMPLOYEE_U 表が存在すると想定します。ただし、これは Unicode 表です。 SALARY 列と COMM 列は、精度 9、位取り 2 の DECIMAL として定義されます。 従業員 Haas の総収入を、コンマ小数点文字を使用した固定長グラフィック・ストリングとして戻します。

SELECT GRAPHIC(SALARY + COMM, ',')
FROM EMPLOYEE_U
WHERE LASTNAME = 'HAAS'

結果が価値であるG'56970,00 '.

変更の終わり