MODULE Main; IMPORT Wr, Rd, Scan, Thread, Stdio, Fmt; EXCEPTION E (INTEGER); PROCEDURE DoIt (): INTEGER = VAR i: INTEGER; BEGIN TRY i := 100; RETURN 1; i := 101; EXCEPT | E => i := 102; RETURN 2; i := 103; ELSE i := 104; RETURN 3; i := 105; END; END DoIt; VAR txt: TEXT; PROCEDURE DoIt2 (): INTEGER = BEGIN TRY txt := Rd.GetLine(Stdio.stdin); RETURN Scan.Int(txt); EXCEPT | Rd.EndOfFile => RETURN(0); | Rd.Failure => RETURN(1); | Thread.Alerted => RETURN(2); | Scan.BadFormat => RETURN(3); ELSE RETURN (4); END; END DoIt2; VAR n: INTEGER; BEGIN n := DoIt (); Wr.PutText (Stdio.stdout, "DoIt => " & Fmt.Int (n) & "\n"); Wr.Flush (Stdio.stdout); LOOP n := DoIt2 (); Wr.PutText (Stdio.stdout, "DoIt2 => " & Fmt.Int (n) & "\n"); Wr.PutText (Stdio.stdout, "DoIt2 => \"" & txt & "\"\n"); Wr.Flush (Stdio.stdout); END; END Main.