Skip to main content

print/
print.rs

1use iso8211::DataDescriptiveFile;
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let path = std::env::args().nth(1).ok_or("usage: print <path-to-iso8211-file>")?;
5
6    let ddf = DataDescriptiveFile::read(path)?;
7
8    println!("\nData Descriptive Record:");
9    println!("  File Control Field:");
10    println!("    Tag Pairs:");
11    for tp in ddf.data_descriptive_record().file_control_field().tag_pairs() {
12        println!("      {} -> {}", tp.0, tp.1);
13    }
14
15    println!("    Data Descriptive Fields:");
16    for f in ddf.data_descriptive_record().data_descriptive_fields() {
17        println!("      Field Controls:");
18        println!(
19            "        Data Structure: {}",
20            f.field_controls().data_structure()
21        );
22        println!("        Data Type: {}", f.field_controls().data_type());
23        println!(
24            "        Escape Sequence: {}",
25            f.field_controls().escape_sequence()
26        );
27
28        println!("      Field Name: {}", f.field_name());
29
30        println!("      Array Descriptor: {}", f.array_descriptor());
31
32        println!("      Format Controls:");
33        for fc in f.format_controls().formats() {
34            println!("        Format: {}", fc);
35        }
36    }
37
38    for dr in ddf.data_records() {
39        println!("\nData Record:");
40        for df in dr.data_fields() {
41            println!("  Data Field: {} bytes", df.user_data().len());
42        }
43    }
44
45    Ok(())
46}