Nodes of different colours represent the following:
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.
elemental function str_I8P(n,no_sign)result(str)!< Convert integer to string.!<!<```fortran!< use penf!< print "(A)", str(n=-1_I8P)!<```!=> -1 <<<!<!<```fortran!< use penf!< print "(A)", str(n=-1_I8P, no_sign=.true.)!<```!=> 1 <<<integer(I8P),intent(in)::n!< Integer to be converted.logical,intent(in),optional::no_sign!< Flag for leaving out the sign.character(DI8P)::str!< Returned string containing input number plus padding zeros.write(str,FI8P)n! Casting of n to string.str=adjustl(trim(str))! Removing white spaces.if(n>=0_I8P)str='+'//trim(str)! Prefixing plus if n>0.if(present(no_sign))str=str(2:)! Leaving out the sign.endfunction str_I8P