HP SunSoft Pascal 4.0 User Manual
Page 265

Math Libraries
241
11
If your
matherr()
function returns a non-zero result, no exception message is
printed, and
errno
is not set.
DOMAIN
Argument domain exception
SING
Argument singularity
OVERFLOW
Overflow range exception
UNDERFLOW
Underflow range exception
TLOSS
Total loss of significance
PLOSS
Partial loss of significance
program TestMatherr(output);
#include <math_p.h>
function matherr(var info: exception): integer;
begin
case info.kind of
DOMAIN: begin
{ change sqrt to return sqrt(-arg1), not NaN }
if substr(info.name^, 1, length('sqrt')) = 'sqrt' then begin
info.retval := sqrt(-info.arg1);
matherr := 1; { No exception message will be printed }
end;
end;
otherwise
matherr := 0;
end;
end;
begin
writeln('Error handling function');
writeln('sqrt(-1)= ', sqrt(-1));
end.