module abortutils 221,1 implicit none private save public :: endrun CONTAINS subroutine endrun (msg) 1683,7 !----------------------------------------------------------------------- ! Purpose: ! ! Abort the model for abnormal termination ! !----------------------------------------------------------------------- #if (defined SPMD) use mpishorthand, only: MPI_COMM_WORLD #endif use shr_sys_mod, only: shr_sys_flush use cam_logfile, only: iulog ! Arguments character(len=*), intent(in), optional :: msg ! string to be printed ! Local variables integer :: ierr !----------------------------------------------------------------------- if (present (msg)) then write(iulog,*)'ENDRUN:', msg else write(iulog,*)'ENDRUN: called without a message string' end if #if defined(NEC_SX) call mesput("ENDRUN", len("ENDRUN"), 1) #elif defined(AIX) close(5) ! needed to prevent batch jobs from hanging in xl__trbk #if !defined(BGL) && !defined(BGP) call xl__trbk() #endif #endif call shr_sys_flush( 6 ) ! Flush all output to standard output #if (defined SPMD) ! passing an argument of 1 to mpi_abort will lead to a STOPALL output ! error code of 257 call mpi_abort (MPI_COMM_WORLD, 1, ierr) #else call abort #endif end subroutine endrun end module abortutils