FIX: INTEGER*1 Items Passed by Value Incorrectly
ID: Q77690
|
5.10 | 5.10
MS-DOS | OS/2
kbtool kbfixlist kbbuglist
----------------------------------------------------------------------
The information in this article applies to:
- Microsoft FORTRAN for MS-DOS, version 5.1
- Microsoft FORTRAN for OS/2, version 5.1
----------------------------------------------------------------------
SYMPTOMS
========
If a FORTRAN program attempts to pass an INTEGER*1 item to a subprogram by
value, incorrect results may be generated.
CAUSE
=====
The call to the subprogram pushes two bytes on the stack for the one-byte
variable, causing the stack to be misaligned and the variable to be
incorrectly accessed in the called routine.
RESOLUTION
==========
The only reliable way to avoid this problem is to pass INTEGER*1 variables
by reference.
STATUS
======
Microsoft has confirmed this to be a bug in the products listed above. This
problem was corrected in FORTRAN Powerstation, version 1.0.
MORE INFORMATION
================
The following code can be used to reproduce the problem:
Sample code
-----------
subroutine sub1 (i,n)
integer*1 i[value],n[value]
write(*,*) i,n
i= 44
n= 55
end
integer*1 i,n
i = 4
n = 5
call sub1(i,n)
write(*,*) i,n
end
Additional reference words: 5.00 5.10 buglist5.10 fixlist1.00
KBCategory: kbtool kbfixlist kbbuglist
KBSubCategory: FLIss
Keywords :
Version :
Platform :
Issue type :
Last Reviewed: January 25, 1995