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 strz_I4P(n,nz_pad)result(str)!< Convert integer to string, prefixing with the right number of zeros.!<!<```fortran!< use penf!< print "(A)", strz(n=1_I4P)!<```!=> 0000000001 <<<!<!<```fortran!< use penf!< print "(A)", strz(n=1_I4P, nz_pad=5)!<```!=> 00001 <<<integer(I4P),intent(in)::n!< Integer to be converted.integer(I4P),intent(in),optional::nz_pad!< Number of zeros padding.character(DI4P)::str!< Returned string containing input number plus padding zeros.write(str,FI4PZP)n! Casting of n to string.str=str(2:)! Leaving out the sign.if(present(nz_pad))str=str(DI4P-nz_pad:DI4P-1)! Leaving out the extra zeros paddingendfunction strz_I4P