LCOV - code coverage report
Current view: | top level - hemco/HEMCO/src/Shared/NcdfUtil - hco_m_netcdf_io_readattr.F90 (source / functions) |  |  | Hit | Total | Coverage
Test: | coverage.info |  | Lines: | 0 | 137 | 0.0 %
Date: | 2025-01-13 21:54:50 |  | Functions: | 0 | 15 | 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: HCO_m_netcdf_io_readattr.F90
           8             : !
           9             : ! !INTERFACE:
          10             : !
          11             : MODULE HCO_m_netcdf_io_readattr
          12             : !
          13             : ! !USES:
          14             : !
          15             :   IMPLICIT NONE
          16             :   PRIVATE
          17             : !
          18             : ! !PUBLIC MEMBER FUNCTIONS:
          19             : !
          20             :   PUBLIC :: NcGet_Var_Attributes
          21             :   INTERFACE NcGet_Var_Attributes
          22             :      MODULE PROCEDURE NcGet_Var_Attr_C
          23             :      MODULE PROCEDURE NcGet_Var_Attr_C_nostop
          24             :      MODULE PROCEDURE NcGet_Var_Attr_I4
          25             :      MODULE PROCEDURE NcGet_Var_Attr_R4
          26             :      MODULE PROCEDURE NcGet_Var_Attr_R8
          27             :      MODULE PROCEDURE NcGet_Var_Attr_I4_arr
          28             :      MODULE PROCEDURE NcGet_Var_Attr_R4_arr
          29             :      MODULE PROCEDURE NcGet_Var_Attr_R8_arr
          30             :   END INTERFACE
          31             :
          32             :   PUBLIC :: NcGet_Glob_Attributes
          33             :   INTERFACE NcGet_Glob_Attributes
          34             :      MODULE PROCEDURE NcGet_Glob_Attr_C
          35             :      MODULE PROCEDURE NcGet_Glob_Attr_I4
          36             :      MODULE PROCEDURE NcGet_Glob_Attr_R4
          37             :      MODULE PROCEDURE NcGet_Glob_Attr_R8
          38             :      MODULE PROCEDURE NcGet_Glob_Attr_I4_arr
          39             :      MODULE PROCEDURE NcGet_Glob_Attr_R4_arr
          40             :      MODULE PROCEDURE NcGet_Glob_Attr_R8_arr
          41             :   END INTERFACE
          42             : !
          43             : ! !PRIVATE MEMBER FUNCTIONS:
          44             : !
          45             :   PRIVATE :: NcGet_Var_Attr_C
          46             :   PRIVATE :: NcGet_Var_Attr_I4
          47             :   PRIVATE :: NcGet_Var_Attr_R4
          48             :   PRIVATE :: NcGet_Var_Attr_R8
          49             :   PRIVATE :: NcGet_Var_Attr_I4_arr
          50             :   PRIVATE :: NcGet_Var_Attr_R4_arr
          51             :   PRIVATE :: NcGet_Var_Attr_R8_arr
          52             :   PRIVATE :: NcGet_Glob_Attr_C
          53             :   PRIVATE :: NcGet_Glob_Attr_I4
          54             :   PRIVATE :: NcGet_Glob_Attr_R4
          55             :   PRIVATE :: NcGet_Glob_Attr_R8
          56             :   PRIVATE :: NcGet_Glob_Attr_I4_arr
          57             :   PRIVATE :: NcGet_Glob_Attr_R4_arr
          58             :   PRIVATE :: NcGet_Glob_Attr_R8_arr
          59             : !
          60             : ! !DESCRIPTION: Provides netCDF utility routines to read both netCDF
          61             : !  variable attributes and global attributes.  Individual routines for
          62             : !  reading attributes of different types are overloaded with F90
          63             : !  interfaces.
          64             : !\\
          65             : !\\
          66             : ! !AUTHOR:
          67             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
          68             : !
          69             : ! !REVISION HISTORY:
          70             : !  See https://github.com/geoschem/hemco for complete history
          71             : !EOP
          72             : !------------------------------------------------------------------------------
          73             : !BOC
          74             : CONTAINS
          75             : !EOC
          76             : !------------------------------------------------------------------------------
          77             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
          78             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
          79             : !------------------------------------------------------------------------------
          80             : !BOP
          81             : !
          82             : ! !IROUTINE: NcGet_Var_Attr_C
          83             : !
          84             : ! !DESCRIPTION: Returns a variable attribute of type CHARACTER.
          85             : !\\
          86             : !\\
          87             : ! !INTERFACE:
          88             : !
          89           0 :   SUBROUTINE NcGet_Var_Attr_C( fid, varName, attName, attValue )
          90             : !
          91             : ! USES:
          92             : !
          93             :     USE netCDF
          94             :     USE m_do_err_out
          95             : !
          96             : ! !INPUT PARAMETERS:
          97             : !
          98             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
          99             :     CHARACTER(LEN=*), INTENT(IN)  :: varName    ! netCDF variable name
         100             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         101             : !
         102             : ! !OUTPUT PARAMETERS:
         103             : !
         104             :     CHARACTER(LEN=*), INTENT(OUT) :: attValue   ! Attribute value
         105             : !
         106             : ! !DESCRIPTION: Reads a variable attribute (CHARACTER type) from a netCDF file.
         107             : !\\
         108             : !\\
         109             : ! !AUTHOR:
         110             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         111             : !
         112             : ! !REVISION HISTORY:
         113             : !  See https://github.com/geoschem/hemco for complete history
         114             : !EOP
         115             : !------------------------------------------------------------------------------
         116             : !BOC
         117             : !
         118             : ! !LOCAL VARIABLES:
         119             : !
         120             :     CHARACTER(LEN=512) :: errMsg
         121             :     INTEGER            :: status, vId, EC
         122             :
         123             :     ! Zero return value
         124           0 :     attValue = ''
         125             :
         126             :     ! Check if VARNAME is a valid variable
         127           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         128             :
         129             :     ! Exit w/ error message if VARNAME is not valid
         130           0 :     IF ( status /= NF90_NOERR ) THEN
         131             :        errMsg = 'In NcGet_Var_Attr_C: ' // TRIM( varName )        // &
         132           0 :                  ', '                   // NF90_Strerror( status )
         133           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         134             :     ENDIF
         135             :
         136             :     !  Get the attribute
         137           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         138             :
         139             :     ! Exit w/ error message if unsuccessful
         140           0 :     IF ( status /= NF90_NOERR ) THEN
         141             :        errMsg = 'In NcGet_Var_Attr_C: cannot read attribute : ' // &
         142           0 :                  TRIM( attName )
         143           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         144             :     endif
         145             :
         146           0 :   END SUBROUTINE NcGet_Var_Attr_C
         147             : !EOC
         148             : !------------------------------------------------------------------------------
         149             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         150             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         151             : !------------------------------------------------------------------------------
         152             : !BOP
         153             : !
         154             : ! !IROUTINE: NcGet_Var_Attr_I4
         155             : !
         156             : ! !DESCRIPTION: Returns a variable attribute of type INTEGER*4.
         157             : !\\
         158             : !\\
         159             : ! !INTERFACE:
         160             : !
         161           0 :   SUBROUTINE NcGet_Var_Attr_I4( fid, varName, attName, attValue )
         162             : !
         163             : ! USES:
         164             : !
         165             :     USE netCDF
         166             :     USE m_do_err_out
         167             : !
         168             : ! !INPUT PARAMETERS:
         169             : !
         170             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         171             :     CHARACTER(LEN=*), INTENT(IN)  :: varName    ! netCDF variable name
         172             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         173             : !
         174             : ! !OUTPUT PARAMETERS:
         175             : !
         176             :     INTEGER,          INTENT(OUT) :: attValue   ! Attribute value
         177             : !
         178             : ! !DESCRIPTION: Reads a variable attribute (INTEGER type) from a netCDF file.
         179             : !\\
         180             : !\\
         181             : ! !AUTHOR:
         182             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         183             : !
         184             : ! !REVISION HISTORY:
         185             : !  See https://github.com/geoschem/hemco for complete history
         186             : !EOP
         187             : !------------------------------------------------------------------------------
         188             : !BOC
         189             : !
         190             : ! !LOCAL VARIABLES:
         191             : !
         192             :     CHARACTER(LEN=512) :: errMsg
         193             :     INTEGER            :: status, vId
         194             :
         195             :     ! Zero return value
         196           0 :     attValue = 0
         197             :
         198             :     ! Check if VARNAME is a valid variable
         199           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         200             :
         201             :     ! Exit w/ error message if VARNAME is not valid
         202           0 :     IF ( status /= NF90_NOERR ) THEN
         203             :        errMsg = 'In NcGet_Var_Attr_I4: ' // TRIM( varName )        // &
         204           0 :                  ', '                   // NF90_Strerror( status )
         205           0 :        CALL Do_Err_Out ( errMsg, .TRUE., 1, fId, 0, 0, 0.0d0, 0.0d0)
         206             :     ENDIF
         207             :
         208             :     ! Get the attribute
         209           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         210             :
         211             :     ! Exit w/ error message if unsuccessful
         212           0 :     IF ( status /= NF90_NOERR ) THEN
         213             :        errMsg = 'In NcGet_Var_Attr_I4: cannot read attribute : ' // &
         214           0 :                  TRIM( attName )
         215           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         216             :     endif
         217             :
         218           0 :   END SUBROUTINE NcGet_Var_Attr_I4
         219             : !EOC
         220             : !------------------------------------------------------------------------------
         221             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         222             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         223             : !------------------------------------------------------------------------------
         224             : !BOP
         225             : !
         226             : ! !IROUTINE: NcGet_Var_Attr_R4
         227             : !
         228             : ! !DESCRIPTION: Returns a variable attribute of type REAL*4.
         229             : !\\
         230             : !\\
         231             : ! !INTERFACE:
         232             : !
         233           0 :   SUBROUTINE NcGet_Var_Attr_R4( fid, varName, attName, attValue )
         234             : !
         235             : ! USES:
         236             : !
         237             :     USE netCDF
         238             :     USE m_do_err_out
         239             : !
         240             : ! !INPUT PARAMETERS:
         241             : !
         242             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         243             :     CHARACTER(LEN=*), INTENT(IN)  :: varName    ! netCDF variable name
         244             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         245             : !
         246             : ! !OUTPUT PARAMETERS:
         247             : !
         248             :     REAL*4,           INTENT(OUT) :: attValue   ! Attribute value
         249             : !
         250             : ! !DESCRIPTION: Reads a variable attribute (REAL*4 type) from a netCDF file.
         251             : !\\
         252             : !\\
         253             : ! !AUTHOR:
         254             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         255             : !
         256             : ! !REVISION HISTORY:
         257             : !  See https://github.com/geoschem/hemco for complete history
         258             : !EOP
         259             : !------------------------------------------------------------------------------
         260             : !BOC
         261             : !
         262             : ! !LOCAL VARIABLES:
         263             : !
         264             :     CHARACTER(LEN=512) :: errMsg
         265             :     INTEGER            :: status, vId
         266             :
         267             :     ! Zero return value
         268           0 :     attValue = 0e0
         269             :
         270             :     ! Check if VARNAME is a valid variable
         271           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         272             :
         273             :     ! Exit w/ error message if VARNAME is not valid
         274           0 :     IF ( status /= NF90_NOERR ) THEN
         275             :        errMsg = 'In NcGet_Var_Attr_R4: ' // TRIM( varName )        // &
         276           0 :                  ', '                   // NF90_Strerror( status )
         277           0 :        CALL Do_Err_Out ( errMsg, .TRUE., 1, fId, 0, 0, 0.0d0, 0.0d0)
         278             :     ENDIF
         279             :
         280             :     ! Get the attribute
         281           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         282             :
         283             :     ! Exit w/ error message if unsuccessful
         284           0 :     IF ( status /= NF90_NOERR ) THEN
         285             :        errMsg = 'In NcGet_Var_Attr_R4: cannot read attribute : ' // &
         286           0 :                  TRIM( attName )
         287           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         288             :     endif
         289             :
         290           0 :   END SUBROUTINE NcGet_Var_Attr_R4
         291             : !EOC
         292             : !------------------------------------------------------------------------------
         293             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         294             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         295             : !------------------------------------------------------------------------------
         296             : !BOP
         297             : !
         298             : ! !IROUTINE: NcGet_Var_Attr_R8
         299             : !
         300             : ! !DESCRIPTION: Returns a variable attribute of type REAL*8.
         301             : !\\
         302             : !\\
         303             : ! !INTERFACE:
         304             : !
         305           0 :   SUBROUTINE NcGet_Var_Attr_R8( fid, varName, attName, attValue )
         306             : !
         307             : ! USES:
         308             : !
         309             :     USE netCDF
         310             :     USE m_do_err_out
         311             : !
         312             : ! !INPUT PARAMETERS:
         313             : !
         314             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         315             :     CHARACTER(LEN=*), INTENT(IN)  :: varName    ! netCDF variable name
         316             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         317             : !
         318             : ! !OUTPUT PARAMETERS:
         319             : !
         320             :     REAL*8,           INTENT(OUT) :: attValue   ! Attribute value
         321             : !
         322             : ! !DESCRIPTION: Reads a variable attribute (REAL*4 type) from a netCDF file.
         323             : !\\
         324             : !\\
         325             : ! !AUTHOR:
         326             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         327             : !
         328             : ! !REVISION HISTORY:
         329             : !  See https://github.com/geoschem/hemco for complete history
         330             : !EOP
         331             : !------------------------------------------------------------------------------
         332             : !BOC
         333             : !
         334             : ! !LOCAL VARIABLES:
         335             : !
         336             :     CHARACTER(LEN=512) :: errMsg
         337             :     INTEGER            :: status, vId
         338             :
         339             :     ! Zero return value
         340           0 :     attValue = 0d0
         341             :
         342             :     ! Check if VARNAME is a valid variable
         343           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         344             :
         345             :     ! Exit w/ error message if VARNAME is not valid
         346           0 :     IF ( status /= NF90_NOERR ) THEN
         347             :        errMsg = 'In NcGet_Var_Attr_R8: ' // TRIM( varName )        // &
         348           0 :                  ', '                   // NF90_Strerror( status )
         349           0 :        CALL Do_Err_Out ( errMsg, .TRUE., 1, fId, 0, 0, 0.0d0, 0.0d0)
         350             :     ENDIF
         351             :
         352             :     ! Get the attribute
         353           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         354             :
         355             :     ! Exit w/ error message if unsuccessful
         356           0 :     IF ( status /= NF90_NOERR ) THEN
         357             :        errMsg = 'In NcGet_Var_Attr_R8: cannot read attribute : ' // &
         358           0 :                  TRIM( attName )
         359           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         360             :     endif
         361             :
         362           0 :   END SUBROUTINE NcGet_Var_Attr_R8
         363             : !EOC
         364             : !------------------------------------------------------------------------------
         365             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         366             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         367             : !------------------------------------------------------------------------------
         368             : !BOP
         369             : !
         370             : ! !IROUTINE: NcGet_Var_Attr_I4_arr
         371             : !
         372             : ! !DESCRIPTION: Returns a vector variable attribute of type INTEGER*4.
         373             : !\\
         374             : !\\
         375             : ! !INTERFACE:
         376             : !
         377           0 :   SUBROUTINE NcGet_Var_Attr_I4_arr( fid, varName, attName, attValue )
         378             : !
         379             : ! USES:
         380             : !
         381             :     USE netCDF
         382             :     USE m_do_err_out
         383             : !
         384             : ! !INPUT PARAMETERS:
         385             : !
         386             :     INTEGER,          INTENT(IN)  :: fId          ! netCDF file ID
         387             :     CHARACTER(LEN=*), INTENT(IN)  :: varName      ! netCDF variable name
         388             :     CHARACTER(LEN=*), INTENT(IN)  :: attName      ! Name of variable attribute
         389             : !
         390             : ! !OUTPUT PARAMETERS:
         391             : !
         392             :     INTEGER,          INTENT(OUT) :: attValue(:)  ! Attribute value
         393             : !
         394             : ! !DESCRIPTION: Reads a variable attribute (INTEGER type) from a netCDF file.
         395             : !\\
         396             : !\\
         397             : ! !AUTHOR:
         398             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         399             : !
         400             : ! !REVISION HISTORY:
         401             : !  See https://github.com/geoschem/hemco for complete history
         402             : !EOP
         403             : !------------------------------------------------------------------------------
         404             : !BOC
         405             : !
         406             : ! !LOCAL VARIABLES:
         407             : !
         408             :     CHARACTER(LEN=512) :: errMsg
         409             :     INTEGER            :: status, vId
         410             :
         411             :     ! Zero return value
         412           0 :     attValue = 0
         413             :
         414             :     ! Check if VARNAME is a valid variable
         415           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         416             :
         417             :     ! Exit w/ error message if VARNAME is not valid
         418           0 :     IF ( status /= NF90_NOERR ) THEN
         419             :        errMsg = 'In NcGet_Var_Attr_I4_arr: ' // TRIM( varName )        // &
         420           0 :                  ', '                        // NF90_Strerror( status )
         421           0 :        CALL Do_Err_Out ( errMsg, .TRUE., 1, fId, 0, 0, 0.0d0, 0.0d0)
         422             :     ENDIF
         423             :
         424             :     ! Get the attribute
         425           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         426             :
         427             :     ! Exit w/ error message if unsuccessful
         428           0 :     IF ( status /= NF90_NOERR ) THEN
         429             :        errMsg = 'In NcGet_Var_Attr_I4_arr: cannot read attribute : ' // &
         430           0 :                  TRIM( attName )
         431           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         432             :     endif
         433             :
         434           0 :   END SUBROUTINE NcGet_Var_Attr_I4_arr
         435             : !EOC
         436             : !------------------------------------------------------------------------------
         437             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         438             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         439             : !------------------------------------------------------------------------------
         440             : !BOP
         441             : !
         442             : ! !IROUTINE: NcGet_Var_Attr_R4_arr
         443             : !
         444             : ! !DESCRIPTION: Returns a vector variable attribute of type REAL*4.
         445             : !\\
         446             : !\\
         447             : ! !INTERFACE:
         448             : !
         449           0 :   SUBROUTINE NcGet_Var_Attr_R4_arr( fid, varName, attName, attValue )
         450             : !
         451             : ! USES:
         452             : !
         453             :     USE netCDF
         454             :     USE m_do_err_out
         455             : !
         456             : ! !INPUT PARAMETERS:
         457             : !
         458             :     INTEGER,          INTENT(IN)  :: fId          ! netCDF file ID
         459             :     CHARACTER(LEN=*), INTENT(IN)  :: varName      ! netCDF variable name
         460             :     CHARACTER(LEN=*), INTENT(IN)  :: attName      ! Name of variable attribute
         461             : !
         462             : ! !OUTPUT PARAMETERS:
         463             : !
         464             :     REAL*4,           INTENT(OUT) :: attValue(:)  ! Attribute value
         465             : !
         466             : ! !DESCRIPTION: Reads a variable attribute (REAL*4 type) from a netCDF file.
         467             : !\\
         468             : !\\
         469             : ! !AUTHOR:
         470             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         471             : !
         472             : ! !REVISION HISTORY:
         473             : !  See https://github.com/geoschem/hemco for complete history
         474             : !EOP
         475             : !------------------------------------------------------------------------------
         476             : !BOC
         477             : !
         478             : ! !LOCAL VARIABLES:
         479             : !
         480             :     CHARACTER(LEN=512) :: errMsg
         481             :     INTEGER            :: status, vId
         482             :
         483             :     ! Zero return value
         484           0 :     attValue = 0e0
         485             :
         486             :     ! Check if VARNAME is a valid variable
         487           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         488             :
         489             :     ! Exit w/ error message if VARNAME is not valid
         490           0 :     IF ( status /= NF90_NOERR ) THEN
         491             :        errMsg = 'In NcGet_Var_Attr_R4_arr: ' // TRIM( varName )        // &
         492           0 :                  ', '                        // NF90_Strerror( status )
         493           0 :        CALL Do_Err_Out ( errMsg, .TRUE., 1, fId, 0, 0, 0.0d0, 0.0d0)
         494             :     ENDIF
         495             :
         496             :     ! Get the attribute
         497           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         498             :
         499             :     ! Exit w/ error message if unsuccessful
         500           0 :     IF ( status /= NF90_NOERR ) THEN
         501             :        errMsg = 'In NcGet_Var_Attr_R4_arr: cannot read attribute : ' // &
         502           0 :                  TRIM( attName )
         503           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         504             :     endif
         505             :
         506           0 :   END SUBROUTINE NcGet_Var_Attr_R4_arr
         507             : !EOC
         508             : !------------------------------------------------------------------------------
         509             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         510             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         511             : !------------------------------------------------------------------------------
         512             : !BOP
         513             : !
         514             : ! !IROUTINE: NcGet_Var_Attr_R8_arr
         515             : !
         516             : ! !DESCRIPTION: Returns a vector variable attribute of type REAL*8.
         517             : !\\
         518             : !\\
         519             : ! !INTERFACE:
         520             : !
         521           0 :   SUBROUTINE NcGet_Var_Attr_R8_arr( fid, varName, attName, attValue )
         522             : !
         523             : ! USES:
         524             : !
         525             :     USE netCDF
         526             :     USE m_do_err_out
         527             : !
         528             : ! !INPUT PARAMETERS:
         529             : !
         530             :     INTEGER,          INTENT(IN)  :: fId          ! netCDF file ID
         531             :     CHARACTER(LEN=*), INTENT(IN)  :: varName      ! netCDF variable name
         532             :     CHARACTER(LEN=*), INTENT(IN)  :: attName      ! Name of variable attribute
         533             : !
         534             : ! !OUTPUT PARAMETERS:
         535             : !
         536             :     REAL*8,           INTENT(OUT) :: attValue(:)  ! Attribute value
         537             : !
         538             : ! !DESCRIPTION: Reads a variable attribute (REAL*4 type) from a netCDF file.
         539             : !\\
         540             : !\\
         541             : ! !AUTHOR:
         542             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         543             : !
         544             : ! !REVISION HISTORY:
         545             : !  See https://github.com/geoschem/hemco for complete history
         546             : !EOP
         547             : !------------------------------------------------------------------------------
         548             : !BOC
         549             : !
         550             : ! !LOCAL VARIABLES:
         551             : !
         552             :     CHARACTER(LEN=512) :: errMsg
         553             :     INTEGER            :: status, vId
         554             :
         555             :     ! Zero return value
         556           0 :     attValue = 0d0
         557             :
         558             :     ! Check if VARNAME is a valid variable
         559           0 :     status = NF90_Inq_VarId( fId, varName, vId )
         560             :
         561             :     ! Exit w/ error message if VARNAME is not valid
         562           0 :     IF ( status /= NF90_NOERR ) THEN
         563             :        errMsg = 'In NcGet_Var_Attr_R8_arr: ' // TRIM( varName )        // &
         564           0 :                  ', '                        // NF90_Strerror( status )
         565           0 :        CALL Do_Err_Out ( errMsg, .TRUE., 1, fId, 0, 0, 0.0d0, 0.0d0)
         566             :     ENDIF
         567             :
         568             :     ! Get the attribute
         569           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
         570             :
         571             :     ! Exit w/ error message if unsuccessful
         572           0 :     IF ( status /= NF90_NOERR ) THEN
         573             :        errMsg = 'In NcGet_Var_Attr_R8_arr: cannot read attribute : ' // &
         574           0 :                  TRIM( attName )
         575           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         576             :     endif
         577             :
         578           0 :   END SUBROUTINE NcGet_Var_Attr_R8_arr
         579             : !EOC
         580             : !------------------------------------------------------------------------------
         581             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         582             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         583             : !------------------------------------------------------------------------------
         584             : !BOP
         585             : !
         586             : ! !IROUTINE: NcGet_Glob_Attr_C
         587             : !
         588             : ! !DESCRIPTION: Returns a variable attribute of type CHARACTER.
         589             : !\\
         590             : !\\
         591             : ! !INTERFACE:
         592             : !
         593           0 :   SUBROUTINE NcGet_Glob_Attr_C( fid, attName, attValue )
         594             : !
         595             : ! USES:
         596             : !
         597             :     USE netCDF
         598             :     USE m_do_err_out
         599             : !
         600             : ! !INPUT PARAMETERS:
         601             : !
         602             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         603             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         604             : !
         605             : ! !OUTPUT PARAMETERS:
         606             : !
         607             :     CHARACTER(LEN=*), INTENT(OUT) :: attValue   ! Attribute value
         608             : !
         609             : ! !DESCRIPTION: Reads a global attribute (CHARACTER type) from a netCDF file.
         610             : !\\
         611             : !\\
         612             : ! !AUTHOR:
         613             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         614             : !
         615             : ! !REVISION HISTORY:
         616             : !  See https://github.com/geoschem/hemco for complete history
         617             : !EOP
         618             : !------------------------------------------------------------------------------
         619             : !BOC
         620             : !
         621             : ! !LOCAL VARIABLES:
         622             : !
         623             :     CHARACTER(LEN=512) :: errMsg, varName
         624             :     INTEGER            :: status
         625             :
         626             :     ! Zero return value
         627           0 :     attValue = ''
         628             :
         629             :     ! Get the attribute
         630           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         631             :
         632             :     ! Exit w/ error message if unsuccessful
         633           0 :     IF ( status /= NF90_NOERR ) THEN
         634             :        errMsg = 'In NcGet_Glob_Attr_C: cannot read attribute : ' // &
         635           0 :                  TRIM( attName )
         636           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         637             :     endif
         638             :
         639           0 :   END SUBROUTINE NcGet_Glob_Attr_C
         640             : !EOC
         641             : !------------------------------------------------------------------------------
         642             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         643             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         644             : !------------------------------------------------------------------------------
         645             : !BOP
         646             : !
         647             : ! !IROUTINE: NcGet_Glob_Attr_I4
         648             : !
         649             : ! !DESCRIPTION: Returns a variable attribute of type INTEGER*4.
         650             : !\\
         651             : !\\
         652             : ! !INTERFACE:
         653             : !
         654           0 :   SUBROUTINE NcGet_Glob_Attr_I4( fid, attName, attValue )
         655             : !
         656             : ! USES:
         657             : !
         658             :     USE netCDF
         659             :     USE m_do_err_out
         660             : !
         661             : ! !INPUT PARAMETERS:
         662             : !
         663             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         664             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         665             : !
         666             : ! !OUTPUT PARAMETERS:
         667             : !
         668             :     INTEGER,          INTENT(OUT) :: attValue   ! Attribute value
         669             : !
         670             : ! !DESCRIPTION: Reads a global attribute (INTEGER type) from a netCDF file.
         671             : !\\
         672             : !\\
         673             : ! !AUTHOR:
         674             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         675             : !
         676             : ! !REVISION HISTORY:
         677             : !  See https://github.com/geoschem/hemco for complete history
         678             : !EOP
         679             : !------------------------------------------------------------------------------
         680             : !BOC
         681             : !
         682             : ! !LOCAL VARIABLES:
         683             : !
         684             :     CHARACTER(LEN=512) :: errMsg, varName
         685             :     INTEGER            :: status
         686             :
         687             :     ! Zero return value
         688           0 :     attValue = 0
         689             :
         690             :     ! Get the attribute
         691           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         692             :
         693             :     ! Exit w/ error message if unsuccessful
         694           0 :     IF ( status /= NF90_NOERR ) THEN
         695             :        errMsg = 'In NcGet_Glob_Attr_I4: cannot read attribute : ' // &
         696           0 :                  TRIM( attName )
         697           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         698             :     endif
         699             :
         700           0 :   END SUBROUTINE NcGet_Glob_Attr_I4
         701             : !EOC
         702             : !------------------------------------------------------------------------------
         703             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         704             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         705             : !------------------------------------------------------------------------------
         706             : !BOP
         707             : !
         708             : ! !IROUTINE: NcGet_Glob_Attr_R4
         709             : !
         710             : ! !DESCRIPTION: Returns a variable attribute of type REAL*4.
         711             : !\\
         712             : !\\
         713             : ! !INTERFACE:
         714             : !
         715           0 :   SUBROUTINE NcGet_Glob_Attr_R4( fid, attName, attValue )
         716             : !
         717             : ! USES:
         718             : !
         719             :     USE netCDF
         720             :     USE m_do_err_out
         721             : !
         722             : ! !INPUT PARAMETERS:
         723             : !
         724             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         725             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         726             : !
         727             : ! !OUTPUT PARAMETERS:
         728             : !
         729             :     REAL*4,           INTENT(OUT) :: attValue   ! Attribute value
         730             : !
         731             : ! !DESCRIPTION: Reads a global attribute (REAL*4 type) from a netCDF file.
         732             : !\\
         733             : !\\
         734             : ! !AUTHOR:
         735             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         736             : !
         737             : ! !REVISION HISTORY:
         738             : !  See https://github.com/geoschem/hemco for complete history
         739             : !EOP
         740             : !------------------------------------------------------------------------------
         741             : !BOC
         742             : !
         743             : ! !LOCAL VARIABLES:
         744             : !
         745             :     CHARACTER(LEN=512) :: errMsg, varName
         746             :     INTEGER            :: status
         747             :
         748             :     ! Zero return value
         749           0 :     attValue = 0e0
         750             :
         751             :     ! Get the attribute
         752           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         753             :
         754             :     ! Exit w/ error message if unsuccessful
         755           0 :     IF ( status /= NF90_NOERR ) THEN
         756             :        errMsg = 'In NcGet_Glob_Attr_R4: cannot read attribute : ' // &
         757           0 :                  TRIM( attName )
         758           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         759             :     endif
         760             :
         761           0 :   END SUBROUTINE NcGet_Glob_Attr_R4
         762             : !EOC
         763             : !------------------------------------------------------------------------------
         764             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         765             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         766             : !------------------------------------------------------------------------------
         767             : !BOP
         768             : !
         769             : ! !IROUTINE: NcGet_Glob_Attr_R8
         770             : !
         771             : ! !DESCRIPTION: Returns a variable attribute of type REAL*8.
         772             : !\\
         773             : !\\
         774             : ! !INTERFACE:
         775             : !
         776           0 :   SUBROUTINE NcGet_Glob_Attr_R8( fid, attName, attValue )
         777             : !
         778             : ! USES:
         779             : !
         780             :     USE netCDF
         781             :     USE m_do_err_out
         782             : !
         783             : ! !INPUT PARAMETERS:
         784             : !
         785             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
         786             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
         787             : !
         788             : ! !OUTPUT PARAMETERS:
         789             : !
         790             :     REAL*8,           INTENT(OUT) :: attValue   ! Attribute value
         791             : !
         792             : ! !DESCRIPTION: Reads a global attribute (REAL*8 type) from a netCDF file.
         793             : !\\
         794             : !\\
         795             : ! !AUTHOR:
         796             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         797             : !
         798             : ! !REVISION HISTORY:
         799             : !  See https://github.com/geoschem/hemco for complete history
         800             : !EOP
         801             : !------------------------------------------------------------------------------
         802             : !BOC
         803             : !
         804             : ! !LOCAL VARIABLES:
         805             : !
         806             :     CHARACTER(LEN=512) :: errMsg, varName
         807             :     INTEGER            :: status
         808             :
         809             :     ! Zero return value
         810           0 :     attValue = 0d0
         811             :
         812             :     ! Get the attribute
         813           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         814             :
         815             :     ! Exit w/ error message if unsuccessful
         816           0 :     IF ( status /= NF90_NOERR ) THEN
         817             :        errMsg = 'In NcGet_Glob_Attr_R8: cannot read attribute : ' // &
         818           0 :                  TRIM( attName )
         819           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         820             :     endif
         821             :
         822           0 :   END SUBROUTINE NcGet_Glob_Attr_R8
         823             : !EOC
         824             : !------------------------------------------------------------------------------
         825             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         826             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         827             : !------------------------------------------------------------------------------
         828             : !BOP
         829             : !
         830             : ! !IROUTINE: NcGet_Glob_Attr_I4_arr
         831             : !
         832             : ! !DESCRIPTION: Returns a variable attribute of type INTEGER*4.
         833             : !\\
         834             : !\\
         835             : ! !INTERFACE:
         836             : !
         837           0 :   SUBROUTINE NcGet_Glob_Attr_I4_arr( fid, attName, attValue )
         838             : !
         839             : ! USES:
         840             : !
         841             :     USE netCDF
         842             :     USE m_do_err_out
         843             : !
         844             : ! !INPUT PARAMETERS:
         845             : !
         846             :     INTEGER,          INTENT(IN)  :: fId          ! netCDF file ID
         847             :     CHARACTER(LEN=*), INTENT(IN)  :: attName      ! Name of variable attribute
         848             : !
         849             : ! !OUTPUT PARAMETERS:
         850             : !
         851             :     INTEGER,          INTENT(OUT) :: attValue(:)  ! Attribute value
         852             : !
         853             : ! !DESCRIPTION: Reads a global attribute (INTEGER type) from a netCDF file.
         854             : !\\
         855             : !\\
         856             : ! !AUTHOR:
         857             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         858             : !
         859             : ! !REVISION HISTORY:
         860             : !  See https://github.com/geoschem/hemco for complete history
         861             : !EOP
         862             : !------------------------------------------------------------------------------
         863             : !BOC
         864             : !
         865             : ! !LOCAL VARIABLES:
         866             : !
         867             :     CHARACTER(LEN=512) :: errMsg, varName
         868             :     INTEGER            :: status
         869             :
         870             :     ! Zero return value
         871           0 :     attValue = 0
         872             :
         873             :     ! Get the attribute
         874           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         875             :
         876             :     ! Exit w/ error message if unsuccessful
         877           0 :     IF ( status /= NF90_NOERR ) THEN
         878             :        errMsg = 'In NcGet_Glob_Attr_I4_arr: cannot read attribute : ' // &
         879           0 :                  TRIM( attName )
         880           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         881             :     endif
         882             :
         883           0 :   END SUBROUTINE NcGet_Glob_Attr_I4_arr
         884             : !EOC
         885             : !------------------------------------------------------------------------------
         886             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         887             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         888             : !------------------------------------------------------------------------------
         889             : !BOP
         890             : !
         891             : ! !IROUTINE: NcGet_Glob_Attr_R4_arr
         892             : !
         893             : ! !DESCRIPTION: Returns a variable attribute of type REAL*4.
         894             : !\\
         895             : !\\
         896             : ! !INTERFACE:
         897             : !
         898           0 :   SUBROUTINE NcGet_Glob_Attr_R4_arr( fid, attName, attValue )
         899             : !
         900             : ! USES:
         901             : !
         902             :     USE netCDF
         903             :     USE m_do_err_out
         904             : !
         905             : ! !INPUT PARAMETERS:
         906             : !
         907             :     INTEGER,          INTENT(IN)  :: fId          ! netCDF file ID
         908             :     CHARACTER(LEN=*), INTENT(IN)  :: attName      ! Name of variable attribute
         909             : !
         910             : ! !OUTPUT PARAMETERS:
         911             : !
         912             :     REAL*4,           INTENT(OUT) :: attValue(:)  ! Attribute value
         913             : !
         914             : ! !DESCRIPTION: Reads a global attribute (REAL*4 type) from a netCDF file.
         915             : !\\
         916             : !\\
         917             : ! !AUTHOR:
         918             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         919             : !
         920             : ! !REVISION HISTORY:
         921             : !  See https://github.com/geoschem/hemco for complete history
         922             : !EOP
         923             : !------------------------------------------------------------------------------
         924             : !BOC
         925             : !
         926             : ! !LOCAL VARIABLES:
         927             : !
         928             :     CHARACTER(LEN=512) :: errMsg, varName
         929             :     INTEGER            :: status
         930             :
         931             :     ! Zero return value
         932           0 :     attValue = 0e0
         933             :
         934             :     ! Get the attribute
         935           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         936             :
         937             :     ! Exit w/ error message if unsuccessful
         938           0 :     IF ( status /= NF90_NOERR ) THEN
         939             :        errMsg = 'In NcGet_Glob_Attr_R4_arr: cannot read attribute : ' // &
         940           0 :                  TRIM( attName )
         941           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
         942             :     endif
         943             :
         944           0 :   END SUBROUTINE NcGet_Glob_Attr_R4_arr
         945             : !EOC
         946             : !------------------------------------------------------------------------------
         947             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
         948             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
         949             : !------------------------------------------------------------------------------
         950             : !BOP
         951             : !
         952             : ! !IROUTINE: NcGet_Glob_Attr_R8
         953             : !
         954             : ! !DESCRIPTION: Returns a variable attribute of type REAL*8.
         955             : !\\
         956             : !\\
         957             : ! !INTERFACE:
         958             : !
         959           0 :   SUBROUTINE NcGet_Glob_Attr_R8_arr( fid, attName, attValue )
         960             : !
         961             : ! USES:
         962             : !
         963             :     USE netCDF
         964             :     USE m_do_err_out
         965             : !
         966             : ! !INPUT PARAMETERS:
         967             : !
         968             :     INTEGER,          INTENT(IN)  :: fId          ! netCDF file ID
         969             :     CHARACTER(LEN=*), INTENT(IN)  :: attName      ! Name of variable attribute
         970             : !
         971             : ! !OUTPUT PARAMETERS:
         972             : !
         973             :     REAL*8,           INTENT(OUT) :: attValue(:)  ! Attribute value
         974             : !
         975             : ! !DESCRIPTION: Reads a global attribute (REAL*8 type) from a netCDF file.
         976             : !\\
         977             : !\\
         978             : ! !AUTHOR:
         979             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
         980             : !
         981             : ! !REVISION HISTORY:
         982             : !  See https://github.com/geoschem/hemco for complete history
         983             : !EOP
         984             : !------------------------------------------------------------------------------
         985             : !BOC
         986             : !
         987             : ! !LOCAL VARIABLES:
         988             : !
         989             :     CHARACTER(LEN=512) :: errMsg, varName
         990             :     INTEGER            :: status
         991             :
         992             :     ! Zero return value
         993           0 :     attValue = 0d0
         994             :
         995             :     ! Get the attribute
         996           0 :     status = NF90_Get_Att( fId, NF90_GLOBAL, attName, attValue )
         997             :
         998             :     ! Exit w/ error message if unsuccessful
         999           0 :     IF ( status /= NF90_NOERR ) THEN
        1000             :        errMsg = 'In NcGet_Glob_Attr_R8_arr: cannot read attribute : ' // &
        1001           0 :                  TRIM( attName )
        1002           0 :        CALL Do_Err_Out( errMsg, .TRUE., 0, 0, 0, 0, 0.0d0, 0.0d0 )
        1003             :     endif
        1004             :
        1005           0 :   END SUBROUTINE NcGet_Glob_Attr_R8_arr
        1006             : !EOC
        1007             : !------------------------------------------------------------------------------
        1008             : !       NcdfUtilities: by Harvard Atmospheric Chemistry Modeling Group        !
        1009             : !                      and NASA/GSFC, SIVO, Code 610.3                        !
        1010             : !------------------------------------------------------------------------------
        1011             : !BOP
        1012             : !
        1013             : ! !IROUTINE: NcGet_Var_Attr_C_nostop
        1014             : !
        1015             : ! !DESCRIPTION: Returns a variable attribute of type CHARACTER.  Similar
        1016             : !  to NcGet_Var_Attr_C, but does not stop upon error,  Instead, a status
        1017             : !  flag is passed back to the calling routine.
        1018             : !\\
        1019             : !\\
        1020             : ! !INTERFACE:
        1021             : !
        1022           0 :   SUBROUTINE NcGet_Var_Attr_C_nostop( fId, varName, attName, attValue, RC )
        1023             : !
        1024             : ! USES:
        1025             : !
        1026             :     USE netCDF
        1027             :     USE m_do_err_out
        1028             : !
        1029             : ! !INPUT PARAMETERS:
        1030             : !
        1031             :     INTEGER,          INTENT(IN)  :: fId        ! netCDF file ID
        1032             :     CHARACTER(LEN=*), INTENT(IN)  :: varName    ! netCDF variable name
        1033             :     CHARACTER(LEN=*), INTENT(IN)  :: attName    ! Name of variable attribute
        1034             : !
        1035             : ! !OUTPUT PARAMETERS:
        1036             : !
        1037             :     CHARACTER(LEN=*), INTENT(OUT) :: attValue   ! Attribute value
        1038             :     INTEGER,          INTENT(OUT) :: RC         ! Success or failure?
        1039             : !
        1040             : ! !DESCRIPTION: Reads a variable attribute (CHARACTER type) from a netCDF file.
        1041             : !\\
        1042             : !\\
        1043             : ! !AUTHOR:
        1044             : !  Bob Yantosca (based on code by Jules Kouatchou and Maharaj Bhat)
        1045             : !
        1046             : ! !REVISION HISTORY:
        1047             : !  See https://github.com/geoschem/hemco for complete history
        1048             : !EOP
        1049             : !------------------------------------------------------------------------------
        1050             : !BOC
        1051             : !
        1052             : ! !LOCAL VARIABLES:
        1053             : !
        1054             :     CHARACTER(LEN=512) :: errMsg
        1055             :     INTEGER            :: status, vId
        1056             :
        1057             :     ! Zero return value
        1058           0 :     attValue = ''
        1059             :
        1060             :     ! Check if VARNAME is a valid variable
        1061           0 :     status = NF90_Inq_VarId( fId, varName, vId )
        1062             :
        1063             :     ! Exit w/ error message if VARNAME is not valid
        1064           0 :     IF ( status /= NF90_NOERR ) THEN
        1065           0 :        RC = status
        1066           0 :        RETURN
        1067             :     ENDIF
        1068             :
        1069             :     !  Get the attribute
        1070           0 :     status = NF90_Get_Att( fId, vId, attName, attValue )
        1071             :
        1072             :     ! Exit w/ error message if unsuccessful
        1073           0 :     IF ( status /= NF90_NOERR ) THEN
        1074           0 :        RC = status
        1075           0 :        RETURN
        1076             :     ENDIF
        1077             :
        1078           0 :   END SUBROUTINE NcGet_Var_Attr_C_nostop
        1079             : !EOC
        1080             : END MODULE HCO_m_netcdf_io_readattr

Generated by: LCOV version 1.14