program main use iso_c_binding, only: c_int, c_char, c_null_char, c_ptr use gzip, only: gzopen, gzwrite, gzclose implicit none character(kind=c_char,len=*), parameter :: path = & c_char_"test.gz"//c_null_char character(kind=c_char,len=*), parameter :: mode = & c_char_"wb9"//c_null_char integer(c_int), parameter :: buffer_size = 512 type(c_ptr) :: file character(len=buffer_size) :: buffer integer(c_int) :: ret integer :: i ! open file file = gzopen(path, mode) ! fill buffer with data do i=1,buffer_size/4 write(buffer(4*(i-1)+1:4*i), '(i3.3, a)') i, new_line('') end do ret = gzwrite(file, buffer, buffer_size) if (ret.ne.buffer_size) then write(*,'(a, i3, a, i3, a)') 'Error: ', ret, ' / ', buffer_size, & ' bytes written.' stop 1 end if ! close file ret = gzclose(file) if (ret.ne.0) then print *, 'Error: failure to close file with error code ', ret stop 1 end if end program main