FORTRAN error array bound is not scalar integer

In summary, a FORTRAN error "array bound is not scalar integer" occurs when a loop is created and a subroutine is called with arrays that have varying sizes defined by loop variables. This error can be solved by explicitly declaring all variables and avoiding implicit typing.
  • #1
sathish
2
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
  • #2
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.
 
  • #3
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...
 
  • #4
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.
 
  • #5
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.
 

What is a FORTRAN error "array bound is not scalar integer"?

A "FORTRAN error array bound is not scalar integer" is an error message that appears when a program written in the FORTRAN programming language attempts to assign a non-integer value to an array's index.

Why does this error occur?

This error occurs because FORTRAN requires array index values to be integers, and when a non-integer value is assigned to an array index, the program cannot properly access the elements of the array.

How can I fix this error?

To fix this error, you will need to ensure that all array index values in your program are integers. If you are assigning a non-integer value to an array index, you can use the INT function to convert it to an integer.

Can this error be caused by other factors?

Yes, this error can also occur if the array index is not declared as an integer type in the program. Additionally, this error can also be caused by a mismatch between the declared size of the array and the actual size of the array being used in the program.

Is this a common error in FORTRAN programming?

Yes, this is a common error in FORTRAN programming, especially for beginners. It is important to pay attention to data types and array declarations to avoid this error.

Similar threads

  • Programming and Computer Science
Replies
4
Views
602
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
8
Views
1K
  • Programming and Computer Science
Replies
5
Views
7K
  • Programming and Computer Science
Replies
2
Views
1K
  • Programming and Computer Science
Replies
12
Views
3K
  • Programming and Computer Science
Replies
20
Views
1K
  • Programming and Computer Science
Replies
5
Views
12K
  • Programming and Computer Science
Replies
4
Views
1K
  • Programming and Computer Science
Replies
1
Views
2K
Back
Top