Translate a raw nc_check-style status (0 = ok) from one of the
nc_* calls in open_stream into the caller’s ierr contract:
.true. on success; on failure, .false. with
ierr = OCEAN_STATUS_ERR_IO when ierr is present (closing
ncid first, when given, so a mid-create failure does not leak
the file handle), or error stops with the same generic text
nc_check itself would use had ierr never been threaded
through — byte-identical legacy behaviour when ierr is
omitted. Mirrors rdb_bathymetry’s bathy_io_ok (P0.1 F1).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | local_ierr | |||
| integer, | intent(out), | optional | :: | ierr | ||
| integer, | intent(in), | optional | :: | ncid |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | discard_ierr |
function diag_io_ok(local_ierr, ierr, ncid) result(ok) !! Translate a raw `nc_check`-style status (0 = ok) from one of the !! `nc_*` calls in `open_stream` into the caller's `ierr` contract: !! `.true.` on success; on failure, `.false.` with !! `ierr = OCEAN_STATUS_ERR_IO` when `ierr` is present (closing !! `ncid` first, when given, so a mid-create failure does not leak !! the file handle), or `error stop`s with the same generic text !! `nc_check` itself would use had `ierr` never been threaded !! through — byte-identical legacy behaviour when `ierr` is !! omitted. Mirrors `rdb_bathymetry`'s `bathy_io_ok` (P0.1 F1). integer, intent(in) :: local_ierr integer, intent(out), optional :: ierr integer, intent(in), optional :: ncid logical :: ok integer :: discard_ierr ok = (local_ierr == 0) if (ok) return if (present(ierr)) then if (present(ncid)) call nc_close(ncid, ierr=discard_ierr) ierr = OCEAN_STATUS_ERR_IO return end if error stop "NetCDF operation failed" end function diag_io_ok