On a Windows XP_PRO platform, I have a batch SAS program (v9.1.3) using a libname statement to read 600+ Access databases. I use a macro to read a table in each database and append the selected records to a SAS dataset for further processing. I've noticed that occasionally no records are selected from the Access table, which creates an empty temporary SAS dataset. Somehow, when there are no records selected, it looks as though that last Access database is kept open, even though subsequent databases are read and processed by the macro. This SAS program begins by using x statements to use a WinZip utility to unzip the archive where the Access databases are stored and write the databases into a folder, and at the end of the SAS statements in my program I use the x statements again to delete the .mdb files and the folders. My problem is that because the last .mdb file that had 0 records selected for processing within my program is still considered to be in use, my x statement won't delete that file. I end up having to manually delete the .mdb file. Is there code that I can incorporate into my SAS program to close the .mdb file?