[fpc-pascal] More syntax questions (part 4)

Adriaan van Os adriaan at adriaan.biz
Sun Dec 17 11:33:01 CET 2023


Michael Van Canneyt via fpc-pascal wrote:
> 
> 
> On Sat, 16 Dec 2023, Adriaan van Os via fpc-pascal wrote:
> 
>>
>> More questions about the FreePascal Language Reference (version 
>> 3.2.0), part 4
>>
>> 34. Are macpas LEAVE and CYCLE statements undocumented ?
> 
> Yes.

Well, according to Appendix D.6 of the Programmer's Manual, CYCLE is equivalent to CONTINUE and 
LEAVE to BREAK. Contrary to the information presented there, the CYCLE and LEAVE statements have 
been implemented for macpas mode.

I don't see BREAK and CONTINUE in the syntax diagrams either. I put together some examples 
(stressing that I am not a proponent of these C constructs).

procedure test;
begin
   while true do leave;
   writeln( 'leave makes true=false');

   while true do break;
   writeln( 'break makes true=false');

   writeln( 'cycle forever');
   while true do begin cycle; leave end;

   writeln( 'continue forever');
   while true do begin continue; break end;
end;

>> 36. Is the macpas RETURN statement undocumented ?

In MetroWerks Pascal, we have

	return-statement = "RETURN" [ expression ] .

In a procedure the [ expression ] part is skipped, in a function it assigns the function-result and 
then jumps to the end of the function. In a procedure, it just jumps to the end of the procedure. 
FreePascal allows RETURN in macpas mode to be used in a function only, so the following compiles 
only in a function.

  repeat return until false;
   writeln( 'the point of no return');

Ceterum censeo C esse delendam.

Regards,

Adriaan van Os



More information about the fpc-pascal mailing list