グラフィック形式の文字

概要

図形形式(グラフィック形式)は、各文字が 2 バイトで表される文字ストリングです。

図形データとして定義されるフィールドには、シフトアウト (SO) またはシフトイン (SI) 文字は含まれません。
図形フィールドの長さ (バイト数) はフィールド中の図形文字数の 2 倍です。
固定長の図形形式は、各文字が 2 バイトで表される、長さが一定の 文字ストリングです。

図形フィールドは、該当する仕様書の「データ・タイプ」記入項目に G を指 定することによって定義します。 パラメーターが図形フィールドである場合には、 定義仕様書の LIKE キーワードを使用して図形フィールドを定義することもできます。

図形データのデフォルトの初期化値は X'4040' です。 *HIVAL の値 は X'FFFF' であり、*LOVAL の値は X'0000' です。

注意

GRAPHIC リテラルの例は、無効な GRAPHIC リテラルです。 これらの例では、文字「o」が、シフトアウト文字を示し、文字「i」はシフトイン文字を示しています。 多くの場合、グラフィック・データは、D1D2 または AABB として表示さ れています。これらは無効な 2 バイト文字です。 通常 GRAPHIC リテラルは、DBCS 文字が入力される前および入力された後 に、自動的にシフトアウトおよびシフトイン文字を入力する DBCS 対応キーボードを使用して入力します。

%GRAPH (図形値への変換)

[一般形式]

%GRAPH (文字ストリング {: CCSID}

%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 が設定され、エラー・メッセージは出されません。

コーディング例

制御仕様書にはCCSIDキーワードを明記しなければならない。

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....8.
H*Keywords+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
H CCSID(*GRAPH:*SRC)

              
            

定義仕様書への変数定義例
デフォルトの初期化値: X'4040'
*HIVAL の値 は X'FFFF'
*LOVAL の値は X'0000'

              
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++
D VALUE     S       6G 
D VALUE1     S       8A  inz('o有効i')
D VALUE2     S       4G  inz(%graph ('oABCDi'))
D VALUE3     S       2C  inz(%ucs2 ('o 黒i'))
D VALUE4     S       2G  ccsid(4396) inz(*hival)
              
            

%GRAPHを用いた命令文の例

              
CL0N01FACTOR1+++++++OPCODE&EXTEXTENDED-FACTOR2+++++++++++++++++++++++++++++
C          EVAL   VALUE = %GRAPH(VALUE1)
C* // graph now has the value "有効    ".
C
C          EVAL   VALUE = %GRAPH(VALUE1) + %GRAPH(VALUE2)
C* // graph now has the value "ABCD 黒".