@@ -27,7 +27,6 @@ module nc4fortran
2727logical :: verbose = .false.
2828logical :: debug = .false.
2929logical :: is_open = .false.
30- logical :: is_scratch = .false.
3130! ! will be auto-deleted on close
3231character (80 ) :: libversion
3332
@@ -470,12 +469,12 @@ subroutine nc_initialize(self,filename,ierr, status,action,comp_lvl,verbose,debu
470469class(netcdf_file), intent (inout ) :: self
471470character (* ), intent (in ) :: filename
472471integer , intent (out ), optional :: ierr
473- character (* ), intent (in ), optional :: status
472+ character (* ), intent (in ), optional :: status ! < DEPRECATED
474473character (* ), intent (in ), optional :: action
475474integer , intent (in ), optional :: comp_lvl
476475logical , intent (in ), optional :: verbose, debug
477476
478- character (:), allocatable :: lstatus, laction
477+ character (:), allocatable :: laction
479478integer :: ier
480479
481480if (self% is_open) then
@@ -492,50 +491,37 @@ subroutine nc_initialize(self,filename,ierr, status,action,comp_lvl,verbose,debu
492491! > get library version
493492self% libversion = nf90_inq_libvers()
494493
495- lstatus = ' unknown'
496- if (present (status)) lstatus = status
494+ if (present (status)) write (stderr,* ) ' nc4fortran:WARNING: status is deprecated. use action instead.'
497495
498496laction = ' rw'
499497if (present (action)) laction = action
500498
501- select case (lstatus)
502- case (' old' , ' unknown' )
503- select case (laction)
504- case (' read' ,' r' )
505- ier = nf90_open(self% filename, NF90_NOWRITE, self% ncid)
506- case (' r+' )
507- ier = nf90_open(self% filename, NF90_NETCDF4, self% ncid)
508- case (' readwrite' , ' rw' , ' append' , ' a' )
509- if (is_netcdf(filename)) then
510- ! ! NF90_WRITE is necessary to be in true read/write mode
511- ier = nf90_open(self% filename, ior (NF90_WRITE, NF90_NETCDF4), self% ncid)
512- else
513- ier = nf90_create(self% filename, ior (NF90_CLOBBER, NF90_NETCDF4), self% ncid)
514- endif
515- case (' w' ,' write' )
516- ier = nf90_create(self% filename, ior (NF90_CLOBBER, NF90_NETCDF4), self% ncid)
517- case default
518- write (stderr,* ) ' Unsupported action -> ' // laction
519- error stop 128
520- end select
521- case (' new' ,' replace' )
522- ier = nf90_create(self% filename, ior (NF90_CLOBBER, NF90_NETCDF4), self% ncid)
523- case (' scratch' )
499+ select case (laction)
500+ case (' read' ,' r' )
501+ ier = nf90_open(self% filename, NF90_NOWRITE, self% ncid)
502+ case (' r+' )
503+ ier = nf90_open(self% filename, NF90_NETCDF4, self% ncid)
504+ case (' readwrite' , ' rw' , ' append' , ' a' )
505+ if (is_netcdf(filename)) then
506+ ! ! NF90_WRITE is necessary to be in true read/write mode
507+ ier = nf90_open(self% filename, ior (NF90_WRITE, NF90_NETCDF4), self% ncid)
508+ else
524509 ier = nf90_create(self% filename, ior (NF90_CLOBBER, NF90_NETCDF4), self% ncid)
525- self% is_scratch = .true.
526- if (.not. is_absolute_path(filename)) self% filename = get_tempdir() // ' /' // filename
510+ endif
511+ case (' w' ,' write' )
512+ ier = nf90_create(self% filename, ior (NF90_CLOBBER, NF90_NETCDF4), self% ncid)
527513case default
528- write (stderr,* ) ' Unsupported status -> ' // lstatus
529- error stop 128
514+ error stop ' nc4fortran: Unsupported action -> ' // laction
530515end select
531516
517+
532518if (present (ierr)) ierr = ier
533519if (ier == NF90_NOERR) then
534520 self% is_open = .true.
535521 return
536522endif
537523
538- write (stderr,* ) ' ERROR:initialize ' // filename // ' could not be created'
524+ write (stderr,* ) ' nc4fortran: ERROR: initialize ' // filename // ' could not be created'
539525if (present (ierr)) return
540526error stop
541527
@@ -573,10 +559,6 @@ subroutine nc_finalize(self, ierr)
573559 error stop
574560endif
575561
576- if (self% is_scratch) then
577- if (std_unlink(self% filename)) write (stderr,* ) ' WARNING: could not delete scratch file: ' // self% filename
578- endif
579-
580562self% is_open = .false.
581563
582564end subroutine nc_finalize
0 commit comments