Fortran FORTRAN error array bound is not scalar integer

AI Thread Summary
The discussion centers on resolving the FORTRAN error "array bound is not scalar integer" encountered when attempting to define arrays with sizes that vary based on loop variables. The user provided a code snippet where a loop calls a subroutine with dynamic array allocations. Key points include the identification of potential issues with implicit typing in FORTRAN, where variables not explicitly declared may default to real types if their names do not start with letters I through N. This can lead to errors when these variables are used as indices for array allocations. The suggestion is to ensure all variables are properly declared to avoid type-related issues. Additionally, the user is advised to share the complete source code for more accurate troubleshooting.
sathish
Messages
2
Reaction score
0
FORTRAN error "array bound is not scalar integer"

I'd like to know if a loop can be created, inside which I can call a subroutine in which there are arrays to be defined whose size varies as a function of loop variable. I tried as following, but got error "array bound is not scalar integer".
How to solve this issue?
attaching my code snippet here...


Code:
    . 
    . 
    iloop: do i=5,24,0.5 
    jloop: do j=5,20 
    call check(i,j,divlen,Machexit,final) 
    if (final.eq.1) exit iloop 
    enddo jloop 
    enddo iloop 
    . 
    . 
    end program 
! 

    Subroutine check(i,j,divlen,Machexit,final) 
    INTEGER, PARAMETER :: IVLpts=10 
    real :: i,divlen,Machexit 
    integer :: final,j 
    integer :: exppts,intstrtpts,contourstrtpts,totalpts,P1,P2,P3,P4,P5,P6,P7 
    exppts=((j*IVLpts)+((j-1)*(IVLpts-1))) 
    P2=(exppts-IVLpts) 
    P3=(IVLpts-1) 
    P6=(exppts-P2) 

    call check2(IVLpts,i,j,divlen,Machexit,final,exppts,P2,P3,P6) 

    End subroutine check 
! 

    Subroutine check2(IVLpts,i,j,divlen,Machexit,final,exppts,P2,P3,P6) 
    Real, PARAMETER :: gamma=1.4d0,Mini=1.02d0 
    integer,allocatable :: expcontourpts(:),M(:),x(:),y(:) 
    real,allocatable :: AoverAstar(:),Mvariance(:) 
    allocate(expcontourpts(exppts)) 
    allocate(M(exppts)) 
    allocate(x(exppts)) 
    allocate(y(exppts)) 
    allocate(AoverAstar(P6)) 
    allocate(Mvariance(P6)) 
    . 
    . 
    . 
    End subroutine check2 
!
 
Technology news on Phys.org
Well for one thing, one index of your 2-dimensional array is real, the other index is an integer. This is BAAAAAD programming practice. All of your array indexes must be integers.
 
SteamKing said:
Well for one thing, one index of your 2-dimensional array is real, the other index is an integer. This is BAAAAAD programming practice. All of your array indexes must be integers.

but there are no 2-d arrays at all...
all the arrays are 1-d and all the indexes are integers, which are functions of J (from main prog J=5,20).
So am not sure of what you have mentioned.
Anyway, thanks for the reply...
 
Then the problem lies in a portion of your code not included in the snippets attached to the OP. If you want help tracking down the error, you'll have to post the complete source code.
 
I think the error message is correct.

The problem is that you seem to be using implicit typing; meaning, there are variables that you have no declared in your subroutine and hence they would end up being INTEGERs only and only if the first letter of the variable is in between I and N, inclusive; otherwise, they will be REALs.

In your sub check2, the last 4 arguments do not start with I-N, so, they are real and you use them as indices during the allocation.

Anyway, that's all I can gather on a 1-second look at the code.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
5
Views
8K
Replies
3
Views
2K
Replies
5
Views
13K
Replies
2
Views
2K
Replies
12
Views
3K
Back
Top