ATODBL - 文字列を倍精度浮動小数点数フォーマットに変換
ATODBL 関数は、文字列を実数 (倍精度浮動小数点数) フォーマットに変換します。
文字列を倍精度浮動小数点数フォーマットに変換
ATODBL(source_string, length, output)
source_string
文字
変換する文字列です。この文字列は、1 桁以上の数字と、オプションとして 1 つの符号と 1 つの小数点で構成されます。文字列を含むフィールドまたは変数を指定することもできます。
length
文字
ソース文字列の長さを 2 文字表記のバイト数で指定します。数値定数を指定することも、値を含むフィールドまたは変数を指定することもできます。数値定数を指定する場合は、一重引用符 (') で囲みます (例、'12')。
output
倍精度浮動小数点数
結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。
ATODBL - 文字列を倍精度浮動小数点数フォーマットに変換
ATODBL 関数は、EMP_ID フィールドを倍精度小数点数フォーマットに変換し、結果を D_EMP_ID に格納します。
TABLE FILE EMPLOYEE PRINT LAST_NAME AND FIRST_NAME AND EMP_ID AND COMPUTE D_EMP_ID/D12.2 = ATODBL(EMP_ID, '09', D_EMP_ID); WHERE DEPARTMENT EQ 'MIS'; END
出力結果は次のとおりです。
LAST_NAME SMITH JONES MCCOY BLACKWOOD GREENSPAN CROSS |
FIRST_NAME MARY DIANE JOHN ROSEMARIE MARY BARBARA |
EMP_ID 112847612 117593129 219984371 326179357 543729165 818692173 |
D_EMP_ID 112847612.00 117593129.00 219984371.00 326179357.00 543729165.00 818692173.00 |
LAST_NAME FIRST_NAME EMP_ID D_EMP_ID --------- ---------- ------ -------- SMITH MARY 112847612 112,847,612.00 JONES DIANE 117593129 117,593,129.00 MCCOY JOHN 219984371 219,984,371.00 BLACKWOOD ROSEMARIE 326179357 326,179,357.00 GREENSPAN MARY 543729165 543,729,165.00 CROSS BARBARA 818692173 818,692,173.00
MODIFY による文字値の倍精度フォーマットへの変換
次の例では、マスターファイルの CURR_SAL フィールドに MISSING 属性が含まれています。このフィールドの値を入力しない場合は、デフォルト値であるピリオド (.) と解釈されます。
FILENAME=EMPLOYEE, SUFFIX=FOC
SEGNAME=EMPINFO, SEGTYPE=S1
FIELDNAME=EMP_ID, ALIAS=EID,FORMAT=A9, $
.
.
.
FIELDNAME=CURR_SAL, ALIAS=CSAL,FORMAT=D12.2M, MISSING=ON,$
.
.
.
ATODBL は、TCSAL に入力された値を倍精度フォーマットに変換します。
MODIFY FILE EMPLOYEE
COMPUTE TCSAL/A12=;
PROMPT EID
MATCH EID
ON NOMATCH REJECT
ON MATCH TYPE "EMPLOYEE <D.LAST_NAME <D.FIRST_NAME"
ON MATCH TYPE "ENTER CURRENT SALARY OR 'N/A' IF NOT AVAILABLE"
ON MATCH PROMPT TCSAL
ON MATCH COMPUTE
CSAL MISSING ON = IF TCSAL EQ 'N/A' THEN MISSING
ELSE ATODBL(TCSAL, '12', 'D12.2');
ON MATCH TYPE "SALARY NOW <CSAL"
DATA
実行例は次のとおりです。
EMPLOYEE ON 11/14/96 AT 13.42.55 DATA FOR TRANSACTION 1 EMP_ID = 071382660 EMPLOYEE STEVENS ALFRED ENTER CURRENT SALARY OR 'N/A' IF NOT AVAILABLE TCSAL = N/A SALARY NOW . DATA FOR TRANSACTION 2 EMP_ID = 112847612 EMPLOYEE SMITH MARY ENTER CURRENT SALARY OR 'N/A' IF NOT AVAILABLE TCSAL = 45000 SALARY NOW $45,000.00 DATA FOR TRANSACTION 3 EMP_ID = end TRANSACTIONS: TOTAL = 2 ACCEPTED= 2 REJECTED= 0 SEGMENTS: INPUT = 0 UPDATED = 0 DELETED = 0
このプロシジャは、次のように処理されます。
- 1 つ目のトランザクションでは、プロシジャは従業員 ID の入力を要求します。「071382660」と入力します。
- プロシジャは、従業員の姓名「STEVENS ALFRED」を表示します。
- プロシジャは、現在の給与の入力を要求します。「N/A」と入力します。
- ピリオド (.) が表示されます。
- 2 つ目のトランザクションでは、プロシジャは、従業員 ID の入力を要求します。「112847612」と入力します。
- プロシジャは、従業員の姓名「SMITH MARY」を表示します。
- 続いて、現在の給与の入力を要求します。「45000」と入力します。
- 「¥45,000.00」と表示されます。