The main documentation of the Output_Communication Procedure contains additional explanation of this code listing.
subroutine Output_Communication (Communication, Unit)
! Input variables.
! Place holder to allow generic procedure calls -- real data associated
! with the communication is stored in global class variables for easy
! access.
type(Communication_type), intent(in) :: Communication
type(integer), intent(in), optional :: Unit ! Output unit.
! Internal variable.
type(integer) :: A_Unit ! Actual output unit.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements.
VERIFY(Valid_State(Communication),5) ! Communication is valid.
! Only output on the IO PE.
if (this_is_IO_PE) then
! Set unit number.
if (PRESENT(Unit)) then
A_Unit = Unit
else
A_Unit = 6
end if
! Output Identification Info.
if (Parallel) then
write (A_Unit,100) 'Running in parallel mode using ', &
TRIM(Parallel_Library), ':'
write (A_Unit,101) 'NPEs = ', NPEs
write (A_Unit,101) 'PE = ', this_PE
write (A_Unit,101) 'IO_PE = ', IO_PE
else
write (A_Unit,100) 'Running in serial mode.'
end if
end if
! Format statements.
100 format (a,:,a,a,/)
101 format (2x,a,i5)
! Verify guarantees - none.
return
end subroutine Output_Communication