The HDF Group

HDF User’s Guide

Version 4.2r4


[Top] [Prev][Next]


dfsd_ex1.c
#include "hdf.h" 
#define LENGTH 3 
#define HEIGHT 2 
#define WIDTH 5 
main( ) 
{ 
	/* Create data array - store dimensions in array 'dims' */ 
	static float64 scien_data[LENGTH][HEIGHT][WIDTH] =  
  		{ 1., 2., 3., 4., 5., 
		6., 7., 8., 9.,10., 
		11.,12.,13.,14.,15., 
		16.,17.,18.,19.,20., 
		21.,22.,23.,24.,25., 
		26.,27.,28.,29.,30. }; 
	intn status; 
	int32 dims[3] = {LENGTH, HEIGHT, WIDTH}; 
	/* Set number type to 64-bit float */ 
	status = DFSDsetNT(DFNT_FLOAT64); 
	/* Write the data to file */ 
	status = DFSDadddata("Example1.hdf", 3, dims, scien_data); 
} 
dfsd_ex1.f
      PROGRAM WRITE SDS       
      integer  dsadata, dssnt, dims(3), status 
      real*8   sci_data(5,2,3) 
C     Create array called 'sci_data'; store dimensions in array 'dims'. 
      data     sci_data/ 1., 2., 3., 4., 5., 
     $                   6., 7., 8., 9.,10., 
     $                   11.,12.,13.,14.,15., 
     $                   16.,17.,18.,19.,20., 
     $                   21.,22.,23.,24.,25., 
     $                   26.,27.,28.,29.,30./ 
      data dims /3,2,5/ 
C     Set number type to 64-bit float 
      status = dssnt(6) 
C     Write the data to file 
      status = dsadata('Example1.hdf', 3, dims, sci_data) 
      end 
dfsd_ex2.c
#include "hdf.h" 
#define LENGTH 3 
#define HEIGHT 2 
#define WIDTH 5 
main( ) 
{ 
	float64 scien_data[LENGTH][HEIGHT][WIDTH]; 
	int32 number_type; 
	intn rank, status; 
	int32 dims[3]; 
	/* Get the dimensions and number type of the array */ 
	status = DFSDgetdims("Example1.hdf", &rank, dims, 3); 
	status = DFSDgetNT(&number_type); 
	/* Read the array if the dimensions are correct */ 
	if (dims[0] <= LENGTH && dims[1] <= HEIGHT && dims[2] <= WIDTH) 
    		status = DFSDgetdata("Example1.hdf", rank, dims, scien_data); 
} 
dfsd_ex2.f
      PROGRAM READ SDS       
      integer  dsgdata, dsgdims, dsgnt, dims(3), status 
      integer rank, num_type 
      real*8   sci_data(5, 2, 3) 
C     Get the dimensions and number type of the array. 
      status = dsgdims('Example1.hdf', rank, dims, 3) 
      status = dsgnt(num_type) 
C     Read the array if the dimensions are correct. 
      if ((dims(1) .eq. 3) .and. (dims(2) .eq. 2) .and.  
     +    (dims(3) .eq. 5)) then  
            status = dsgdata('Example1.hdf', rank, dims, sci_data) 
      endif 
      end 
dfsd_ex3.c
#include "hdf.h" 
		 
/*   
 *  Write an array of floating point values representing 
 *  pressure in a 3x2x5 array. 
 */ 
main( )  
{ 
	float32 data[3][2][5]; 
	int32 dimsizes[3]; 
	float32 max, min; 
	intn status, rank; 
	int i, j, k;  
	/* Set the rank and dimension sizes. */ 
	rank = 3; 
	dimsizes[0] = 3; 
	dimsizes[1] = 2; 
	dimsizes[2] = 5; 
	/* Set the dimensions, to define the beginning of a data set. */ 
	status = DFSDsetdims(rank, dimsizes); 
	/* Set the maximum string length to 50. */ 
	status = DFSDsetlengths(50, 50, 50, 50); 
	/* Define the attribute strings and values. */ 
	status = DFSDsetdatastrs("Pressure Data", "Millibars",  
						"F5.5", "None"); 
	max = 1500.0; 
	min = 0.0; 
	status = DFSDsetrange(&max, &min); 
	/* Set the rank to 3. */ 
	rank = 3; 
	/* Calculate the data values. */ 
	for (i = 0; i < 3; i++) 
		for (j = 0; j < 2; j++) 
			for (k = 0; k < 5; k++) 
				data[i][j][k] = i*100.0 + j*10.0 + k; 
    
	/* Write the data set and its attributes to file. */ 
	status = DFSDadddata("Example3.hdf", rank, dimsizes, data); 
} 
dfsd_ex3.f
      PROGRAM SET ATTRIBS 
      real*8 data(5, 2, 3), max, min, i, j, k 
      integer*4 dimsizes(3) 
      integer status, rank 
      integer dsslens, dssdast, dssrang, dsadata 
      integer dssdims 
      character*13 label /"Pressure Data"/ 
      character*9 unit /"Millibars"/ 
      character*4 format /"F5.5"/ 
      character*4 coordsys /"None"/ 
C     Set the dimensions, to define the beginning of a data set. 
      rank = 3 
      dimsizes(1) = 5 
      dimsizes(2) = 2 
      dimsizes(3) = 3 
      status = dssdims(rank, dimsizes) 
C     Set the maximum string lengths to 50. 
      status = dsslens(50, 50, 50, 50) 
C     Define the attribute strings and values. 
      status = dssdast(label, unit, format, coordsys) 
      max = 1500.0 
      min = 0.0 
      status = dssrang(max, min) 
C     Fill the data array with values. 
      do 30 k = 1, 3 
       do 20 j = 1, 2 
        do 10 i = 1, 5 
          data(i, j, k) = i*100.0 + j*10.0 + k 
10      continue 
20     continue 
30    continue 
C     Write the data set and its attributes to file. 
      status = dsadata("Example3.hdf", rank, dimsizes, data) 
      end 
dfsd_ex4.c
#include "hdf.h" 
main( ) 
{ 
	intn rank, maxrank, status; 
	int32 dimsizes[3]; 
	char datalabel[50], dataunit[50], datafmt[50], coordsys[50]; 
	float64 data[3][2][5]; 
	maxrank = 3; 
	status = DFSDgetdims("Example3.hdf", &rank, dimsizes,  
					maxrank); 
	status = DFSDgetdatastrs(datalabel, dataunit, datafmt,  
					coordsys); 
	status = DFSDgetdata("Example3.hdf", rank, dimsizes, data); 
} 
dfsd_ex4.f
      PROGRAM READ SD INFO 
      integer dsgdata, dsgdast, dsgdims 
      integer*4 dimsizes(3) 
      integer status, rank, maxrank 
      character*50 datalabel, dataunit, datafmt 
      character*10 coordsys 
      real*8 data(5, 2, 3) 
       
      maxrank = 3 
      status = dsgdims('Example3.hdf', rank, dimsizes, maxrank) 
      status = dsgdast(datalabel, dataunit, datafmt, coordsys) 
      status = dsgdata('Example3.hdf', rank, dimsizes, data) 
       
      end 

HDF4.2r4 - February 2009
Copyright
The HDF Group
www.hdfgroup.org
The HDF Group