Platform-Specific File I/O Information
Special considerations for file access on UNIX and Windows platforms are covered in the following sections:
UNIX-Specific Information
Under UNIX, a file is read or written as an uninterrupted stream of bytes — there is no record structure at the operating system level. (By convention, records of text are simply terminated by the linefeed character, which is referred to as "newline.") It is possible to move the current file pointer to any arbitrary position in the file and to begin reading or writing data at that point. This simplicity and generality form a system in which any type of file can be manipulated easily using a small set of file operations.
Windows-Specific Information
Under Microsoft Windows, a file is read or written as an uninterrupted stream of bytes — there is no record structure at the operating system level. Lines in a Windows text file are terminated by the character sequence CR LF (carriage return, line feed).
The Microsoft C runtime library considers a file to be in either binary or text mode, and its behavior differs depending on the current mode of the file. The programmer confusion caused by this distinction is a cause of many C/C++ program bugs. Programmers familiar with this situation may be concerned about how IDL handles read and write operations. IDL is not affected by this quirk of the C runtime library, and no special action is required to work around it. Read/write operations are handled the same in Windows as in Unix: when IDL performs a formatted I/O operation, it reads/writes the CR/LF line termination. When it performs a binary operation, it simply reads/writes raw data.
Versions of IDL prior to IDL 5.4 (5.3 and earlier), however, were affected by the text/binary distinction made by the C library. The BINARY and NOAUTOMODE keywords to the OPEN procedures were provided to allow the user to change IDL's default behavior during read/write operations. In IDL 5.4 and later versions, these keywords are no longer necessary. They continue to be accepted in order to allow older code to compile and run without modification, but they are completely ignored and can be safely removed from code that does not need to run on those older versions of IDL.