EDIT - フィールドのフォーマットを変換
EDIT 関数は、数値を含む文字フィールドを数値フォーマットに変換、または数値フィールドを文字フォーマットに変換します。
この関数は、特定のフォーマットで被演算子を必要とする式を実行する際に、その式のフィールドを操作する場合に役立ちます。
EDIT で変換後の値を新しいフィールドに割り当てるときは、新しいフィールドのフォーマットが返された値のものと同一である必要があります。たとえば、EDIT で数値フィールドを文字フォーマットに変換する場合、新しいフィールドは文字フォーマットである必要があります。
DEFINE ALPHAPRICE/A6 = EDIT(PRICE);
EDIT 関数は、特殊文字を次のように処理します。
- 文字フィールドを数値フォーマットに変換すると、フィールド内の符号および小数点は数値の一部として保存されます。
数値以外のその他の文字は無効で、EDIT が 0 (ゼロ) を返します。
- 浮動小数点数またはパック 10 進数フィールドを文字フォーマットに変換するときは、符号、小数点、および小数点以下のすべての数字は削除されます。さらに残りの数字を右揃えし、指定されたフィールドの長さに達するまで、先頭に 0 (ゼロ) を追加します。浮動小数点数またはパック 10 進数フォーマットの 10 桁以上の数値を変換すると、結果に誤りが生じる可能性があります。
フィールドのフォーマットを変換
数値を文字フォーマットに変換
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