ID Number: Q48251
5.00 5.10 6.00 6.00a 6.00ax | 5.10 6.00 6.00a 7.00
MS-DOS | OS/2
docerr
Summary:
In the "Microsoft C Advanced Programming Techniques" manual (APT) that
shipped with Microsoft C versions 6.0, 6.0a, and 6.0ax, the "Microsoft
C/C++ Programming Techniques" manual that shipped with version 7.00, the
"Microsoft Mixed-Language Programming Guide" provided with C versions
5.0 and 5.1, MASM versions 5.0 and 5.1, and Pascal version 4.0, there
is a sample Pascal module, Pfun, that is incorrect. Pfun can be found
in the following locations:
In the APT
----------
- Page 295, Section 12.7.2 "Calling a Pascal Function from C"
In the Programming Techniques manual
____________________________________
- Page 248, Section 11.7 "Calling a Pascal Function from C"
In the Mixed-Language Guide
---------------------------
- Page 30, Section 2.5.2 "Calling Pascal from Basic -- Function Call"
- Page 44, Section 3.5.2 "Calling Pascal from C -- Function Call"
- Page 57, Section 4.5.2 "Calling Pascal from FORTRAN -- Function Call"
If the Pascal source code shown on these pages is compiled, the
following errors occur:
21 7 begin
= 22 8 Fact := Fact * n;
8 --------------^Warning 171 Insert (
8 ----------------^268 Cannot Begin Expression Skipped
8 -------------------^Warning 155 ; Assumed ,
8 -------------------^257 Parameter List Size Wrong Begin Ski
More Information:
To obtain correctly compiled code, all of the incorrect references to
Fact must be removed and replaced by a temporary variable. The
following source code contains the necessary changes to the Pfun
module so that it will compile and run without any errors:
module Pfun;
function Fact (n : integer) : integer;
{Integer parameters received by value, the Pascal default. }
var temp : integer;
begin
temp := 1;
while n > 0 do
begin
temp := temp * n;
n := n - 1;
end;
Fact := temp;
end;
end.
Note: There is an incorrect reference to the errors in the Fact
function in the Pascal version 4.0 README.DOC file. This correction
does not work properly.
Additional reference words: 4.00 5.00 5.10 6.00 6.00a 6.00ax 7.00