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