Pat.Terry@p101.f19.n490.z2.fidonet.org (Pat Terry) (08/06/89)
(* RETURN and HALT at level 0
Recently doubt has been expressed as to the meaning of RETURN in program
modules, and level 0 modules.
I suggest that RETURN = HALT normally in main modules and
RETURN = RETURN in level 0 modules
At least one compiler has other ideas.
I would be curious to have the results for compilers to which I do not have
access. A simple test program follows
*)
MODULE Return;
FROM InOut IMPORT WriteString;
MODULE Inner;
IMPORT WriteString;
BEGIN
WriteString('inner1');
RETURN;
WriteString('inner2')
END Inner;
BEGIN
WriteString('main1');
RETURN;
WriteString('main2')
END Return.
(*
Compiler Output
------------------------------------
Ana 68 (Sun) |
Collier V2 | inner1main1
FST | inner1main1 - but RETURN is not "abnormal"
whereas HALT would be
FTL | rejects RETURN in both places
Hamburg VAX |
HP9000/800 |
Logitech (MS-DOS 3.03) | inner1main1
Logitech (VAX) |
MacMeth |
MacModula-2 |
Modula/370 |
Oregon (80386/Xenix) |
Oregon (Sun) |
Pecan Modula-2 |
Rowley |
Stonybrook |
Stonybrook (Quickmod) | inner1 (treats inner RETURN as HALT)
Taylor |
TDI (Atari ST) |
TopSpeed | inner1main1
Volition Sage/Stride | inner1main1
*)
--
uucp: {mcvax!uunet,tektronix,sun!nosun}!oresoft!dawggon!2!490!19.101!Pat.Terry
Internet: Pat.Terry@p101.f19.n490.z2.fidonet.orgMSRS002@ECNCDC.BITNET ("THE DOCTOR.") (08/09/89)
I tried the example module "Return" in TopSpeed and got inner1main1. Tom Ruby MSRS002@ECNCDC