自由形式構文 | (許可されていない - %XLATE 組み込み関数を使用) |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
XLATE (E P) | 変換元:変換先 | ソース・ストリング:開始 | ターゲット・ストリング | _ | ER | _ |
ソース・ストリング (演算項目 2) 内の文字が、変換元および変換先ストリング (両方とも演算項目 1 に入っている) に従って変換されて、受け入れフィールド (結果フィールド) に入れられます。 変換元ストリング中の一致するソース・ストリングの文字は、変換先ストリングの 対応する文字に変換されます。 変換元、変換先、ソース、およびターゲットのストリングは、同じタイプ (すべて文字、すべて図形、またはすべて UCS-2) でなければなりません。同様に、それらの CCSID は、それらの CCSID の 1 つが 65535 でない限り、 または、図形フィールドの場合には、CCSID(*GRAPH: *IGNORE) が制御仕様書で指定されたのでない限り、同じでなければなりません。
XLATE では、ソース・ストリングの変換は演算項目 2 に指定された位置から開始さ れて、左から右へ 1 文字ずつ続けられます。 ソース・ストリングの文字が変換元ストリングの中に存在する場合には、変換先ス トリングの対応する文字が結果フィールドに入れられます。 ソース・フィールドの開始位置より前の文字は、変更されないで結果フィールドに 入れられます。
演算項目 1 には、変換元ストリングの後にコロンを付けその後に 変換先ストリングを入れなければなりません。 変換元ストリングと変換 先ストリングには、フィールド名、配列要素、名前のついた定数、データ 構造名、リテラル、またはテーブル名のいずれかを入れなければなりません。
演算項目 2 には、ソース・ストリングかまたはソース・ストリングにコロンと開始位置 を指定したもののいずれかを入れなければなりません。 演算項目 2 の ソース・ストリング部分は、フィールド名、配列要素、名前の付いた 定数、データ構造名、データ構造サブフィールド、リテラル、またはテーブル名 のいずれかを入れることができます。この命令で図形データまたは UCS-2 データが使用される場合には、開始位置は 2 バイト文字によって参照されます。演算項目 2 の開始位置部分は、小数点以下の桁数がゼロの数値でなければなら ず、名前のついた定数、配列要素、フィールド名、リテラル、またはテー ブル名とすることができます。 開始位置が指定されていない場合には、値 1 が使用されます。
結果フィールドは、フィールド、配列要素、データ構造、またはテーブルのいずれでもかまいません。 結果フィールド の長さは、演算項目 2 に指定されたソース・ストリングと同じでなければなりません。 結果フィールドがソース・ストリングより大きい場合には、結果は左寄せされます。 結果フィールドがソース・ストリングより短い場合には、結 果フィールドに、変換済みのソース・ストリングの左端部分が入ります。 結果のフィールドが可変長の場合、その長さは変わりません。
変換元ストリングの文字が重複している場合には、最初に現れたもの (左端) が使用されます。
7 から 11 桁目には、有効な標識を指定することができます。
演算項目 2 が結果フィールドより短い場合には、命令拡張桁に指定された P によって、変換後に結果フィールドの右側にブランクが埋め込むように指示 されます。 結果フィールドが図形で P が指定されている場合には、図形のブランクが使用 されます。 結果フィールドが UCS-2 で P が指定されている場合には、UCS-2 のブランクが使用されます。
XLATE 例外 (プログラム状況コード 100) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細について は、プログラム例外/エラーを参照してください。
75-76 桁目はブランクでなければなりません。
詳細については、ストリング命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+.... CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.... * * 以下では、NUMBER のブランクが '-' に変換されます。 * RESULT の結果は '999-9999' になります。 * C MOVE '999 9999' Number 8 C ' ':'-' XLATE Number Result 8
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+.... DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++ D Up C 'ABCDEFGHIJKLMNOPQRS- D 'TUVWXYZ' D Lo C 'abcdefghijklmnopqrs- 'tuvwxyz' CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.. * * 次の例では、STRING のすべての値が大文字に変換されます。 * 結果として RESULT='RPG DEPT' になります。 * C MOVE 'rpg dept' String 8 C Lo:Up XLATE String Result * * 次の例では、ストリングの一部だけが小文字に変換されます。 * 結果として RESULT='RPG Dept になります。 * C Up:Lo XLATE String:6 Result
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.