Description: Subroutine for casting between numeric and string data.
For casting x of type integer into a variable into of type
character (scalar only) or String (any rank):
call cast(x, into [, fmt])
fmt is optional, may be one of INT_FMTSFor casting x of type real into a variable into of type
character (scalar only) or String (any rank):
call cast(x, into [, locale, fmt, decimals])
locale is optional, may be one of LOCALESfmt is optional, may be one of REAL_FMTSdecimals is optional and of type integerFor casting x of type complex into a variable into of type
character (scalar only) or String (any rank):
call cast(x, into [, locale, fmt, decimals, im])
locale is optional, may be one of LOCALESfmt is optional, may be one of REAL_FMTSdecimals is optional and of type integerim is optional and of type character(len=*)Note
While str and String return values
which may be used flexibly inside of string expressions, cast may be
used as above to write directly to variables. When converting large
amounts of data to strings, cast may be up to 2x faster than the
functional alternatives since the total number of string allocations is
reduced by at least half, all else being equal.
For casting substring of type character (scalar only) or String
(any rank) into a variable into of type integer:
call cast(substring, into [, fmt])
call substring%cast(into [, fmt])
fmt is optional, may be one of INT_FMTSFor casting substring of type character (scalar only) or String
(any rank) into a variable into of type real:
call cast(substring, into [, locale, fmt])
call substring%cast(into [, locale, fmt])
locale is optional, may be one of LOCALESfmt is optional, may be one of REAL_FMTSFor casting substring of type character (scalar only) or String
(any rank) into a variable into of type complex:
call cast(substring, into [, locale, fmt, im])
call substring%cast(into [, locale, fmt, im])
locale is optional, may be one of LOCALESfmt is optional, may be one of REAL_FMTSim is optional and of type character(len=*)Warning
The arguments x and substring must always be of the same
rank and shape as into, which must be pre-allocated prior to calling
cast due to the restrictions on intent(out) arguments of
elemental procedures.
Note
The type-bound procedure access of the form
call substring%cast() is valid when substring is a String
variable. To cast a String-valued expression, the expression must be
passed to cast by the form call cast().
Integer formats (default is "i"):
INT_FMTS = [ "i", "z" ]
Real formats (default is "e"):
REAL_FMTS = [ "e", "f", "z" ]
Locales (default is "US"):
LOCALES = [ "US", "EU" ]
Decimals: decimals specifies the number of digits on the rhs of the
radix point, with a default determined internally based on the
text format and precision.
Imaginary unit: im specifies the form of a complex number. If not
present, complex numbers will be assumed to be written as ordered
pairs, e.g. (2.45,3.45).