Translate a raw nc_check-style status (0 = ok) from one of the
nc_* calls in ocean_restart_write_local into the caller’s
ierr contract. Mirrors rdb_bathymetry’s bathy_io_ok /
rdb_ocean_diag_netcdf’s diag_io_ok (P0.1 F1 / P7 F1): closes
ncid (when given) on failure so a mid-write error does not
leak the file handle, sets ierr = OCEAN_STATUS_ERR_IO when
present, or error stops with the generic nc_check text when
ierr is absent (byte-identical legacy behaviour).
| 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 restart_io_ok(local_ierr, ierr, ncid) result(ok) !! Translate a raw `nc_check`-style status (0 = ok) from one of the !! `nc_*` calls in `ocean_restart_write_local` into the caller's !! `ierr` contract. Mirrors `rdb_bathymetry`'s `bathy_io_ok` / !! `rdb_ocean_diag_netcdf`'s `diag_io_ok` (P0.1 F1 / P7 F1): closes !! `ncid` (when given) on failure so a mid-write error does not !! leak the file handle, sets `ierr = OCEAN_STATUS_ERR_IO` when !! present, or `error stop`s with the generic `nc_check` text when !! `ierr` is absent (byte-identical legacy behaviour). 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 restart_io_ok