Software Archive
Read-only legacy content
17061 Discussions

Adapting legacy code

Joel_G_2
Beginner
461 Views

I have a program written in FORTRAN 90. It sets up a block of memory as an array with a parameterized dimension in the main routine. This area is set as an integer vector. It is partitioned by various indices when this memory block is passed to subroutines. In the called routine the memory areas passed as dummy arguments are given discrete names. Often these names are of different kind than the storage array in the main routine. When compiling this setup, I get the infamous error 6633 concerning type disagreement. How does one overcome this problem. Is it necessary to discard the use of a memory block entirely or is there a work around possible? An Example is given below.

Parameter (maxsiz = 80000)

 

integer area(maxsize)

call prog1(area(ix),area(iy),area(iz))

 

In prog1:

subroutine prog1(xx,yz,iqp)

real*8 xx(*), yz(*)

integer iz(*)

I know that this was fairly standard in earlier versions of the language. How would it be4 handled now?

 

Thansk in advance

Joel G.

0 Kudos
1 Reply
Bernard
Valued Contributor I
461 Views

I think that you should have posted your question on Intel Ifort forum. There are many knowledgeable members.

0 Kudos
Reply