DOC: Mixed-Language Examples for Calling Pascal Are Incorrect

ID: Q48251

6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50

MS-DOS                 | OS/2       | WINDOWS
kbprg kbdocerr

The information in this article applies to:

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.0, 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

In the Programming Techniques manual

In the Mixed-Language Guide

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: 6.00 6.00a 6.00ax 7.00 1.00 1.50 KBCategory: kbprg kbdocerr KBSubcategory: CLngIss Keywords : kb16bitonly

Last Reviewed: November 12, 1998