{
{   The purpose of this request is to retrieve a record from a file opened
{ with amc$record access and file_organization of amc$byte_addressable or
{ amc$sequential.
{   The location of the record is specified by the byte_address parameter
{ and must be the byte_address of a record boundary (the address specified on
{ an amp$put_direct, or returned in the byte_address parameter of an
{ amp$put_next or amp$put_partial-start).
{   The record is moved from buffers maintained by the access method to the
{ user's working_storage_area. Data movement always begins at a record
{ boundary and continues until either the end of the record or the end of
{ the working_storage_area is encountered, whichever occurs first. If the
{ entire record is not moved, an amc$mid_record file position is returned.
{ In this event, subsequent amp$get_partial requests may be issued to obtain
{ the remainder of the record.
{   If a partition delimiter or EOI is encountered, the working_storage_area
{ is not modified by this request, i.e. no data is transferred.
{   An attempt to input data at a byte address beyond EOI will cause
{ abnormal status to be returned.  An attempt to input data at EOI will
{ cause an amc$eoi file_position to be returned on the initial attempt.
{ Additional attempts by the same task to input at EOI will cause abnormal
{ status to be returned.
{
{       AMP$GET_DIRECT (FILE_IDENTIFIER, WORKING_STORAGE_AREA,
{         WORKING_STORAGE_LENGTH, TRANSFER_COUNT, BYTE_ADDRESS,
{         FILE_POSITION, STATUS)
{
{ FILE_IDENTIFIER: (input) This parameter specifies the file access
{       identifier established when the file was opened.
{
{ WORKING_STORAGE_AREA: (input) This parameter specifies the address of the
{       first byte of a contiguous area bounded by the working_storage_length
{       into which all or part of a record from the file will be moved.
{       If the length of the record is less than the working storage length
{       the access method does NOT guarantee that the area between the
{       transfer count and the end of the working storage area will be left
{       unmodified.
{
{ WORKING_STORAGE_LENGTH: (input) This parameter specifies the size of the
{       working storage area. The size of the working storage area should
{       equal or exceed the length of the longest record to be input.
{       If a record exceeds the working storage length, subsequent
{       amp$get_partial requests may be issued to obtain the record excess.
{       A zero or negative working_storage_length is improper.
{
{ TRANSFER_COUNT: (output) This parameter specifies the number of bytes
{       of data moved to the working_storage_area by this request.
{
{ BYTE_ADDRESS: (input) This parameter specifies the file byte address
{       of the record to be retrieved.  The byte_address must be that of a
{       record boundary.
{
{ FILE_POSITION: (output) This parameter specifies the position of the file
{       following this request.
{       The following file positions may be returned by this request:
{         amc$mid_record,
{         amc$eor,
{         amc$eop,
{         amc$eoi.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION:  ame$ring_validation_error,
{                   ame$conflicting_access_level,
{                   ame$improper_file_byte_address,
{                   ame$improper_seek_address,
{                   ame$improper_file_id,
{                   ame$file_organization_conflict,
{                   ame$improper_input_attempt,
{                   ame$improper_record_address,
{                   ame$improper_wsl_value,
{                   ame$input_after_eoi,
{                   ame$unrecovered_read_error,
{                   ame$accept_bad_block,
{                   ame$terminal_disconnected,
{                   ame$max_cancellable_input,
{                   ame$cancel_group_encountered.
{       IDENTIFIER: amc$access_method_id.
{
