%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 データまたは有効なシフト文字を含んでいません。 詳しくは、グラフィック形式を参照してください。