ID: Q35871
4.00 4.10 5.00 5.10 1.00 1.00a | 1.00 4.00
MS-DOS | WINDOWS NT
kbprg kbcode kbprb
The information in this article applies to:
The code below will generate the following output:
1.000000
2.000000
or print 1.000000 and cause a general protection fault.
This 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.
If the associated dummy argument is going to be modified, pass a variable. For example, use "call sub1(y)" with y=1.
The 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
KBCategory: kbprg kbprb
KBSubcategory: FORTLngIss
Keywords : kbFortranPS kbLangFortran
Version : 4.00 4.10 5.00 5.10 1.00 1.00a |
Platform : MS-DOS NT WINDOWS
Last Reviewed: May 2, 1998