%GRAPH (図形値への変換)
%GRAPH(char-expr | graph-expr | UCS-2-expr { : ccsid })
%GRAPH は、文字、図形、または UCS-2 から式の値を変換し、図形値を 戻します。 結果は、パラメーターが可変長であれば可変長になります。
2 番目のパラメーターの ccsid はオプション で、結果の式の CCSID を示します。CCSID は、 制御キーワード CCSID(*GRAPH) で指定されるように、モジュールのデフォルト図形 CCSID に デフォルト設定されます。 制御仕様書で CCSID(*GRAPH : *IGNORE) が指定されている場合、または モジュールについて想定されている場合、%GRAPH 組み込み関数は使用できません。
パラメーターが定数の場合、変換はコンパイル時に行われます。この 場合、CCSID は、ソース・ファイルの CCSID に関連した図形 CCSID です。
パラメーターが EBCDIC CCSID の文字データである場合、文字データは次の
形式でなければなりません。
shift-out graphic-data shift-in
例えば、'oAABBCCi' のように指定します。データからグラフィックへの変換で、すべてのデータを正常に変換できない場合があることについては、変換を 参照してください。
詳細については、グラフィック形式、変換命令、 または 組み込み関数を参照してください。
図 1. %GRAPH の例
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
H*Keywords+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
H ccsid (*graph: 300)
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++++++
D char S 8A inz('oXXYYZZi')
* The %GRAPH built-in function is used to initialize a graphic field
D graph S 10G inz (%graph ('oAABBCCDDEEi'))
D ufield S 2C inz (%ucs2 ('oFFGGi'))
D graph2 S 2G ccsid (4396) inz (*hival)
D isEqual S 1N
D proc PR
D gparm 2G ccsid (4396) value
/FREE
graph = %graph (char) + %graph (ufield);
// graph now has the value XXYYZZFFGG.
// %graph(char) removes the shift characters from the
// character data, and treats the non-shift data as
// graphic data.
isEqual = graph = %graph (graph2 : 300);
// The result of the %GRAPH built-in function is the value of
// graph2, converted from CCSID 4396 to CCSID 300.
graph2 = graph;
// The value of graph is converted from CCSID 300 to CCSID 4396
// and stored in graph2.
// This conversion is performed implicitly by the compiler.
proc (graph);
// The value of graph is converted from CCSID 300 to CCSID 4396
// implicitly, as part of passing the parameter by value.
/END-FREE
注: この例で、例えば 'oFFGGi' のような、DBCS データ
を含んでいるリテラルは、有効な DBCS データまたは有効なシフト文字を含んでいません。
詳しくは、グラフィック形式を参照してください。