smd@umcp-cs.UUCP (Stanley Dunn) (11/19/85)
Replace this line with your compiler bug 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
c55-hc@ucbbuddy.BERKELEY.EDU (Brent Chapman) (11/21/85)
<bugline> To compile a recursive program on a CPM-80 machine, you must set one of the compiler switches. I BELIEVE (I don't have the manual sitting in front of me) that the line that needs to be inserted is: {$A-} but I'm not absolutely certain; look it up in the back of the manual. NOTE that this bug/switch applies ONLY to CPM-80 version of Turbo. CPM-86 and MS-DOS do not need this switch, and may not even recognize it. Brent Chapman ucbvax!ucbbugs!chapman chapman@bugs.berkeley.arpa ucbvax!ucbamber!chapman chapman@amber.berkeley.arpa ucbvax!ucbbuddy!c55-hc c55-hc@buddy.berkeley.arpa Opinions expressed herein are strictly my own (but may be borrowed upon request, for a suitable fee).
db21@ihuxk.UUCP (Dave Beyerl) (11/21/85)
> Replace this line with your compiler bug > > 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 Because I happened to have a copy of my Turbo Pascal compiler handy, I tried the above program in Turbo. When I ran the program, I received the second set of outputs given in the above article. The version of Turbo that I have is identified as ver. 3.01A for the IBM. Apparently, Borland either corrected this problem in the subsequent point (.01) release or there is a significant difference between the CP/M and IBM versions of Turbo. Hopes this helps in tracking down the problem. For every problem there is one Dave Beyerl solution which is simple, neat, ihuxk!db21 and wrong!
johnson@noscvax.UUCP (Timothy A. Johnson) (11/23/85)
> Replace this line with your compiler bug > > 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 Under the PC-DOS version of Turbo 3.0, the program runs correctly with the same output as you have given for the other Pascals. The problem may be associated with the CP/M-80 Compiler Directive "A". The default is "A+" which inhibits recursive code. Switching to "A-" may solve your problem. This is documented on or about page 318 in the 3.0 manual. Timothy A. Johnson Computer Sciences Corporation