文字フィールドが数値の結果のフィールドに転送される場合には、それぞれの 文字の数字部分がそれに対応する数字に変換されてから結果のフィールドに転 送されます。 ブランクはゼロとして転送されます。 MOVE 命令の場合には、右端の文字のゾーン部分がそれに対応する符号に変換さ れて数値の結果のフィールドの右端の桁に転送されます。 これがそのフィールドの符号になります。 (この例は、図 318 を参照してください。) MOVEL 命令の場合には、右端の文字が移動命令に含まれているかどうかに関係 なく、演算項目 2 の右端の文字のゾーン部分が変換されて結果のフィールドの 符号として使用されます (ただし、演算項目 2 が結果のフィールドよりも短い 場合を除きます)。 (この例は、図 320 を参照してください。)
移動命令が数値フィールドの間に指定された場合には、演算項目 2 フィールド に指定された小数点以下の桁数は無視されます。 例えば、小数点以下の桁数が 1 桁の 3 桁の数値フィールドに 1.00 を転送す ると、結果は 10.0 になります。
文字または数値フィールドに転送する場合には、演算項目 2 に形象定数 *ZEROS を入れることができます。 図形フィールドで同じ機能を実行するためには、*ALLG'oXXi' をコーディング しなければなりません (この場合に、'XX' は図形ゼロを表します)。
文字の転送元から図形フィールドにデータを転送する場合には、転送元が文字 リテラル、名前のついた定数、または *ALL であれば、コンパイラーは、 全体が 1 対のシフトアウト文字とシフトイン文字 (SO/SI) で囲まれている かどうかを確認する検査を行います。 コンパイラーは、文字転送元が偶数長で、最低 4 バイト (SO/SI 文字プラス 1 図形文字) であるかどうかも検査します。 16 進数リテラルまたは *ALLX から図形フィールドに転送する場合には、16 進数リ テラルの最初のバイトと最後のバイトまたは *ALLX 内のパターンは、0E (シフ トアウト) および 0F (シフトイン) であってはなりません。 この場合にも 16 進数リテラル (またはパターン) は偶数バイトを表していなければなりません。
文字フィールドが図形フィールドへの転送または図形フィールドからの転送に かかわっている場合には、コンパイラーは、文字フィールドが偶数長で、最低 4 バイトの長さであるかどうかを検査します。 実行時には、コンパイラーは文字 フィールドの内容を検査して、全体が 1 対の SO/SI だけで囲まれているかどう かを確認します。
図形フィールドから文字フィールドに転送する場合には、文字フィールドが 図形フィールドのバイト数に 2 バイトを加えた長さより大きい場合に、 図形データの直前と直後に SO/SI が追加されます。 これが、文字フィールドの残りのデータによって その文字フィールドの SO/SI の不均衡の原因になることがあり、 これはコンパイラーでは診断されません。
移動命令を使用して文字フィールドから図形フィールドにデータを転送する場 合には、シフトアウト文字とシフトイン文字が除去されます。 図形フィー ルドから文字フィールドにデータを転送する場合には、転送先フィールドにシ フトアウト文字とシフトイン文字が挿入されます。
移動命令が、文字から UCS-2 または UCS-2 から文字へのデータの変換に 使用される場合、転送される文字数は、文字データにシフト文字と図形文字が 含まれる場合と含まれない場合があるために、変化します。 例えば、5 つの UCS-2 文字は、次の文字に変換できます。
結果のデータが長過ぎて、結果フィールドに入りきらない場合、そのデータは 切り捨てられます。 結果が 1 バイト文字である場合、その結果に完全な文字が含まれている こと、および突き合わせられた SO/SI のペアが含まれていることは、ユーザーが確認 してください。
移動命令に命令拡張 P を指定すると、 結果のフィールドには MOVEL および MOVEA の場合には右から、 また MOVE の場合には左から埋め込みが行われます。 埋め込み文字は、文字の場合はブランク、図形の場合は 2 バイトのブランク、UCS-2 の場合は UCS-2 ブランク、数値の場合は 0、標識の場合は '0' です。この埋め込みは操作の後で行われます。 フィールドを配列に転送するために MOVE または MOVEL を使用した場合には、 配列のそれぞれの要素に埋め込みが行われます。 これらの命令を使用して配列を配列に転送して結果に演算項目 2 の配列より多 くの要素が入る場合にも同じ埋め込みが行われますが、余分の要素は影響を受けません。 結果のフィールドに配列名がある MOVEA 命令では、 この命令によって影響を受ける最後の要素とそれ以後のすべての要素に埋め込みが行われます。
移動命令で結果の標識を指定した場合には、結果のフィールドによってどの 標識をオンに設定するかが決まります。結果のフィールドが文字フィールド、図形フィールド、または UCS-2 フィールドの場合には、75 桁目と 76 桁目の結果の標識しか指定できません。この標識は、結果のフィールドがすべてブランクの場合にオンに設定されます。結果のフィールドが数値の場合には、 3 つの結果の標識すべてを使用することができます。 これらの標識は次の場合にオンに設定されます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.