IDL2 is the Interactive Data Language, a proprietary data processing and visual analysis language published by Research Systems Incorporated. Its primary strengths are easy and efficient manipulation of arrays, and convenient visualization tools. One feature of IDL is the ability to save any number of IDL ``variables'' into a file. At any later point those variables can be restored to memory. This is a convenient way for a user to save all or part of their current work session, and the session can later be resumed by restoring the file. The files produced by the SAVE command, and reconstituted by the RESTORE command, are called ``save'' files by RSI. (See SAVE and RESTORE commands in the IDL Reference Manual.)
The format if IDL save files is not officially documented by RSI. They presumably do not document it because it is their ``proprietary'' information, but also because the reserve the right to change the format at any time, and thus do not wish to be constrained by an officially documented position. Indeed, as I detail below, I have found that IDL save file formats have changed slightly over time. Still, for the most part the file format has remained remarkably constant, and any extensions to the format that RSI has introduced in new versions of IDL, have mostly attempted to remain compatible with previous versions of IDL.
I have developed a library of IDL routines which is able to interrogate, read and write IDL save files. To be clear, this library is not sanctioned or supported by RSI in any way. Also, there are no guarantees that RSI will keep the format of save files the same over time, however my intent is to support any changes that come up.
This is my attempt to document the library functions in a rudimentary way, and also to document the file format itself. Hopefully this will help other people trying to understand the format of the files, especially programmers of other scripting languages who are trying to construct read/write filters for IDL save files.
What follows is an overview of the IDL save format, followed by a brief discussion of the various levels of library functions, and finally a reference section describing in depth the format of each record found in a save file.