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. 1 つ目のトランザクションでは、プロシジャは従業員 ID の入力を要求します。「071382660」と入力します。
  2. プロシジャは、従業員の姓名「STEVENS ALFRED」を表示します。
  3. プロシジャは、現在の給与の入力を要求します。「N/A」と入力します。
  4. ピリオド (.) が表示されます。
  5. 2 つ目のトランザクションでは、プロシジャは、従業員 ID の入力を要求します。「112847612」と入力します。
  6. プロシジャは、従業員の姓名「SMITH MARY」を表示します。
  7. 続いて、現在の給与の入力を要求します。「45000」と入力します。
  8. 「¥45,000.00」と表示されます。