Gentlemen, thank you for responding and advice. I will try some of the suggestions, especially detailed ones provided by Tom, on Monday when I will have access to SAS and data. Tom, the task for which I am trying to use this code is of course more complicated than the example I used to illustrate it. Namely, prior to migrating some half a million files of various nature (type, size, etc.) from one directory structure to another, files were reviewed by respective users and categorized in 4 groups (delete, long tail, important, critical). This information is found only in an Excel file, each row including file name, current/future location (directory path) and category. The task is using the information from the Excel file to delete or move files to their new locations as per respective categories. The path to some of the current locations exceeds the maximum of 259 characters (Naming Files, Paths, and Namespaces (Windows)), and respective files can't even be accessed there via Windows. So the idea of using SAS was: (1) read file name, path and assigned category (delete, long tail, etc.) from the already imported Excel file; (2a) if the path name is shorter than the maximum allowed path name length, then delete or move the file from the old to the new location (using "call system (....)"); (2b) if the path name is longer than the maximum allowed path length, first brake the path string into, say, two parts, then use the first part to map to a drive (using "call system ('net use Z:'first part'), and only then using as path the second part (Z:\second part) delete or move the respective file. Because the paths exceeding the maximum length are different, I cannot 'map drive' only once prior to running any SAS code, but have to do this for each specific path, and after completing the 'delete' or 'move' to free the drive (net use Z: /delete) to be available for the next path exceeding the max length. I believe, I managed to this with macro loops (at least with test files), but it worked very slow, estimating over 24 hours for the whole job, if not considerably more taking into account the large size of some files. This is the reason I am trying to do this in one data step. There might be, of course, other approaches. One I explored and did not work on our system (unless, I didn't do it properly) was "To specify an extended-length path, use the "\\?\" prefix. For example, "\\?\D:\very long path". Note The maximum path of 32,767 characters is approximate, because the "\\?\" prefix may be expanded to a longer string by the system at run time, and this expansion applies to the total length." (Naming Files, Paths, and Namespaces (Windows)) Thank you, again, and again - any other suggestions/advice in light of the above would be greatly appreciated. / Alex M.
... View more