Функции FORTRAN получают только указатели, независимо от того, является ли он массивом или единственным значением.
Я не знаю, как вы можете сделать это в VB.net, но попробуйте найти способ отправить указатель на первый элемент.
В C это будет:
double *a = ...;
fortran_func(a); // or...
fortran_func(&a[0]);
Кроме того, убедитесь, что вы отправили правильный тип с плавающей запятой (действительное * 8 против действительного * 4, для двойной или одинарной точности).
Попав в Фортран, вы не сможете узнать размер массива, вам нужно будет его принять.
SUBROUTINE fortran_func(a)
real*8 a(16)
...
END
если размер не статичен, возможно, сделайте что-то подобное
SUBROUTINE fortran_func(a,sz)
real*8 a(sz)
integer sz
...
END
Затем отправьте целое число также в качестве указателя. В C это будет:
int sz=16;
fortran_func(a,&sz);