VARGRAPHIC

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

整数から可変長グラフィックに

構文図を読む構文図をスキップする
>>-VARGRAPHIC--(--integer-expression--)------------------------><

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

構文図を読む構文図をスキップする
>>-VARGRAPHIC--------------------------------------------------->

>--(--decimal-expression--+----------------------+--)----------><
                          '-,--decimal-character-'      

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

構文図を読む構文図をスキップする
>>-VARGRAPHIC--------------------------------------------------->

>--(--floating-point-expression--+----------------------+--)---><
                                 '-,--decimal-character-'      

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

構文図を読む構文図をスキップする
>>-VARGRAPHIC--------------------------------------------------->

>--(--decimal-floating-point-expression--+----------------------+--)-><
                                         '-,--decimal-character-'      

文字から可変長グラフィックに

構文図を読む構文図をスキップする
>>-VARGRAPHIC--(--character-expression-------------------------->

>--+--------------------------------+--)-----------------------><
   '-,--+-length--+--+------------+-'      
        '-DEFAULT-'  '-,--integer-'        

グラフィックから可変長グラフィックに

構文図を読む構文図をスキップする
>>-VARGRAPHIC--(--graphic-expression---------------------------->

>--+--------------------------------+--)-----------------------><
   '-,--+-length--+--+------------+-'      
        '-DEFAULT-'  '-,--integer-'        

日時から可変長グラフィックに

構文図を読む構文図をスキップする
>>-VARGRAPHIC--(--datetime-expression--+--------------+--)-----><
                                       '-,--+-ISO---+-'      
                                            +-USA---+        
                                            +-EUR---+        
                                            +-JIS---+        
                                            '-LOCAL-'        

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

  • 整数 (最初の引数が SMALLINT、INTEGER、または BIGINT の場合)
  • 10 進数 (最初の引数がパックまたはゾーン 10 進数の場合)
  • 倍精度浮動小数点数 (最初の引数が DOUBLE または REAL の場合)
  • 最初の引数が DECFLOAT である場合は 10 進浮動小数点数。
  • 文字ストリング (最初の引数が任意のタイプの文字ストリングの場合)
  • グラフィック・ストリング (最初の引数が Unicode グラフィック・ストリング・ストリングの場合)
  • 日付値 (最初の引数が DATE の場合)
  • 時刻値 (最初の引数が TIME の場合)
  • タイム・スタンプ値 (最初の引数が TIMESTAMP)

この関数の結果は可変長グラフィック・ストリング (VARGRAPHIC) です。

最初の引数が NULL になる可能性がある場合、結果も NULL になる可能性があります。最初の引数が NULL の場合、結果は NULL 値となります。 最初の引数が空ストリング、または EBCDIC ストリング X'0E0F' である場合は、結果は空ストリングになります。

整数から可変長グラフィックに

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

結果は、SQL 整数定数の形式で引数を表現した可変長グラフィック・ストリングです。 結果は、引数の値を表す n 文字の有効数字から成ります。引数が負数の場合は、負符号が前に付きます。結果は左寄せされます。

  • 引数が短整数の場合は、結果の長さ属性は 6
  • 引数が長整数の場合は、結果の長さ属性は 11
  • 引数が 64 ビット整数の場合は、結果の長さ属性は 20

結果の実際の長さは、引数の値を表すために使用できる最小文字数です。 先行ゼロは含まれません。引数が負数の場合は、結果の最初の文字は負符号になります。 負符号でなければ、最初の文字は数字または decimal-character です。

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

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

decimal-expression
パックまたはゾーン 10 進数データ・タイプ (DECIMAL または NUMERIC) の値を戻す式。 精度や位取りを変えたい場合は、DECIMAL スカラー関数を使用して変更することができます。
decimal-character
結果の文字ストリングにおいて、小数点以下を区切るために使用する 1 バイト文字の定数を指定します。 この文字は、ピリオドかコンマとする必要があります。 2 番目の引数を指定しなかった場合は、デフォルトの小数点が使用されます。 詳しくは、小数点を参照してください。

結果は、引数を可変長グラフィック・ストリングで表現したものになります。 この結果には、1 文字の小数点文字と p 桁までの数字が含まれます。 p10 進数式 の精度で、引数が負数の場合は負符号が先頭に付きます。 先行ゼロは戻されません。後続ゼロは戻されます。decimal-expression の位取りがゼロの場合、小数点文字は戻されません。

結果の長さ属性は 2+p です (pdecimal-expression の精度)。 結果の実際の長さは、引数の値を表すために使用できる最小文字数ですが、ただし、後書き文字も含まれます。 先行ゼロは含まれません。引数が負数の場合は、結果の最初の文字は負符号になります。 負符号でなければ、結果の最初の文字は数字または decimal-character になります。

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

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

