Date: Thu, 18 Jan 2001 04:45:11 -0000
Reply-To: sashole@bellsouth.net
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Paul Dorfman <paul_dorfman@HOTMAIL.COM>
Subject: Re: 3 Questions.
Content-Type: text/plain; format=flowed
>From: Giulio Belrango
1) When using
>PROC PRINT NOOBS N; N gives you the total number of observations as N=999
>Can N be labeled or over ridden to be 'TOTAL' or 'COUNT' as an example ie
>from N=999 to Total=999
Nope.
>2) How can I PROC PRINT; selectively based on a variable from a prievous
>step ie Data Stuff; A=1; B=2; If B=3 then Proc print;
data stuff;
a=1;
do b=1 to 3,3,3, 4 to 5; output; end;
run;
proc print data=stuff;
where b = 3;
run;
>3) I'm using an array statement and trying to output the statement. Array
>dall(30) dall1-dall30; When I output the array ie file out; do i=1 to 30;
>dall(i)='Hi'; end; put @ 1 stockno $char10. @11 description $char50. @61
>dall1-dall30; if outputs like this 1111111111A TOOL Hi Hi Hi Hi Hi .....
>etc for 30 times The 'Hi' has a built in space in between each occurances.
>SAS seems to put a space in between each occurance. I'd like the output to
>be without the space. 1111111111A TOOL HiHiHiHiHiHi .....etc for 30 times
>I've tried Array dall2(30) dall-dall30; do i=1 to 30;
>dall2(i)=trim(dall(i)); end; Then outputing and I get the same thing.
First of all, the compiler will have a type contention. If you had defined
Array dall(30) $1 dall1-dall30;
you would have told the compiler that dall1-dall30 are all character
variables, 1 byte long. But you ahve defined
Array dall(30) $2 dall1-dall30;
It means that dall1-dall30 are *numeric* variables, and since it is the
first statement in the step, this is ow the compiler stores this variables
in the symbol table. Now when you code
dall(i)='Hi';
you are changing the story by telling him (the compiler is a male) that the
DALL variables are character. He cannot stomach it and vomits on the log:
NOTE: Character values have been converted to numeric
values at the places given by: (Line):(Column).
18:5
NOTE: Invalid numeric data, 'Hi' , at line 18 column 13.
Now imagine for a second that you have defined the array properly as $2.
Then you observation about the embedded space is true, but you can easily
fight it. Just print the variables as either of the lists
put (dall(*)) ($2.);
put (dall1-dall30) ($2.) ;
The former is good only if DALLs are array-incorporated; the latter is
array-free. The 'Hi's end up adjacent because of the exact format
specification. If you *need* a space, use $3.; if you need 2 spaces, use
$4., and so forth.
Kind regards,
=======================
Paul M. Dorfman
Jacksonville, Fl
=======================
>Any suguestions?
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com