69 INTEGER FUNCTION truelen(STRING)
71 DO truelen=len(string),1,-1
72 IF (string(truelen:truelen) .NE.
' ' .AND.
73 & string(truelen:truelen) .NE. char(0) )
RETURN 80 SUBROUTINE extract_string(ISTRING, LENMAX, STRING)
82 INTEGER I,ILEN,TRUELEN,LENMAX
83 INTEGER*1 ISTRING(lenmax)
85 ilen = truelen(string)
86 IF (ilen .GE. lenmax)
THEN 87 WRITE(6,9000) lenmax, ilen+1
91 istring(i) = ichar(string(i:i))
95 9000
FORMAT(
'NeXus(NAPIF/EXTRACT_STRING): String too long -',
96 +
'buffer needs increasing from ', i4,
' to at least ',i4)
101 SUBROUTINE replace_string(STRING, ISTRING)
107 IF (istring(i) .EQ. 0)
RETURN 108 string(i:i) = char(istring(i))
110 IF (istring(len(string)+1) .NE. 0)
WRITE(6,9010) len(string)
112 9010
FORMAT(
'NeXus(NAPIF/REPLACE_STRING): String truncated - ',
113 +
'buffer needs to be > ', i4)
118 INTEGER FUNCTION nxopen(FILENAME, ACCESS_METHOD, FILEID)
119 CHARACTER*(*) FILENAME
120 INTEGER*1 IFILENAME(256)
121 INTEGER ACCESS_METHOD
122 INTEGER FILEID(*),NXIFOPEN
124 CALL extract_string(ifilename, 256, filename)
125 nxopen = nxifopen(ifilename, access_method, fileid)
128 INTEGER FUNCTION nxclose(FILEID)
129 INTEGER FILEID(*),NXIFCLOSE
131 nxclose = nxifclose(fileid)
134 INTEGER FUNCTION nxflush(FILEID)
135 INTEGER FILEID(*), NXIFFLUSH
137 nxflush = nxifflush(fileid)
140 INTEGER FUNCTION nxmakegroup(FILEID, VGROUP, NXCLASS)
141 INTEGER FILEID(*),NXIMAKEGROUP
142 CHARACTER*(*) VGROUP, NXCLASS
143 INTEGER*1 IVGROUP(256), INXCLASS(256)
144 EXTERNAL nximakegroup
145 CALL extract_string(ivgroup, 256, vgroup)
146 CALL extract_string(inxclass, 256, nxclass)
147 nxmakegroup = nximakegroup(fileid, ivgroup, inxclass)
150 INTEGER FUNCTION nxopengroup(FILEID, VGROUP, NXCLASS)
151 INTEGER FILEID(*),NXIOPENGROUP
152 CHARACTER*(*) VGROUP, NXCLASS
153 INTEGER*1 IVGROUP(256), INXCLASS(256)
154 EXTERNAL nxiopengroup
155 CALL extract_string(ivgroup, 256, vgroup)
156 CALL extract_string(inxclass, 256, nxclass)
157 nxopengroup = nxiopengroup(fileid, ivgroup, inxclass)
160 INTEGER FUNCTION nxopenpath(FILEID, PATH)
161 INTEGER FILEID(*),NXIOPENPATH
165 CALL extract_string(ipath, 256, path)
166 nxopenpath = nxiopenpath(fileid, ipath)
169 INTEGER FUNCTION nxgetpath(FILEID, PATH)
170 INTEGER FILEID(*),NXIGETPATH, NXIFGETPATH
172 INTEGER*1 IPATH(1024)
176 nxgetpath = nxifgetpath(fileid,ipath,plen)
177 CALL replace_string(path,ipath)
180 INTEGER FUNCTION nxopengrouppath(FILEID, PATH)
181 INTEGER FILEID(*),NXIOPENGROUPPATH
184 EXTERNAL nxiopengrouppath
185 CALL extract_string(ipath, 256, path)
186 nxopengrouppath = nxiopengrouppath(fileid, ipath)
189 INTEGER FUNCTION nxclosegroup(FILEID)
190 INTEGER FILEID(*),NXICLOSEGROUP
191 EXTERNAL nxiclosegroup
192 nxclosegroup = nxiclosegroup(fileid)
195 INTEGER FUNCTION nxmakedata(FILEID, LABEL, DATATYPE, RANK, DIM)
196 INTEGER FILEID(*), DATATYPE, RANK, DIM(*), NXIFMAKEDATA
198 INTEGER*1 ILABEL(256)
199 EXTERNAL nxifmakedata
200 CALL extract_string(ilabel, 256, label)
201 nxmakedata = nxifmakedata(fileid, ilabel, datatype, rank, dim)
204 INTEGER FUNCTION nxcompmakedata(FILEID, LABEL, DATATYPE, RANK,
205 & dim, compression_type, chunk)
206 INTEGER FILEID(*), DATATYPE, RANK, DIM(*)
207 INTEGER COMPRESSION_TYPE, CHUNK(*)
208 INTEGER NXIFCOMPMAKEDATA
210 INTEGER*1 ILABEL(256)
211 EXTERNAL nxifmakedata
212 CALL extract_string(ilabel, 256, label)
213 nxcompmakedata = nxifcompmakedata(fileid, ilabel, datatype,
214 & rank, dim, compression_type, chunk)
217 INTEGER FUNCTION nxopendata(FILEID, LABEL)
218 INTEGER FILEID(*),NXIOPENDATA
220 INTEGER*1 ILABEL(256)
222 CALL extract_string(ilabel, 256, label)
223 nxopendata = nxiopendata(fileid, ilabel)
226 INTEGER FUNCTION nxsetnumberformat(FILEID, ITYPE, FORMAT)
227 INTEGER FILEID(*),NXISETNUMBERFORMAT,ITYPE
229 INTEGER*1 ILABEL(256)
230 EXTERNAL nxisetnumberformat
231 CALL extract_string(ilabel, 256, format)
232 nxsetnumberformat = nxisetnumberformat(fileid, itype, ilabel)
235 INTEGER FUNCTION nxcompress(FILEID, COMPR_TYPE)
236 INTEGER FILEID(*),NXIFCOMPRESS,COMPR_TYPE
237 EXTERNAL nxifcompress
238 nxcompress = nxifcompress(fileid, compr_type)
241 INTEGER FUNCTION nxclosedata(FILEID)
242 INTEGER FILEID(*),NXICLOSEDATA
243 EXTERNAL nxiclosedata
244 nxclosedata = nxiclosedata(fileid)
247 INTEGER FUNCTION nxgetdata(FILEID, DATA)
248 INTEGER FILEID(*), DATA(*), NXIGETDATA
250 nxgetdata = nxigetdata(fileid, data)
253 INTEGER FUNCTION nxgetchardata(FILEID, DATA)
254 INTEGER FILEID(*), NXIGETDATA
256 INTEGER NX_ERROR,NX_IDATLEN
257 parameter(nx_error=0,nx_idatlen=1024)
258 INTEGER*1 IDATA(nx_idatlen)
265 nxgetchardata = nxigetdata(fileid, idata)
266 IF (nxgetchardata .NE. nx_error)
THEN 267 CALL replace_string(
DATA, idata)
271 INTEGER FUNCTION nxgetslab(FILEID, DATA, START, SIZE)
272 INTEGER FILEID(*), DATA(*), START(*), SIZE(*)
273 INTEGER NX_MAXRANK, NX_OK
274 parameter(nx_maxrank=32,nx_ok=1)
275 INTEGER RANK, DIM(nx_maxrank), DATATYPE, I
276 INTEGER CSTART(nx_maxrank), CSIZE(nx_maxrank)
277 INTEGER NXIGETSLAB, NXGETINFO
279 nxgetslab = nxgetinfo(fileid, rank, dim, datatype)
280 IF (nxgetslab .NE. nx_ok)
RETURN 282 cstart(i) = start(rank-i+1) - 1
283 csize(i) =
SIZE(rank-i+1)
285 nxgetslab = nxigetslab(fileid,
DATA, cstart, csize)
288 INTEGER FUNCTION nxgetattr(FILEID, NAME, DATA, DATALEN, TYPE)
289 INTEGER FILEID(*),DATA(*),DATALEN,TYPE
294 CALL extract_string(iname, 256, name)
295 nxgetattr = nxigetattr(fileid, iname,
DATA, datalen, type)
298 INTEGER FUNCTION nxgetcharattr(FILEID, NAME, DATA,
300 INTEGER MAX_DATALEN,NX_ERROR
301 INTEGER FILEID(*), DATALEN, TYPE
302 parameter(max_datalen=1024,nx_error=0)
303 CHARACTER*(*) NAME, DATA
304 INTEGER*1 IDATA(max_datalen)
308 CALL extract_string(iname, 256, name)
309 IF (datalen .GE. max_datalen)
THEN 310 WRITE(6,9020) datalen, max_datalen
311 nxgetcharattr=nx_error
314 nxgetcharattr = nxigetattr(fileid, iname, idata, datalen, type)
315 IF (nxgetcharattr .NE. nx_error)
THEN 316 CALL replace_string(
DATA, idata)
319 9020
FORMAT(
'NXgetattr: asked for attribute size ', i4,
320 +
' with buffer size only ', i4)
323 INTEGER FUNCTION nxputdata(FILEID, DATA)
324 INTEGER FILEID(*), DATA(*), NXIPUTDATA
326 nxputdata = nxiputdata(fileid, data)
329 INTEGER FUNCTION nxputchardata(FILEID, DATA)
330 INTEGER FILEID(*), NXIPUTDATA
332 INTEGER*1 IDATA(1024)
334 CALL extract_string(idata, 1024, data)
335 nxputchardata = nxiputdata(fileid, idata)
338 INTEGER FUNCTION nxputslab(FILEID, DATA, START, SIZE)
339 INTEGER FILEID(*), DATA(*), START(*), SIZE(*)
340 INTEGER NX_MAXRANK,NX_OK
341 parameter(nx_maxrank=32,nx_ok=1)
342 INTEGER RANK, DIM(nx_maxrank), DATATYPE, I
343 INTEGER CSTART(nx_maxrank), CSIZE(nx_maxrank)
344 INTEGER NXIPUTSLAB, NXGETINFO
346 nxputslab = nxgetinfo(fileid, rank, dim, datatype)
347 IF (nxputslab .NE. nx_ok)
RETURN 349 cstart(i) = start(rank-i+1) - 1
350 csize(i) =
SIZE(rank-i+1)
352 nxputslab = nxiputslab(fileid,
DATA, cstart, csize)
355 INTEGER FUNCTION nxputattr(FILEID, NAME, DATA, DATALEN, TYPE)
356 INTEGER FILEID(*), DATA(*), DATALEN, TYPE
361 CALL extract_string(iname, 256, name)
362 nxputattr = nxifputattr(fileid, iname,
DATA, datalen, type)
365 INTEGER FUNCTION nxputcharattr(FILEID, NAME, DATA,
367 INTEGER FILEID(*), DATALEN,
TYPE 368 CHARACTER*(*) NAME, DATA
370 INTEGER*1 IDATA(1024)
373 CALL extract_string(iname, 256, name)
374 CALL extract_string(idata, 1024, data)
375 nxputcharattr = nxifputattr(fileid, iname, idata, datalen, type)
378 INTEGER FUNCTION nxgetinfo(FILEID, RANK, DIM, DATATYPE)
379 INTEGER FILEID(*), RANK, DIM(*), DATATYPE
380 INTEGER I, J, NXIGETINFO, NX_CHAR
382 nxgetinfo = nxigetinfo(fileid, rank, dim, datatype)
386 dim(i) = dim(rank-i+1)
391 INTEGER FUNCTION nxgetnextentry(FILEID, NAME, CLASS, DATATYPE)
392 INTEGER FILEID(*), DATATYPE
393 CHARACTER*(*) NAME, CLASS
394 INTEGER*1 INAME(256), ICLASS(256)
395 INTEGER NXIGETNEXTENTRY
396 EXTERNAL nxigetnextentry
397 nxgetnextentry = nxigetnextentry(fileid, iname, iclass, datatype)
398 CALL replace_string(name, iname)
399 CALL replace_string(
CLASS, ICLASS)
402 INTEGER FUNCTION nxgetnextattr(FILEID, PNAME, ILENGTH, ITYPE)
403 INTEGER FILEID(*), ILENGTH, ITYPE, NXIGETNEXTATTR
405 INTEGER*1 IPNAME(1024)
406 EXTERNAL nxigetnextattr
407 nxgetnextattr = nxigetnextattr(fileid, ipname, ilength, itype)
408 CALL replace_string(pname, ipname)
411 INTEGER FUNCTION nxgetgroupid(FILEID, LINK)
412 INTEGER FILEID(*), LINK(*), NXIGETGROUPID
413 EXTERNAL nxigetgroupid
414 nxgetgroupid = nxigetgroupid(fileid, link)
417 INTEGER FUNCTION nxgetdataid(FILEID, LINK)
418 INTEGER FILEID(*), LINK(*), NXIGETDATAID
419 EXTERNAL nxigetdataid
420 nxgetdataid = nxigetdataid(fileid, link)
423 INTEGER FUNCTION nxmakelink(FILEID, LINK)
424 INTEGER FILEID(*), LINK(*), NXIMAKELINK
426 nxmakelink = nximakelink(fileid, link)
429 INTEGER FUNCTION nxmakenamedlink(FILEID, PNAME, LINK)
430 INTEGER FILEID(*), LINK(*), NXIMAKELINK
433 EXTERNAL nximakenamedlink
434 CALL extract_string(iname,256,pname)
435 nxmakenamedlink = nximakenamedlink(fileid, iname, link)
438 INTEGER FUNCTION nxopensourcegroup(FILEID)
439 INTEGER FILEID(*),NXIOPENSOURCEGROUP
440 EXTERNAL nxiopensourcegroup
441 nxopensourcegroup = nxiopensourcegroup(fileid)
444 LOGICAL FUNCTION nxsameid(FILEID, LINK1, LINK2)
445 INTEGER FILEID(*), LINK1(*), LINK2(*), NXISAMEID, STATUS
447 status = nxisameid(fileid, link1, link2)
448 IF (status .EQ. 1)
THEN 455 INTEGER FUNCTION nxgetgroupinfo(FILEID, NUM, NAME, CLASS)
456 INTEGER FILEID(*), NUM, NXIGETGROUPINFO
457 CHARACTER*(*) NAME, CLASS
458 INTEGER*1 INAME(256), ICLASS(256)
459 EXTERNAL nxigetgroupinfo
460 nxgetgroupinfo = nxigetgroupinfo(fileid, num, iname, iclass)
461 CALL replace_string(name, iname)
462 CALL replace_string(
CLASS, ICLASS)
465 INTEGER FUNCTION nxinitgroupdir(FILEID)
466 INTEGER FILEID(*), NXIINITGROUPDIR
467 EXTERNAL nxiinitgroupdir
468 nxinitgroupdir = nxiinitgroupdir(fileid)
471 INTEGER FUNCTION nxgetattrinfo(FILEID, NUM)
472 INTEGER FILEID(*), NUM, NXIGETATTRINFO
473 EXTERNAL nxigetattrinfo
474 nxgetattrinfo = nxigetattrinfo(fileid, num)
477 INTEGER FUNCTION nxinitattrdir(FILEID)
478 INTEGER FILEID(*), NXIINITATTRDIR
479 EXTERNAL nxiinitattrdir
480 nxinitattrdir = nxiinitattrdir(fileid)
483 INTEGER FUNCTION nxisexternalgroup(FILEID, VGROUP, NXCLASS, NXURL)
484 INTEGER FILEID(*),NXIISEXTERNALGROUP, LENGTH
485 CHARACTER*(*) VGROUP, NXCLASS, NXURL
486 INTEGER*1 IVGROUP(256), INXCLASS(256), INXURL(256)
487 EXTERNAL nxiisexternalgroup
489 CALL extract_string(ivgroup, 256, vgroup)
490 CALL extract_string(inxclass, 256, nxclass)
491 nxisexternalgroup = nxiisexternalgroup(fileid, ivgroup, inxclass,
493 CALL replace_string(nxurl, inxurl)
497 INTEGER FUNCTION nxinquirefile(FILEID, NXFILE)
498 INTEGER FILEID(*),NXIINQUIREFILE, LENGTH
500 INTEGER*1 INXFILE (1024)
501 EXTERNAL nxiinquirefile
503 nxinquirefile = nxiinquirefile(fileid,inxfile, 1023)
504 CALL replace_string(nxfile, inxfile)
507 INTEGER FUNCTION nxlinkexternal(FILEID, VGROUP, NXCLASS, NXURL)
508 INTEGER FILEID(*),NXILINKEXTERNAL
509 CHARACTER*(*) VGROUP, NXCLASS, NXURL
510 INTEGER*1 IVGROUP(256), INXCLASS(256), INXURL(1024)
511 EXTERNAL nxilinkexternal
512 CALL extract_string(ivgroup, 256, vgroup)
513 CALL extract_string(inxclass, 256, nxclass)
514 CALL extract_string(inxurl, 1023, nxurl)
515 nxlinkexternal = nxilinkexternal(fileid, ivgroup,inxclass,