Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character, | intent(in) | :: | str | |||
integer(kind=I1P), | intent(in) | :: | knd | |||
character, | intent(in), | optional | :: | pref | ||
integer(kind=I4P), | intent(out), | optional | :: | error |
function ctoi_I1P(str, knd, pref, error) result(n)
!< Convert string to integer.
!<
!<```fortran
!< use penf
!< print FI1P, cton(str='-1', knd=1_I1P)
!<```
!=> -1 <<<
character(*), intent(in) :: str !< String containing input number.
integer(I1P), 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.
integer(I1P) :: 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 integer failed! integer(', kind(knd), ')'
endif
if (present(error)) error = err
endfunction ctoi_I1P