浮動小数点数式
浮動小数点データ・タイプ (DOUBLE または REAL) の値を戻す式。
decimal-character
結果の文字ストリングにおいて、小数点以下を区切るために使用する 1 バイト文字の定数を指定します。 この文字は、ピリオドかコンマとする必要があります。 2 番目の引数を指定しなかった場合は、デフォルトの小数点が使用されます。 詳しくは、小数点を参照してください。

結果は、浮動小数点定数の形式で引数を可変長グラフィック・ストリングで表現したものになります。

結果の長さ属性は、24 です。結果の実際の長さは、ゼロ以外の 1 桁の数字、その後ろに 1 つの小数点文字 と一連の数字が続く小数部の引数の値を表す最小文字数です。 引数が負数の場合は、結果の最初の文字は負符号になります。負数でなければ、最初の文字は数字または decimal-character です。 引数がゼロであると、結果は 0E0 になります。

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

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

decimal-floating-point expression
10 進浮動小数点データ・タイプの値を返す式。
decimal-character
結果の文字ストリングにおいて、小数点以下を区切るために使用する 1 バイト文字の定数を指定します。 この文字は、ピリオドかコンマとする必要があります。 2 番目の引数を指定しなかった場合は、デフォルトの小数点が使用されます。 詳しくは、小数点を参照してください。

結果は、10 進浮動小数点定数の形式で引数を可変長グラフィック・ストリングで表現したものになります。

結果の長さ属性は、42 です。 結果の実際の長さは、記号、数字、および decimal-character を含む、引数の値を表す最小文字数です。 後続ゼロは有効数字です。引数が負数の場合は、結果の最初の文字は負符号になります。負数でなければ、最初の文字は数字または decimal-character です。 引数がゼロであると、結果は 0 になります。

DECFLOAT 値が InfinitysNaN、または NaN の場合、それぞれストリング 'INFINITY'、'SNAN'、および 'NAN' が返されます。特殊値が負の場合、負符号 (-) がそのストリングの最初の文字となります。 DECFLOAT 特殊値 sNaN を使用しても、ストリングへの変換時に例外は発生しません。

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

文字から可変長グラフィックに

character-expression
文字ストリング式を指定します。CHAR または VARCHAR ビット・データであってはなりません。
length
結果の長さ属性を指定する整数定数。これは、最初の引数がNULL 可能でな い場合は、1 から 16370 の範囲の整数定数でなければならず、最初の引数が NULL 可能である場合は、1 から 16369 の範囲の整数定数でなければなりません。

2 番目の引数を指定しなかった場合、または DEFAULT を指定した場合 は、結果の長さ属性は最初の引数の長さ属性と同じになります。ただし、式が空ストリングまたは EBCDIC ストリング X'0E0F' である場合は結果の 長さ属性は 1 です。

結果の実際の長さは、結果の長さ属性と character-expression の実際の長さのうち、小さい方になります。引数の各文字ごとに、結果の 1 文字が決まります。character-expression の長さ (文字数) が結果の長さ属性よりも大きい場合は、切り捨てが行われます。 切り捨てられた文字がすべてブランクであった場合以外は、警告 (SQLSTATE 01004) が戻されます。

integer
結果の CCSID を指定する整数定数。 これは DBCS、UTF-16、または UCS-2 の CCSID でなければなりません。 CCSID が 65535 であることはできません。 CCSID が Unicode グラフィック・データを表す場合は、引数の各文字によって結果の 1 文字が決まります。 結果の n 番目の文字は、引数の n 番目の文字と等価の UTF-16 または UCS-2 文字になります。

整数 が指定されていない場合、結果の CCSID は混合 CCSID によって決まります。 M でその混合 CCSID を示すことにします。

以下の規則では、S は次のいずれかを指します。

  • ストリング式が外部コード化スキームのデータを含むホスト変数である場合は、データを固有コード化スキームの CCSID に変換した後の式の結果が S。 (詳しくは、文字変換を参照してください。)
  • ストリング式が固有コード化スキームのデータである場合は、その ストリング式が S。

M は次のように決まります。

  • S の CCSID が 1208 (UTF-8) である場合、M は 1200 (UTF-16) になる。
  • S の CCSID が混合 CCSID である場合は、M はその CCSID になる。
  • S の CCSID が SBCS CCSID である場合 :
    • S の CCSID が関連する混合 CCSID を持つ場合は、M はその CCSID になる。
    • それ以外の場合は、演算ができない。

次の表には、M をもとにした結果の CCSID を要約してあります。

M 結果の CCSID 説明 DBCS 置換文字
930 300 日本語 EBCDIC X'FEFE'
933 834 韓国語 EBCDIC X'FEFE'
935 837 中国語 (簡体字) EBCDIC X'FEFE'
937 835 中国語 (繁体字) EBCDIC X'FEFE'
939 300 日本語 EBCDIC X'FEFE'
5026 4396 日本語 EBCDIC X'FEFE'
5035 4396 日本語 EBCDIC X'FEFE'

