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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
program he5_pt_readdataF_32
implicit none
include 'hdfeos5.inc'
integer status
integer ptfid
integer ptid
integer he5_ptopen
integer he5_ptattach
integer he5_ptreadlevel
integer he5_ptlevelinfo
integer he5_ptnrecs
integer he5_ptnlevels
integer he5_ptnfields
integer he5_ptc2fort
integer he5_ptinqattrs
integer he5_ptreadattr
integer he5_ptdetach
integer he5_ptclose
integer i
integer nflds
integer level
integer arr_rank
integer datatype
integer dtype(3)
integer attr
integer nrecs
integer nlevels
integer*4 dimens(2)
integer*4 datasize
integer*4 rank_tt(3)
integer*4 offset_tt(3)
integer*4 dtype_tt(3)
integer*4 dim_sizes_tt(3)
integer*4 nattr
integer*4 strbufsize
character*80 levelname
character*80 fieldname(3)
character*80 attrname
character*240 fieldlist
character*240 attrlist
character*8 spec(15)
real*4 con(4,15)
real*4 outcon(15,4)
real*8 time(15)
c Open the HDF-EOS point file, "point.he5"
c ----------------------------------------
ptfid = he5_ptopen('point.he5',HE5F_ACC_RDONLY)
write(*,*) 'File ID returned by he5_ptopen(): ',ptfid
c Read Simple Point
c -----------------
ptid = he5_ptattach(ptfid, "Simple Point")
write(*,*) 'Point ID returned by he5_ptattach(): ',ptid
c Get level information
c ---------------------
level = 0
status = he5_ptlevelinfo(ptid, level, levelname, rank_tt,
1fieldlist, dim_sizes_tt, datasize, offset_tt, dtype_tt)
write(*,*) 'Status returned by he5_ptlevelinfo(): ',status
c Get the number of records in level
c ----------------------------------
level = 0
nrecs = he5_ptnrecs(ptid, level)
print *,'Number of records in level: ', nrecs
nlevels = he5_ptnlevels(ptid)
print *,'Number of levels in Point data set: ', nlevels
nflds = he5_ptnfields(ptid, level, fieldlist, strbufsize)
print *,'Number of fields in level: ', nflds
c Populate input information structure
c ------------------------------------
dtype(1) = HE5T_NATIVE_DOUBLE
dtype(2) = HE5T_NATIVE_FLOAT
dtype(3) = HE5T_NATIVE_CHAR
c Read the level data and print out
c ---------------------------------
fieldname(1) = 'Time'
status = he5_ptreadlevel(ptid, 0, fieldname(1),
1dtype(1), time)
write(*,*) 'Status returned by he5_ptreadlevel(): ',status
write(*,*) 'time array: '
do i = 1,nrecs
print *,time(i)
end do
fieldname(2) = 'Concentration'
status = he5_ptreadlevel(ptid, 0, fieldname(2),
1dtype(2), con)
write(*,*) 'Status returned by he5_ptreadlevel(): ',status
c Convert 'C' array to Fortran order
c ----------------------------------
dimens(1) = 15
dimens(2) = 4
arr_rank = 2
datatype = HE5T_NATIVE_FLOAT
status = he5_ptc2fort(dimens, arr_rank, datatype, con,
1outcon)
write(*,*) 'Status returned by he5_ptc2fort(): ',status
write(*,*) 'outcon array: '
do i = 1,nrecs
print *,outcon(i,1),outcon(i,2),outcon(i,3),outcon(i,4)
end do
fieldname(3) = 'Species'
status = he5_ptreadlevel(ptid, 0, fieldname(3),
1dtype(3), spec)
write(*,*) 'Status returned by he5_ptreadlevel(): ',status
write(*,*) 'spec array: '
do i = 1,nrecs
print *,spec(i)
end do
c.....Close out the point interface
status = he5_ptdetach(ptid)
write(*,*) 'Status returned by he5_ptdetach(): ',status
c Read FixedBuoy Point
c --------------------
ptid = he5_ptattach(ptfid, "FixedBuoy Point")
write(*,*) 'Point ID returned by he5_ptattach(): ',ptid
c Global Attributes
c -----------------
attrname = 'GlobalAttribute_int'
print *,' '
print *,'Global Attribute: '
nattr = he5_ptinqattrs(ptid,attrlist,strbufsize)
print *,'Number of attributes: ',nattr
print *,'Attribute list: ',attrlist
print *,'Size (in bytes) of attribute list: ',strbufsize
status = he5_ptreadattr(ptid,attrname,attr)
write(*,*) 'Status returned by he5_ptreadattr(): ',status
print *,'Attribute value: ',attr
c.....Close out the point interface
status = he5_ptdetach(ptid)
write(*,*) 'Status returned by he5_ptdetach(): ',status
status = he5_ptclose(ptfid)
write(*,*) 'Status returned by he5_ptclose(): ',status
stop
end
|