PRB: Passing Constants to Subroutines in FORTRAN (35871)
The information in this article applies to:
- Microsoft FORTRAN Compiler for MS-DOS 4.0
- Microsoft FORTRAN Compiler for MS-DOS 4.1
- Microsoft FORTRAN PowerStation for MS-DOS 1.0
- Microsoft FORTRAN PowerStation for MS-DOS 1.0a
- Microsoft Fortran Powerstation 32 for Windows NT 1.0
- Microsoft Fortran Powerstation 32 for Windows NT 4.0
This article was previously published under Q35871 SYMPTOMS
The code below will generate the following output:
or print 1.000000 and cause a general protection fault.
CAUSE
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.
RESOLUTION
If the associated dummy argument is going to be modified, pass a
variable. For example, use "call sub1(y)" with y=1.
Modification Type: | Major | Last Reviewed: | 12/1/2003 |
---|
Keywords: | kbLangFortran KB35871 |
---|
|