Nodes of different colours represent the following:
Module Graph
Solid arrows point from a parent (sub)module to the submodule which is
descended from it. Dashed arrows point from a module being used to the
module using it.
Type Graph
Solid arrows point from one derived type to another which extends
(inherits from) it. Dashed arrows point from a derived type to another
type containing it as a components, with a label listing the name(s) of
said component(s).
Call Graph
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Module Graph
Solid arrows point from a parent (sub)module to the submodule which is
descended from it. Dashed arrows point from a module being used to the
module using it.
Type Graph
Solid arrows point from one derived type to another which extends
(inherits from) it. Dashed arrows point from a derived type to another
type containing it as a components, with a label listing the name(s) of
said component(s).
Call Graph
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Variables
Type
Visibility
Attributes
Name
Initial
character(kind=CDK,len=:),
public,
allocatable
::
digits
integer(kind=IK),
public
::
ndigits_digits
integer(kind=IK),
public
::
ndigits
integer(kind=IK),
public
::
ierr
Source Code
function string_to_integer(str)result(ival)implicit nonecharacter(kind=CK,len=*),intent(in)::strinteger(IK)::ivalcharacter(kind=CDK,len=:),allocatable::digitsinteger(IK)::ndigits_digits,ndigits,ierrif(.not.exception_thrown)then! Compute how many digits we need to readndigits=2*len_trim(str)ndigits_digits=floor(log10(real(ndigits)))+1allocate(character(kind=CDK,len=ndigits_digits)::digits)write(digits,'(I0)')ndigits!gfortran will have a runtime error with * edit descriptor here! gfortran bug: '*' edit descriptor for ISO_10646 strings does bad stuff.read(str,'(I'//trim(digits)//')',iostat=ierr)ival!string to integerif(ierr/=0)then!if there was an errorival=0call throw_exception('Error in string_to_integer:'//&' string cannot be converted to an integer: '//trim(str))end if elseival=0end if end function string_to_integer