///|
fn main raise {
let packager = @iso.iso1987_packager()
let purchase = @iso.message("0200").unwrap()
purchase.set_field(2, "6222021234567890").unwrap()
purchase.set_field(3, "000000").unwrap()
purchase.set_field(4, "000000005800").unwrap()
purchase.set_field(7, "0916123456").unwrap()
purchase.set_field(11, "234567").unwrap()
purchase.set_field(22, "051").unwrap()
purchase.set_field(32, "123456").unwrap()
purchase.set_field(37, "609160234567").unwrap()
purchase.set_field(41, "TERM0002").unwrap()
purchase.set_field(42, "MERCHANT0000002").unwrap()
purchase.set_field(49, "156").unwrap()
let reversal = @iso.reversal_skeleton(purchase, "234568", "0916123656").unwrap()
assert_eq(@iso.validate_reversal_correlation(purchase, reversal).length(), 0)
assert_eq(
@iso.validate_message_template(reversal, @iso.reversal_request_template()).length(),
0,
)
let wire = @iso.pack_message(packager, @iso.ascii_binary_profile(), reversal).unwrap()
let decoded = @iso.unpack_message(packager, @iso.ascii_binary_profile(), wire).unwrap()
let original = @iso.parse_original_data(decoded.field(90).unwrap()).unwrap()
println("reversal bytes=\{wire.length()}")
println("DE90 original MTI=\{original.original_mti}")
println("DE90 original STAN=\{original.original_stan}")
println(@iso.safe_message_dump(decoded, packager))
}