[fpc-pascal] Converting old pascal written for Pascal/MT+ compiler

Jacob Kroon jacob.kroon at gmail.com
Tue Apr 4 09:38:11 CEST 2023


Hi Bernd,

On 4/4/23 08:54, Bernd Oppolzer via fpc-pascal wrote:
> Am 04.04.2023 um 08:16 schrieb Jacob Kroon via fpc-pascal:
>>
>> Thanks for the tip above.
>>
>> I was able to write a couple of perl-scripts that are able to convert 
>> my old Pascal sources to something that fpc can parse. Amongst other 
>> things, the scripts inject the "public name"/"external name" 
>> annotations so that the program can link.
>>
>> But I suspect I have a new problem: With the old Pascal/MT+ compiler 
>> it would appear that local variables declared in functions/procedures 
>> have a life-time that spans the whole program, like a "static" 
>> declared variable in C. With fpc, it looks like locally declared 
>> variables are automatic, put on the stack(?), and so they go out of 
>> existence once out of scope ?
> 
> 
> IMO, this is not a feature of the old PASCAL compiler,
> but instead your Pascal programs "by error" depends on the local variables
> appearing at the same location on the stack at subsequent calls as before
> (if there are no other calls at the same level in between).
> 

There is a programmers guide for the Pascal/MT+ compiler here:

http://www.bitsavers.org/pdf/digitalResearch/pascal_MT+/Pascal_MT+_Language_CPM_Programmers_Guide_Mar83.pdf

In chapter 4.1 it states that the "LOCAL VARIABLE STACK" is only used in 
programs compiled with the $S+ option set for recursion, and I don't see 
it set anywhere in my source code. So I think in my case, the local 
variables are actually not stored on the stack.

[cut]

Regards,
Jacob


More information about the fpc-pascal mailing list