Код полугипотетический, бо синтаксиса я уже не помню.
IMPORT MathCalc;
MODULE MathTools;
PROCEDURE ReturnComplexMathematicalComputation*: INT;
{* *}
PROCEDURE ReturnComplexMathematicalComputation
VAR:
i: INT;
BEGIN
i := 100 / MathCalc.CalcSum;
RETURN i;
END;
END MathTools.
MODULE MathCalc;
PROCEDURE CalcSum*: INT;
{* *}
PROCEDURE CalcSum
VAR:
i: INT;
{* other vars *}
BEGIN
{* we accept data from external sources and compute it *}
RETURN ResultingSum;
END;
END MathTools.
Внимание, вопрос! Что произойдет, если MathCalc.CalcSum вернет 0? На этапе компиляции это отловить невозможно, так как данные получаются извне. Кривые руки программиста не поставили проверку на ноль в модуле MathTools, а модуль MathTools и его методы активно используются для представления (например) статистической информации в десяти разных представлениях в десятке различных модулей. Что произойдет? ИМХО, система встанет, причем вся.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>