redaring 发表于 2010-1-25 01:19 
谢谢楼上各位!
经过多番尝试,证明了,的确是硬盘格式的问题。我的c盘是fat32的,改成ntfs以后,就可以运行了。
也许很多朋友没有处理过体积这么大的数据,希望我这个问题可以为以后的朋友提供点帮助,不会弄得像我这样狼狈。
I am glad that you solve the proble. I am about to advise you other approaches. We don't have to hang ourselves on one tree, there are many other options with SAS. Here is a couple,
1) index  - which is 'cheaper' than sort
2)take out keys only from big file + (_N_ observation point) and save as keysonly file. This file will be much smaller. Sort the smaller file by keys + _N_. Create the new file with the order in smaller file and point access to the bigger file. 
According to the log, the approach is faster then a naked sort by a factor of 2+. That is a surprise. Your case may vary.
284  data t1;
285   retain x1-x2000 '222222222222';
286    do i=1 to 10000 ;
287       key=ceil(ranuni(99)*10000);
288       a= ranuni(99); b=ranuni(99);
289       output;
290   end;
291   drop i;
292  run;
NOTE: The data set WORK.T1 has 10000 observations and 2003 variables.
NOTE: DATA statement used (Total process time):
      real time           22.89 seconds
      cpu time            1.29 seconds
293
294  data tmp/view=tmp;
295     set t1(keep=key);
296     original_ord=_n_;
297  run;
NOTE: DATA STEP view saved on file WORK.TMP.
NOTE: A stored DATA STEP view cannot run under a different operating system.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.00 seconds
298
299  proc sort data=tmp out=tmp_srt; by key original_ord; run;
NOTE: There were 10000 observations read from the data set WORK.TMP.
NOTE: View WORK.TMP.VIEW used (Total process time):
      real time           0.17 seconds
      cpu time            0.17 seconds
NOTE: There were 10000 observations read from the data set WORK.T1.
NOTE: The data set WORK.TMP_SRT has 10000 observations and 2 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.21 seconds
      cpu time            0.21 seconds
300
301  data t2;
302    set  tmp_srt;
303    set t1 point=original_ord;
304  run;
NOTE: The variable original_ord exists on an input data set, but was also specified in an I/O
      statement option.  The variable will not be included on any output data set.
NOTE: There were 10000 observations read from the data set WORK.TMP_SRT.
NOTE: The data set WORK.T2 has 10000 observations and 2003 variables.
NOTE: DATA statement used (Total process time):
      real time           27.89 seconds
      cpu time            1.82 seconds
305
306
307  proc sort data=t1 out=t3; by key;run;
NOTE: There were 10000 observations read from the data set WORK.T1.
NOTE: The data set WORK.T3 has 10000 observations and 2003 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           1:11.86
      cpu time            3.95 seconds