program attr_info 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_READ, DFNT_FLOAT32 parameter (DFACC_READ = 1, + DFNT_FLOAT32 = 5) C C Function declaration. C integer sfstart, sffattr, sfgainfo, sfrattr, sfselect integer sfdimid, sfendacc, sfend C C**** Variable declaration ******************************************* C integer sd_id, sds_id, dim_id integer attr_index, data_type, n_values, status real sds_data(2) character*20 attr_name character*16 file_data character*7 dim_data integer i C C**** End of variable declaration ************************************ C C C Open the file and initialize SD interface. C sd_id = sfstart(FILE_NAME, DFACC_READ) C C Find the file attribute defined by FILE_ATTR_NAME. C Note that the first parameter is an SD interface identifier. C attr_index = sffattr(sd_id, FILE_ATTR_NAME) C C Get information about the file attribute. C status = sfgainfo(sd_id, attr_index, attr_name, data_type, + n_values) C C Read the file attribute data. C status = sfrattr(sd_id, attr_index, file_data) C C Print file attribute value. C write(*,*) "File attribute value is : ", file_data C C Select the first data set. C sds_id = sfselect(sd_id, 0) C C Find the data set attribute defined by SDS_ATTR_NAME. C Note that the first parameter is a data set identifier. C attr_index = sffattr(sds_id, SDS_ATTR_NAME) C C Get information about the data set attribute. C status = sfgainfo(sds_id, attr_index, attr_name, data_type, + n_values) C C Read the SDS attribute data. C status = sfrattr(sds_id, attr_index, sds_data) C C Print SDS attribute data type and values. C if (data_type .eq. DFNT_FLOAT32) then write(*,*) "SDS attribute data type is : float32 " endif write(*,*) "SDS attribute values are : " write(*,*) (sds_data(i), i=1, n_values) C C Get the identifier for the first dimension of the SDS. C dim_id = sfdimid(sds_id, 0) C C Find the dimensional attribute defined by DIM_ATTR_NAME. C Note that the first parameter is a dimension identifier. C attr_index = sffattr(dim_id, DIM_ATTR_NAME) C C Get information about dimension attribute. C status = sfgainfo(dim_id, attr_index, attr_name, data_type, + n_values) C C Read the dimension attribute data. C status = sfrattr(dim_id, attr_index, dim_data) C C Print dimension attribute value. C write(*,*) "Dimensional attribute value is : ", dim_data 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) C C Output of this program is : C C C File attribute value is : Storm_track_data C SDS attribute data type is : float32 C SDS attribute values are : C 2.00000 10.00000 C Dimensional attribute value is : Seconds C end