Как передать контекст массива в другой массив? - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь понять, как фортран передает частичный контекст массива другому.

«myarray» имеет 8 измерений (или 8 из 3 значений), а «myarray1» имеет одно (или одно из 3 значений).Один выбранный контекст myarray будет иметь значение 3 и должен иметь возможность передавать этот контекст myarra1.Однако фортран не может преобразовать это и передать его.

function function1(start) result(out1)

implicit none

type array
 character  list1
 integer    list2
 integer    list3
end type array

type(array), dimension(8) :: myarray
               integer :: start;
               integer :: out1;


myarray=[array('A',1,3), array('C',2,3), array('B',3,3), & 
         array('E',4,3), array('F',4,3), array('G',5,3), & 
         array('H',6,3), array('I',5,3)]

out1=function2(start);

contains

function function2(list2) result(list1)

implicit none

type array1
 character  lista
 integer    list21
 integer    list31
end type array1

type(array1), dimension(1) :: myarray1

               integer :: start1;
               integer :: out11;

 integer, intent(in) :: list2;             ! input
 integer :: list1;                         ! output  
 logical :: done;  
 integer, dimension(1,1) :: ra;
 real    :: rnd1;
 integer :: test;

myarray1=[array1('a',0,0)]

     done = .FALSE.
     call random_number(rnd1);
     ra = nint(rnd1*size(myarray));  

       print*, "marray is ", myarray;
       print*, "myarray(ra) is ", myarray(1);
       print*, "myarray1 is  ", myarray1;

       myarray1 = myarray(1);     !<------ source of error.

        print*, "the new myarray1 is  ", myarray1;

 start1=1;
 out11=start1;
 test=1;
 list1=test+list2;

 end function function2

end function function1

program test1

use iso_fortran_env
implicit none

integer                 :: start, xout;
integer                 :: function1;

start = 1;
xout=function1(2);
print*, "my output is ", xout;

end program test1 

Значение myarray1 должно иметь любое значение (1 из 3) контекста из myarray.Как правильно написать эту строку "myarray1 = myarray (1)".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...