1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * Copyright by The HDF Group. *
3 * Copyright by the Board of Trustees of the University of Illinois. *
4 * All rights reserved. *
5 * *
6 * This file is part of HDF. The full HDF copyright notice, including *
7 * terms governing use, modification, and redistribution, is contained in *
8 * the COPYING file, which can be found at the root of the source code *
9 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF/releases/. *
10 * If you do not have access to either file, you may request a copy from *
11 * help@hdfgroup.org. *
12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13
14 #include <stdio.h>
15 #include "hdf.h"
16
17 /*
18 * Name:
19 * hdfimporttest
20 *
21 * Description:
22 * This program creates binary and text input files that can be
23 * used to test the hdfimport program.
24 *
25 * June 1, 1990
26 * Bob Weaver, baw@inel.gov
27 *
28 * Last Revision: December 10, 2001
29 * Pankaj Kamat, pkamat@uiuc.edu
30 *
31 * row values start at 11 and increment by 1 => 11, 12, 13
32 * column values start at 21 and increment by 2 => 21, 23, 25, 27
33 * plane values start at 51 and increment by 5 => 51, 56, 61, 66, 71
34 *
35 * data element value = row value + column value [+ plane value, if rank=3]
36 */
37 int
main(int argc,char * argv[])38 main(int argc, char * argv[] )
39 {
40 int nrow = 3, ncol = 4, npln = 5, ione = 1;
41 int i, j, k;
42 FILE *sp;
43
44 float32 b32r2[3][4], b32r3[5][3][4];
45 float32 row4[3], col4[4], pln4[5];
46 float32 rowo4 = (float32)11.0e0, colo4 = (float32)21.0e0, plno4 = (float32)51.0e0;
47 float32 rowi4 = (float32)1.0e0, coli4 = (float32)2.0e0, plni4 = (float32)5.0e0;
48 float32 ezero = (float32)0.0e0;
49
50 int32 b32i2[3][4], b32i3[5][3][4];
51 int32 row4i[3], col4i[4], pln4i[5];
52 int32 rowo4i = (int32)11 , colo4i = (int32)21 , plno4i = (int32)51 ;
53 int32 rowi4i = (int32)1 , coli4i = (int32)2 , plni4i = (int32)5 ;
54 int32 ezeroi = (int32)0;
55
56 int16 b16i2[3][4], b16i3[5][3][4];
57 int16 row4i16[3], col4i16[4], pln4i16[5];
58 int16 rowo4i16 = (int16)11 , colo4i16 = (int16)21 , plno4i16 = (int16)51 ;
59 int16 rowi4i16 = (int16)1 , coli4i16 = (int16)2 , plni4i16 = (int16)5 ;
60 int16 ezeroi16 = (int16)0;
61
62 int8 b8i2[3][4], b8i3[5][3][4];
63 int8 row4i8[3], col4i8[4], pln4i8[5];
64 int8 rowo4i8 = (int8)11 , colo4i8 = (int8)21 , plno4i8 = (int8)51 ;
65 int8 rowi4i8 = (int8)1 , coli4i8 = (int8)2 , plni4i8 = (int8)5 ;
66 int8 ezeroi8 = (int8)0;
67
68 float64 b64r2[3][4], b64r3[5][3][4];
69 float64 row8[3], col8[4], pln8[5];
70 float64 rowo8 = 11.0e0, colo8 = 21.0e0, plno8 = 51.0e0;
71 float64 rowi8 = 1.0e0, coli8 = 2.0e0, plni8 = 5.0e0;
72 float64 dzero = 0.0e0;
73
74 const char *text = "TEXT";
75 const char *fp32 = "FP32";
76 const char *fp64 = "FP64";
77 const char *in32 = "IN32";
78 const char *in16 = "IN16";
79 const char *in8 = "IN08";
80
81 /* shut compiler up */
82 argv=argv; argc=argc;
83
84 /*
85 * initialize the row, column, and plane vectors
86 *
87 * row values start at 11 and increment by 1 => 11, 12, 13
88 * column values start at 21 and increment by 2 => 21, 23, 25, 27
89 * plane values start at 51 and increment by 5 => 51, 56, 61, 66, 71
90 */
91
92 row4[0] = rowo4;
93 col4[0] = colo4;
94 pln4[0] = plno4;
95
96 row8[0] = rowo8;
97 col8[0] = colo8;
98 pln8[0] = plno8;
99
100 row4i[0] = rowo4i;
101 col4i[0] = colo4i;
102 pln4i[0] = plno4i;
103
104 row4i16[0] = rowo4i16;
105 col4i16[0] = colo4i16;
106 pln4i16[0] = plno4i16;
107
108 row4i8[0] = rowo4i8;
109 col4i8[0] = colo4i8;
110 pln4i8[0] = plno4i8;
111
112
113
114
115 for (i = 1; i < nrow; i++)
116 {
117 row4[i] = row4[i - 1] + rowi4;
118 row8[i] = row8[i - 1] + rowi8;
119 row4i[i] = row4i[i - 1] + rowi4i;
120 row4i16[i] = row4i16[i - 1] + rowi4i16;
121 row4i8[i] = row4i8[i - 1] + rowi4i8;
122 }
123
124 for (j = 1; j < ncol; j++)
125 {
126 col4[j] = col4[j - 1] + coli4;
127 col8[j] = col8[j - 1] + coli8;
128 col4i[j] = col4i[j - 1] + coli4i;
129 col4i16[j] = col4i16[j - 1] + coli4i16;
130 col4i8[j] = col4i8[j - 1] + coli4i8;
131 }
132 for (k = 1; k < npln; k++)
133 {
134 pln4[k] = pln4[k - 1] + plni4;
135 pln8[k] = pln8[k - 1] + plni8;
136 pln4i[k] = pln4i[k - 1] + plni4i;
137 pln4i16[k] = pln4i16[k - 1] + plni4i16;
138 pln4i8[k] = pln4i8[k - 1] + plni4i8;
139
140 }
141
142 /*
143 * build array elements - rank 2
144 *
145 * element value = sum of row value and col values
146 */
147
148 for (i = 0; i < nrow; i++)
149 {
150 for (j = 0; j < ncol; j++)
151 {
152 b32r2[i][j] = row4[i] + col4[j];
153 b64r2[i][j] = row8[i] + col8[j];
154 b32i2[i][j] = row4i[i] + col4i[j];
155 b16i2[i][j] = row4i16[i] + col4i16[j];
156 b8i2[i][j] = row4i8[i] + col4i8[j];
157 }
158 }
159
160 /*
161 * build array elements - rank 3
162 *
163 * element value = sum of row value, col, and plane values
164 */
165
166 for (i = 0; i < nrow; i++)
167 {
168 for (j = 0; j < ncol; j++)
169 {
170 for (k = 0; k < npln; k++)
171 {
172 b32r3[k][i][j] = row4[i] + col4[j] + pln4[k];
173 b64r3[k][i][j] = row8[i] + col8[j] + pln8[k];
174 b32i3[k][i][j] = row4i[i] + col4i[j] + pln4i[k];
175 b16i3[k][i][j] = row4i16[i] + col4i16[j] + pln4i16[k];
176 b8i3[k][i][j] = row4i8[i] + col4i8[j] + pln4i8[k];
177 }
178 }
179 }
180
181 /*
182 * text file - rank 2 & 3
183 */
184
185 sp = fopen("ctxtr2", "w");
186 (void) fprintf(sp, "%s\n", text);
187 (void) fprintf(sp, "%10d%10d%10d\n", ione, nrow, ncol);
188 (void) fprintf(sp, "%14.6E%14.6E\n", ezero, ezero);
189 for (i = 0; i < nrow; i++)
190 (void) fprintf(sp, "%14.6E", row4[i]);
191 (void) fprintf(sp, "\n");
192 for (j = 0; j < ncol; j++)
193 (void) fprintf(sp, "%14.6E", col4[j]);
194 (void) fprintf(sp, "\n");
195 for (i = 0; i < nrow; i++)
196 {
197 for (j = 0; j < ncol; j++)
198 (void) fprintf(sp, "%14.6E", b32r2[i][j]);
199 (void) fprintf(sp, "\n");
200 }
201 (void) fclose(sp);
202
203 sp = fopen("ctxti2", "w");
204 (void) fprintf(sp, "%s\n", text);
205 (void) fprintf(sp, "%10d%10d%10d\n", ione, nrow, ncol);
206 (void) fprintf(sp, "%10d%10d\n", ezeroi, ezeroi);
207 for (i = 0; i < nrow; i++)
208 (void) fprintf(sp, "%10d", row4i[i]);
209 (void) fprintf(sp, "\n");
210 for (j = 0; j < ncol; j++)
211 (void) fprintf(sp, "%10d", col4i[j]);
212 (void) fprintf(sp, "\n");
213 for (i = 0; i < nrow; i++)
214 {
215 for (j = 0; j < ncol; j++)
216 (void) fprintf(sp, "%10d", b32i2[i][j]);
217 (void) fprintf(sp, "\n");
218 }
219 (void) fclose(sp);
220
221 sp = fopen("ctxti162", "w");
222 (void) fprintf(sp, "%s\n", text);
223 (void) fprintf(sp, "%10d%10d%10d\n", ione, nrow, ncol);
224 (void) fprintf(sp, "%10u%10u\n", ezeroi16, ezeroi16);
225 for (i = 0; i < nrow; i++)
226 (void) fprintf(sp, "%10u", row4i16[i]);
227 (void) fprintf(sp, "\n");
228 for (j = 0; j < ncol; j++)
229 (void) fprintf(sp, "%10u", col4i16[j]);
230 (void) fprintf(sp, "\n");
231 for (i = 0; i < nrow; i++)
232 {
233 for (j = 0; j < ncol; j++)
234 (void) fprintf(sp, "%10u", b16i2[i][j]);
235 (void) fprintf(sp, "\n");
236 }
237 (void) fclose(sp);
238
239 sp = fopen("ctxti82", "w");
240 (void) fprintf(sp, "%s\n", text);
241 (void) fprintf(sp, "%10d%10d%10d\n", ione, nrow, ncol);
242 (void) fprintf(sp, "%10c%10c\n", ezeroi8, ezeroi8);
243 for (i = 0; i < nrow; i++)
244 (void) fprintf(sp, "%10c", row4i8[i]);
245 (void) fprintf(sp, "\n");
246 for (j = 0; j < ncol; j++)
247 (void) fprintf(sp, "%10c", col4i8[j]);
248 (void) fprintf(sp, "\n");
249 for (i = 0; i < nrow; i++)
250 {
251 for (j = 0; j < ncol; j++)
252 (void) fprintf(sp, "%10c", b8i2[i][j]);
253 (void) fprintf(sp, "\n");
254 }
255 (void) fclose(sp);
256
257 sp = fopen("ctxtr3", "w");
258 (void) fprintf(sp, "%s\n", text);
259 (void) fprintf(sp, "%10d%10d%10d\n", npln, nrow, ncol);
260 (void) fprintf(sp, "%14.6E%14.6E\n", ezero, ezero);
261 for (k = 0; k < npln; k++)
262 (void) fprintf(sp, "%14.6E", pln4[k]);
263 (void) fprintf(sp, "\n");
264 for (i = 0; i < nrow; i++)
265 (void) fprintf(sp, "%14.6E", row4[i]);
266 (void) fprintf(sp, "\n");
267 for (j = 0; j < ncol; j++)
268 (void) fprintf(sp, "%14.6E", col4[j]);
269 (void) fprintf(sp, "\n");
270 for (k = 0; k < npln; k++)
271 for (i = 0; i < nrow; i++)
272 {
273 for (j = 0; j < ncol; j++)
274 (void) fprintf(sp, "%14.6E", b32r3[k][i][j]);
275 (void) fprintf(sp, "\n");
276 }
277 (void) fclose(sp);
278
279 /*
280 * binary 32-bit file - rank 2 & 3
281 */
282
283 sp = fopen("cb32r2", "w");
284 (void) fwrite(fp32, strlen(fp32), 1, sp);
285 (void) fwrite((char *) &ione, sizeof(int), 1, sp);
286 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
287 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
288 (void) fwrite((char *) &ezero, sizeof(float32), 1, sp);
289 (void) fwrite((char *) &ezero, sizeof(float32), 1, sp);
290 for (i = 0; i < nrow; i++)
291 (void) fwrite((char *) &row4[i], sizeof(float32), 1, sp);
292 for (j = 0; j < ncol; j++)
293 (void) fwrite((char *) &col4[j], sizeof(float32), 1, sp);
294 for (i = 0; i < nrow; i++)
295 for (j = 0; j < ncol; j++)
296 (void) fwrite((char *) &b32r2[i][j], sizeof(float32), 1,
297 sp);
298 (void) fclose(sp);
299
300 sp = fopen("cb32i2", "w");
301 (void) fwrite(in32, strlen(in32), 1, sp);
302 (void) fwrite((char *) &ione, sizeof(int), 1, sp);
303 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
304 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
305 (void) fwrite((char *) &ezeroi, sizeof(int32), 1, sp);
306 (void) fwrite((char *) &ezeroi, sizeof(int32), 1, sp);
307 for (i = 0; i < nrow; i++)
308 (void) fwrite((char *) &row4i[i], sizeof(int32), 1, sp);
309 for (j = 0; j < ncol; j++)
310 (void) fwrite((char *) &col4i[j], sizeof(int32), 1, sp);
311 for (i = 0; i < nrow; i++)
312 for (j = 0; j < ncol; j++)
313 (void) fwrite((char *) &b32i2[i][j], sizeof(int32), 1,
314 sp);
315 (void) fclose(sp);
316
317 sp = fopen("cb16i2", "w");
318 (void) fwrite(in16, strlen(in16), 1, sp);
319 (void) fwrite((char *) &ione, sizeof(int), 1, sp);
320 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
321 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
322 (void) fwrite((char *) &ezeroi16, sizeof(int16), 1, sp);
323 (void) fwrite((char *) &ezeroi, sizeof(int16), 1, sp);
324 for (i = 0; i < nrow; i++)
325 (void) fwrite((char *) &row4i16[i], sizeof(int16), 1, sp);
326 for (j = 0; j < ncol; j++)
327 (void) fwrite((char *) &col4i16[j], sizeof(int16), 1, sp);
328 for (i = 0; i < nrow; i++)
329 for (j = 0; j < ncol; j++)
330 (void) fwrite((char *) &b16i2[i][j], sizeof(int16), 1,
331 sp);
332 (void) fclose(sp);
333
334 sp = fopen("cb8i2", "w");
335 (void) fwrite(in8, strlen(in8), 1, sp);
336 (void) fwrite((char *) &ione, sizeof(int), 1, sp);
337 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
338 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
339 (void) fwrite((char *) &ezeroi8, sizeof(int8), 1, sp);
340 (void) fwrite((char *) &ezeroi8, sizeof(int8), 1, sp);
341 for (i = 0; i < nrow; i++)
342 (void) fwrite((char *) &row4i8[i], sizeof(int8), 1, sp);
343 for (j = 0; j < ncol; j++)
344 (void) fwrite((char *) &col4i8[j], sizeof(int8), 1, sp);
345 for (i = 0; i < nrow; i++)
346 for (j = 0; j < ncol; j++)
347 (void) fwrite((char *) &b8i2[i][j], sizeof(int8), 1,
348 sp);
349 (void) fclose(sp);
350
351 sp = fopen("cb32r3", "w");
352 (void) fwrite(fp32, strlen(fp32), 1, sp);
353 (void) fwrite((char *) &npln, sizeof(int), 1, sp);
354 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
355 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
356 (void) fwrite((char *) &ezero, sizeof(float32), 1, sp);
357 (void) fwrite((char *) &ezero, sizeof(float32), 1, sp);
358 for (k = 0; k < npln; k++)
359 (void) fwrite((char *) &pln4[k], sizeof(float32), 1, sp);
360 for (i = 0; i < nrow; i++)
361 (void) fwrite((char *) &row4[i], sizeof(float32), 1, sp);
362 for (j = 0; j < ncol; j++)
363 (void) fwrite((char *) &col4[j], sizeof(float32), 1, sp);
364 for (k = 0; k < npln; k++)
365 for (i = 0; i < nrow; i++)
366 for (j = 0; j < ncol; j++)
367 (void) fwrite((char *) &b32r3[k][i][j],
368 sizeof(float32), 1, sp);
369 (void) fclose(sp);
370
371 sp = fopen("cb32i3", "w");
372 (void) fwrite(in32, strlen(in32), 1, sp);
373 (void) fwrite((char *) &npln, sizeof(int), 1, sp);
374 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
375 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
376 (void) fwrite((char *) &ezeroi, sizeof(int32), 1, sp);
377 (void) fwrite((char *) &ezeroi, sizeof(int32), 1, sp);
378 for (k = 0; k < npln; k++)
379 (void) fwrite((char *) &pln4i[k], sizeof(int32), 1, sp);
380 for (i = 0; i < nrow; i++)
381 (void) fwrite((char *) &row4i[i], sizeof(int32), 1, sp);
382 for (j = 0; j < ncol; j++)
383 (void) fwrite((char *) &col4i[j], sizeof(int32), 1, sp);
384 for (k = 0; k < npln; k++)
385 for (i = 0; i < nrow; i++)
386 for (j = 0; j < ncol; j++)
387 (void) fwrite((char *) &b32i3[k][i][j], sizeof(int32), 1,
388 sp);
389 (void) fclose(sp);
390
391 sp = fopen("cb16i3", "w");
392 (void) fwrite(in16, strlen(in16), 1, sp);
393 (void) fwrite((char *) &npln, sizeof(int), 1, sp);
394 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
395 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
396 (void) fwrite((char *) &ezeroi16, sizeof(int16), 1, sp);
397 (void) fwrite((char *) &ezeroi16, sizeof(int16), 1, sp);
398 for (k = 0; k < npln; k++)
399 (void) fwrite((char *) &pln4i16[k], sizeof(int16), 1, sp);
400 for (i = 0; i < nrow; i++)
401 (void) fwrite((char *) &row4i16[i], sizeof(int16), 1, sp);
402 for (j = 0; j < ncol; j++)
403 (void) fwrite((char *) &col4i16[j], sizeof(int16), 1, sp);
404 for (k = 0; k < npln; k++)
405 for (i = 0; i < nrow; i++)
406 for (j = 0; j < ncol; j++)
407 (void) fwrite((char *) &b16i3[k][i][j], sizeof(int16), 1,
408 sp);
409 (void) fclose(sp);
410
411 sp = fopen("cb8i3", "w");
412 (void) fwrite(in8, strlen(in8), 1, sp);
413 (void) fwrite((char *) &npln, sizeof(int), 1, sp);
414 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
415 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
416 (void) fwrite((char *) &ezeroi8, sizeof(int8), 1, sp);
417 (void) fwrite((char *) &ezeroi8, sizeof(int8), 1, sp);
418 for (k = 0; k < npln; k++)
419 (void) fwrite((char *) &pln4i8[k], sizeof(int8), 1, sp);
420 for (i = 0; i < nrow; i++)
421 (void) fwrite((char *) &row4i8[i], sizeof(int8), 1, sp);
422 for (j = 0; j < ncol; j++)
423 (void) fwrite((char *) &col4i8[j], sizeof(int8), 1, sp);
424 for (k = 0; k < npln; k++)
425 for (i = 0; i < nrow; i++)
426 for (j = 0; j < ncol; j++)
427 (void) fwrite((char *) &b8i3[k][i][j], sizeof(int8), 1,
428 sp);
429 (void) fclose(sp);
430
431 /*
432 * binary 64-bit file - rank 2 & 3
433 */
434
435 sp = fopen("cb64r2", "w");
436 (void) fwrite(fp64, strlen(fp64), 1, sp);
437 (void) fwrite((char *) &ione, sizeof(int), 1, sp);
438 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
439 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
440 (void) fwrite((char *) &dzero, sizeof(float64), 1, sp);
441 (void) fwrite((char *) &dzero, sizeof(float64), 1, sp);
442 for (i = 0; i < nrow; i++)
443 (void) fwrite((char *) &row8[i], sizeof(float64), 1, sp);
444 for (j = 0; j < ncol; j++)
445 (void) fwrite((char *) &col8[j], sizeof(float64), 1, sp);
446 for (i = 0; i < nrow; i++)
447 for (j = 0; j < ncol; j++)
448 (void) fwrite((char *) &b64r2[i][j], sizeof(float64), 1,
449 sp);
450 (void) fclose(sp);
451
452 sp = fopen("cb64r3", "w");
453 (void) fwrite(fp64, strlen(fp64), 1, sp);
454 (void) fwrite((char *) &npln, sizeof(int), 1, sp);
455 (void) fwrite((char *) &nrow, sizeof(int), 1, sp);
456 (void) fwrite((char *) &ncol, sizeof(int), 1, sp);
457 (void) fwrite((char *) &dzero, sizeof(float64), 1, sp);
458 (void) fwrite((char *) &dzero, sizeof(float64), 1, sp);
459 for (k = 0; k < npln; k++)
460 (void) fwrite((char *) &pln8[k], sizeof(float64), 1, sp);
461 for (i = 0; i < nrow; i++)
462 (void) fwrite((char *) &row8[i], sizeof(float64), 1, sp);
463 for (j = 0; j < ncol; j++)
464 (void) fwrite((char *) &col8[j], sizeof(float64), 1, sp);
465 for (k = 0; k < npln; k++)
466 for (i = 0; i < nrow; i++)
467 for (j = 0; j < ncol; j++)
468 (void) fwrite((char *) &b64r3[k][i][j],
469 sizeof(float64), 1, sp);
470 (void) fclose(sp);
471 return (0);
472 }
473