LCOV - code coverage report
Current view: top level - hemco/HEMCO/src/Shared/NcdfUtil - m_do_err_out.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 21 0.0 %
Date: 2024-12-17 17:57:11 Functions: 0 1 0.0 %

          Line data    Source code
       1             : !------------------------------------------------------------------------------
       2             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
       3             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
       4             : !------------------------------------------------------------------------------
       5             : !BOP
       6             : !
       7             : ! !MODULE: m_do_err_out.F90
       8             : !
       9             : ! !INTERFACE:
      10             : !
      11             : module m_Do_Err_Out
      12             : !
      13             :   implicit none
      14             : !
      15             : ! !PUBLIC MEMBER FUNCTIONS:
      16             : !
      17             :   public  Do_Err_Out
      18             : !
      19             : ! !DESCRIPTION: Provides a routine to print an error message and exit the code.
      20             : !\\
      21             : !\\
      22             : ! !AUTHOR:
      23             : !  Jules Kouatchou
      24             : !
      25             : ! !REVISION HISTORY:
      26             : !  See https://github.com/geoschem/ncdfutil for complete history
      27             : !EOP
      28             : !------------------------------------------------------------------------------
      29             : !BOC
      30             : CONTAINS
      31             : !EOC
      32             : !------------------------------------------------------------------------------
      33             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
      34             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
      35             : !------------------------------------------------------------------------------
      36             : !BOP
      37             : !
      38             : ! !IROUTINE: Do_Err_Out
      39             : !
      40             : ! !INTERFACE:
      41             : !
      42           0 :   subroutine Do_Err_Out  &
      43             :        (err_msg, err_do_stop, err_num_ints, err_int1, err_int2,  &
      44             :        err_num_reals, err_real1, err_real2)
      45             : !
      46             :     implicit none
      47             : !
      48             : ! !INPUT PARAMETERS:
      49             : !!     err_msg       : error message to be printed out
      50             : !!     err_do_stop   : do stop on error?
      51             : !!     err_num_ints  : number of integers to be printed out (0, 1, or 2)
      52             : !!     err_int1      : integer 1 to print out
      53             : !!     err_int2      : integer 2 to print out
      54             : !!     err_num_reals : number of reals to be printed out (0, 1, or 2)
      55             : !!     err_real1     : real 1 to print out
      56             : !!     err_real2     : real 2 to print out
      57             :     character (len=*), intent(in) :: err_msg
      58             :     logical          , intent(in) :: err_do_stop
      59             :     integer          , intent(in) :: err_num_ints
      60             :     integer          , intent(in) :: err_int1
      61             :     integer          , intent(in) :: err_int2
      62             :     integer          , intent(in) :: err_num_reals
      63             :     real*8           , intent(in) :: err_real1
      64             :     real*8           , intent(in) :: err_real2
      65             : !
      66             : ! !DESCRIPTION: Outputs error messages, and exits if requested.
      67             : !\\
      68             : !\\
      69             : ! !AUTHOR:
      70             : !  John Tannahill (LLNL) and Jules Kouatchou
      71             : !
      72             : ! !REMARKS:
      73             : !  NOTE: SHOULD PROPAGATE ERROR CODE TO MAIN PROGRAM LEVEL!
      74             : !
      75             : ! !REVISION HISTORY:
      76             : !  See https://github.com/geoschem/ncdfutil for complete history
      77             : !EOP
      78             : !-------------------------------------------------------------------------
      79             : !BOC
      80             : 
      81             :     ! Write separator
      82           0 :     WRITE( 6, '(/,a,/)' ) REPEAT( '!', 79 )
      83             : 
      84             :     ! Write error message
      85           0 :     WRITE( 6,'(a)' ) TRIM( err_msg )
      86             : 
      87             :     ! Write error codes
      88           0 :     IF ( err_num_ints == 1 ) THEN
      89           0 :        WRITE( 6,'(i10)'   ) err_int1
      90           0 :     ELSE IF ( err_num_ints == 2 ) then
      91           0 :        WRITE( 6, '(2i10)' ) err_int1, err_int2
      92             :     ENDIF
      93             : 
      94           0 :     IF ( err_num_reals == 1 ) THEN
      95           0 :        WRITE( 6, '(f13.6  )' ) err_real1
      96           0 :     ELSE IF ( err_num_reals == 2 ) THEN
      97           0 :        WRITE( 6, '(2f13.6 )' ) err_real1, err_real2
      98             :     ENDIF
      99             : 
     100             :     ! Write separator
     101           0 :     WRITE( 6, '(/,a,/)' ) REPEAT( '!', 79 )
     102             : 
     103             :     ! Flush the buffer
     104             :     ! Flush is unavailable on the NAG compiler (for CESM) and CPRNAG is defined if using it.
     105             : #ifndef CPRNAG
     106           0 :     CALL Flush( 6 )
     107             : #endif
     108             : 
     109             :     ! Stop with error (if requested)
     110             :     ! NOTE: We should pass back the error code to the main routine
     111           0 :     IF ( err_do_stop ) THEN
     112             :         WRITE( 6, '(a,/)' ) 'Code stopped from DO_ERR_OUT '               // &
     113           0 :                             '(in module NcdfUtil/m_do_err_out.F90) '
     114             :         WRITE( 6, '(a)'   ) 'This is an error that was encountered '      // &
     115           0 :                             'in one of the netCDF I/O modules,'
     116             :         WRITE( 6, '(a)'   ) 'which indicates an error in writing to '     // &
     117           0 :                             'or reading from a netCDF file!'
     118             : 
     119             :         ! Write separator
     120           0 :         WRITE( 6, '(/,a,/)' ) REPEAT( '!', 79 )
     121             : 
     122             :         ! Flush stdout buffer
     123             :         ! Flush is unavailable on the NAG compiler (for CESM) and CPRNAG is defined if using it.
     124             : #ifndef CPRNAG
     125           0 :         CALL Flush( 6 )
     126             : #endif
     127             : 
     128             :         ! NOTE: Should not exit but pass error code up
     129             :         ! work on this for a future version
     130           0 :         stop 999
     131             :     ENDIF
     132             : 
     133           0 :     RETURN
     134             : 
     135             :   end subroutine Do_Err_Out
     136             : !EOC
     137             : end module m_Do_Err_Out

Generated by: LCOV version 1.14