These errors indicate that there is not enough space in the directory designated
by the UTILLOC option. By default, this is the directory also used for the WORK
directory.
To determine the directory used for the creation of utility files,
run this step:
proc options option=work;
proc options option=utilloc;
run;
Your SAS log file will show the location of the directories, which
might be the same directory.
There are a several solutions to this problem,
as described below:
The fastest and easiest way is to use the TAGSORT
option on your PROC SORT statement. The syntax is:
proc sort data=mydata out=outdata tagsort;
by var1 var2;
run;
where mydata is the name of your SAS data set and var1
and var2 are the names of any BY variables you are specifying.
Without the TAGSORT option, SAS creates a utility file that is
roughly 2 times the size of the original data set. If you
do not have that amount of space available in the WORK directory,
you receive an error (as you did in this case) and the process fails.
With the TAGSORT option, SAS creates a much smaller file that contains
only the key and the index number. You might wonder why TAGSORT is not
the default. The reason is that a process run with TAGSORT can take longer
to run, depending on what your data look like. However, it is also
possible that the process will run in the same amount of time.
It depends entirely on your data.
Another choice would be to point the -UTILLOC option to another
directory where you know you have a lot of space. You must
specify the -UTILLOC option on the sas command; you cannot put it
on an OPTIONS statement--it will not work there. If you are running
a batch process, the syntax would be:
sas myprogram.sas -utilloc /path/to/dir
where /path/to/dir is the real path you want to use. Be sure that
you have both read and write permissions for this directory.
The third solution is to have your Unix system administrator run
the cleanwork utility for you. You will find the cleanwork utility
in
!SASROOT/utilities/bin (!SASROOT being the directory where SAS is
installed). When SAS processes run properly, any temporary files
are removed when the process completes. However, if a SAS process
fails, sometimes this is not possible.
For this reason, SAS provides you with the cleanwork utility. You point
cleanwork to the directory that you use as your WORK directory and/or
the directory that you use for the UTILLOC directory, and it
goes through and cleans up any files that are associated with defunct
processes. It will not touch a file that is associated with a current
process, so you don't need to worry about that at all.
The reason your sys admin needs to run it is because it needs to be
run as root, not from an individual user's userid. If you run it
yourself, you will clean up only files that you own. What you want is
for all the useless files to be removed.
Many sites set up cron processes so that cleanwork runs once a week or
once a day--no one needs to get off the system while
cleanwork runs, so your sys admin can schedule it to run at any time, as
frequently as seems necessary to keep the WORK and UTILLOC directories fairly tidy.
For documentation, see this description of the
cleanwork command.
Operating System and Release Information
SAS System | Base SAS | Solaris for x64 | 9.3 TS1M1 | |
Linux for x64 | 9.3 TS1M1 | |
HP-UX IPF | 9.3 TS1M1 | |
64-bit Enabled AIX | 9.3 TS1M1 | |
64-bit Enabled HP-UX | 9.3 TS1M1 | |
64-bit Enabled Solaris | 9.3 TS1M1 | |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.