{
{ dmt$ms_login_table
{

  TYPE
    dmt$ms_mf_login_table_entry = record
      login_status: dmt$mf_login_table_entry_status,
      mainframe_identification: pmt$processor_attributes,
      avt_index: dmt$active_volume_table_index,
      mainframe_assigned: dmt$mainframe_assigned,
      device_log_name: ost$name,
      last_last_update_offset: integer,
      last_update_offset: integer,
      current_position_offset: integer,
      recovery_status: dmt$login_table_recovery_status,
    recend,

    dmt$mf_login_table_entries = array [1 .. * ] of
      dmt$ms_mf_login_table_entry;

  TYPE
    dmt$ms_mf_login_table_header = record
      unused: ALIGNED [0 MOD 8] array [0 .. 2] of integer,
      sequence: dmt$login_table_sequence,
      lower_bound: dmt$login_table_entry_index,
      upper_bound: dmt$login_table_entry_index,
    recend;

  TYPE
    dmt$ms_mainframe_login_table = record
      header: dmt$ms_mf_login_table_header,
      body: dmt$mf_login_table_entries,
    recend;

  TYPE
    dmt$mf_login_table_entry_status = (dmc$lt_entry_available,
      dmc$lt_alloc_assigned_to_mf, dmc$lt_mf_logged_in),

    dmt$login_table_recovery_status = (dmc$lt_normal_status, dmc$lt_recovering,
      dmc$lt_being_recovered, dmc$lt_being_rec_log_complete,
      dmc$lt_being_rec_alloc_complete),

    dmt$login_entry_type = (dmc$free_login_entry, dmc$production_login_entry,
          dmc$recovery_login_entry);

  CONST
    dmc$default_login_table_entries = 10,

    dmc$login_table_allocation_size = dmc$default_req_alloc_size,

    dmc$login_table_transfer_size = dmc$default_transfer_size,

    dmc$max_login_table_lngth_bytes = 5000;

?? PUSH (LISTEXT := ON) ??
*copyc dmt$active_volume_table_index
*copyc dmt$allocation_size
*copyc dmt$mainframe_assigned
*copyc dmt$transfer_size
*copyc ost$name
*copyc pmt$processor_attributes
?? POP ??
