Convert string to real.
use penf
print FR16P, cton(str='-1.0', knd=1._R16P)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | str |
String containing input number. |
||
real(kind=R16P), | intent(in) | :: | knd |
Number kind. |
||
character(len=*), | intent(in), | optional | :: | pref |
Prefixing string. |
|
integer(kind=I4P), | intent(out), | optional | :: | error |
Error trapping flag: 0 no errors, >0 error occurs. |
Number returned.
function ctor_R16P(str, knd, pref, error) result(n) !< Convert string to real. !< !<```fortran !< use penf !< print FR16P, cton(str='-1.0', knd=1._R16P) !<``` !=> -0.100000000000000000000000000000000E+0001 <<< character(*), intent(in) :: str !< String containing input number. real(R16P), intent(in) :: knd !< Number kind. character(*), optional, intent(in) :: pref !< Prefixing string. integer(I4P), optional, intent(out) :: error !< Error trapping flag: 0 no errors, >0 error occurs. real(R16P) :: n !< Number returned. integer(I4P) :: err !< Error trapping flag: 0 no errors, >0 error occurs. character(len=:), allocatable :: prefd !< Prefixing string. read(str, *, iostat=err) n ! Casting of str to n. if (err/=0) then prefd = '' ; if (present(pref)) prefd = pref write(stderr, '(A,I1,A)') prefd//' Error: conversion of string "'//str//'" to real failed! real(', kind(knd), ')' endif if (present(error)) error = err endfunction ctor_R16P