パック10新数への変換

概要

文字列を数値又はタイム・スタンプに変換します。

数値式又は文字列

精度 と小数位 のパラメーターは、 式のタイプが浮動でも文字でもない場合は省略してもかまいません。 これらのパラメーターが省略された場合は、精度および小数位は、数値式の 属性から取得されます。

パラメーターが文字式である場合は、次の規則が適用されます。
・符号は任意指定です。'+' または '-' を使用できます。数値データの前に付けることも、または後ろに付けることもできます。
・小数点は任意指定です。 ピリオドでもコンマでもかまいません。
・ブランクはデータの任意の場所で使用できます。 たとえば、' + 3 ' は有効なパラメーターです。
・2 番目と 3 番目のパラメーターは必須です。
・浮動小数点データ (例えば、'1.2E6') は使用できません。
・無効な数値データが検出された場合、例外が発生し、状況コード 105 が戻されます

注意

%LEN および %DECPOS は、その値が定数であっても、%DEC または %DECH の2番目および3番目のパラメーターとして直接使用することはできません。


日付、時刻、又はタイム・スタンプ式

最初のパラメーターが日付、時刻、またはタイム・スタンプ式である場合、 オプションの形式パラメーターで、戻り値の形式を指定します。 変換後の 10 進数値の桁数は、その形式の値が取り得る桁数になり、 小数点以下の桁数はゼロになります。 例えば、最初のパラメーターが日付で、形式が *YMD である場合、10 進数値は 6 桁になります。

形式パラメーターを省略すると、最初のパラメーターの形式が使用されます。 DATFMT(形式{区切り記号}) を参照してください。

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
DNAME+++++++++++ETDSFROM+++TO/L+++IDC.KEYWORDS+++++++++++++++++++++++++++++COMMENTS++++++++++++
D YYDDD      S        5S 0
D YYYYMMDD     S        8P 0
D DATE       S        D INZ(D'2020-08-19') DATFMT(*USA)
C*
C          EVAL   YYDDD = %DEC(DATE:*JUL)       // YYDDD = 20232
C          EVAL   YYYYMMDD = %DEC(DATE:*ISO)     // YYYYMMDD = 20200819
              
            

%DECH(四捨五入を伴うパック10進数形式への変換

[一般形式]

%DECH(精度四捨五入桁数

%DECH(numeric or character expression :precision:decimal places )

%DECH は %DEC と同じですが、式が 10 進数値または浮動値である場合には、希望の精度に変換する際に式の値に四捨五入が適用されるという点が異なります。
四捨五入が実行できない場合、メッセージは出されません。

%DEC とは異なり、3 つのパラメーターはすべて必要です。

POINT

・精度とは変換後の小数点以下の桁数である。
・四捨五入できない値でもエラーメッセージは表示されない。