| Date: | Thu, 6 Nov 2008 16:38:00 +0100 |
| Reply-To: | Andre Wielki <wielki@INED.FR> |
| Sender: | "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU> |
| From: | Andre Wielki <wielki@INED.FR> |
| Subject: | Re: If then : evidence ! |
|
| In-Reply-To: | <EDB6078EC27BC74290635465379F70D207B0CE6D1B@EX-CMS01.westat.com> |
| Content-Type: | text/plain; charset=ISO-8859-1; format=flowed |
Ed
Indeed Ed the user was not well drilled to SAS and logic of programming.
the sas options in action were
options dkrocond=nowarning nofmterr mergenoby=error msglevel=i mprint notes;
and the code accepted.
The old rule circulating here in France in the years 80 was
"Attention Sas fait toujours quelque chose, mais est-ce exact et correct?"
Sas is producing always some results but is it correct?
Andre
Ed Heaton a écrit :
> Makes perfect sense to me. Of course I speak SAS. If I didn't, it would be confusing as h$#@!.
>
> For those observations where sex holds "M" we run the following conditional test.
>
> ( 10 and ( sex eq "2" ) )
>
> Now, 10 is always true, but sex never holds "2" when it holds "M", so the result is false and false is zero. So, zero gets assigned to age.
>
> If SAS was more like modern, advances languages, they would not allow the same symbol to request an assignment and to request a test for equality. E.g., FORTRAN used = for an assignment and eq for equality testing. C and Java use == for equality testing and = for assignments. Pascal used = for equality testing and := for assignments.
>
> If SAS followed such rules, the submitted code would have produced an error and the user would have been protected. I would like to see a system option to allow the user to enforce such a rule. E.g.:
>
> If sex eq "M" then age = 10 and sex eq "2" ;
>
> would be allowed but
>
> If sex="M" then age=10 and sex="2" ;
>
> would generate a syntax error.
>
> Ed
>
> Edward Heaton, Senior Systems Analyst,
> Westat (An Employee-Owned Research Corporation),
> 1650 Research Boulevard, TB-286, Rockville, MD 20850-3195
> Voice: (301) 610-4818 Fax: (301) 294-2085
> mailto:EdHeaton@Westat.com http://www.Westat.com
>
>
>
>
> -----Original Message-----
> From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of Andre Wielki
> Sent: Thursday, November 06, 2008 6:10 AM
> To: SAS-L@LISTSERV.UGA.EDU
> Subject: If then : evidence !
>
>
> A user here was writing Sas code analogous to this one
> data cl;
> set sashelp.class;
> if sex="M" then age=10 and sex="2"; /*else...;...; */
> run;
>
> As the log was
>
> 203 data cl;
> 204 set sashelp.class;
> 205 if sex="M" then age=10 and sex="2";
> 206 run;
>
> NOTE: There were 19 observations read from the data set SASHELP.CLASS.
> NOTE: The data set WORK.CL has 19 observations and 5 variables.
> NOTE: DATA statement used (Total process time):
> real time 0.00 seconds
> cpu time 0.00 seconds
>
>
> He was going further!!!!!!!!!!
>
> I hope everybody reading this is aware of the results!
> If not submit, quick look at the results.
>
>
>
> Andre
>
> --
> André WIELKI
> INED (Institut National d'Etudes Démographiques)
> Service Informatique
> 133 Boulevard Davout 75980 Paris Cedex 20
> mél : wielki@ined.fr tél : 33 (0) 1 56 06 21 54
>
>
--
André WIELKI
INED (Institut National d'Etudes Démographiques)
Service Informatique
133 Boulevard Davout 75980 Paris Cedex 20
mél : wielki@ined.fr tél : 33 (0) 1 56 06 21 54
|