MODULE Showcase3; (* Step-10 tour: module BEGIN bodies run at startup in declaration order, cross-module reads, and calls to the module's own procedures (plain and M.-qualified) from inside its init body. *) MODULE A EXPORT x; VAR x : INTEGER; BEGIN x := 1 END A; MODULE B EXPORT y; VAR y : INTEGER; BEGIN y := A.x + 10 END B; MODULE C EXPORT cnt, Inc; VAR cnt : INTEGER; PROCEDURE Inc; BEGIN cnt := cnt + 5 END Inc; BEGIN Inc(); C.Inc() END C; MODULE D EXPORT val; VAR val : INTEGER; BEGIN val := 42 END D; VAR total : INTEGER; VAR ExitCode : INTEGER; BEGIN total := 0; WriteString("show3"); C.Inc(); total := A.x * 100 + B.y + C.cnt + D.val; WriteInt(total); ExitCode := total END Showcase3.