Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!rphroy!caen!uwm.edu!ux1.cso.uiuc.edu!sirius!gerber From: gerber@sirius.astro.uiuc.edu (Richard Gerber) Newsgroups: comp.sys.amiga.programmer Subject: YASG (Yet another SAS gripe) Summary: my mistake or SAS's? Keywords: SAS/C Message-ID: <1991Apr9.141609.19375@ux1.cso.uiuc.edu> Date: 9 Apr 91 14:16:09 GMT Sender: usenet@ux1.cso.uiuc.edu (News) Organization: University of Illinois at Urbana Lines: 48 I'm not an expert C programmer, but is this my mistake, or a problem with SAS/C 5.10a? Here's the relevant code: #define ISOTHERMAL 0 ... if(ISOTHERMAL) { code A; } else { code B; } ... In a program with 11 modules (I mean separate functions in different files, if this is not the proper lingo), code A gets executed no matter what value ISOTHERMAL takes. I even replaced if(ISOTHERMAL) with if(0) and if(1) and it made no difference. code A was always executed. I even watched it do it with cpr. After mulling this over for a while, I switched to the "large data module" option when compiling. Lo and behold the code then worked properly. Now I am perfectly ready to admit that I may have been at fault with compiler settings. But even if I was, there should at least be some sort of warning. This would be a major mistake with the code; the output from the entire program would be worthless. It's only because I'm writing this so as to be portable that I found the problem. When I ran the code on a Sun 4, there was some error being produced in "code B". It was only when I ran cpr to try to figure out what was going on that I found this error with SAS/C. I'm going to give SAS a call about this unless someone points out to me that I have turned off a switch that would have produced a warning (or some such thing). Regards, Richard gerber@rigel.astro.uiuc.edu