

{    DECK: RFT$EXTERNAL_INTERFACE
{
{    The purpose of this deck is to define the data types required
{    for usage of the RHFAM external interface.


  TYPE

    rft$application_name = string (rfc$appl_name_length),

    rft$application_kinds = (rfc$server, rfc$client, rfc$partner),

    rft$application_connections = 0..rfc$max_appl_connections,

    rft$server_job_validation = (rfc$requester_validation,
      rfc$requester_supplied),

    rft$transfer_timeout = rfc$min_transfer_timeout ..
      rfc$max_transfer_timeout,

    rft$server_response = record
      case server_response_kind: rft$server_response_kind of
      = rfc$accept =
        ,
      = rfc$reject =
        server_reject_code: rft$server_reject_codes,
      casend
    recend,

    rft$server_response_kind = (rfc$accept,rfc$reject),

    rft$rhfam_reject_codes = rfc$min_rhfam_reject_code ..
      rfc$max_rhfam_reject_code,

    rft$server_reject_codes = rfc$min_server_reject_code ..
      rfc$max_server_reject_code,

    rft$connect_reject_codes = rfc$min_rhfam_reject_code ..
      rfc$max_server_reject_code,

    rft$block_size = 0 .. rfc$max_block_size,

    rft$application_block_number = 0 .. rfc$max_appl_block_number,

    rft$transmission_modes = (rfc$record_mode, rfc$message_mode),

    rft$data_buffers = ^rft$data,

    rft$data = array [1 .. * ] of rft$data_fragment,

    rft$data_fragment = record
      address: ^cell,
      length: rft$data_length,
    recend,

    rft$data_length = 0 .. rfc$max_data_length,

    rft$data_fragment_count = 0 .. rfc$max_data_fragment_count,

    rft$record_marks = (rfc$rm_null, rfc$rm_eor, rfc$rm_eof, rfc$rm_eoi),

    rft$connection_timeout = rfc$min_connection_timeout ..
      rfc$max_connection_timeout,

    rft$async_activities = (rfc$aa_send_data, rfc$aa_receive_data,
      rfc$aa_all_async_activities),

    rft$set_of_async_activities = set of rft$async_activities,

    rft$connection_events = (rfc$input_available, rfc$output_below_threshold),

    rft$blocks_transferred = INTEGER,

    rft$bytes_transferred = 0 .. rfc$max_bytes_transferred,

    rft$connect_time = 0 .. rfc$max_connect_time,

    rft$connection_statistics = record
      connect_time: integer,
      bytes_sent: rft$bytes_transferred,
      bytes_received: rft$bytes_transferred,
    recend,

    rft$connection_states = (rfc$unassigned, rfc$outgoing_connect_active,
      rfc$incoming_connect_active, rfc$connected, rfc$connect_rejected,
      rfc$switch_offered, rfc$switch_accepted, rfc$terminated,
      rfc$not_viable, rfc$system_task_shutdown, rfc$local_nad_failure,
      rfc$system_interrupt),

    rft$termination_kinds = (rfc$peer_termination, rfc$media_failure,
      rfc$local_termination),

    rft$type_of_lid = (rfc$unknown_logical_id, rfc$local_physical_id,
      rfc$local_logical_id, rfc$remote_physical_id, rfc$remote_logical_id),

    rft$connection_status = record
      case connection_state: rft$connection_states of
      = rfc$unassigned =
        ,
      = rfc$outgoing_connect_active =
        ,
      = rfc$incoming_connect_active =
        ,
      = rfc$connected =
        input_available: boolean,
        output_below_threshold: boolean,
      = rfc$connect_rejected =
        server_response: rft$connect_reject_codes,
      = rfc$switch_offered =
        destination_job: jmt$system_supplied_name,
      = rfc$switch_accepted =
        receiving_job: jmt$system_supplied_name,
      = rfc$terminated =
        reason_for_termination: rft$termination_kinds,
      = rfc$not_viable =
        ,
      = rfc$system_task_shutdown =
        ,
      = rfc$local_nad_failure =
        ,
      = rfc$system_interrupt =
        ,
      casend,
    recend;

?? PUSH (LISTEXT := ON) ??
*copyc jmt$system_supplied_name
*copyc rfc$external_interface
*copyc rft$host_identifier
?? POP ??
