From VSI OpenVMS Wiki
Jump to: navigation, search

WRITE is a DCL command that writes the specified data as one record to an open file specified by a logical name.


WRITE  logical-name expression[,...]

Logical Name

Specifies the logical name assigned to the output file. Use the logical name assigned by the OPEN command. In interactive mode, specify the process-permanent files identified by the logical names SYS$INPUT, SYS$OUTPUT, SYS$ERROR, and SYS$COMMAND. (The OPEN command assigns a logical name to a file and places the name in the process logical name table.)


Specifies data to be written as a single record to the output file. You can specify data items using character string expressions, which may be symbol names, character strings in quotation marks (" "), literal numeric values, or a lexical function.

You can specify a list of expressions separated by commas (,); the command interpreter concatenates the items into one record and writes the record to the output file.

The maximum size of any record that can be written is less than 1024 bytes, and the value of any symbol that is specified as part of a record cannot exceed 255 characters; however, if you specify the /SYMBOL qualifier, the maximum record size is 2048 bytes and the value of a symbol can exceed 255 characters.


  • /ERROR transfers control on an I/O error to the location specified by label (in a command procedure). If no error routine is specified and an error occurs during the writing of the file, the current ON condition action is taken. The /ERROR qualifier overrides any ON condition action specified. If an error occurs and control passes successfully to the target label, the reserved global symbol $STATUS retains the error code.
  • SYMBOL Causes the expression to be interpreted and its expanded value placed in a 2048-byte (instead of a 1024-byte) buffer before the write operation is performed. If you specify multiple expressions, their values are concatenated and placed in the 2048-byte buffer. Use the /SYMBOL qualifier to write a very large record. If you do not use the /SYMBOL qualifier, the entire command, including the expression or expressions, is placed in a 1024-byte buffer.
  • /UPDATE replaces the last record read with the record specified with the expression parameter. You must be able to read and write to a file to use the /UPDATE qualifier. Use the WRITE/UPDATE command only after a READ command. The WRITE/UPDATE command modifies the last record you have read. With sequential files, you must replace a record with another record of the same size when you use the WRITE/UPDATE command.
  • /WAIT (Alpha and Integrity servers only): if you specify /NOWAIT, the Put service to a mailbox device uses the IO$M_NOW modifier, which causes the operation to complete immediately instead of synchronizing with another reader of the mailbox.