subroutine save_string_parameter(h5file_id,dset,string_array)
INTEGER(HID_T), INTENT(IN) :: h5file_id
CHARACTER(MAX_STRING_LENGTH), INTENT(IN) :: dset
CHARACTER(MAX_STRING_LENGTH), DIMENSION(:), INTENT(IN) :: string_array
INTEGER(HID_T) :: dset_id
INTEGER(HID_T) :: dspace_id
INTEGER(HSIZE_T), DIMENSION(1) :: dims
INTEGER(HSIZE_T), DIMENSION(2) :: data_dims
INTEGER(SIZE_T), DIMENSION(:), ALLOCATABLE :: str_len
INTEGER(HID_T) :: string_type
INTEGER :: h5error
ALLOCATE(str_len(SIZE(string_array)))
dims = (/SIZE(string_array)/)
data_dims = (/MAX_STRING_LENGTH,SIZE(string_array)/)
str_len = (/LEN_TRIM(string_array)/)
call h5tcopy_f(H5T_STRING,string_type,h5error)
call h5tset_strpad_f(string_type,H5T_STR_SPACEPAD_F,h5error)
call h5screate_simple_f(1,dims,dspace_id,h5error)
call h5dcreate_f(h5file_id,TRIM(dset),string_type,dspace_id,dset_id,h5error)
call h5dwrite_vl_f(dset_id,string_type,string_array,data_dims,str_len,h5error,dspace_id)
call h5sclose_f(dspace_id, h5error)
call h5dclose_f(dset_id, h5error)
DEALLOCATE(str_len)
end subroutine save_string_parameter