program set_attribs
implicit none
C
C Parameter declaration.
C
character*7 FILE_NAME
character*13 FILE_ATTR_NAME
character*11 SDS_ATTR_NAME
character*10 DIM_ATTR_NAME
parameter (FILE_NAME = 'SDS.hdf',
+ FILE_ATTR_NAME = 'File_contents',
+ SDS_ATTR_NAME = 'Valid_range',
+ DIM_ATTR_NAME = 'Dim_metric')
integer DFACC_WRITE, DFNT_CHAR8, DFNT_FLOAT32
parameter (DFACC_WRITE = 2,
+ DFNT_CHAR8 = 4,
+ DFNT_FLOAT32 = 5)
C
C Function declaration.
C
integer sfstart, sfscatt, sfsnatt, sfselect, sfdimid
integer sfendacc, sfend
C
C**** Variable declaration *******************************************
C
integer sd_id, sds_id, sds_index, status
integer dim_id, dim_index
integer n_values
character*16 file_values
real sds_values(2)
character*7 dim_values
file_values = 'Storm_track_data'
sds_values(1) = 2.
sds_values(2) = 10.
dim_values = 'Seconds'
C
C**** End of variable declaration ************************************
C
C
C Open the file and initialize the SD interface.
C
sd_id = sfstart(FILE_NAME, DFACC_WRITE)
C
C Set an attribute that describes the file contents.
C
n_values = 16
status = sfscatt(sd_id, FILE_ATTR_NAME, DFNT_CHAR8, n_values,
+ file_values)
C
C Select the first data set.
C
sds_index = 0
sds_id = sfselect(sd_id, sds_index)
C
C Assign attribute to the first SDS. Note that attribute values
C may have different data type than SDS data.
C
n_values = 2
status = sfsnatt(sds_id, SDS_ATTR_NAME, DFNT_FLOAT32, n_values,
+ sds_values)
C
C Get the identifier for the first dimension.
C
dim_index = 0
dim_id = sfdimid(sds_id, dim_index)
C
C Set an attribute to the dimension that specifies the
C dimension metric.
C
n_values = 7
status = sfscatt(dim_id, DIM_ATTR_NAME, DFNT_CHAR8, n_values,
+ dim_values)
C
C Terminate access to the data set.
C
status = sfendacc(sds_id)
C
C Terminate access to the SD interface and close the file.
C
status = sfend(sd_id)
end