The SPDE library engine works very well for this. As long as the I/O subsystem on the machine is sufficient enough to support it. The SPDE engine also provides a number of other benefits, like being able to split data sets over multiple I/O channels and disks, I utilize the engine for extremely large data. Tables in the trillions of rows for example. Here are some metrics from a job I ran just the other day: I extract a table from Oracle Data Warehouse. The data is column dimensioned. 12.3T rows and 4 columns. Extract in 8 threads to single dataset using dbslice... 2 hours Proc sort entire set by primary and secondary key... 5 hours Datastep to transpose data using by group processing and arrays... 9 hours The resulting dataset in a row dimensioned SAS table with 200M rows and 5500 columns. Without utilizing the SPDE library engine these processes took so long that they were basically deemed useless... Most significantly the final transpose step took more that 3 full days to run. The machine used to create the above numbers is a 64bit Linux, 8 cores, 42 GB ram, storage is a 24 disk DAS with two 12 disk raid 5 groups that are then in a raid 0 configuration. SPDE engine is using 8 data store points and 24 max threads. In short, I LOVE the SPDE library engine! it is an incredibly useful tool for big data. Other methods for data step multithreading is to split the data into logical groups as others said and utilizing the MP-CONNECT tools (available if you have SAS/CONNECT license) then run multiple asyn steps. I personally prefer the simplicity the use of the SPDE engine allows for comparatively.
... View more