Initialize PENF's variables that are not initialized into the definition specification.
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.
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).
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.
subroutine penf_init()
!---------------------------------------------------------------------------------------------------------------------------------
!< Initialize PENF's variables that are not initialized into the definition specification.
!---------------------------------------------------------------------------------------------------------------------------------
!---------------------------------------------------------------------------------------------------------------------------------
call check_endian
BIR8P = bit_size(MaxR8P) ; BYR8P = BIR8P/8_I1P
BIR4P = bit_size(MaxR4P) ; BYR4P = BIR4P/8_I1P
BIR_P = bit_size(MaxR_P) ; BYR_P = BIR_P/8_I1P
#ifdef r16p
BIR16P = bit_size(MaxR16P) ; BYR16P = BIR16P/8_I2P
#else
BIR16P = int(BIR8P, kind=I2P) ; BYR16P = BIR16P/8_I2P
#endif
is_initialized = .true.
return
!---------------------------------------------------------------------------------------------------------------------------------
endsubroutine penf_init