///|
fn main raise {
  let packager = @iso.iso1987_packager()
  let sign_on = @iso.message("0800").unwrap()
  sign_on.set_field(7, "0916123456").unwrap()
  sign_on.set_field(11, "000001").unwrap()
  sign_on.set_field(70, "001").unwrap()
  assert_eq(
    @iso.validate_message_template(
      sign_on,
      @iso.network_management_request_template(),
    ).length(),
    0,
  )
  let frame = @iso.pack_framed_message(
    packager,
    @iso.ascii_binary_profile(),
    @iso.BinaryBigEndian16,
    sign_on,
  ).unwrap()
  let received = @iso.unpack_framed_message(
    packager,
    @iso.ascii_binary_profile(),
    @iso.BinaryBigEndian16,
    frame,
  ).unwrap()
  assert_eq(
    @iso.parse_network_management_code(received.field(70).unwrap()),
    Ok(@iso.SignOn),
  )
  let response = @iso.response_skeleton(received, "00").unwrap()
  assert_true(@iso.response_correlates(received, response))
  let response_frame = @iso.pack_framed_message(
    packager,
    @iso.ascii_binary_profile(),
    @iso.BinaryBigEndian16,
    response,
  ).unwrap()
  println("0800 frame bytes=\{frame.length()}")
  println("0810 frame bytes=\{response_frame.length()}")
  println(@iso.safe_message_dump(response, packager))
}