%CHAR(文字 | グラフィック | UCS2 {: ccsid})
%CHAR は、文字、グラフィック、 または UCS-2 式の値を、特定の文字 CCSID の文字型に変換できます。 CCSID オペランドは、%CHAR 組み込み関数の結果の CCSID を指定します。
CCSID オペランドが指定された場合は、*HEX、*JOBRUN、*JOBRUNMIX、*UTF8、EBCDIC または ASCII CCSID を表す数値、値 65535 (*HEX と同じ)、または値 1208 (*UTF8 と同じ) となることがあります。
CCSID オペランドが指定されていない場合、 制御キーワード CCSID(*CHAR) で指定されるように、モジュールのデフォルト文字 CCSID に デフォルト設定されます。
文字オペランドの CCSID が *HEX の場合、変換は行われません。 オペランドのデータは、CCSID オペランドで指定された CCSID であると想定されます。 CCSID *HEX の文字データについては、文字形式を参照してください。
データから文字 CCSID への変換で、一部の CCSID では すべてのデータを正常に変換できない場合があることについて、変換を 参照してください。
グラフィック・データで、%CHAR 戻り値の CCSID が EBCDIC CCSID の場合、 戻り値にはシフトイン文字およびシフトアウト文字が 含まれます。たとえば、5 文字の図形フィールドが変換される場合、戻り値は 12 文字 (10 バイトの図形データと 2 つのシフト文字) になります。式の値が可変長である場合、戻り値は 可変長形式になります。
詳細については、変換命令または 組み込み関数を参照してください。
文字、グラフィック、および UCS-2 オペランドが指定された %CHAR の例
注: この例の GRAPHIC リテラルは、無効な GRAPHIC リテラルです。
詳しくは、グラフィック形式を参照してください。
D graphicName S 20G VARYING INZ(G'oXXYYZZi')
D greeting S 20A VARYING CCSID(*UTF8) INZ('Hello')
D message S 30C INZ('Successful operation')
D result S 100A VARYING
次の例では、グラフィック値を文字に変換します。
CCSID パラメーターは指定されていないため、
%CHAR 組み込み関数の結果の CCSID はモジュールのデフォルト文字 CCSID です。
result = 'The customer''s name is ' + %CHAR(Name) + '.';
// result = 'The customer's name is oXXYYZZi.'
次の例では、UTF-8 値をジョブ CCSID の文字に変換します。
result = %CHAR(greeting : *JOBRUN);
// result = 'Hello'
次の例では、UCS-2 値をジョブ CCSID の文字に変換します。
result = %CHAR(message : *JOBRUN);
// result = 'Successful operation'