Enterprise PL/I コンパイラーでは引き続き CHAR 組み込み関数がサポートされていますが、現在では CHAR は CHARACTER の省略形と見なされます。 CHAR 組み込み関数の結果は、最初の引数に GRAPHIC 型がある場合を除いては、旧 PL/I for MVS コンパイラーでの結果と同じです。
例えば、X が GRAPHIC(3) であり、バイト .A.B.C を保持している場合、結果は次のようになります。
次の例は、旧コンパイラーによって生成された結果を得るためのコードの変更方法を示しています。
add
dcl so char(1) value ('0e'x), si char(1) value('0f'x);
then replace
A = CHAR(X);
by
UNSPEC(A) = UNSPEC(SO) || UNSPEC(X) || UNSPEC(SI);replace
CHAR(X)
by
OLDCHAR(X)
where OLDCHAR is defined by
oldchar: proc(x) returns( char(32767) var );
dcl x graphic(*);
dcl a char(32767) var;
dcl d char(2*length(x));
a = '0e'x;
unspec(d) = unspec(x);
a = a || d;
a = a || '0f'x;
return( a );
end; CHARACTER および CHARGRAPHIC 組み込み関数について詳しくは、「Enterprise PL/I for z/OS コンパイラーおよびランタイム 移行ガイド」の組み込み関数、疑似変数、およびサブルーチンの章で CHARACTER および CHARGRAPHIC を参照してください。