PageRenderTime 69ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 2ms

/other/netcdf_write_matrix/src/nf_test/test_get.F

https://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 5599 lines | 4980 code | 145 blank | 474 comment | 822 complexity | e7ee9925a4301636414196baa095d4ae MD5 | raw file
Possible License(s): AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  1. C Do not edit this file. It is produced from the corresponding .m4 source */
  2. C*********************************************************************
  3. C Copyright 1996, UCAR/Unidata
  4. C See netcdf/COPYRIGHT file for copying and redistribution conditions.
  5. C $Id: test_get.m4,v 1.10 1997/06/06 21:54:38 steve Exp $
  6. C*********************************************************************
  7. subroutine test_nf_get_var1_text()
  8. implicit none
  9. #include "tests.inc"
  10. integer ncid
  11. integer i
  12. integer j
  13. integer err
  14. integer nok
  15. integer index(MAX_RANK)
  16. doubleprecision expect
  17. logical canConvert
  18. character value
  19. doubleprecision val
  20. nok = 0
  21. err = nf_open(testfile, NF_NOWRITE, ncid)
  22. if (err .ne. 0)
  23. + call errore('nf_open: ', err)
  24. do 1, i = 1, NVARS
  25. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  26. + (NFT_TEXT .eq. NFT_TEXT)
  27. do 2, j = 1, var_rank(i)
  28. index(j) = 1
  29. 2 continue
  30. err = nf_get_var1_text(BAD_ID, i, index, value)
  31. if (err .ne. NF_EBADID)
  32. + call errore('bad ncid: ', err)
  33. err = nf_get_var1_text(ncid, BAD_VARID,
  34. + index, value)
  35. if (err .ne. NF_ENOTVAR)
  36. + call errore('bad var id: ', err)
  37. do 3, j = 1, var_rank(i)
  38. index(j) = var_shape(j,i) + 1
  39. err = nf_get_var1_text(ncid, i, index, value)
  40. if (.not. canConvert) then
  41. if (err .ne. NF_ECHAR)
  42. + call errore('conversion: ', err)
  43. else
  44. if (err .ne. NF_EINVALCOORDS)
  45. + call errore('bad index: ', err)
  46. endif
  47. index(j) = 1
  48. 3 continue
  49. do 4, j = 1, var_nels(i)
  50. err = index2indexes(j, var_rank(i), var_shape(1,i),
  51. + index)
  52. if (err .ne. 0)
  53. + call error('error in index2indexes 1')
  54. expect = hash4( var_type(i), var_rank(i), index,
  55. + NFT_TEXT )
  56. err = nf_get_var1_text(ncid, i, index,
  57. + value)
  58. if (canConvert) then
  59. if (inRange3(expect,var_type(i),
  60. + NFT_TEXT)) then
  61. if (in_internal_range(NFT_TEXT,
  62. + expect)) then
  63. if (err .ne. 0) then
  64. call errore('nf_get_var: ', err)
  65. else
  66. val = ichar(value)
  67. if (.not. equal(val, expect,
  68. + var_type(i),
  69. + NFT_TEXT)) then
  70. call errord('unexpected: ', val)
  71. else
  72. nok = nok + 1
  73. end if
  74. end if
  75. else
  76. if (err .ne. NF_ERANGE)
  77. + call errore('Range error: ', err)
  78. end if
  79. else
  80. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  81. + call errore('OK or Range error: ', err)
  82. end if
  83. else
  84. if (err .ne. NF_ECHAR)
  85. + call errore('wrong type: ', err)
  86. end if
  87. 4 continue
  88. 1 continue
  89. err = nf_close(ncid)
  90. if (err .ne. 0)
  91. + call errore('nf_close: ', err)
  92. call print_nok(nok)
  93. end
  94. #ifdef NF_INT1_T
  95. subroutine test_nf_get_var1_int1()
  96. implicit none
  97. #include "tests.inc"
  98. integer ncid
  99. integer i
  100. integer j
  101. integer err
  102. integer nok
  103. integer index(MAX_RANK)
  104. doubleprecision expect
  105. logical canConvert
  106. NF_INT1_T value
  107. doubleprecision val
  108. nok = 0
  109. err = nf_open(testfile, NF_NOWRITE, ncid)
  110. if (err .ne. 0)
  111. + call errore('nf_open: ', err)
  112. do 1, i = 1, NVARS
  113. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  114. + (NFT_INT1 .eq. NFT_TEXT)
  115. do 2, j = 1, var_rank(i)
  116. index(j) = 1
  117. 2 continue
  118. err = nf_get_var1_int1(BAD_ID, i, index, value)
  119. if (err .ne. NF_EBADID)
  120. + call errore('bad ncid: ', err)
  121. err = nf_get_var1_int1(ncid, BAD_VARID,
  122. + index, value)
  123. if (err .ne. NF_ENOTVAR)
  124. + call errore('bad var id: ', err)
  125. do 3, j = 1, var_rank(i)
  126. index(j) = var_shape(j,i) + 1
  127. err = nf_get_var1_int1(ncid, i, index, value)
  128. if (.not. canConvert) then
  129. if (err .ne. NF_ECHAR)
  130. + call errore('conversion: ', err)
  131. else
  132. if (err .ne. NF_EINVALCOORDS)
  133. + call errore('bad index: ', err)
  134. endif
  135. index(j) = 1
  136. 3 continue
  137. do 4, j = 1, var_nels(i)
  138. err = index2indexes(j, var_rank(i), var_shape(1,i),
  139. + index)
  140. if (err .ne. 0)
  141. + call error('error in index2indexes 1')
  142. expect = hash4( var_type(i), var_rank(i), index,
  143. + NFT_INT1 )
  144. err = nf_get_var1_int1(ncid, i, index,
  145. + value)
  146. if (canConvert) then
  147. if (inRange3(expect,var_type(i),
  148. + NFT_INT1)) then
  149. if (in_internal_range(NFT_INT1,
  150. + expect)) then
  151. if (err .ne. 0) then
  152. call errore('nf_get_var: ', err)
  153. else
  154. val = value
  155. if (.not. equal(val, expect,
  156. + var_type(i),
  157. + NFT_INT1)) then
  158. call errord('unexpected: ', val)
  159. else
  160. nok = nok + 1
  161. end if
  162. end if
  163. else
  164. if (err .ne. NF_ERANGE)
  165. + call errore('Range error: ', err)
  166. end if
  167. else
  168. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  169. + call errore('OK or Range error: ', err)
  170. end if
  171. else
  172. if (err .ne. NF_ECHAR)
  173. + call errore('wrong type: ', err)
  174. end if
  175. 4 continue
  176. 1 continue
  177. err = nf_close(ncid)
  178. if (err .ne. 0)
  179. + call errore('nf_close: ', err)
  180. call print_nok(nok)
  181. end
  182. #endif
  183. #ifdef NF_INT2_T
  184. subroutine test_nf_get_var1_int2()
  185. implicit none
  186. #include "tests.inc"
  187. integer ncid
  188. integer i
  189. integer j
  190. integer err
  191. integer nok
  192. integer index(MAX_RANK)
  193. doubleprecision expect
  194. logical canConvert
  195. NF_INT2_T value
  196. doubleprecision val
  197. nok = 0
  198. err = nf_open(testfile, NF_NOWRITE, ncid)
  199. if (err .ne. 0)
  200. + call errore('nf_open: ', err)
  201. do 1, i = 1, NVARS
  202. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  203. + (NFT_INT2 .eq. NFT_TEXT)
  204. do 2, j = 1, var_rank(i)
  205. index(j) = 1
  206. 2 continue
  207. err = nf_get_var1_int2(BAD_ID, i, index, value)
  208. if (err .ne. NF_EBADID)
  209. + call errore('bad ncid: ', err)
  210. err = nf_get_var1_int2(ncid, BAD_VARID,
  211. + index, value)
  212. if (err .ne. NF_ENOTVAR)
  213. + call errore('bad var id: ', err)
  214. do 3, j = 1, var_rank(i)
  215. index(j) = var_shape(j,i) + 1
  216. err = nf_get_var1_int2(ncid, i, index, value)
  217. if (.not. canConvert) then
  218. if (err .ne. NF_ECHAR)
  219. + call errore('conversion: ', err)
  220. else
  221. if (err .ne. NF_EINVALCOORDS)
  222. + call errore('bad index: ', err)
  223. endif
  224. index(j) = 1
  225. 3 continue
  226. do 4, j = 1, var_nels(i)
  227. err = index2indexes(j, var_rank(i), var_shape(1,i),
  228. + index)
  229. if (err .ne. 0)
  230. + call error('error in index2indexes 1')
  231. expect = hash4( var_type(i), var_rank(i), index,
  232. + NFT_INT2 )
  233. err = nf_get_var1_int2(ncid, i, index,
  234. + value)
  235. if (canConvert) then
  236. if (inRange3(expect,var_type(i),
  237. + NFT_INT2)) then
  238. if (in_internal_range(NFT_INT2,
  239. + expect)) then
  240. if (err .ne. 0) then
  241. call errore('nf_get_var: ', err)
  242. else
  243. val = value
  244. if (.not. equal(val, expect,
  245. + var_type(i),
  246. + NFT_INT2)) then
  247. call errord('unexpected: ', val)
  248. else
  249. nok = nok + 1
  250. end if
  251. end if
  252. else
  253. if (err .ne. NF_ERANGE)
  254. + call errore('Range error: ', err)
  255. end if
  256. else
  257. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  258. + call errore('OK or Range error: ', err)
  259. end if
  260. else
  261. if (err .ne. NF_ECHAR)
  262. + call errore('wrong type: ', err)
  263. end if
  264. 4 continue
  265. 1 continue
  266. err = nf_close(ncid)
  267. if (err .ne. 0)
  268. + call errore('nf_close: ', err)
  269. call print_nok(nok)
  270. end
  271. #endif
  272. subroutine test_nf_get_var1_int()
  273. implicit none
  274. #include "tests.inc"
  275. integer ncid
  276. integer i
  277. integer j
  278. integer err
  279. integer nok
  280. integer index(MAX_RANK)
  281. doubleprecision expect
  282. logical canConvert
  283. integer value
  284. doubleprecision val
  285. nok = 0
  286. err = nf_open(testfile, NF_NOWRITE, ncid)
  287. if (err .ne. 0)
  288. + call errore('nf_open: ', err)
  289. do 1, i = 1, NVARS
  290. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  291. + (NFT_INT .eq. NFT_TEXT)
  292. do 2, j = 1, var_rank(i)
  293. index(j) = 1
  294. 2 continue
  295. err = nf_get_var1_int(BAD_ID, i, index, value)
  296. if (err .ne. NF_EBADID)
  297. + call errore('bad ncid: ', err)
  298. err = nf_get_var1_int(ncid, BAD_VARID,
  299. + index, value)
  300. if (err .ne. NF_ENOTVAR)
  301. + call errore('bad var id: ', err)
  302. do 3, j = 1, var_rank(i)
  303. index(j) = var_shape(j,i) + 1
  304. err = nf_get_var1_int(ncid, i, index, value)
  305. if (.not. canConvert) then
  306. if (err .ne. NF_ECHAR)
  307. + call errore('conversion: ', err)
  308. else
  309. if (err .ne. NF_EINVALCOORDS)
  310. + call errore('bad index: ', err)
  311. endif
  312. index(j) = 1
  313. 3 continue
  314. do 4, j = 1, var_nels(i)
  315. err = index2indexes(j, var_rank(i), var_shape(1,i),
  316. + index)
  317. if (err .ne. 0)
  318. + call error('error in index2indexes 1')
  319. expect = hash4( var_type(i), var_rank(i), index,
  320. + NFT_INT )
  321. err = nf_get_var1_int(ncid, i, index,
  322. + value)
  323. if (canConvert) then
  324. if (inRange3(expect,var_type(i),
  325. + NFT_INT)) then
  326. if (in_internal_range(NFT_INT,
  327. + expect)) then
  328. if (err .ne. 0) then
  329. call errore('nf_get_var: ', err)
  330. else
  331. val = value
  332. if (.not. equal(val, expect,
  333. + var_type(i),
  334. + NFT_INT)) then
  335. call errord('unexpected: ', val)
  336. else
  337. nok = nok + 1
  338. end if
  339. end if
  340. else
  341. if (err .ne. NF_ERANGE)
  342. + call errore('Range error: ', err)
  343. end if
  344. else
  345. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  346. + call errore('OK or Range error: ', err)
  347. end if
  348. else
  349. if (err .ne. NF_ECHAR)
  350. + call errore('wrong type: ', err)
  351. end if
  352. 4 continue
  353. 1 continue
  354. err = nf_close(ncid)
  355. if (err .ne. 0)
  356. + call errore('nf_close: ', err)
  357. call print_nok(nok)
  358. end
  359. subroutine test_nf_get_var1_real()
  360. implicit none
  361. #include "tests.inc"
  362. integer ncid
  363. integer i
  364. integer j
  365. integer err
  366. integer nok
  367. integer index(MAX_RANK)
  368. doubleprecision expect
  369. logical canConvert
  370. real value
  371. doubleprecision val
  372. nok = 0
  373. err = nf_open(testfile, NF_NOWRITE, ncid)
  374. if (err .ne. 0)
  375. + call errore('nf_open: ', err)
  376. do 1, i = 1, NVARS
  377. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  378. + (NFT_REAL .eq. NFT_TEXT)
  379. do 2, j = 1, var_rank(i)
  380. index(j) = 1
  381. 2 continue
  382. err = nf_get_var1_real(BAD_ID, i, index, value)
  383. if (err .ne. NF_EBADID)
  384. + call errore('bad ncid: ', err)
  385. err = nf_get_var1_real(ncid, BAD_VARID,
  386. + index, value)
  387. if (err .ne. NF_ENOTVAR)
  388. + call errore('bad var id: ', err)
  389. do 3, j = 1, var_rank(i)
  390. index(j) = var_shape(j,i) + 1
  391. err = nf_get_var1_real(ncid, i, index, value)
  392. if (.not. canConvert) then
  393. if (err .ne. NF_ECHAR)
  394. + call errore('conversion: ', err)
  395. else
  396. if (err .ne. NF_EINVALCOORDS)
  397. + call errore('bad index: ', err)
  398. endif
  399. index(j) = 1
  400. 3 continue
  401. do 4, j = 1, var_nels(i)
  402. err = index2indexes(j, var_rank(i), var_shape(1,i),
  403. + index)
  404. if (err .ne. 0)
  405. + call error('error in index2indexes 1')
  406. expect = hash4( var_type(i), var_rank(i), index,
  407. + NFT_REAL )
  408. err = nf_get_var1_real(ncid, i, index,
  409. + value)
  410. if (canConvert) then
  411. if (inRange3(expect,var_type(i),
  412. + NFT_REAL)) then
  413. if (in_internal_range(NFT_REAL,
  414. + expect)) then
  415. if (err .ne. 0) then
  416. call errore('nf_get_var: ', err)
  417. else
  418. val = value
  419. if (.not. equal(val, expect,
  420. + var_type(i),
  421. + NFT_REAL)) then
  422. call errord('unexpected: ', val)
  423. else
  424. nok = nok + 1
  425. end if
  426. end if
  427. else
  428. if (err .ne. NF_ERANGE)
  429. + call errore('Range error: ', err)
  430. end if
  431. else
  432. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  433. + call errore('OK or Range error: ', err)
  434. end if
  435. else
  436. if (err .ne. NF_ECHAR)
  437. + call errore('wrong type: ', err)
  438. end if
  439. 4 continue
  440. 1 continue
  441. err = nf_close(ncid)
  442. if (err .ne. 0)
  443. + call errore('nf_close: ', err)
  444. call print_nok(nok)
  445. end
  446. subroutine test_nf_get_var1_double()
  447. implicit none
  448. #include "tests.inc"
  449. integer ncid
  450. integer i
  451. integer j
  452. integer err
  453. integer nok
  454. integer index(MAX_RANK)
  455. doubleprecision expect
  456. logical canConvert
  457. doubleprecision value
  458. doubleprecision val
  459. nok = 0
  460. err = nf_open(testfile, NF_NOWRITE, ncid)
  461. if (err .ne. 0)
  462. + call errore('nf_open: ', err)
  463. do 1, i = 1, NVARS
  464. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  465. + (NFT_DOUBLE .eq. NFT_TEXT)
  466. do 2, j = 1, var_rank(i)
  467. index(j) = 1
  468. 2 continue
  469. err = nf_get_var1_double(BAD_ID, i, index, value)
  470. if (err .ne. NF_EBADID)
  471. + call errore('bad ncid: ', err)
  472. err = nf_get_var1_double(ncid, BAD_VARID,
  473. + index, value)
  474. if (err .ne. NF_ENOTVAR)
  475. + call errore('bad var id: ', err)
  476. do 3, j = 1, var_rank(i)
  477. index(j) = var_shape(j,i) + 1
  478. err = nf_get_var1_double(ncid, i, index, value)
  479. if (.not. canConvert) then
  480. if (err .ne. NF_ECHAR)
  481. + call errore('conversion: ', err)
  482. else
  483. if (err .ne. NF_EINVALCOORDS)
  484. + call errore('bad index: ', err)
  485. endif
  486. index(j) = 1
  487. 3 continue
  488. do 4, j = 1, var_nels(i)
  489. err = index2indexes(j, var_rank(i), var_shape(1,i),
  490. + index)
  491. if (err .ne. 0)
  492. + call error('error in index2indexes 1')
  493. expect = hash4( var_type(i), var_rank(i), index,
  494. + NFT_DOUBLE )
  495. err = nf_get_var1_double(ncid, i, index,
  496. + value)
  497. if (canConvert) then
  498. if (inRange3(expect,var_type(i),
  499. + NFT_DOUBLE)) then
  500. if (in_internal_range(NFT_DOUBLE,
  501. + expect)) then
  502. if (err .ne. 0) then
  503. call errore('nf_get_var: ', err)
  504. else
  505. val = value
  506. if (.not. equal(val, expect,
  507. + var_type(i),
  508. + NFT_DOUBLE)) then
  509. call errord('unexpected: ', val)
  510. else
  511. nok = nok + 1
  512. end if
  513. end if
  514. else
  515. if (err .ne. NF_ERANGE)
  516. + call errore('Range error: ', err)
  517. end if
  518. else
  519. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  520. + call errore('OK or Range error: ', err)
  521. end if
  522. else
  523. if (err .ne. NF_ECHAR)
  524. + call errore('wrong type: ', err)
  525. end if
  526. 4 continue
  527. 1 continue
  528. err = nf_close(ncid)
  529. if (err .ne. 0)
  530. + call errore('nf_close: ', err)
  531. call print_nok(nok)
  532. end
  533. subroutine test_nf_get_var_text()
  534. implicit none
  535. #include "tests.inc"
  536. integer ncid
  537. integer i
  538. integer j
  539. integer err
  540. logical allInExtRange
  541. logical allInIntRange
  542. integer nels
  543. integer nok
  544. integer index(MAX_RANK)
  545. doubleprecision expect(MAX_NELS)
  546. logical canConvert
  547. character value(MAX_NELS)
  548. doubleprecision val
  549. nok = 0
  550. err = nf_open(testfile, NF_NOWRITE, ncid)
  551. if (err .ne. 0)
  552. + call errore('nf_open: ', err)
  553. do 1, i = 1, NVARS
  554. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  555. + (NFT_TEXT .eq. NFT_TEXT)
  556. err = nf_get_var_text(BAD_ID, i, value)
  557. if (err .ne. NF_EBADID)
  558. + call errore('bad ncid: ', err)
  559. err = nf_get_var_text(ncid, BAD_VARID, value)
  560. if (err .ne. NF_ENOTVAR)
  561. + call errore('bad var id: ', err)
  562. nels = 1
  563. do 3, j = 1, var_rank(i)
  564. nels = nels * var_shape(j,i)
  565. 3 continue
  566. allInExtRange = .true.
  567. allInIntRange = .true.
  568. do 4, j = 1, var_nels(i)
  569. err = index2indexes(j, var_rank(i), var_shape(1,i),
  570. + index)
  571. if (err .ne. 0)
  572. + call error('error in index2indexes 1')
  573. expect(j) = hash4( var_type(i), var_rank(i), index,
  574. + NFT_TEXT )
  575. if (inRange3(expect(j),var_type(i), NFT_TEXT)) then
  576. allInIntRange = allInIntRange .and.
  577. + in_internal_range(NFT_TEXT, expect(j))
  578. else
  579. allInExtRange = .false.
  580. end if
  581. 4 continue
  582. err = nf_get_var_text(ncid, i, value)
  583. if (canConvert) then
  584. if (allInExtRange) then
  585. if (allInIntRange) then
  586. if (err .ne. 0)
  587. + call errore('nf_get_var: ', err)
  588. else
  589. if (err .ne. NF_ERANGE)
  590. + call errore('Range error: ', err)
  591. endif
  592. else
  593. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  594. + call errore('Range error: ', err)
  595. endif
  596. do 5, j = 1, var_nels(i)
  597. if (inRange3(expect(j),var_type(i),
  598. + NFT_TEXT) .and.
  599. + in_internal_range(NFT_TEXT,
  600. + expect(j))) then
  601. val = ichar(value(j))
  602. if (.not. equal(val, expect(j),
  603. + var_type(i),
  604. + NFT_TEXT)) then
  605. call errord('unexpected: ', val)
  606. else
  607. nok = nok + 1
  608. end if
  609. endif
  610. 5 continue
  611. else
  612. if (err .ne. NF_ECHAR)
  613. + call errore('wrong type: ', err)
  614. end if
  615. 1 continue
  616. err = nf_close(ncid)
  617. if (err .ne. 0)
  618. + call errore('nf_close: ', err)
  619. call print_nok(nok)
  620. end
  621. #ifdef NF_INT1_T
  622. subroutine test_nf_get_var_int1()
  623. implicit none
  624. #include "tests.inc"
  625. integer ncid
  626. integer i
  627. integer j
  628. integer err
  629. logical allInExtRange
  630. logical allInIntRange
  631. integer nels
  632. integer nok
  633. integer index(MAX_RANK)
  634. doubleprecision expect(MAX_NELS)
  635. logical canConvert
  636. NF_INT1_T value(MAX_NELS)
  637. doubleprecision val
  638. nok = 0
  639. err = nf_open(testfile, NF_NOWRITE, ncid)
  640. if (err .ne. 0)
  641. + call errore('nf_open: ', err)
  642. do 1, i = 1, NVARS
  643. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  644. + (NFT_INT1 .eq. NFT_TEXT)
  645. err = nf_get_var_int1(BAD_ID, i, value)
  646. if (err .ne. NF_EBADID)
  647. + call errore('bad ncid: ', err)
  648. err = nf_get_var_int1(ncid, BAD_VARID, value)
  649. if (err .ne. NF_ENOTVAR)
  650. + call errore('bad var id: ', err)
  651. nels = 1
  652. do 3, j = 1, var_rank(i)
  653. nels = nels * var_shape(j,i)
  654. 3 continue
  655. allInExtRange = .true.
  656. allInIntRange = .true.
  657. do 4, j = 1, var_nels(i)
  658. err = index2indexes(j, var_rank(i), var_shape(1,i),
  659. + index)
  660. if (err .ne. 0)
  661. + call error('error in index2indexes 1')
  662. expect(j) = hash4( var_type(i), var_rank(i), index,
  663. + NFT_INT1 )
  664. if (inRange3(expect(j),var_type(i), NFT_INT1)) then
  665. allInIntRange = allInIntRange .and.
  666. + in_internal_range(NFT_INT1, expect(j))
  667. else
  668. allInExtRange = .false.
  669. end if
  670. 4 continue
  671. err = nf_get_var_int1(ncid, i, value)
  672. if (canConvert) then
  673. if (allInExtRange) then
  674. if (allInIntRange) then
  675. if (err .ne. 0)
  676. + call errore('nf_get_var: ', err)
  677. else
  678. if (err .ne. NF_ERANGE)
  679. + call errore('Range error: ', err)
  680. endif
  681. else
  682. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  683. + call errore('Range error: ', err)
  684. endif
  685. do 5, j = 1, var_nels(i)
  686. if (inRange3(expect(j),var_type(i),
  687. + NFT_INT1) .and.
  688. + in_internal_range(NFT_INT1,
  689. + expect(j))) then
  690. val = value(j)
  691. if (.not. equal(val, expect(j),
  692. + var_type(i),
  693. + NFT_INT1)) then
  694. call errord('unexpected: ', val)
  695. else
  696. nok = nok + 1
  697. end if
  698. endif
  699. 5 continue
  700. else
  701. if (err .ne. NF_ECHAR)
  702. + call errore('wrong type: ', err)
  703. end if
  704. 1 continue
  705. err = nf_close(ncid)
  706. if (err .ne. 0)
  707. + call errore('nf_close: ', err)
  708. call print_nok(nok)
  709. end
  710. #endif
  711. #ifdef NF_INT2_T
  712. subroutine test_nf_get_var_int2()
  713. implicit none
  714. #include "tests.inc"
  715. integer ncid
  716. integer i
  717. integer j
  718. integer err
  719. logical allInExtRange
  720. logical allInIntRange
  721. integer nels
  722. integer nok
  723. integer index(MAX_RANK)
  724. doubleprecision expect(MAX_NELS)
  725. logical canConvert
  726. NF_INT2_T value(MAX_NELS)
  727. doubleprecision val
  728. nok = 0
  729. err = nf_open(testfile, NF_NOWRITE, ncid)
  730. if (err .ne. 0)
  731. + call errore('nf_open: ', err)
  732. do 1, i = 1, NVARS
  733. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  734. + (NFT_INT2 .eq. NFT_TEXT)
  735. err = nf_get_var_int2(BAD_ID, i, value)
  736. if (err .ne. NF_EBADID)
  737. + call errore('bad ncid: ', err)
  738. err = nf_get_var_int2(ncid, BAD_VARID, value)
  739. if (err .ne. NF_ENOTVAR)
  740. + call errore('bad var id: ', err)
  741. nels = 1
  742. do 3, j = 1, var_rank(i)
  743. nels = nels * var_shape(j,i)
  744. 3 continue
  745. allInExtRange = .true.
  746. allInIntRange = .true.
  747. do 4, j = 1, var_nels(i)
  748. err = index2indexes(j, var_rank(i), var_shape(1,i),
  749. + index)
  750. if (err .ne. 0)
  751. + call error('error in index2indexes 1')
  752. expect(j) = hash4( var_type(i), var_rank(i), index,
  753. + NFT_INT2 )
  754. if (inRange3(expect(j),var_type(i), NFT_INT2)) then
  755. allInIntRange = allInIntRange .and.
  756. + in_internal_range(NFT_INT2, expect(j))
  757. else
  758. allInExtRange = .false.
  759. end if
  760. 4 continue
  761. err = nf_get_var_int2(ncid, i, value)
  762. if (canConvert) then
  763. if (allInExtRange) then
  764. if (allInIntRange) then
  765. if (err .ne. 0)
  766. + call errore('nf_get_var: ', err)
  767. else
  768. if (err .ne. NF_ERANGE)
  769. + call errore('Range error: ', err)
  770. endif
  771. else
  772. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  773. + call errore('Range error: ', err)
  774. endif
  775. do 5, j = 1, var_nels(i)
  776. if (inRange3(expect(j),var_type(i),
  777. + NFT_INT2) .and.
  778. + in_internal_range(NFT_INT2,
  779. + expect(j))) then
  780. val = value(j)
  781. if (.not. equal(val, expect(j),
  782. + var_type(i),
  783. + NFT_INT2)) then
  784. call errord('unexpected: ', val)
  785. else
  786. nok = nok + 1
  787. end if
  788. endif
  789. 5 continue
  790. else
  791. if (err .ne. NF_ECHAR)
  792. + call errore('wrong type: ', err)
  793. end if
  794. 1 continue
  795. err = nf_close(ncid)
  796. if (err .ne. 0)
  797. + call errore('nf_close: ', err)
  798. call print_nok(nok)
  799. end
  800. #endif
  801. subroutine test_nf_get_var_int()
  802. implicit none
  803. #include "tests.inc"
  804. integer ncid
  805. integer i
  806. integer j
  807. integer err
  808. logical allInExtRange
  809. logical allInIntRange
  810. integer nels
  811. integer nok
  812. integer index(MAX_RANK)
  813. doubleprecision expect(MAX_NELS)
  814. logical canConvert
  815. integer value(MAX_NELS)
  816. doubleprecision val
  817. nok = 0
  818. err = nf_open(testfile, NF_NOWRITE, ncid)
  819. if (err .ne. 0)
  820. + call errore('nf_open: ', err)
  821. do 1, i = 1, NVARS
  822. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  823. + (NFT_INT .eq. NFT_TEXT)
  824. err = nf_get_var_int(BAD_ID, i, value)
  825. if (err .ne. NF_EBADID)
  826. + call errore('bad ncid: ', err)
  827. err = nf_get_var_int(ncid, BAD_VARID, value)
  828. if (err .ne. NF_ENOTVAR)
  829. + call errore('bad var id: ', err)
  830. nels = 1
  831. do 3, j = 1, var_rank(i)
  832. nels = nels * var_shape(j,i)
  833. 3 continue
  834. allInExtRange = .true.
  835. allInIntRange = .true.
  836. do 4, j = 1, var_nels(i)
  837. err = index2indexes(j, var_rank(i), var_shape(1,i),
  838. + index)
  839. if (err .ne. 0)
  840. + call error('error in index2indexes 1')
  841. expect(j) = hash4( var_type(i), var_rank(i), index,
  842. + NFT_INT )
  843. if (inRange3(expect(j),var_type(i), NFT_INT)) then
  844. allInIntRange = allInIntRange .and.
  845. + in_internal_range(NFT_INT, expect(j))
  846. else
  847. allInExtRange = .false.
  848. end if
  849. 4 continue
  850. err = nf_get_var_int(ncid, i, value)
  851. if (canConvert) then
  852. if (allInExtRange) then
  853. if (allInIntRange) then
  854. if (err .ne. 0)
  855. + call errore('nf_get_var: ', err)
  856. else
  857. if (err .ne. NF_ERANGE)
  858. + call errore('Range error: ', err)
  859. endif
  860. else
  861. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  862. + call errore('Range error: ', err)
  863. endif
  864. do 5, j = 1, var_nels(i)
  865. if (inRange3(expect(j),var_type(i),
  866. + NFT_INT) .and.
  867. + in_internal_range(NFT_INT,
  868. + expect(j))) then
  869. val = value(j)
  870. if (.not. equal(val, expect(j),
  871. + var_type(i),
  872. + NFT_INT)) then
  873. call errord('unexpected: ', val)
  874. else
  875. nok = nok + 1
  876. end if
  877. endif
  878. 5 continue
  879. else
  880. if (err .ne. NF_ECHAR)
  881. + call errore('wrong type: ', err)
  882. end if
  883. 1 continue
  884. err = nf_close(ncid)
  885. if (err .ne. 0)
  886. + call errore('nf_close: ', err)
  887. call print_nok(nok)
  888. end
  889. subroutine test_nf_get_var_real()
  890. implicit none
  891. #include "tests.inc"
  892. integer ncid
  893. integer i
  894. integer j
  895. integer err
  896. logical allInExtRange
  897. logical allInIntRange
  898. integer nels
  899. integer nok
  900. integer index(MAX_RANK)
  901. doubleprecision expect(MAX_NELS)
  902. logical canConvert
  903. real value(MAX_NELS)
  904. doubleprecision val
  905. nok = 0
  906. err = nf_open(testfile, NF_NOWRITE, ncid)
  907. if (err .ne. 0)
  908. + call errore('nf_open: ', err)
  909. do 1, i = 1, NVARS
  910. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  911. + (NFT_REAL .eq. NFT_TEXT)
  912. err = nf_get_var_real(BAD_ID, i, value)
  913. if (err .ne. NF_EBADID)
  914. + call errore('bad ncid: ', err)
  915. err = nf_get_var_real(ncid, BAD_VARID, value)
  916. if (err .ne. NF_ENOTVAR)
  917. + call errore('bad var id: ', err)
  918. nels = 1
  919. do 3, j = 1, var_rank(i)
  920. nels = nels * var_shape(j,i)
  921. 3 continue
  922. allInExtRange = .true.
  923. allInIntRange = .true.
  924. do 4, j = 1, var_nels(i)
  925. err = index2indexes(j, var_rank(i), var_shape(1,i),
  926. + index)
  927. if (err .ne. 0)
  928. + call error('error in index2indexes 1')
  929. expect(j) = hash4( var_type(i), var_rank(i), index,
  930. + NFT_REAL )
  931. if (inRange3(expect(j),var_type(i), NFT_REAL)) then
  932. allInIntRange = allInIntRange .and.
  933. + in_internal_range(NFT_REAL, expect(j))
  934. else
  935. allInExtRange = .false.
  936. end if
  937. 4 continue
  938. err = nf_get_var_real(ncid, i, value)
  939. if (canConvert) then
  940. if (allInExtRange) then
  941. if (allInIntRange) then
  942. if (err .ne. 0)
  943. + call errore('nf_get_var: ', err)
  944. else
  945. if (err .ne. NF_ERANGE)
  946. + call errore('Range error: ', err)
  947. endif
  948. else
  949. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  950. + call errore('Range error: ', err)
  951. endif
  952. do 5, j = 1, var_nels(i)
  953. if (inRange3(expect(j),var_type(i),
  954. + NFT_REAL) .and.
  955. + in_internal_range(NFT_REAL,
  956. + expect(j))) then
  957. val = value(j)
  958. if (.not. equal(val, expect(j),
  959. + var_type(i),
  960. + NFT_REAL)) then
  961. call errord('unexpected: ', val)
  962. else
  963. nok = nok + 1
  964. end if
  965. endif
  966. 5 continue
  967. else
  968. if (err .ne. NF_ECHAR)
  969. + call errore('wrong type: ', err)
  970. end if
  971. 1 continue
  972. err = nf_close(ncid)
  973. if (err .ne. 0)
  974. + call errore('nf_close: ', err)
  975. call print_nok(nok)
  976. end
  977. subroutine test_nf_get_var_double()
  978. implicit none
  979. #include "tests.inc"
  980. integer ncid
  981. integer i
  982. integer j
  983. integer err
  984. logical allInExtRange
  985. logical allInIntRange
  986. integer nels
  987. integer nok
  988. integer index(MAX_RANK)
  989. doubleprecision expect(MAX_NELS)
  990. logical canConvert
  991. doubleprecision value(MAX_NELS)
  992. doubleprecision val
  993. nok = 0
  994. err = nf_open(testfile, NF_NOWRITE, ncid)
  995. if (err .ne. 0)
  996. + call errore('nf_open: ', err)
  997. do 1, i = 1, NVARS
  998. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  999. + (NFT_DOUBLE .eq. NFT_TEXT)
  1000. err = nf_get_var_double(BAD_ID, i, value)
  1001. if (err .ne. NF_EBADID)
  1002. + call errore('bad ncid: ', err)
  1003. err = nf_get_var_double(ncid, BAD_VARID, value)
  1004. if (err .ne. NF_ENOTVAR)
  1005. + call errore('bad var id: ', err)
  1006. nels = 1
  1007. do 3, j = 1, var_rank(i)
  1008. nels = nels * var_shape(j,i)
  1009. 3 continue
  1010. allInExtRange = .true.
  1011. allInIntRange = .true.
  1012. do 4, j = 1, var_nels(i)
  1013. err = index2indexes(j, var_rank(i), var_shape(1,i),
  1014. + index)
  1015. if (err .ne. 0)
  1016. + call error('error in index2indexes 1')
  1017. expect(j) = hash4( var_type(i), var_rank(i), index,
  1018. + NFT_DOUBLE )
  1019. if (inRange3(expect(j),var_type(i), NFT_DOUBLE)) then
  1020. allInIntRange = allInIntRange .and.
  1021. + in_internal_range(NFT_DOUBLE, expect(j))
  1022. else
  1023. allInExtRange = .false.
  1024. end if
  1025. 4 continue
  1026. err = nf_get_var_double(ncid, i, value)
  1027. if (canConvert) then
  1028. if (allInExtRange) then
  1029. if (allInIntRange) then
  1030. if (err .ne. 0)
  1031. + call errore('nf_get_var: ', err)
  1032. else
  1033. if (err .ne. NF_ERANGE)
  1034. + call errore('Range error: ', err)
  1035. endif
  1036. else
  1037. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  1038. + call errore('Range error: ', err)
  1039. endif
  1040. do 5, j = 1, var_nels(i)
  1041. if (inRange3(expect(j),var_type(i),
  1042. + NFT_DOUBLE) .and.
  1043. + in_internal_range(NFT_DOUBLE,
  1044. + expect(j))) then
  1045. val = value(j)
  1046. if (.not. equal(val, expect(j),
  1047. + var_type(i),
  1048. + NFT_DOUBLE)) then
  1049. call errord('unexpected: ', val)
  1050. else
  1051. nok = nok + 1
  1052. end if
  1053. endif
  1054. 5 continue
  1055. else
  1056. if (err .ne. NF_ECHAR)
  1057. + call errore('wrong type: ', err)
  1058. end if
  1059. 1 continue
  1060. err = nf_close(ncid)
  1061. if (err .ne. 0)
  1062. + call errore('nf_close: ', err)
  1063. call print_nok(nok)
  1064. end
  1065. subroutine test_nf_get_vara_text()
  1066. implicit none
  1067. #include "tests.inc"
  1068. integer ncid
  1069. integer d
  1070. integer i
  1071. integer j
  1072. integer k
  1073. integer err
  1074. logical allInExtRange
  1075. logical allInIntRange
  1076. integer nels
  1077. integer nslabs
  1078. integer nok
  1079. integer start(MAX_RANK)
  1080. integer edge(MAX_RANK)
  1081. integer index(MAX_RANK)
  1082. integer mid(MAX_RANK)
  1083. logical canConvert
  1084. character value(MAX_NELS)
  1085. doubleprecision expect(MAX_NELS)
  1086. doubleprecision val
  1087. integer udshift
  1088. nok = 0
  1089. err = nf_open(testfile, NF_NOWRITE, ncid)
  1090. if (err .ne. 0)
  1091. + call errore('nf_open: ', err)
  1092. do 1, i = 1, NVARS
  1093. canConvert = (var_type(i) .eq. NF_CHAR) .eqv.
  1094. + (NFT_TEXT .eq. NFT_TEXT)
  1095. if (.not.(var_rank(i) .le. MAX_RANK)) stop 'assert'
  1096. if (.not.(var_nels(i) .le. MAX_NELS)) stop 'assert'
  1097. do 2, j = 1, var_rank(i)
  1098. start(j) = 1
  1099. edge(j) = 1
  1100. 2 continue
  1101. err = nf_get_vara_text(BAD_ID, i, start,
  1102. + edge, value)
  1103. if (err .ne. NF_EBADID)
  1104. + call errore('bad ncid: ', err)
  1105. err = nf_get_vara_text(ncid, BAD_VARID, start,
  1106. + edge, value)
  1107. if (err .ne. NF_ENOTVAR)
  1108. + call errore('bad var id: ', err)
  1109. do 3, j = 1, var_rank(i)
  1110. start(j) = var_shape(j,i) + 1
  1111. err = nf_get_vara_text(ncid, i, start,
  1112. + edge, value)
  1113. if (canConvert .and. err .ne. NF_EINVALCOORDS)
  1114. + call errore('bad index: ', err)
  1115. start(j) = 1
  1116. edge(j) = var_shape(j,i) + 1
  1117. err = nf_get_vara_text(ncid, i, start,
  1118. + edge, value)
  1119. if (canConvert .and. err .ne. NF_EEDGE)
  1120. + call errore('bad edge: ', err)
  1121. edge(j) = 1
  1122. 3 continue
  1123. C /* Check non-scalars for correct error returned even when */
  1124. C /* there is nothing to get (edge(j).eq.0) */
  1125. if (var_rank(i) .gt. 0) then
  1126. do 10, j = 1, var_rank(i)
  1127. edge(j) = 0
  1128. 10 continue
  1129. err = nf_get_vara_text(BAD_ID, i, start,
  1130. + edge, value)
  1131. if (err .ne. NF_EBADID)
  1132. + call errore('bad ncid: ', err)
  1133. err = nf_get_vara_text(ncid, BAD_VARID,
  1134. + start, edge, value)
  1135. if (err .ne. NF_ENOTVAR)
  1136. + call errore('bad var id: ', err)
  1137. do 11, j = 1, var_rank(i)
  1138. if (var_dimid(j,i) .gt. 1) then !/* skip record dim */
  1139. start(j) = var_shape(j,i) + 1
  1140. err = nf_get_vara_text(ncid, i,
  1141. + start, edge, value)
  1142. if (canConvert .and. err .ne. NF_EINVALCOORDS)
  1143. + call errore('bad start: ', err)
  1144. start(j) = 1
  1145. endif
  1146. 11 continue
  1147. err = nf_get_vara_text(ncid, i, start,
  1148. + edge, value)
  1149. if (canConvert) then
  1150. if (err .ne. 0)
  1151. + call error(nf_strerror(err))
  1152. else
  1153. if (err .ne. NF_ECHAR)
  1154. + call errore('wrong type: ', err)
  1155. endif
  1156. do 12, j = 1, var_rank(i)
  1157. edge(j) = 1
  1158. 12 continue
  1159. endif
  1160. C Choose a random point dividing each dim into 2 parts
  1161. C get 2^rank (nslabs) slabs so defined
  1162. nslabs = 1
  1163. do 4, j = 1, var_rank(i)
  1164. mid(j) = roll( var_shape(j,i) )
  1165. nslabs = nslabs * 2
  1166. 4 continue
  1167. C bits of k determine whether to get lower or upper part of dim
  1168. do 5, k = 1, nslabs
  1169. nels = 1
  1170. do 6, j = 1, var_rank(i)
  1171. if (mod(udshift((k-1), -(j-1)), 2) .eq. 1) then
  1172. start(j) = 1
  1173. edge(j) = mid(j)
  1174. else
  1175. start(j) = 1 + mid(j)
  1176. edge(j) = var_shape(j,i) - mid(j)
  1177. end if
  1178. nels = nels * edge(j)
  1179. 6 continue
  1180. allInIntRange = .true.
  1181. allInExtRange = .true.
  1182. do 7, j = 1, nels
  1183. err = index2indexes(j, var_rank(i), edge, index)
  1184. if (err .ne. 0)
  1185. + call error('error in index2indexes 1')
  1186. do 8, d = 1, var_rank(i)
  1187. index(d) = index(d) + start(d) - 1
  1188. 8 continue
  1189. expect(j) = hash4(var_type(i), var_rank(i), index,
  1190. + NFT_TEXT)
  1191. if (inRange3(expect(j),var_type(i),
  1192. + NFT_TEXT)) then
  1193. allInIntRange =
  1194. + allInIntRange .and.
  1195. + in_internal_range(NFT_TEXT, expect(j))
  1196. else
  1197. allInExtRange = .false.
  1198. end if
  1199. 7 continue
  1200. err = nf_get_vara_text(ncid, i, start,
  1201. + edge, value)
  1202. if (canConvert) then
  1203. if (allInExtRange) then
  1204. if (allInIntRange) then
  1205. if (err .ne. 0)
  1206. + call errore('nf_get_vara_text:', err)
  1207. else
  1208. if (err .ne. NF_ERANGE)
  1209. + call errore('Range error: ', err)
  1210. end if
  1211. else
  1212. if (err .ne. 0 .and. err .ne. NF_ERANGE)
  1213. + call errore('OK or Range error: ', err)
  1214. end if
  1215. do 9, j = 1, nels
  1216. if (inRange3(expect(j),var_type(i),
  1217. + NFT_TEXT) .and.
  1218. + in_internal_range(NFT_TEXT, expect(j)))
  1219. + then
  1220. val = ichar(value(j))
  1221. if (.not.equal(val,expect(j),
  1222. + var_type(i),NFT_TEXT))
  1223. + then
  1224. call error(
  1225. + 'value read not that expected')
  1226. if (verbose) then
  1227. call error(' ')
  1228. call errori('varid: ', i)
  1229. call errorc('var_name: ',
  1230. + var_name(i))
  1231. call errori('element number: %d ',
  1232. + j)
  1233. call errord('expect: ', expect(j))
  1234. call errord('got: ', val)
  1235. end if
  1236. else
  1237. nok = nok + 1
  1238. end if
  1239. end if
  1240. 9 continue
  1241. else
  1242. if (nels .gt. 0 .and. err .ne. NF_ECHAR)
  1243. + call errore('wrong type: ', err)
  1244. end if
  1245. 5 continue
  1246. 1 continue
  1247. err = nf_close(ncid)
  1248. if (err .ne. 0)
  1249. + call errorc('nf_close: ', nf_strerror(err))
  1250. call print_nok(nok)
  1251. end
  1252. #ifdef NF_INT1_T
  1253. subroutine test_nf_get_vara_int1()
  1254. implicit none
  1255. #include "tests.inc"
  1256. integer ncid

Large files files are truncated, but you can click here to view the full file