SBCS と DBCS が等価になるかどうかは M によって決まります。CCSID に関 係なく、引数の中の 2 バイトのコード・ポイントはすべて DBCS 文字と見なされ、引数の中の 1 バイトのコード・ポイントはすべて SBCS 文字と見なされます (ただし、EBCDIC 混合データのシフト・コード X'0E' および X'0F' は例外)。

  • 引数の n 番目の文字が DBCS 文字である場合は、結果の n 番目の文字はその DBCS になる。
  • 引数の n 番目の文字が、等価の DBCS 文字を持つ SBCS 文字である場合は、結果の n 番目の文字は、その等価の DBCS 文字になる。
  • 引数の n 番目の文字が、等価の DBCS 文字を持たない SBCS 文字である場合は、結果の n 番目の文字は、DBCS 置換文字になる。

グラフィックから可変長グラフィックに

graphic-expression
グラフィック・ストリングの値を戻す式。
length
結果の長さ属性を指定する整数定数。これは、最初の引数がNULL 可能でな い場合は、1 から 16370 の範囲の整数定数でなければならず、最初の引数が NULL 可能である場合は、1 から 16369 の範囲の整数定数でなければなりません。

2 番目の引数を指定しなかった場合、または DEFAULT を指定した場合は、 結果の長さ属性は最初の引数の長さ属性と同じになります。 ただし、式が空ストリングである場合は結果の長さ属性は 1 です。

結果の実際の長さは、結果の長さ属性と graphic-expression の実際の長さのうち、小さい方になります。引数の各文字ごとに、結果の 1 文字が決まります。graphic-expression の長さ (文字数) が結果の長さ属性よりも大きい場合は、切り捨てが行われます。 切り捨てられた文字がすべてブランクであった場合以外は、警告 (SQLSTATE 01004) が戻されます。

integer
結果の CCSID を指定する整数定数。 これは DBCS、UTF-16、または UCS-2 の CCSID でなければなりません。 CCSID が 65535 であることはできません。

整数 が指定されていない場合、結果の CCSID は、最初の引数の CCSID になります。

日時から可変長グラフィックに

datetime-expression
次の 3 つの組み込みデータ・タイプのいずれかである式。
日付
結果は、2 番目の引数によって指定された形式の日付の可変長 GRAPHIC ストリング表記になります。 2 番目の引数を指定しなかった場合は、デフォルトの日付形式が使用 されます。 形式として ISO、USA、 EUR、または JIS を指定すると、長さ属性と結果の実際の長さは 10 になります。 その他の場合は、長さ属性と結果の実際の長さはデフォルトの日付形式の長さになります。 詳しくは、日付/時刻の値のストリング表記を参照してください。
時刻
結果は、2 番目の引数によって指定された形式の時刻の可変長 GRAPHIC ストリング表記になります。 2 番目の引数を指定しなかった場合は、デフォルトの時刻形式が使用されます。 長さ属性と結果の実際の長さは 8 になります。詳しくは、日付/時刻の値のストリング表記を参照してください。
timestamp
2 番目の引数は適用されないので、指定してはなりません。

結果は、タイム・スタンプの可変長 GRAPHIC ストリング表記になります。 datetime-expression が TIMESTAMP(0) の場合、 結果の長さ属性および実際の長さは 19 です。datetime-expression のデータ・タイプが TIMESTAMP(n) の 場合、結果の長さ属性および実際の長さは 20+n です。それ以外の 場合、結果の長さ属性および実際の長さは 26 です。

結果の CCSID は 1200 (UTF-16) です。
ISO、EUR、USA、または JIS
結果のグラフィック・ストリングの日付形式または時刻形式を指定します。 詳しくは、日付/時刻の値のストリング表記を参照してください。
LOCAL
結果のグラフィック・ストリングの日付または時刻の形式を、 現行サーバーのジョブの DATFMT、DATSEP、 TIMFMT、および TIMSEP 属性から取る必要があることを指定します。

注記

代替構文: 最初の引数がストリングで、長さ属性を指定する場合、アプリケーションの移植性を拡張するには、CAST 指定を使用します。 詳しくは、CAST の指定を参照してください。

  • 表 EMPLOYEE を使用して、ホスト変数 VAR_DESC (VARGRAPHIC(24)) を 従業員番号 (EMPNO)「000050」に対応する氏名の名 (FIRSTNME) と等価の VARGRAPHIC にセットします。
      SELECT VARGRAPHIC(FIRSTNME)
        INTO :VAR_DESC
        FROM EMPLOYEE
        WHERE EMPNO = '000050'