EDIT - フィールドのフォーマットを変換

EDIT 関数は、数値を含む文字フィールドを数値フォーマットに変換、または数値フィールドを文字フォーマットに変換します。

この関数は、特定のフォーマットで被演算子を必要とする式を実行する際に、その式のフィールドを操作する場合に役立ちます。

EDIT で変換後の値を新しいフィールドに割り当てるときは、新しいフィールドのフォーマットが返された値のものと同一である必要があります。たとえば、EDIT で数値フィールドを文字フォーマットに変換する場合、新しいフィールドは文字フォーマットである必要があります。

DEFINE ALPHAPRICE/A6 = EDIT(PRICE);

EDIT 関数は、特殊文字を次のように処理します。

  • 文字フィールドを数値フォーマットに変換すると、フィールド内の符号および小数点は数値の一部として保存されます。

    数値以外のその他の文字は無効で、EDIT が 0 (ゼロ) を返します。

  • 浮動小数点数またはパック 10 進数フィールドを文字フォーマットに変換するときは、符号、小数点、および小数点以下のすべての数字は削除されます。さらに残りの数字を右揃えし、指定されたフィールドの長さに達するまで、先頭に 0 (ゼロ) を追加します。浮動小数点数またはパック 10 進数フォーマットの 10 桁以上の数値を変換すると、結果に誤りが生じる可能性があります。

フィールドのフォーマットを変換

EDIT(fieldname);

説明

fieldname

文字または数値

フィールド名です。

数値を文字フォーマットに変換

EDIT 関数は、HIRE_DATE (レガシー日付フォーマット) を文字フォーマットに変換します。これにより、文字フォーマットをとる CHGDAT 関数でこのフィールドが使用できるようになります。

TABLE FILE EMPLOYEE
PRINT HIRE_DATE AND COMPUTE
ALPHA_HIRE/A17 = EDIT(HIRE_DATE); NOPRINT AND COMPUTE
HIRE_MDY/A17 = CHGDAT('YMD', 'MDYYX', ALPHA_HIRE, 'A17');
BY LAST_NAME BY FIRST_NAME
WHERE DEPARTMENT EQ 'MIS';
END

出力結果は次のとおりです。

LAST_NAME  FIRST_NAME  HIRE_DATE  HIRE_MDY 
---------  ----------  ---------  -------- 
BLACKWOOD  ROSEMARIE   82/04/01   APRIL 01 1982 
CROSS      BARBARA     81/11/02   NOVEMBER 02 1981 
GREENSPAN  MARY        82/04/01   APRIL 01 1982 
JONES      DIANE       82/05/01   MAY 01 1982 
MCCOY      JOHN        81/07/01   JULY 01 1981 
SMITH      MARY        81/07/01   JULY 01 1981