[fpc-pascal] procedure and function parameters?

Sven Barth pascaldragon at googlemail.com
Sun Mar 4 18:45:14 CET 2018


On 04.03.2018 18:06, Bernd Oppolzer wrote:
> Are procedure and function parameters allowed in Free Pascal?
> 
> When I tried to compile the Man-or-boy example program (Knuth's test),
> FPC complained with a syntax error:
> 
> 
> c:\work\pascal\work>fpc manorboy.pas
> Free Pascal Compiler version 3.0.0 [2015/11/16] for i386
> Copyright (c) 1993-2015 by Florian Klaempfl and others
> Target OS: Win32 for i386
> Compiling manorboy.pas
> manorboy.pas(41,28) Fatal: Syntax error, "identifier" expected but
> "FUNCTION" found
> Fatal: Compilation aborted
> Error: C:\FPC\3.0.0\bin\i386-win32\ppc386.exe returned an error exitcode
> 
> 
> This is the place where the function parameter appears in the
> definition of the function A:
> 
> 
> function A ( K : INTEGER ; function X1 : INTEGER ; function X2 :
>            INTEGER ; function X3 : INTEGER ; function X4 : INTEGER ;
>            function X5 : INTEGER ) : INTEGER ;

There is only one solution that currently really will work with that
kind of code: use {$mode iso} at the top of the file to use the ISO
Pascal compatible mode.

In theory it should also be possible to use another mode plus
{$modeswitch nestedprocvars}, but that doesn't play nicely with the call
to A inside of B as the compiler seems to call the X4 parameter while it
shouldn't...

Regards,
Sven



More information about the fpc-pascal mailing list