PRB: Passing Constants to Subroutines in FORTRANLast reviewed: December 11, 1995Article ID: Q35871 |
The information in this article applies to:
SYMPTOMSThe code below will generate the following output:
1.000000 2.000000or print 1.000000 and cause a general protection fault.
CAUSEThis behavior is not a problem with Microsoft FORTRAN. The FORTRAN 77 ANSI standard, section 15.9.2, specifies that when passing a constant as an actual argument to a subroutine, the associated dummy argument (in this case x) cannot be modified. Microsoft FORTRAN does not generate error messages while compiling. The above code does not follow the standard; therefore, it will generate unpredictable results because FORTRAN passes by reference.
RESOLUTIONIf the associated dummy argument is going to be modified, pass a variable. For example, use "call sub1(y)" with y=1.
MORE INFORMATIONThe following code demonstrates this information:
write (*,*) 1.0 call sub1(1.0) write (*,*) 1.0 end subroutine sub1(x) real x x = 2.0 return end |
Additional reference words: 1.00 4.00 4.10 5.00 5.10
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |