interface maxNonNullValue subroutine maxNonNullValueSingle(tab, colName, maxValue, allRowsNull) type(TableT), intent(in) :: tab character(*), intent(in) :: colName real(single), intent(out) :: maxValue logical(bool), intent(out) :: allRowsNull end subroutine maxNonNullValueSingle subroutine maxNonNullValueDouble(tab, colName, maxValue, allRowsNull) type(TableT), intent(in) :: tab character(*), intent(in) :: colName real(double), intent(out) :: maxValue logical(bool), intent(out) :: allRowsNull end subroutine maxNonNullValueDouble end interface