1*5673Smckusick /* Copyright (c) 1982 Regents of the University of California */ 2*5673Smckusick 3*5673Smckusick static char sccsid[] = "@(#)EXCEPT.c 1.1 02/02/82"; 4*5673Smckusick 5*5673Smckusick #include <signal.h> 6*5673Smckusick #include "whoami.h" 7*5673Smckusick 8*5673Smckusick /* 9*5673Smckusick * catch runtime arithmetic errors 10*5673Smckusick */ 11*5673Smckusick EXCEPT(signum, type) 12*5673Smckusick int signum, type; 13*5673Smckusick { 14*5673Smckusick signal(SIGFPE, EXCEPT); 15*5673Smckusick #ifndef VAX 16*5673Smckusick ERROR("Overflow, underflow, or division by zero in arithmetic operation\n"); 17*5673Smckusick #else 18*5673Smckusick switch (type) { 19*5673Smckusick case 1: 20*5673Smckusick ERROR("Integer overflow\n"); 21*5673Smckusick case 2: 22*5673Smckusick ERROR("Integer division by zero\n"); 23*5673Smckusick case 3: 24*5673Smckusick ERROR("Real overflow\n"); 25*5673Smckusick case 4: 26*5673Smckusick ERROR("Real division by zero\n"); 27*5673Smckusick case 5: 28*5673Smckusick ERROR("Real underflow\n"); 29*5673Smckusick default: 30*5673Smckusick ERROR("Panic: Computational error in interpreter\n"); 31*5673Smckusick } 32*5673Smckusick #endif 33*5673Smckusick } 34