File: ftst_path.F

package info (click to toggle)
netcdf-fortran 4.5.3%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 7,456 kB
  • sloc: fortran: 25,848; f90: 20,793; sh: 4,609; ansic: 1,729; makefile: 585; pascal: 292; xml: 173
file content (95 lines) | stat: -rw-r--r-- 2,810 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
C     This is part of the netCDF package. Copyright 2006-2019 University
C     Corporation for Atmospheric Research/Unidata. See COPYRIGHT file
C     for conditions of use.

C     Tests new nf_inq_path function
C     Mimics tests in C tst_files5.c code

C     Russ Rew, 2014

      program ftst_path
      implicit NONE
      include "netcdf.inc"

      character(len=*), parameter  :: FILE_NAME="ftst_path.nc"

      integer                      :: path_len, ncid
      character(LEN=NF_MAX_NAME+1) :: path_in

      path_in   = REPEAT(" ", LEN(path_in))
      path_len  = 0

      print *,''
      print *,'*** Testing netcdf file functions.'
      print *,'*** Checking the new inq_path function'

C Test with classic mode nf_create

      call check(nf_create(FILE_NAME, nf_classic_model, ncid))
      call check(nf_inq_path(ncid, path_len, path_in))

      if ((path_len /= LEN(FILE_NAME)) .OR.                             &
     &    (FILE_NAME /= TRIM(path_in)))                                 &
     &   call check(-1)
      call check(nf_close(ncid))

      path_in=REPEAT(" ", LEN(path_in))
      path_len=0

C Test with classic mode nf_open

      call check(nf_open(FILE_NAME, nf_classic_model, ncid))
      call check(nf_inq_path(ncid, path_len, path_in))

      if ((path_len /= LEN(FILE_NAME)) .OR.                             &
     &    (FILE_NAME /= TRIM(path_in)))                                 &
     &   call check(-1)
      call check(nf_close(ncid))

      path_in=REPEAT(" ", LEN(path_in))
      path_len=0


C Test with netcdf4 mode nf_create

      call check(nf_create(FILE_NAME, nf_netcdf4, ncid))
      call check(nf_inq_path(ncid, path_len, path_in))

      if ((path_len /= LEN(FILE_NAME)) .OR.                             &
     &    (FILE_NAME /= TRIM(path_in)))                                 &
     &  call check(-1)
      call check(nf_close(ncid))

      path_in=REPEAT(" ", LEN(path_in))
      path_len=0

C Test with netcdf4 mode nf_open

      call check(nf_open(FILE_NAME, nf_netcdf4, ncid))
      call check(nf_inq_path(ncid, path_len, path_in))

      if ((path_len /= LEN(FILE_NAME)) .OR.                             &
     &    (FILE_NAME /= TRIM(path_in)))                                 &
     &  call check(-1)
      call check(nf_close(ncid))

      path_in=REPEAT(" ", LEN(path_in))
      path_len=0

      print *,'*** SUCCESS! '

      contains
C       This subroutine handles errors by printing an error message and
C       exiting with a non-zero status.
      subroutine check(errcode)
        use netcdf
        implicit none
        integer, intent(in) :: errcode

        if(errcode /= nf_noerr) then
           print *, 'Error: ', trim(nf_strerror(errcode))
           stop 2
        endif
      end subroutine check

      end program ftst_path