Date : Wed, 20 Nov 1985 08:39:40 EST
From : SMERESKI.WBST@XEROX.ARPA
Subject: Re: Turbo Pascal Version 3.00
You have written a program with recursive calls. Turbo Pascal for CP/M does
not generate recursive code in its default mode. You will get the expected
result by including the compiler directive {$A-}. This information is in the
manual.
/Dave
I sat down to write the program for the next project I am going
to give to my Computer Science I class at home on my CPM system
with Turbo Pascal Version 3.00. The following program illustrates
the problem with the program I wrote:
program junk(input,output);
procedure proca(chita:char); forward;
procedure procb(chitb:char);
begin
writeln('Entering procb with a ',chitb);
proca('A');
writeln('Leaving procb with a ',chitb);
end;
procedure proca;
begin
writeln('Entering proca with a ',chita);
if chita = 'I' then procb('I');
writeln('Leaving proca with a ',chita);
end;
begin
proca('I');
end.
The output using Turbo Pascal was:
Entering proca with a I
Entering procb with a I
Entering proca with a A
Leaving proca with a A
Leaving procb with a I
Leaving proca with a A
While the output for the same program on a VAX with BSD UNIX,
IBM VM/SP CMS, or a Macintosh with MacPascal was:
Entering proca with a I
Entering procb with a I
Entering proca with a A
Leaving proca with a A
Leaving procb with a I
Leaving proca with a I
as I expected. Calling Borland Technical Support was no help,
as they wanted a copy of the program on an IBM format disk.
The technical support specialist asked me to send a copy of the
program on a disk. When I asked "in what format?" she replied
"IBM, of course." I guess CPM does not exist anymore.
Obviously, I was quite surprised at the output, and now I
wonder how they tested the compiler. It seems that a program
as simple as the one above should have been tested.
-- Stanley Dunn
University of Maryland Department of Computer Science