Date: Wed, 26 Apr 2000 08:17:11 -0400
Reply-To: "Cowie, Helen" <hcowie@WVMI.ORG>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Cowie, Helen" <hcowie@WVMI.ORG>
Subject: delete partial record only
Content-Type: text/plain; charset="iso-8859-1"
try setting those variable to missing or null or else you'll lose entire
example: if x=0 then var1=" " and var2=. and var3=.;
From: Automatic digest processor [mailto:LISTSERV@LISTSERV.UGA.EDU]
Sent: Wednesday, April 26, 2000 1:00 AM
To: Recipients of SAS-L digests
Subject: SAS-L Digest - 25 Apr 2000 to 26 Apr 2000 (#2000-364)
There are 9 messages totalling 333 lines in this issue.
Topics of the day:
1. Contract Company Opinions? (2)
2. IMPORT Wizard: default directory
3. delete partial record only
4. proc SQL's quit tail
5. Save, Save, Save, Save... (2)
6. E-Intelligence Opportunities With Dot.Com Startups
7. Initialising array
Date: Wed, 26 Apr 2000 01:05:06 GMT
From: LUCID41 <lucid41@AOL.COMNOJUNK>
Subject: Contract Company Opinions?
Is there a place were people can post opinions on various contract companies
that work with SAS professionals?
Anybody have suggestions on how to get opinions?
Date: Wed, 26 Apr 2000 11:26:51 +1000
From: Dr Peter Baade <Peter_Baade@HEALTH.QLD.GOV.AU>
Subject: Re: IMPORT Wizard: default directory
Under the properties menu (when you right click on the SAS icon) you can
indicate the default directory by putting the following in the "target"
"C:\Program Files\SASV8\SAS.EXE" -sasinitialfolder "c:\my sas files"
I think this changes the default for all "open" menus (programs etc).
Hope this helps.
Does anyone know how to override the default directory that the WIN95 SAS
v8 IMPORT Wizard goes to when selecting the Browse button in the "Where is
the file located?" dialog box?
I tried setting the sasv8.cfg aliases -SASUSER , -SASFOLDER, and -WORK to
the desired path but these didn't affect the IMPORT Wizard's default path.
Thanks in advance for any suggestions.
Date: Tue, 25 Apr 2000 20:12:07 -0400
From: paula <icj808@USWEST.NET>
Subject: delete partial record only
Now I know well if I do this
if x=0 then delete;
It will delete the whole recond if the condition is met.
How about I only want to drop several columns of the whole records? I will
if x=0 then delete v2, v3, v29; Is this one of the right ways?
Date: Tue, 25 Apr 2000 20:16:00 -0400
From: paula <icj808@USWEST.NET>
Subject: proc SQL's quit tail
Two weeks I saw a proc SQL that does exactly I wanted to do. So I copied it.
It looks like this
create table www as
select v2, v3
Today I simply added an extra line of Where bmw = 301 at the end of the from
clause. I got the error message obviously rejecting the existence of quit at
the end. I did not see any discussion in the language manual. I deleted quit
and put on Where clause and it works fine.
Date: Tue, 25 Apr 2000 20:09:34 -0400
From: paula <icj808@USWEST.NET>
Subject: Save, Save, Save, Save...
I found SAs to be one of the worst applications in handling saving the .sas
When one .sas file is open on the screen, if I select another .sas, this
file is immmediately attached to the end of the open .sas file. If I have
one major merge step included, I ended up have the steps automatically run
twice. I talked to SAS support. Yah, there is no way you can turn that off.
If I click on the blank icon to open a new .sas file, I have not found a way
to turn off that hypocritical "Save changes.......?", even if I just saved
the changes, it still asked the questions.
The worst of all is in about 10 out of 200 tries now, after I clearly
remember to have saved, saved and saved the changes I made, SAS turns up
unupdated copy of the .sas files. The worst case so far was I definitely
saved changes two hours ago. After I restarted SAs and went to File to
select the quick path pointer to the .sas file, it gave me a copy of 3 days
ago. I just spent next hour to bring all the changes.
This is version 6.12 for Windows. As a computer consultant for two years and
a full time working experience at a major software company, I believe I have
used no fewer than 200 windows applications. This is the only application
that behaves so whimscally in saving a simple file.
Date: Tue, 25 Apr 2000 22:30:27 -0400
From: Joe Whitehurst <joe@MEDIAONE.NET>
Subject: E-Intelligence Opportunities With Dot.Com Startups
Whitehurst Associates, Inc., a SAS Institute Quality Partner, is seeking SAS
System Professionals for its SAS System based E-Intelligence Consulting
Practice in Atlanta, Ga.. For more information, send your resume,
compensation requirements and a cover letter detailing your understanding of
E-Intelligence and why you are qualified to make contributions to our
efforts to: firstname.lastname@example.org
Date: Wed, 26 Apr 2000 00:20:59 -0400
From: Tom Frenkel <taf2@IS8.NYU.EDU>
Subject: Re: Save, Save, Save, Save...
Yup. That's one reason why I almost never use interactive SAS ("diaplay
manager"). Instead I run PC SAS in "batch mode". That is, I work in a
DOS window (prehistoric I know), editing my SAS program w/ a good text
editor (KEDIT). When I'm done editing, I go to the DOS prompt and type
"SAS <program name>". The run creates files with the program name, and
the suffixes .LOG (for SAS log) and .LST (for output listings if any). I
use a DOS browser called LIST (also prehistoric) to view the .LOG and .LST
files. Files are replaced each time, so things are much less likely to
get messed up.
(I am talking about version 6 of SAS. The new version of SAS, version 8,
might be friendlier in interactive mode.)
If you don't have a DOS editor or browser, you can do the same thing with
Windows NOTEPAD. I.e. at DOS prompt type "NOTEPAD" <file name>.
Oh ... for this to work, SAS has to be in your "path". (What you see when
you type the PATH command at the DOS prompt.) If this is unclear, you can
hopefully find someone around who can give you a hand with it. Good luck,
Tom Frenkel <email@example.com>
> I found SAs to be one of the worst applications in handling saving the
> .sas files. ...
Date: Wed, 26 Apr 2000 04:34:34 GMT
From: Paul Dorfman <paul_dorfman@HOTMAIL.COM>
Subject: Re: Initialising array
SAS programmers have been asking SI for years now to implement a simple
'mass' move initializing an array that would spare us from going through all
the buckets, but alas... Say if an array is called 'array' then a statement
array = 123;
would initialize all the buckets to 123 at once. Note that I *do not* mean
implementing something like
do i=lbound(array) to hbound(array); array(i)=123; end;
in the underlying software - that would present the same performance
problems we already have. I actually mean a real 'mass move', when a field
is declared an array and elementary item simultaneously, and the array can
be intialized by moving a value to the elementary item as a whole.
Actually, given your particular situation and version (i.e., V8), you are
lucky - because this functionality can be emulated using existing SAS means.
As your entire array has 2500 items, each 8 bytes long, you can create a
character string 2500*8=20000 bytes long containing the values the
initialized array would contain, and move that entire string to the memory
starting at the address of the first array item. In SAS words, if you have
array t(2500) _temporary_;
then before anything in the DATA step occurs, you can code
length plug $20000.;
plug = repeat(put(1e16,rb8.),dim(t)-1);
addr = addr(t(1));
and then initialize the entire array as
call poke (plug, addr, 20000);
That is it. Does this weird stuff provide any performance advantage over
running through each bucket and sticking 1e16 there? Let's see. I tested the
following under OS/390 V8:
1 data _null_;
2 array t (2500) _temporary_;
3 length plug $20000.;
4 plug = repeat(put(1e16,rb8.),2499);
5 addr = addr(t(1));
6 do i=1 to 1e6;
7 call poke (plug, addr, 20000);
NOTE: The DATA statement used 12.44 CPU seconds and 7663K.
10 data _null_;
11 array t (2500) _temporary_;
12 do i=1 to 1e6;
13 do j=1 to 2500;
NOTE: The DATA statement used 606.97 CPU seconds and 6864K.
It appears that the 'mass move' has some efficiency potential. You probably
understand now how sorely I miss this kind of built-in functionality not
limited to arrays having 32767 bytes, in all. 'Cause I've got to work with
arrays much larger than that! I still use the above trick to shorten
initialization time by moving 32760 chunks into an array instead of going
bucket by bucket, but come on, let us face it - it is a kludge.
If you had a character array, the things would be subject to the same
limitations, but the code would be much simpler, as then we would not have
to convert a numeral into its real binary string image. Say if the array
were declared as
array t(2500) $ _temporary_;
and we wanted to initialize each bucket to 'Ludwig', we would simply code
plug = repeat('Ludwig ',2499).
I hope the above make sense.
Paul M. Dorfman
>From: Ludwig Boltzmann <lboltzmann@HOTMAIL.COM>
>Reply-To: Ludwig Boltzmann <lboltzmann@HOTMAIL.COM>
>Subject: Initialising array
>Date: Tue, 25 Apr 2000 17:21:06 EDT
>Good sas-l folks:
>I'm reading a file of some 1 million obs and doing some array manipulation
>on each obs. The array is created as
>ARRAY T(2500) _TEMPORARY_ ;
>Because of the way I manipulate data I must initialize the array for each
>observation to some large number, e.g.
>DO I=1 TO 2500 ; T(I) = 1E+16 ; END ;
>Although it works, I've found out that the initialisation takes almost as
>long as the processing itself. Any ideas how to make it quicker? I'm
>V8 on OS/390.
>Thank you in advance,
>Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
Date: Wed, 26 Apr 2000 04:49:57 GMT
From: Michael K Countryman <mcountry@EARTHLINK.NET>
Subject: Re: Contract Company Opinions?
I think that's a great idea. I would sure use something like that.
You never know what you're getting into until it's too late.
LUCID41 <firstname.lastname@example.org> wrote in message
> Is there a place were people can post opinions on various contract
> that work with SAS professionals?
> Anybody have suggestions on how to get opinions?
> Express opinions?
> Remain Anonymous?
End of SAS-L Digest - 25 Apr 2000 to 26 Apr 2000 (#2000-364)