{
{   The purpose of this request is to transfer data to the "next" physical
{ position of a file opened with amc$physical access_level. This request}
{ unconditionally establishes end of information (EOI) on a file.}
{ The operation of this request is device dependent, as follows:}
{}
{ MASS STORAGE:}
{}
{   The intended use of this request is to transfer a full allocation_unit}
{ worth of data. The maximum amount of data which can be transferred in}
{ a single request is constrained by the number of bytes in the}
{ allocation_unit specified for the file. A lesser amount than a full}
{ allocation_unit may be written. It is permissable for the buffer_length}
{ to be other than a multiple of the MAU size.  However successive writes}
{ of partial MAU's will leave gaps in the file which the user is}
{ responsible for ignoring during a later read.}
{}
{ MAGNETIC TAPE - AMC$SYSTEM_SPECIFIED BLOCK_TYPE:}
{}
{ The transfer will begin and end on a tape block boundary. One or more}
{ consecutive tape blocks may be written with a single request. The}
{ buffer_length must be at least the size of one system_specified block}
{ (4096 bytes in length). The number of system_specified blocks which}
{ could fit in the buffer_area is the maximum number of blocks which will}
{ be transferred in a single request. All blocks are the same length, except}
{ the last block is permitted to be shorter than the system_specified}
{ block length.}
{}
{ MAGNETIC TAPE - AMC$USER_SPECIFIED BLOCK_TYPE:}
{}
{ The transfer will begin and end on a tape block boundary. One or more}
{ consecutive tape blocks may be written with a single request. Each}
{ block in the buffer will be prefixed by a block header which describes}
{ the block content. This block header is provided by the access method}
{ on a read and provided by the caller on a write. The amp$pack_block_header}
{ and amp$unpack_block_header requests are provided to access the header.}
{ The buffer_length must be at least the size of one user_specified block.}
{ The maximum length of a user_specified block is the sum of the two file}
{ attributes MAX_BLOCK_LENGTH and BLOCK_HEADER_LENGTH.}
{ The result of the division of buffer_length by the maximum length}
{ of the user_specified block is the maximum number of blocks which will}
{ be transferred by this request.}
{ If the label_type is amc$labelled, the block header will be recorded with}
{ the data on a write to aid reliability. The block_header_length will be}
{ recorded in the HDR2 ANSI standard label for interchange purposes.}
{
{       AMP$WRITE (FILE_IDENTIFIER, BUFFER_AREA, BUFFER_LENGTH,
{         BYTE_ADDRESS, WAIT, STATUS)
{
{ FILE_IDENTIFIER: (input) This parameter specifies the file access
{       identifier established when the file was opened.
{
{ BUFFER_AREA: (input) This parameter specifies the users buffer area that
{       contains the data to be transferred to the file.
{
{ BUFFER_LENGTH: (input) This parameter specifies the number of bytes to
{       be transferred.
{
{ BYTE_ADDRESS: (output) This parameter indicates the byte address
{       established for the beginning of the transfer.  This value is
{       only returned for mass storage devices.
{
{ WAIT: (input) This parameter specifies the action to be taken following
{       initiation of the transfer.  Options include:
{         wait: Don't return control until the operation is complete.
{         nowait: Return control to the user even though the operation
{                 may not be complete.  The AMP$CHECK_BUFFER request
{                must be used to determine completion.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION:  ame$ring_validation_error,
{       IDENTIFIER: amc$access_method_id.
{

