{
{ BAI$SEEK_VALIDATION
{
{ This code does general validation for seek_direct.

  IF caller_id.ring > file_instance^.instance_attributes.static_label.
        ring_attributes.r2 THEN
    amp$set_file_instance_abnormal (file_identifier, ame$ring_validation_error,
          call_block.operation, error_text, status);
  ELSEIF NOT ((file_instance^.instance_attributes.static_label.
        file_organization = amc$byte_addressable) OR
        (file_instance^.instance_attributes.static_label.file_organization =
        amc$sequential)) THEN
    amp$set_file_instance_abnormal (file_identifier,
          ame$file_organization_conflict, call_block.operation, error_text,
          status);
  ELSE
    IF file_byte_address > file_instance^.global_file_information^.
          eoi_byte_address THEN
      IF NOT (pfc$append IN file_instance^.instance_attributes.dynamic_label.
            access_mode) THEN
        IF call_block.operation = amc$get_direct_req THEN
          amp$set_file_instance_abnormal (file_identifier, ame$input_after_eoi,
                call_block.operation, error_text, status);
        ELSE
          amp$set_file_instance_abnormal (file_identifier,
                ame$position_beyond_eoi, call_block.operation, error_text,
                status);
        IFEND;
      ELSEIF file_instance^.instance_attributes.static_label.
            file_organization <> amc$byte_addressable THEN
        amp$set_file_instance_abnormal (file_identifier,
              ame$seek_beyond_eoi_fo_conflict, call_block.operation,
              error_text, status);
      IFEND;
    ELSEIF file_byte_address = file_instance^.global_file_information^.
          eoi_byte_address THEN
      IF (call_block.operation = amc$put_direct_req) AND
            NOT (pfc$append IN file_instance^.instance_attributes.
            dynamic_label.access_mode) THEN
        amp$set_file_instance_abnormal (file_identifier,
              ame$improper_access_attempt, call_block.operation, ' APPEND ',
              status);
      IFEND;
    ELSEIF NOT ((pfc$read IN file_instance^.instance_attributes.dynamic_label.
          access_mode) OR (pfc$shorten IN file_instance^.instance_attributes.
          dynamic_label.access_mode) OR (pfc$modify IN
          file_instance^.instance_attributes.dynamic_label.access_mode)) THEN
      amp$set_file_instance_abnormal (file_identifier,
            ame$improper_access_attempt, call_block.operation,
            ' READ, MODIFY, OR SHORTEN ', status);
    IFEND;
  IFEND;

{ end of BAI$SEEK_VALIDATION
{
