Как получить ранее неизвестный массив как вывод функции в Фортране

Впитон:

def select(x):
    y = []
    for e in x:
        if e!=0:
            y.append(e)
    return y

это работает как:

x = [1,0,2,0,0,3]
select(x)
[1,2,3]

быть переведенным наФортран:

function select(x,n) result(y)
    implicit none
    integer:: x(n),n,i,j,y(?)
    j = 0
    do i=1,n
        if (x(i)/=0) then
            j = j+1
            y(j) = x(i)
        endif
    enddo
end function

Вопросы на Фортране:

как объявить у (?)?как объявить предопределенные значения для хкак избежать размерной информации n

за 1, если он определен каку (п) вывод будет:

x = (/1,0,2,0,0,3/)
print *,select(x,6)
1,2,3,0,0,0

что не желательно!
! -------------------------------
Комментарии:
1- Все приведенные ответы полезны в этом посте. Специально М.С.Б и эриксун.
2- Я пытался адаптировать идеи для моей проблемы и компилировать сF2Py Однако это не было успешным. Я уже отлаживал их с помощью GFortran, и все они были успешными. Это может быть ошибка вF2Py или что-то, чего я не знаю об использовании этого должным образом. Я постараюсь осветить этот вопрос в другом посте.

Обновить: Связанный вопрос можно найти наВот.

Ответы на вопрос(3)

Ваш ответ на вопрос