Vamos a un código muy sencillo:
program readcsv
implicit none
call readAndPrint()
end program readcsv
subroutine readAndPrint()
integer, parameter:: values_qty = 20
real, pointer:: pValues(:)
allocate(pValues(values_qty))
open(unit=99, file="act1.csv", action="read")
read(99, *) pValues
close(99)
write(*,*) "Values from file:", pValues
write(*,*) "Values Quantity:", values_qty
end subroutine
La cantidad de valores a leer está fija por el momento. Una posible solución sería hacer una prelectura de la primer fila y contar la cantidad de caracteres ',' para luego hacer una alocación con la cantidad exacta de valores. Otra posibilidad es leer toda la fila y agregarlos al array realocando en cada iteración.