レガシー関数と推奨関数(日付や数値を文字へ変換)
この記事では、日付型や数値型の項目を文字へ変換する処理において古いバージョンの関数を利用した場合と、新しいバージョンの関数を利用した場合のサンプルを記載しています。
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」とすることで数値のみを文字に変換しています。