レガシー関数と推奨関数(日付や数値を文字へ変換)

2024年3月23日テクニカルメモ

この記事では、日付型や数値型の項目を文字へ変換する処理において古いバージョンの関数を利用した場合と、新しいバージョンの関数を利用した場合のサンプルを記載しています。

TO_CHAR 関数

TO_CHAR 関数は、推奨関数(新しい関数)になります。

関数の使い方

TO_CHAR(文字型に変換したい項目)

サンプルプロシジャ

日付型「YYMD」日付時間型「HYYMDs」数値型を文字に変換するTO_CHAR関数のサンプルです。

SET PAGE-NUM = NOLEAD
DEFINE FILE CAR
-* サンプルデータ用一時項目
 DATE/YYMD            = DT_CURRENT_DATE();
 DATETIME/HYYMDs      = DT_CURRENT_DATETIME(MILLISECOND);
-* TO_CHAR関数の利用サンプル
 A_DATE/STRING        = TO_CHAR(DATE);
 A_DATETIME/STRING    = TO_CHAR(DATETIME);
 A_DEALER_COST/STRING = TO_CHAR(DEALER_COST);
END
TABLE FILE CAR
PRINT
 COUNTRY NOPRINT
 DATE
 A_DATE        AS '元YYMD'
 DATETIME
 A_DATETIME    AS '元HYYMDs'
 DEALER_COST
 A_DEALER_COST AS '元数値'
END

DATECVT 関数、HCNVRT 関数(日付を文字に変換する)

DATECVT 関数や HCNVRT 関数は、レガシー関数になります。

関数の使い方

DATECVT( 標準日付フォーマットの日付 , '変換元の日付フォーマット’ , '変換後の文字フォーマット’ )

HCNVRT( 日付時間フォーマットの日付 , '(変換元の日付フォーマット)’ , 変換元の文字数 , 'An’ )

※An は日付項目全体の長さを格納できるフォーマット

FTOA 関数、PTOA 関数(数値型を文字に変換する)

FTOA 関数や PTOA 関数は、レガシー関数になります。

関数の使い方

FTOA( 浮動小数点数フォーマットの数値 , '(Dn.x)’ , 'An’ )

PTOA( パック10進数フォーマットの数値 , '(Pn.x)’ , 'An’ )

※浮動小数点数フォーマットは「Dn」「Fn」の2種類です
※パック10進数フォーマットは「Pn」です
※An は数値を文字に変換した時に全体の長さを格納できるフォーマット

サンプルプロシジャ

標準日付を文字に変換する DATECVT 関数
日付時間を文字に変換する HCNVRT 関数
数値を文字に変換する FTOA 関数のサンプルです。

SET PAGE-NUM = NOLEAD
DEFINE FILE CAR
-* サンプルデータ用一時項目
 DATE/YYMD        = '&YYMD';
 DATETIME/HYYMDs  = HGETC(10, 'HYYMDs');
-* TO_CHAR関数の利用サンプル
 A_DATE/A8        = DATECVT(DATE,'YYMD','A8YYMD');
 A_DATETIME/A23   = HCNVRT(DATETIME,'(HYYMDs)',23,'A23');
 A_DEALER_COST/A7 = FTOA(DEALER_COST,'(D7c)','A7');
END
TABLE FILE CAR
PRINT
 COUNTRY NOPRINT
 DATE
 A_DATE        AS '元YYMD'
 DATETIME
 A_DATETIME    AS '元HYYMDs'
 DEALER_COST
 A_DEALER_COST AS '元数値'

END

結果イメージは、TO_CHAR と少し異なります。
DATECVT では日付のスラッシュが無くなることに注意してください。
また、FTOA関数やPTOA関数では元の数値項目に含まれるカンマも文字として認識します。本サンプルでは、カンマを削除する編集オプション(c)を指定して「D7c」とすることで数値のみを文字に変換しています。