%GRAPH (図形値への変換)

%GRAPH(char-expr | graph-expr | UCS-2-expr { : ccsid })

%GRAPH は、文字、図形、または UCS-2 から式の値を変換し、図形値を 戻します。 結果は、パラメーターが可変長であれば可変長になります。

2 番目のパラメーターの ccsid はオプション で、結果の式の CCSID を示します。CCSID のデフォルト値は、ジョブの CCSID に関連した図形 CCSID です。 制御仕様書で CCSID(*GRAPH : *IGNORE) が指定されている場合、または モジュールについて想定されている場合、%GRAPH 組み込み関数は使用できません。

パラメーターが定数の場合、変換はコンパイル時に行われます。この 場合、CCSID は、ソース・ファイルの CCSID に関連した図形 CCSID です。

パラメーターが文字である場合、文字データは次の形式になっていなければなりません。

shift-out graphic-data shift-in 

例えば、'oAABBCCi' のように指定します。

変換の結果、置換文字になる場合、コンパイル時に警告メッセージ が出されます。 実行時には状況 00050 が設定され、エラー・メッセージは出されません。

詳しくは、グラフィック形式変換命令、または 組み込み関数を参照してください。

図 202. %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