INF: Mixed-Language Examples for Calling Pascal Are Incorrect

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