| .OPEN (File I/O) Statement Details. |
|
  QuickSCREEN       Details       Example       Contents       Index |
| ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
| OPEN (File I/O) Statement Details |
|
| Syntax |
|   OPEN file [FOR mode1] [ACCESS access] [lock] AS [#]filenum [LEN=reclen] |
|   |
| The file is a string expression that specifies an optional device, followed |
| by a file name or path name conforming to the DOS file-naming conventions. |
|   |
| You must open a file before any I/O operation can be performed on it. OPEN |
| allocates a buffer for I/O to the file or device and determines the mode |
| of access used with the buffer. |
|   |
| Syntax 1 |
|   |
| In the first syntax, mode1 is one of the following: |
|   |
|   Mode     Description |
|   OUTPUT   Specifies sequential output mode. |
|   |
|   INPUT    Specifies sequential input mode. |
|   |
|   APPEND   Specifies sequential output mode and sets the file pointer |
|            to the end of file and the record number to the last record |
|            of the file. A PRINT # or WRITE # statement then extends |
|            (appends to) the file. |
|   |
|   RANDOM   Specifies random-access file mode, the default mode. In |
|            RANDOM mode, if no ACCESS clause is present, three attempts |
|            are made to open the file when the OPEN statement is |
|            executed. Access is attempted in the following order: |
|   |
|            1. Read/write |
|            2. Write-only |
|            3. Read-only |
|   |
|   BINARY   Specifies binary file mode. In binary mode, you may read |
|            or write information to any byte position in the file using |
|            GET and PUT. |
|   |
|            In binary mode, if no ACCESS clause is present, three |
|            attempts are made to open the file. The attempts follow the |
|            same order as those for RANDOM files. |
|   |
| If mode1 is omitted, the default random-access mode is assumed. |
|   |
| The access expression specifies the operation performed on the opened |
| file. If the file is already opened by another process and the |
| specified type of access is not allowed, the OPEN fails and an error |
| message is generated that reads "Permission denied." The ACCESS clause |
| works in an OPEN statement only if you are using a version of DOS that |
| supports networking (DOS Versions 3.0 or later). In addition, you must |
| run the SHARE.EXE program (or the network startup program must run it) |
| to perform any locking operation. If ACCESS is used with OPEN, earlier |
| versions of DOS return an error message that reads "Advanced feature |
| unavailable." |
|   |
| The access argument can be one of the following: |
|   |
|   Access Type   Description |
|   READ          Opens the file for reading only. |
|   |
|   WRITE         Opens the file for writing only. |
|   |
|   READ WRITE    Opens the file for both reading and writing. This mode |
|                 is valid only for RANDOM and BINARY files and files |
|                 opened for APPEND. |
|   |
| The lock clause works in a multiprocessing environment to restrict |
| access by other processes to an open file. The lock types are as |
| follows: |
|   |
|   Lock Type         Description |
|   default           If locktype is not specified, the file may be |
|                     opened for reading and writing any number of times |
|                     by this process, but other processes are denied |
|                     access to the file while it is opened. |
|   |
|   SHARED            Any process on any machine may read from or write |
|                     to this file. Do not confuse the SHARED lock type |
|                     with the SHARED statement or the SHARED attribute |
|                     appearing in other statements. |
|   |
|   LOCK READ         No other process is granted read access to this |
|                     file. This access is granted only if no other |
|                     process has a previous READ access to the file. |
|   |
|   LOCK WRITE        No other process is granted write access to this |
|                     file. This lock is granted only if no other |
|                     process has a previous WRITE access to the file. |
|   |
|   LOCK READ WRITE   No other process is granted either read or write |
|                     access to this file. This access is granted only |
|                     if READ or WRITE access has not already been |
|                     granted to another process, or if a LOCK READ or |
|                     LOCK WRITE is not already in place. |
|   |
|   |
| When the OPEN is restricted by a previous process, it generates |
| error 70, "Permission denied," under DOS. |
|   |
| The filenum (file number) argument is an integer expression whose value |
| is between 1 and 255. When an OPEN is executed, the file number is |
| associated with the file as long as it is open. Other I/O statements |
| may use the number to refer to the file. |
|   |
| The reclen (record length) argument is an integer expression that, if |
| included, sets the record length (number of characters in one record) |
| for random-access files. For sequential files, the default length for |
| records is 512 bytes; for random-access files, the default is 128 bytes. |
| The value of reclen cannot exceed 32,767 bytes. If the file mode is |
| binary, then the LEN clause is ignored. |
|   |
| For sequential files, reclen need not correspond to an individual record |
| size, since a sequential file may have records of different sizes. When |
| used to open a sequential file, reclen specifies the number of characters |
| to be loaded into the buffer before the buffer is written to, or read from, |
| the disk. A larger buffer means more room taken from BASIC, but faster file |
| I/O. A smaller buffer means more room in memory for BASIC, but slower I/O. |
| The default buffer size is 512 bytes. |
|   |
| Syntax 2 |
|   |
|   OPEN mode2,[#]filenum,file[,reclen] |
|   |
| In the second form of the OPEN syntax, mode2 is a string expression the |
| first character of which must be one of the following: |
|   |
|   Mode   Description |
|   O      Specifies sequential output mode. |
|   I      Specifies sequential input mode. |
|   R      Specifies random-access file input/output mode. |
|   B      Specifies binary file mode. |
|   A      Specifies sequential output mode and sets the file pointer |
|          to the end of the file and the record number to the last |
|          record of the file. A PRINT # or WRITE # statement extends |
|          (appends to) the file. |
|   |
|   Note: The second OPEN syntax does not support any of the access and |
|         file-sharing options found in the first syntax and is supported |
|         for compatibility with programs written in earlier versions of |
|         BASIC. |
|   |
| The following devices are supported by BASIC and can be named and |
| opened with the file argument: |
|   |
|   KYBD:, SCRN:, COMn:, LPTn:, CONS:. |
|   |
| The BASIC file I/O system allows you to take advantage of user-installed |
| devices. (See your DOS manual for information on character devices.) |
|   |
| Character devices are opened and used in the same manner as disk files. |
| However, characters are not buffered by BASIC as they are for disk files. |
| The record length for the device files is set to one. |
|   |
| BASIC only sends a carriage return at the end of a line. If the device |
| requires a line feed, the driver must provide it. When writing device |
| drivers, keep in mind that other BASIC users will want to read and |
| write control information. Writing and reading of device-control data |
| is handled by the IOCTL statement and IOCTL$ function. |
|   |
| None of the BASIC devices directly supports binary mode. However, the line |
| printer devices (LPT1:, LPT2:) can be opened in binary mode by adding the |
| BIN keyword: |
|   |
|   OPEN "LPT1:BIN" FOR OUTPUT AS #1 |
|   |
| Opening a printer in BIN mode eliminates printing a carriage return at |
| the end of a line. |
|   |
|   Note: In INPUT, RANDOM, and BINARY modes you can open a file under a |
|         different file number without first closing the file. In OUTPUT |
|         or APPEND mode you must close a file before opening it with a |
|         different file number. |