| 1 | C------------------------------------------------------------------------------ |
|---|
| 2 | C NeXus - Neutron & X-ray Common Data Format |
|---|
| 3 | C |
|---|
| 4 | C Test program for NeXus FORTRAN 77 interface |
|---|
| 5 | C |
|---|
| 6 | C Copyright (C) 1997-2002, Freddie Akeroyd |
|---|
| 7 | C |
|---|
| 8 | C This library is free software; you can redistribute it and/or |
|---|
| 9 | C modify it under the terms of the GNU Lesser General Public |
|---|
| 10 | C License as published by the Free Software Foundation; either |
|---|
| 11 | C version 2 of the License, or (at your option) any later version. |
|---|
| 12 | C |
|---|
| 13 | C This library is distributed in the hope that it will be useful, |
|---|
| 14 | C but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 15 | C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|---|
| 16 | C Lesser General Public License for more details. |
|---|
| 17 | C |
|---|
| 18 | C You should have received a copy of the GNU Lesser General Public |
|---|
| 19 | C License along with this library; if not, write to the Free Software |
|---|
| 20 | C Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|---|
| 21 | C |
|---|
| 22 | C For further information, see <http://www.nexusformat.org> |
|---|
| 23 | C |
|---|
| 24 | C $Id$ |
|---|
| 25 | C------------------------------------------------------------------------------ |
|---|
| 26 | |
|---|
| 27 | INCLUDE 'napif.inc' |
|---|
| 28 | INTEGER NXRANK, NXDIMS(NX_MAXRANK), NXTYPE, NXLEN |
|---|
| 29 | INTEGER ENTRY_STATUS, ATTR_STATUS |
|---|
| 30 | INTEGER*4 I, J |
|---|
| 31 | REAL*4 R |
|---|
| 32 | BYTE I1_ARRAY(4) |
|---|
| 33 | INTEGER*2 I2_ARRAY(4) |
|---|
| 34 | INTEGER*4 I4_ARRAY(4) |
|---|
| 35 | REAL*4 R4_ARRAY(4,5) |
|---|
| 36 | REAL*8 R8_ARRAY(4,5) |
|---|
| 37 | INTEGER*4 ARRAY_DIMS(2), UNLIMITED_DIMS(1) |
|---|
| 38 | INTEGER*4 CHUNK_SIZE(2) |
|---|
| 39 | INTEGER*4 SLAB_START(2), SLAB_SIZE(2) |
|---|
| 40 | CHARACTER*64 NAME, CLASS |
|---|
| 41 | CHARACTER*128 CHAR_BUFFER |
|---|
| 42 | BYTE CHAR_BUFFER_B(128) |
|---|
| 43 | CHARACTER*64 GROUP_NAME, CLASS_NAME |
|---|
| 44 | INTEGER FILEID(NXHANDLESIZE) |
|---|
| 45 | INTEGER GLINK(NXLINKSIZE), DLINK(NXLINKSIZE), BLINK(NXLINKSIZE) |
|---|
| 46 | INTEGER*4 COMP_ARRAY(20,100) |
|---|
| 47 | INTEGER*4 DIMS(2), CDIMS(2), UDIMS(1) |
|---|
| 48 | BYTE I1_BUFFER(4) |
|---|
| 49 | INTEGER*2 I2_BUFFER(4) |
|---|
| 50 | INTEGER*4 I4_BUFFER(4), U_BUFFER(7) |
|---|
| 51 | REAL*4 R4_BUFFER(4) |
|---|
| 52 | REAL*8 R8_BUFFER(16) |
|---|
| 53 | DATA I1_ARRAY /1, 2, 3, 4/ |
|---|
| 54 | DATA I2_ARRAY /1000, 2000, 3000, 4000/ |
|---|
| 55 | DATA I4_ARRAY /1000000, 2000000, 3000000, 4000000/ |
|---|
| 56 | DATA R4_ARRAY /1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14., |
|---|
| 57 | + 15.,16.,17.,18.,19.,20./ |
|---|
| 58 | DATA R8_ARRAY/1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14., |
|---|
| 59 | + 15.,16.,17.,18.,19.,20./ |
|---|
| 60 | DATA ARRAY_DIMS /4, 5/ |
|---|
| 61 | DATA CHUNK_SIZE /4, 5/ |
|---|
| 62 | DATA U_BUFFER /0,1,2,3,4,5,6/ |
|---|
| 63 | EQUIVALENCE (CHAR_BUFFER, CHAR_BUFFER_B) |
|---|
| 64 | |
|---|
| 65 | IF (NXOPEN('NXtest.nxs', NXACC_CREATEXML, FILEID) .NE. NX_OK) STOP |
|---|
| 66 | IF (NXMAKEGROUP(FILEID, 'entry', 'NXentry') .NE. NX_OK) STOP |
|---|
| 67 | IF (NXOPENGROUP(FILEID, 'entry', 'NXentry') .NE. NX_OK) STOP |
|---|
| 68 | IF (NXMAKEDATA(FILEID, 'ch_data', NX_CHAR, 1, 10) .NE. NX_OK) |
|---|
| 69 | + STOP |
|---|
| 70 | IF (NXOPENDATA(FILEID, 'ch_data') .NE. NX_OK) STOP |
|---|
| 71 | IF (NXPUTCHARDATA(FILEID, 'NeXus data') .NE. NX_OK) STOP |
|---|
| 72 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 73 | IF (NXMAKEDATA(FILEID, 'i1_data', NX_INT8, 1, 4) .NE. NX_OK) |
|---|
| 74 | + STOP |
|---|
| 75 | IF (NXOPENDATA(FILEID, 'i1_data') .NE. NX_OK) STOP |
|---|
| 76 | IF (NXPUTDATA(FILEID, I1_ARRAY) .NE. NX_OK) STOP |
|---|
| 77 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 78 | IF (NXMAKEDATA(FILEID, 'i2_data', NX_INT16, 1, 4) .NE. NX_OK) |
|---|
| 79 | + STOP |
|---|
| 80 | IF (NXOPENDATA(FILEID, 'i2_data') .NE. NX_OK) STOP |
|---|
| 81 | IF (NXPUTDATA(FILEID, I2_ARRAY) .NE. NX_OK) STOP |
|---|
| 82 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 83 | IF (NXMAKEDATA(FILEID, 'i4_data', NX_INT32, 1, 4) .NE. NX_OK) |
|---|
| 84 | + STOP |
|---|
| 85 | IF (NXOPENDATA(FILEID, 'i4_data') .NE. NX_OK) STOP |
|---|
| 86 | IF (NXPUTDATA(FILEID, I4_ARRAY) .NE. NX_OK) STOP |
|---|
| 87 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 88 | IF (NXCOMPMAKEDATA(FILEID, 'r4_data', NX_FLOAT32, 2, |
|---|
| 89 | + ARRAY_DIMS, NX_COMP_LZW, CHUNK_SIZE) .NE. NX_OK) STOP |
|---|
| 90 | IF (NXOPENDATA(FILEID, 'r4_data') .NE. NX_OK) STOP |
|---|
| 91 | IF (NXPUTDATA(FILEID, R4_ARRAY) .NE. NX_OK) STOP |
|---|
| 92 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 93 | IF (NXMAKEDATA(FILEID, 'r8_data', NX_FLOAT64, 2, ARRAY_DIMS) |
|---|
| 94 | + .NE. NX_OK) STOP |
|---|
| 95 | IF (NXOPENDATA(FILEID, 'r8_data') .NE. NX_OK) STOP |
|---|
| 96 | SLAB_START(1) = 1 |
|---|
| 97 | SLAB_START(2) = 5 |
|---|
| 98 | SLAB_SIZE(1) = 4 |
|---|
| 99 | SLAB_SIZE(2) = 1 |
|---|
| 100 | IF (NXPUTSLAB(FILEID, R8_ARRAY(1,5), SLAB_START, SLAB_SIZE) |
|---|
| 101 | + .NE. NX_OK) STOP |
|---|
| 102 | SLAB_START(1) = 1 |
|---|
| 103 | SLAB_START(2) = 1 |
|---|
| 104 | SLAB_SIZE(1) = 4 |
|---|
| 105 | SLAB_SIZE(2) = 4 |
|---|
| 106 | IF (NXPUTSLAB(FILEID, R8_ARRAY, SLAB_START, SLAB_SIZE) |
|---|
| 107 | + .NE. NX_OK) STOP |
|---|
| 108 | IF (NXPUTCHARATTR(FILEID, 'ch_attribute', 'NeXus',5,NX_CHAR) |
|---|
| 109 | + .NE. NX_OK) STOP |
|---|
| 110 | IF (NXPUTATTR(FILEID, 'i4_attribute', 42, 1, NX_INT32) |
|---|
| 111 | + .NE. NX_OK) STOP |
|---|
| 112 | IF (NXPUTATTR(FILEID, 'r4_attribute', 3.14159265, 1, |
|---|
| 113 | + NX_FLOAT32) .NE. NX_OK) STOP |
|---|
| 114 | IF (NXGETDATAID(FILEID, DLINK) .NE. NX_OK) STOP |
|---|
| 115 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 116 | IF (NXMAKEGROUP(FILEID, 'data', 'NXdata') .NE. NX_OK) STOP |
|---|
| 117 | IF (NXOPENGROUP(FILEID, 'data', 'NXdata') .NE. NX_OK) STOP |
|---|
| 118 | IF (NXMAKELINK(FILEID, DLINK) .NE. NX_OK) STOP |
|---|
| 119 | DIMS(1) = 20 |
|---|
| 120 | DIMS(2) = 100 |
|---|
| 121 | DO I = 1,100 |
|---|
| 122 | DO J = 1,20 |
|---|
| 123 | COMP_ARRAY(J,I) = I-1 |
|---|
| 124 | END DO |
|---|
| 125 | END DO |
|---|
| 126 | CDIMS(1) = 20 |
|---|
| 127 | CDIMS(2) = 20 |
|---|
| 128 | IF (NXCOMPMAKEDATA(FILEID, 'comp_data', NX_INT32, 2, DIMS, |
|---|
| 129 | + NX_COMP_LZW, CDIMS) .NE. NX_OK) STOP |
|---|
| 130 | IF (NXOPENDATA(FILEID, 'comp_data') .NE. NX_OK) STOP |
|---|
| 131 | IF (NXPUTDATA(FILEID, COMP_ARRAY) .NE. NX_OK) STOP |
|---|
| 132 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 133 | IF (NXFLUSH(FILEID) .NE. NX_OK) STOP |
|---|
| 134 | C UDIMS(1) = NX_UNLIMITED |
|---|
| 135 | UDIMS(1) = 7*SLAB_SIZE(1) |
|---|
| 136 | IF (NXMAKEDATA(FILEID, 'flush_data', NX_INT32, 1, UDIMS) |
|---|
| 137 | + .NE. NX_OK) STOP |
|---|
| 138 | SLAB_SIZE(1) = 1 |
|---|
| 139 | DO I = 1,7 |
|---|
| 140 | SLAB_START(1) = I |
|---|
| 141 | IF (NXOPENDATA(FILEID, 'flush_data') .NE. NX_OK) STOP |
|---|
| 142 | IF (NXPUTSLAB(FILEID, U_BUFFER(I), SLAB_START, |
|---|
| 143 | + SLAB_SIZE) .NE. NX_OK) STOP |
|---|
| 144 | IF (NXFLUSH(FILEID) .NE. NX_OK) STOP |
|---|
| 145 | END DO |
|---|
| 146 | IF (NXCLOSEGROUP(FILEID) .NE. NX_OK) STOP |
|---|
| 147 | IF (NXMAKEGROUP(FILEID, 'sample', 'NXsample') .NE. NX_OK) STOP |
|---|
| 148 | IF (NXOPENGROUP(FILEID, 'sample', 'NXsample') .NE. NX_OK) STOP |
|---|
| 149 | IF (NXMAKEDATA(FILEID, 'ch_data', NX_CHAR, 1, 12) .NE. |
|---|
| 150 | + NX_OK) STOP |
|---|
| 151 | IF (NXOPENDATA(FILEID, 'ch_data') .NE. NX_OK) STOP |
|---|
| 152 | IF (NXPUTCHARDATA(FILEID, 'NeXus sample') .NE. NX_OK) STOP |
|---|
| 153 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 154 | IF (NXGETGROUPID (FILEID, GLINK) .NE. NX_OK) STOP |
|---|
| 155 | IF (NXCLOSEGROUP (FILEID) .NE. NX_OK) STOP |
|---|
| 156 | IF (NXCLOSEGROUP (FILEID) .NE. NX_OK) STOP |
|---|
| 157 | IF (NXMAKEGROUP (FILEID, "link", "NXentry") .NE. NX_OK) STOP |
|---|
| 158 | IF (NXOPENGROUP (FILEID, "link", "NXentry") .NE. NX_OK) STOP |
|---|
| 159 | IF (NXMAKELINK (fileid, GLINK) .NE. NX_OK) STOP |
|---|
| 160 | IF (NXCLOSEGROUP(FILEID) .NE. NX_OK) STOP |
|---|
| 161 | IF (NXCLOSE(FILEID) .NE. NX_OK) STOP |
|---|
| 162 | C *** read data |
|---|
| 163 | IF (NXOPEN('NXtest.nxs', NXACC_READ, FILEID) .NE. NX_OK) STOP |
|---|
| 164 | IF (NXGETATTRINFO(FILEID, J) .NE. NX_OK) STOP |
|---|
| 165 | IF (J .GT. 0) WRITE(*,'(1X,A,I2)') |
|---|
| 166 | + 'Number of global attributes: ', J |
|---|
| 167 | DO I = 1,J |
|---|
| 168 | ATTR_STATUS = NXGETNEXTATTR(FILEID,NAME,NXDIMS,NXTYPE) |
|---|
| 169 | IF (ATTR_STATUS .EQ. NX_ERROR) THEN |
|---|
| 170 | STOP |
|---|
| 171 | ELSE IF (ATTR_STATUS .EQ. NX_OK) THEN |
|---|
| 172 | NXLEN = LEN(CHAR_BUFFER) |
|---|
| 173 | IF (NXGETCHARATTR(FILEID, NAME, CHAR_BUFFER, NXLEN, NXTYPE) |
|---|
| 174 | + .NE. NX_OK) STOP |
|---|
| 175 | WRITE(*,'(4X,A)') NAME(1:LEN_TRIM(NAME))//' = ' |
|---|
| 176 | + //CHAR_BUFFER(1:LEN_TRIM(CHAR_BUFFER)) |
|---|
| 177 | END IF |
|---|
| 178 | END DO |
|---|
| 179 | IF (NXOPENGROUP(FILEID, 'entry', 'NXentry') .NE. NX_OK) STOP |
|---|
| 180 | IF (NXGETGROUPINFO(FILEID, I, GROUP_NAME, CLASS_NAME) .NE. |
|---|
| 181 | + NX_OK) STOP |
|---|
| 182 | WRITE(*,'(1X,A,I2,A)') 'Group: ' |
|---|
| 183 | + //GROUP_NAME(1:LEN_TRIM(GROUP_NAME))//'(' |
|---|
| 184 | + //CLASS_NAME(1:LEN_TRIM(CLASS_NAME)) |
|---|
| 185 | + //') contains ',I,' items' |
|---|
| 186 | 100 ENTRY_STATUS=NXGETNEXTENTRY(FILEID,NAME,CLASS,NXTYPE) |
|---|
| 187 | IF (ENTRY_STATUS .EQ. NX_ERROR) STOP |
|---|
| 188 | IF (CLASS(1:LEN_TRIM(CLASS)) .NE. 'SDS') THEN |
|---|
| 189 | IF (ENTRY_STATUS .NE. NX_EOD) THEN |
|---|
| 190 | WRITE(*,'(4X,A)') 'Subgroup: '//NAME(1:LEN_TRIM(NAME))//'(' |
|---|
| 191 | + //CLASS(1:LEN_TRIM(CLASS))//')' |
|---|
| 192 | ENTRY_STATUS = NX_OK |
|---|
| 193 | END IF |
|---|
| 194 | ELSE IF (ENTRY_STATUS .EQ. NX_OK) THEN |
|---|
| 195 | IF (NXOPENDATA(FILEID,NAME) .NE. NX_OK) STOP |
|---|
| 196 | IF (NXGETINFO(FILEID,NXRANK,NXDIMS,NXTYPE) .NE. NX_OK) STOP |
|---|
| 197 | WRITE(*,FMT='(4X,A,I2,A)') NAME(1:LEN_TRIM(NAME))//'(', |
|---|
| 198 | + NXTYPE,')' |
|---|
| 199 | IF (NXTYPE .EQ. NX_CHAR) THEN |
|---|
| 200 | IF (NXGETCHARDATA(FILEID,CHAR_BUFFER) .NE. NX_OK) STOP |
|---|
| 201 | WRITE(*,FMT='(4X,A)') |
|---|
| 202 | + 'Values : '//CHAR_BUFFER(1:NXDIMS(1)) |
|---|
| 203 | ELSE IF (NXTYPE .EQ. NX_INT8) THEN |
|---|
| 204 | IF (NXGETDATA(FILEID,I1_BUFFER) .NE. NX_OK) STOP |
|---|
| 205 | WRITE(*,FMT='(4X,A,4I3)') 'Values : ', I1_BUFFER |
|---|
| 206 | ELSE IF (NXTYPE .EQ. NX_INT16) THEN |
|---|
| 207 | IF (NXGETDATA(FILEID,I2_BUFFER) .NE. NX_OK) STOP |
|---|
| 208 | WRITE(*,FMT='(4X,A,4I6)') 'Values : ', I2_BUFFER |
|---|
| 209 | ELSE IF (NXTYPE .EQ. NX_INT32) THEN |
|---|
| 210 | IF (NXGETDATA(FILEID,I4_BUFFER) .NE. NX_OK) STOP |
|---|
| 211 | WRITE(*,FMT='(4X,A,4I12)') 'Values : ', I4_BUFFER |
|---|
| 212 | ELSE IF (NXTYPE .EQ. NX_FLOAT32) THEN |
|---|
| 213 | SLAB_START(1) = 1 |
|---|
| 214 | SLAB_START(2) = 1 |
|---|
| 215 | SLAB_SIZE(1) = 4 |
|---|
| 216 | SLAB_SIZE(2) = 1 |
|---|
| 217 | IF (NXGETSLAB(FILEID, R4_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 218 | + .NE. NX_OK) STOP |
|---|
| 219 | WRITE(*,FMT='(4X,A,4F7.2)') 'Values : ', R4_BUFFER |
|---|
| 220 | SLAB_START(2) = 2 |
|---|
| 221 | IF (NXGETSLAB(FILEID, R4_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 222 | + .NE. NX_OK) STOP |
|---|
| 223 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', R4_BUFFER |
|---|
| 224 | SLAB_START(2) = 3 |
|---|
| 225 | IF (NXGETSLAB(FILEID, R4_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 226 | + .NE. NX_OK) STOP |
|---|
| 227 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', R4_BUFFER |
|---|
| 228 | SLAB_START(2) = 4 |
|---|
| 229 | IF (NXGETSLAB(FILEID, R4_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 230 | + .NE. NX_OK) STOP |
|---|
| 231 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', R4_BUFFER |
|---|
| 232 | SLAB_START(2) = 5 |
|---|
| 233 | IF (NXGETSLAB(FILEID, R4_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 234 | + .NE. NX_OK) STOP |
|---|
| 235 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', R4_BUFFER |
|---|
| 236 | ELSE IF (NXTYPE .EQ. NX_FLOAT64) THEN |
|---|
| 237 | SLAB_START(1) = 1 |
|---|
| 238 | SLAB_START(2) = 1 |
|---|
| 239 | SLAB_SIZE(1) = 4 |
|---|
| 240 | SLAB_SIZE(2) = 1 |
|---|
| 241 | IF (NXGETSLAB(FILEID, R8_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 242 | + .NE. NX_OK) STOP |
|---|
| 243 | WRITE(*,FMT='(4X,A,4F7.2)') 'Values : ', |
|---|
| 244 | + (R8_BUFFER(I), I=1,4) |
|---|
| 245 | SLAB_START(2) = 2 |
|---|
| 246 | IF (NXGETSLAB(FILEID, R8_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 247 | + .NE. NX_OK) STOP |
|---|
| 248 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', |
|---|
| 249 | + (R8_BUFFER(I), I=1,4) |
|---|
| 250 | SLAB_START(2) = 3 |
|---|
| 251 | IF (NXGETSLAB(FILEID, R8_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 252 | + .NE. NX_OK) STOP |
|---|
| 253 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', |
|---|
| 254 | + (R8_BUFFER(I), I=1,4) |
|---|
| 255 | SLAB_START(2) = 4 |
|---|
| 256 | IF (NXGETSLAB(FILEID, R8_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 257 | + .NE. NX_OK) STOP |
|---|
| 258 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', |
|---|
| 259 | + (R8_BUFFER(I), I=1,4) |
|---|
| 260 | SLAB_START(2) = 5 |
|---|
| 261 | IF (NXGETSLAB(FILEID, R8_BUFFER, SLAB_START, SLAB_SIZE) |
|---|
| 262 | + .NE. NX_OK) STOP |
|---|
| 263 | WRITE(*,FMT='(4X,A,4F7.2)') ' : ', |
|---|
| 264 | + (R8_BUFFER(I), I=1,4) |
|---|
| 265 | END IF |
|---|
| 266 | 200 ATTR_STATUS = NXGETNEXTATTR (FILEID, NAME, NXDIMS, NXTYPE) |
|---|
| 267 | IF (ATTR_STATUS .EQ. NX_ERROR) STOP |
|---|
| 268 | IF (ATTR_STATUS .EQ. NX_OK) THEN |
|---|
| 269 | IF (NXTYPE .EQ. NX_CHAR) THEN |
|---|
| 270 | LENGTH=LEN(CHAR_BUFFER) |
|---|
| 271 | IF (NXGETCHARATTR(FILEID,NAME,CHAR_BUFFER,LENGTH,NXTYPE) |
|---|
| 272 | + .NE. NX_OK) STOP |
|---|
| 273 | WRITE(*,FMT='(7X,A)') NAME(1:LEN_TRIM(NAME))//' : ' |
|---|
| 274 | + //CHAR_BUFFER(1:LEN_TRIM(CHAR_BUFFER)) |
|---|
| 275 | ELSE IF (NXTYPE .EQ. NX_INT32) THEN |
|---|
| 276 | LENGTH=1 |
|---|
| 277 | IF (NXGETATTR(FILEID,NAME,I,LENGTH,NXTYPE) |
|---|
| 278 | + .NE. NX_OK) STOP |
|---|
| 279 | WRITE(*,FMT='(7X,A,I5)') NAME(1:LEN_TRIM(NAME))//' : ', |
|---|
| 280 | + I |
|---|
| 281 | ELSE IF (NXTYPE .EQ. NX_FLOAT32) THEN |
|---|
| 282 | LENGTH=1 |
|---|
| 283 | IF (NXGETATTR(FILEID,NAME,R,LENGTH,NXTYPE) |
|---|
| 284 | + .NE. NX_OK) STOP |
|---|
| 285 | WRITE(*,FMT='(7X,A,F10.6)') NAME(1:LEN_TRIM(NAME)) |
|---|
| 286 | + //' : ', R |
|---|
| 287 | END IF |
|---|
| 288 | END IF |
|---|
| 289 | IF (ATTR_STATUS .NE. NX_EOD) GOTO 200 |
|---|
| 290 | IF (NXCLOSEDATA(FILEID) .NE. NX_OK) STOP |
|---|
| 291 | END IF |
|---|
| 292 | IF (ENTRY_STATUS .NE. NX_EOD) GOTO 100 |
|---|
| 293 | IF (NXCLOSEGROUP(FILEID) .NE. NX_OK) STOP |
|---|
| 294 | IF (NXOPENGROUP (FILEID, "link", "NXentry") .NE. NX_OK) STOP |
|---|
| 295 | IF (NXGETGROUPID (FILEID, GLINK) .NE. NX_OK) STOP |
|---|
| 296 | IF (NXCLOSEGROUP (FILEID) .NE. NX_OK) STOP |
|---|
| 297 | IF (NXOPENGROUP (FILEID, "link", "NXentry") .NE. NX_OK) STOP |
|---|
| 298 | IF (NXGETGROUPID (FILEID, BLINK) .NE. NX_OK) STOP |
|---|
| 299 | IF (NXSAMEID(FILEID, GLINK, BLINK)) THEN |
|---|
| 300 | WRITE(*,*) 'Link Check OK' |
|---|
| 301 | ELSE |
|---|
| 302 | WRITE(*,*) 'Link Check Failed' |
|---|
| 303 | ENDIF |
|---|
| 304 | C-------- NXOPENPATH Test |
|---|
| 305 | IF(NXOPENPATH(FILEID,'/entry/data/comp_data') .NE. NX_OK)STOP |
|---|
| 306 | IF(NXOPENPATH(FILEID,'/entry/data/comp_data') .NE. NX_OK)STOP |
|---|
| 307 | IF(NXOPENPATH(FILEID,'../r8_data') .NE. NX_OK)STOP |
|---|
| 308 | WRITE(6,*)'NXOPENPATH Test Succeeded' |
|---|
| 309 | IF (NXCLOSEGROUP(FILEID) .NE. NX_OK) STOP |
|---|
| 310 | IF (NXCLOSE(FILEID) .NE. NX_OK) STOP |
|---|
| 311 | STOP |
|---|
| 312 | END |
|---|
| 313 | C---------------------------------------------------------------------- |
|---|
| 314 | C LEN_TRIM trims remaining blanks and tabs from the end of "string" |
|---|
| 315 | C INTEGER FUNCTION LEN_TRIM (STRING) |
|---|
| 316 | C INTEGER I |
|---|
| 317 | C CHARACTER*(*) STRING |
|---|
| 318 | C I = LEN(STRING) |
|---|
| 319 | C DO WHILE (I .GE. 1 .AND. |
|---|
| 320 | C +(STRING(I:I).EQ.' '.OR. STRING(I:I).EQ.CHAR(0).OR. |
|---|
| 321 | C + STRING(I:I).EQ.CHAR(9))) |
|---|
| 322 | C I = I - 1 |
|---|
| 323 | C END DO |
|---|
| 324 | C LEN_TRIM = MIN(I,LEN(STRING)) |
|---|
| 325 | C RETURN |
|---|
| 326 | C END |
|---|
| 327 | |
|---|