dtoc (2) --- convert double precision value to ASCII string 02/25/82 _C_a_l_l_i_n_g _I_n_f_o_r_m_a_t_i_o_n integer function dtoc (val, out, w, d) long_real val character out (ARB) integer w, d Library: vswtlb (standard Subsystem library) _F_u_n_c_t_i_o_n 'Dtoc' converts the double precision floating point value in 'val' to a character string in 'out'. The length of the string is returned as the value of 'dtoc'. The values of 'w' and 'd' control the format of the con- verted string. Generally speaking, 'd' controls the number of decimal positions or significant digits, and 'w' specifies the maximum length of the field. The following table explains the operation of 'dtoc' for different com- binations of 'w' and 'd'. (Fortran and Basic programmers take note: d>12 corresponds to Basic output, 12>=d>=0 corresponds to Fortran 'F' format, and 0>d>=-12 corresponds to Fortran 'E' format) _'_d_' _'_w_' _R_e_s_u_l_t d>12 w>16 If the value is in the range 1e7>v>=1e-2, it is converted into a BASIC-like fixed- point with no trailing zeroes after the decimal point. Otherwise, it is converted into a BASIC-like exponential format with no trailing zeroes after the decimal point. w<=16 An error is returned. 12>=d>=0 - If possible, the value is converted to a fixed-point format with 'd' positions after the decimal point. Otherwise, it is converted to an exponential format with as many significant digits as possible. If 'w' is less than 8, an exponential conver- sion is not possible and an error will be returned. 0>d>-12 w>d+6 The number is converted to an exponential format with 'd' significant digits. w<=d+6 An error is returned. To return an error, 'dtoc' places a string consisting of a single question mark in 'out'. It should be noted that 'w' is roughly equivalent to the dtoc (2) - 1 - dtoc (2) dtoc (2) --- convert double precision value to ASCII string 02/25/82 'size' parameter in other conversion routines such as 'itoc' and 'ltoc'; 'w' specifies the maximum number of digits that may be produced. Thus, the maximum number of characters returned in 'out' will never exceed 'w + 1'. _I_m_p_l_e_m_e_n_t_a_t_i_o_n 'Dtoc' first scales the number into the range 1 > v >= .1. It then determines the format in which the number is to be printed and rounds the value to the proper number of digits. The digits are then extracted in character form. One of several conversion routines is then entered to take the extracted digits and add decimal points, signs, and exponents as required by the 'd' and 'w' specifications. _A_r_g_u_m_e_n_t_s _M_o_d_i_f_i_e_d out _C_a_l_l_s itoc _B_u_g_s Has been thoroughly debugged, but has not stood the test of time. _S_e_e _A_l_s_o ctod (2), other conversion routines ('cto?*' and '?*toc') (2) dtoc (2) - 2 - dtoc (2)