/* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
int _sigfdie(), _sigidie(), _sigqdie(), _sigindie(), _sigtdie();
signal(SIGFPE
, _sigfdie
); /* ignore underflow, enable overflow */
signal(SIGIOT
, _sigidie
);
if ((int)signal(SIGQUIT
,_sigqdie
) & 01)
signal(SIGQUIT
, SIG_IGN
);
if ((int)signal(SIGINT
, _sigindie
) & 01)
signal(SIGTERM
,_sigtdie
);
ldfps(01200); /* detect overflow as an exception */
static char *fpenames
[] = {
"unknown floating exception",
"integer divide by zero",
"floating/decimal divide by zero",
"subscript out of range",
"floating divide by zero",
if (code
< 0 || code
>= sizeof fpenames
/sizeof fpenames
[0])
_sigdie(fpenames
[code
], 1);
_sigfdie() { _sigdie("floating exception, 1); }
_sigidie() { _sigdie("IOT Trap
", 1); }
_sigqdie() { _sigdie("Quit signal
", 1); }
_sigindie() { _sigdie("Interrupt
", 0); }
_sigtdie() { _sigdie("Killed
", 0); }
/* print error message, then clear buffers */
fprintf(stderr, "%s
\n", s);