表意定数に関する規則

形象定数の使用にあたっては、以下の規則に留意してください。
  • MOVE および MOVEL 命令によって、文字形象定数を数値フィールドに 転送することができます。形象定数は、まず、数値フィールド のサイズを持つゾーン数値として拡張され、必要な場合にはパックまたは 2 進数値に 変換されてから、受動数値フィールドに記憶されます。 この定数の各文字の数字部分が有効でなければな りません。 そうでない場合には、10 進数データ・エラーが起こります。
  • 形象定数は基本項目と見なされます。 MOVEA の場合を除いて、形象定数は配 列と関連して使用されるかのように働きます。たとえば、MOVE *ALL'XYZ' ARR があります。

    ARR が 4 バイトの文字要素を持つ場合には、各要素に 'XYZX' が入ります。

  • MOVEA は、特殊な場合と見なされます。 この定数は、指定された配列の部分 と等しい長さで生成されます。 たとえば、次のようになります。
    • MOVEA *BLANK ARR(X)

      要素 X から始まり、ARR の残りの部分にはブランクが入ります。

    • MOVEA *ALL'XYZ' ARR(X)

      ARR には 4 バイトの文字要素があります。 要素の境界は、文字の MOVEA 命 令では常にそうですが、無視されます。要素 X から始まり、配列の残りの部分には 'XYZXYZXYZ...' が入ります。.

MOVEA の結果は上記の MOVE の例の結果とは異なることに注意してください。
  • 代替照合順序の指定がある場合には、形象定数が該当する長さに設定/リセットされた後で、通常の照合順序を変更することができます。
  • 移動命令の MOVE および MOVEL では、形象定数の *ALL'X..'、 *ALLG'oK1K2i'、 および *ALLX'x1..' を転送するときは同じ結果になります。ストリングは、 関連したフィールドの長さとストリングの長さが同じになるまで 、文字単位で (左から順に) 周期的に反復されます。
  • 演算項目の一方が形象定数ではない限り、形象定数は比較命令の中で使用す ることができます。
  • 形象定数 *BLANK/*BLANKS は、MOVE 命令ではゼロとして数値フィールドへ 転送されます。