module gemini_protocol implicit none integer, parameter::STATUS_INPUT = 1 integer, parameter::STATUS_SUCCESS = 2 integer, parameter::STATUS_REDIRECT = 3 integer, parameter::STATUS_TEMPFAIL = 4 integer, parameter::STATUS_PERMFAIL = 5 integer, parameter::STATUS_CERTREQ = 6 integer, parameter::STATUS_LOCALFAIL = -1 contains function request_url(url, unit_number, server_name) result(returncode) use request implicit none character(*), intent(in)::url integer, intent(in)::unit_number character(*), intent(in), optional::server_name integer::returncode character(:), allocatable::server returncode = -1 if(present(server_name)) then allocate(character(len=len_trim(server_name)) :: server) server = server_name else server = get_server_from_url(url) end if end function request_url end module gemini_protocol