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