FILEATTR function   

Purpose

Return information about an open file.

Syntax

lResult& = FILEATTR([#] filenum&, fattr)

Remarks

filenum& is the handle of a currently open file. fattr is an integer between -3 and 3 that specifies the type of information required, according to the following table:

fattr

Definition

-3

The device type.  Returns 1 for a file, 2 for a device.  COMM, TCP and UDP are classified as devices.

-2

Logical first byte (base) position of a disk file.  By default, PowerBASIC opens files with a default first location of 1, but this can be overridden via the BASE= clause of the OPEN statement.  This function can be useful when the base is not known or when performing SEEK operations.

-1

The minimum amount of data that can be read or written at one time.  For RANDOM files, it is the record length.  For INPUT files, it is the input buffer length (set with LEN= in the OPEN statement).  For BINARY, OUTPUT and APPEND, there is no buffering, so it always returns 1 (1 byte).

 0

The open state. TRUE (non-zero) if open, FALSE (zero) if closed.

 1

The file mode (which may be a combination of the following):

 

result&

File mode

   1

Input

   2

Output

   4

Random

   8

Append

  16

Serial Communications (COMM)

  32

Binary

  64

TCP Winsock

 128

UDP Winsock

(for example, an APPEND file will return 8 + 2 = 10).

 2

The operating system file handle for the file.  This handle can be used with particular Windows API calls files to manipulate files opened with PowerBASIC, and with the OPEN HANDLE statement.

 3

Enumerates existing file numbers.  This mode enumerates existing file numbers, in the range of 1 to 32767.  FILEATTR(1,3) returns the first located file number, FILEATTR(2,3) the second, and so on until -1 is returned to indicate that there are no more file numbers active.  The file numbers returned are not guaranteed to be returned in any particular sequence, nor be open.  You can use FILEATTR(#filenum,0) to determine whether a given file number is open or closed.

The number symbol [#] is optional, but recommended for clarity.

See also

COMM OPEN, EOF, FILENAME$, GETATTR, LOF, OPEN, SEEK functionSEEK statementSETATTR, TCP OPEN, UDP OPEN

Example

OPEN "TEST.DOC" FOR OUTPUT AS #1 LEN = 28

x& = FILEATTR(#1,1)

Result  x& = 2