Very simple example written in C# which shows how to handle the warnings generated by calculation engine and how to break the calculations if needed.
namespace MyCalc
{
class Program
{
static void Main(string[] args) {
RobotOM.RobotApplication app = new RobotOM.RobotApplication();
app.Project.Open(@"c:\Temp\Pdelta.rtd");
app.Project.CalcEngine.CalcNotifyEx += new RobotOM._IRobotCalcEngineEvents_CalcNotifyExEventHandler(CalcEngine_CalcNotifyEx);
Console.WriteLine(app.Project.CalcEngine.Calculate().ToString());
app.Project.CalcEngine.CalcNotifyEx -= new RobotOM._IRobotCalcEngineEvents_CalcNotifyExEventHandler(CalcEngine_CalcNotifyEx);
}
static void CalcEngine_CalcNotifyEx(int nCaller, string strText, string strFullText, string strCaption, int nType, int nDataType, string strSelection, out bool bHandled, out int nReturnValue) {
bHandled = false;
nReturnValue = 0;
if (nCaller == 1) { // CALCULATIONS==1
if (!string.IsNullOrEmpty(strText)) {
bHandled = true;
nReturnValue = 7; // IDNO=7, break calculations
Console.WriteLine(strText);
}
}
}
}
}

Rafal Gaweda