Add tests for P and PK output formats.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 24 Mar 2025 16:24:17 +0000 (09:24 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 24 Mar 2025 16:24:17 +0000 (09:24 -0700)
rust/pspp/split-num-out.expected.py [deleted file]
rust/pspp/src/dictionary.rs
rust/pspp/src/format/mod.rs
rust/pspp/src/format/testdata/ib.txt [new file with mode: 0644]
rust/pspp/src/format/testdata/p.txt [new file with mode: 0644]
rust/pspp/src/format/testdata/pib.txt [new file with mode: 0644]
rust/pspp/src/format/testdata/pibhex.txt [new file with mode: 0644]
rust/pspp/src/format/testdata/pk.txt [new file with mode: 0644]
rust/pspp/src/format/testdata/split-binhex-out.expected.py [new file with mode: 0644]
rust/pspp/src/format/testdata/split-num-out.expected.py [new file with mode: 0644]
rust/pspp/src/settings.rs

diff --git a/rust/pspp/split-num-out.expected.py b/rust/pspp/split-num-out.expected.py
deleted file mode 100644 (file)
index a38e936..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /usr/bin/python3
-
-import sys
-import re
-
-outputs = {}
-for format in [
-        "CCA", "CCB", "CCC", "CCD", "CCE",
-        "COMMA", "DOLLAR", "DOT", "E",
-        "F", "N", "PCT", "Z",
-]:
-    outputs[format] = open(format.lower() + '.txt', 'w')
-
-for line in sys.stdin:
-    line = line.strip()
-    if line == '':
-        continue
-    m = re.match('([A-Z]+)', line)
-    if m:
-        outputs[m.group(1)].write(line + '\n')
-    else:
-        for f in outputs.values():
-            f.write(line + '\n')
index 353806a32448b77f3d89a5cf0999caf773f60951..7be3e9e74498a169e1d1fb7c3d7e7c3d30954a4e 100644 (file)
@@ -229,6 +229,20 @@ impl Value {
     pub fn display(&self, format: Format, encoding: &'static Encoding) -> DisplayValue {
         DisplayValue::new(format, self, encoding)
     }
+
+    pub fn as_number(&self) -> Option<Option<f64>> {
+        match self {
+            Value::Number(number) => Some(*number),
+            Value::String(_) => None,
+        }
+    }
+
+    pub fn as_string(&self) -> Option<&[u8]> {
+        match self {
+            Value::Number(_) => None,
+            Value::String(s) => Some(&*s),
+        }
+    }
 }
 
 impl From<f64> for Value {
index d444a8c4e8f1d2c538060601b8566cd63549ca8a..b41fffb986ba6b5b9d1ec6bea3145fd4604c490f 100644 (file)
@@ -2,7 +2,7 @@ use core::f64;
 use std::{
     cmp::min,
     fmt::{Display, Error as FmtError, Formatter, Result as FmtResult, Write},
-    io::Write as _,
+    io::{Error as IoError, Write as IoWrite},
     ops::{Not, RangeInclusive},
     str::{from_utf8_unchecked, Chars, FromStr},
     sync::LazyLock,
@@ -1215,6 +1215,7 @@ impl<'a, 'b> DisplayValue<'a, 'b> {
 
     fn missing(&self, f: &mut Formatter<'_>) -> FmtResult {
         match self.format.type_ {
+            //Type::P => return self.p(f, -f64::MAX),
             Type::RBHex => return self.rbhex(f, -f64::MAX),
             _ => (),
         }
@@ -1595,6 +1596,76 @@ impl<'a, 'b> DisplayValue<'a, 'b> {
             self.missing(f)
         }
     }
+
+    pub fn write_binary<W>(&self, w: W) -> Result<bool, IoError>
+    where
+        W: IoWrite,
+    {
+        let Some(number) = self.value.as_number() else {
+            return Ok(false);
+        };
+        match self.format.type_() {
+            Type::P => self.p(w, number).map(|()| true),
+            Type::PK => self.pk(w, number).map(|()| true),
+            _ => Ok(false),
+        }
+    }
+
+    fn bcd(&self, number: Option<f64>, digits: usize) -> (bool, SmallVec<[u8; 16]>) {
+        let legacy = LegacyFormat::new(number.unwrap_or_default(), self.format.d());
+        let len = legacy.len();
+
+        let mut output = SmallVec::new();
+        if len > digits {
+            output.resize(digits.div_ceil(2), 0);
+            (false, output)
+        } else {
+            let mut decimal = SmallString::<[u8; 16]>::new();
+            write!(
+                &mut decimal,
+                "{}{legacy}",
+                Zeros(digits.saturating_sub(len))
+            )
+            .unwrap();
+
+            let mut src = decimal.bytes();
+            for _ in 0..digits / 2 {
+                let d0 = src.next().unwrap() - b'0';
+                let d1 = src.next().unwrap() - b'0';
+                output.push((d0 << 4) + d1);
+            }
+            if digits % 2 != 0 {
+                let d = src.next().unwrap() - b'0';
+                output.push(d << 4);
+            }
+            (true, output)
+        }
+    }
+
+    fn p<W>(&self, mut w: W, number: Option<f64>) -> Result<(), IoError>
+    where
+        W: IoWrite,
+    {
+        let (valid, mut output) = self.bcd(number, self.format.w() * 2 - 1);
+        if valid && number.is_some_and(|number| number < 0.0) {
+            *output.last_mut().unwrap() |= 0xd;
+        } else {
+            *output.last_mut().unwrap() |= 0xf;
+        }
+        w.write_all(&*output)
+    }
+
+    fn pk<W>(&self, mut w: W, number: Option<f64>) -> Result<(), IoError>
+    where
+        W: IoWrite,
+    {
+        let number = match number {
+            Some(number) if number < 0.0 => None,
+            other => other,
+        };
+        let (_valid, output) = self.bcd(number, self.format.w() * 2);
+        w.write_all(&*output)
+    }
 }
 
 struct LegacyFormat {
@@ -1975,10 +2046,12 @@ where
 
 #[cfg(test)]
 mod test {
-    use std::{fs::File, io::BufRead, path::Path};
+    use std::{fmt::Write, fs::File, io::BufRead, path::Path};
 
     use binrw::io::BufReader;
     use encoding_rs::UTF_8;
+    use smallstr::SmallString;
+    use smallvec::SmallVec;
 
     use crate::{
         dictionary::Value,
@@ -2176,4 +2249,67 @@ mod test {
         test(&settings, 1.5e10, " ¥2E+010€ ");
         test(&settings, -1.5e10, "«¥2E+010€»");
     }
+
+    fn test_binhex(name: &str) {
+        let filename = Path::new(env!("CARGO_MANIFEST_DIR"))
+            .join("src/format/testdata")
+            .join(name);
+        let input = BufReader::new(File::open(&filename).unwrap());
+        let mut value = None;
+        let mut value_name = String::new();
+        for (line_number, line) in input.lines().map(|r| r.unwrap()).enumerate() {
+            let line = line.trim();
+            let line_number = line_number + 1;
+            let tokens = StringScanner::new(&line, Syntax::Interactive, true)
+                .unwrapped()
+                .collect::<Vec<_>>();
+            match &tokens[0] {
+                Token::Number(number) => {
+                    value = Some(*number);
+                    value_name = String::from(line);
+                }
+                Token::End => {
+                    value = None;
+                    value_name = String::from(line);
+                }
+                Token::Id(id) => {
+                    let format: UncheckedFormat =
+                        id.0.as_str()
+                            .parse::<AbstractFormat>()
+                            .unwrap()
+                            .try_into()
+                            .unwrap();
+                    let format: Format = format.try_into().unwrap();
+                    assert_eq!(tokens.get(1), Some(&Token::Punct(Punct::Colon)));
+                    let expected = tokens[2].as_string().unwrap();
+                    let mut actual = SmallVec::<[u8; 16]>::new();
+                    assert!(Value::Number(value)
+                        .display(format, UTF_8)
+                        .write_binary(&mut actual)
+                        .unwrap());
+                    let mut actual_s = SmallString::<[u8; 32]>::new();
+                    for b in actual {
+                        write!(&mut actual_s, "{:02x}", b).unwrap();
+                    }
+                    assert_eq!(
+                        expected,
+                        &*actual_s,
+                        "{}:{line_number}: Error formatting {value_name} as {format}",
+                        filename.display()
+                    );
+                }
+                _ => panic!(),
+            }
+        }
+    }
+
+    #[test]
+    fn test_p() {
+        test_binhex("p.txt");
+    }
+
+    #[test]
+    fn test_pk() {
+        test_binhex("pk.txt");
+    }
 }
diff --git a/rust/pspp/src/format/testdata/ib.txt b/rust/pspp/src/format/testdata/ib.txt
new file mode 100644 (file)
index 0000000..ef308df
--- /dev/null
@@ -0,0 +1,2108 @@
+.
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "000000"
+IB4.0: "00000000"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "000000"
+IB4.1: "00000000"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "00000000"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "00000000"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+2
+IB1.0: "02"
+IB2.0: "0002"
+IB3.0: "000002"
+IB4.0: "00000002"
+IB1.1: "14"
+IB2.1: "0014"
+IB3.1: "000014"
+IB4.1: "00000014"
+IB1.2: "00"
+IB2.2: "00c8"
+IB3.2: "0000c8"
+IB4.2: "000000c8"
+IB1.3: "00"
+IB2.3: "07d0"
+IB3.3: "0007d0"
+IB4.3: "000007d0"
+IB2.4: "4e20"
+IB3.4: "004e20"
+IB4.4: "00004e20"
+IB2.5: "0000"
+IB3.5: "030d40"
+IB4.5: "00030d40"
+IB3.6: "1e8480"
+IB4.6: "001e8480"
+IB3.7: "000000"
+IB4.7: "01312d00"
+IB3.8: "000000"
+IB4.8: "0bebc200"
+IB4.9: "77359400"
+IB4.10: "00000000"
+11
+IB1.0: "0b"
+IB2.0: "000b"
+IB3.0: "00000b"
+IB4.0: "0000000b"
+IB1.1: "6e"
+IB2.1: "006e"
+IB3.1: "00006e"
+IB4.1: "0000006e"
+IB1.2: "00"
+IB2.2: "044c"
+IB3.2: "00044c"
+IB4.2: "0000044c"
+IB1.3: "00"
+IB2.3: "2af8"
+IB3.3: "002af8"
+IB4.3: "00002af8"
+IB2.4: "0000"
+IB3.4: "01adb0"
+IB4.4: "0001adb0"
+IB2.5: "0000"
+IB3.5: "10c8e0"
+IB4.5: "0010c8e0"
+IB3.6: "000000"
+IB4.6: "00a7d8c0"
+IB3.7: "000000"
+IB4.7: "068e7780"
+IB3.8: "000000"
+IB4.8: "4190ab00"
+IB4.9: "00000000"
+IB4.10: "00000000"
+123
+IB1.0: "7b"
+IB2.0: "007b"
+IB3.0: "00007b"
+IB4.0: "0000007b"
+IB1.1: "00"
+IB2.1: "04ce"
+IB3.1: "0004ce"
+IB4.1: "000004ce"
+IB1.2: "00"
+IB2.2: "300c"
+IB3.2: "00300c"
+IB4.2: "0000300c"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "01e078"
+IB4.3: "0001e078"
+IB2.4: "0000"
+IB3.4: "12c4b0"
+IB4.4: "0012c4b0"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00bbaee0"
+IB3.6: "000000"
+IB4.6: "0754d4c0"
+IB3.7: "000000"
+IB4.7: "49504f80"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+1234
+IB1.0: "00"
+IB2.0: "04d2"
+IB3.0: "0004d2"
+IB4.0: "000004d2"
+IB1.1: "00"
+IB2.1: "3034"
+IB3.1: "003034"
+IB4.1: "00003034"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "01e208"
+IB4.2: "0001e208"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "12d450"
+IB4.3: "0012d450"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00bc4b20"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "075aef40"
+IB3.6: "000000"
+IB4.6: "498d5880"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+913
+IB1.0: "00"
+IB2.0: "0391"
+IB3.0: "000391"
+IB4.0: "00000391"
+IB1.1: "00"
+IB2.1: "23aa"
+IB3.1: "0023aa"
+IB4.1: "000023aa"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "0164a4"
+IB4.2: "000164a4"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0dee68"
+IB4.3: "000dee68"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "008b5010"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "057120a0"
+IB3.6: "000000"
+IB4.6: "366b4640"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+3.14159
+IB1.0: "03"
+IB2.0: "0003"
+IB3.0: "000003"
+IB4.0: "00000003"
+IB1.1: "1f"
+IB2.1: "001f"
+IB3.1: "00001f"
+IB4.1: "0000001f"
+IB1.2: "00"
+IB2.2: "013a"
+IB3.2: "00013a"
+IB4.2: "0000013a"
+IB1.3: "00"
+IB2.3: "0c46"
+IB3.3: "000c46"
+IB4.3: "00000c46"
+IB2.4: "7ab8"
+IB3.4: "007ab8"
+IB4.4: "00007ab8"
+IB2.5: "0000"
+IB3.5: "04cb2f"
+IB4.5: "0004cb2f"
+IB3.6: "2fefd6"
+IB4.6: "002fefd6"
+IB3.7: "000000"
+IB4.7: "01df5e5c"
+IB3.8: "000000"
+IB4.8: "12b9af98"
+IB4.9: "00000000"
+IB4.10: "00000000"
+777
+IB1.0: "00"
+IB2.0: "0309"
+IB3.0: "000309"
+IB4.0: "00000309"
+IB1.1: "00"
+IB2.1: "1e5a"
+IB3.1: "001e5a"
+IB4.1: "00001e5a"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "012f84"
+IB4.2: "00012f84"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0bdb28"
+IB4.3: "000bdb28"
+IB2.4: "0000"
+IB3.4: "768f90"
+IB4.4: "00768f90"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "04a19ba0"
+IB3.6: "000000"
+IB4.6: "2e501440"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+82
+IB1.0: "52"
+IB2.0: "0052"
+IB3.0: "000052"
+IB4.0: "00000052"
+IB1.1: "00"
+IB2.1: "0334"
+IB3.1: "000334"
+IB4.1: "00000334"
+IB1.2: "00"
+IB2.2: "2008"
+IB3.2: "002008"
+IB4.2: "00002008"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "014050"
+IB4.3: "00014050"
+IB2.4: "0000"
+IB3.4: "0c8320"
+IB4.4: "000c8320"
+IB2.5: "0000"
+IB3.5: "7d1f40"
+IB4.5: "007d1f40"
+IB3.6: "000000"
+IB4.6: "04e33880"
+IB3.7: "000000"
+IB4.7: "30e03500"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+690
+IB1.0: "00"
+IB2.0: "02b2"
+IB3.0: "0002b2"
+IB4.0: "000002b2"
+IB1.1: "00"
+IB2.1: "1af4"
+IB3.1: "001af4"
+IB4.1: "00001af4"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "010d88"
+IB4.2: "00010d88"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0a8750"
+IB4.3: "000a8750"
+IB2.4: "0000"
+IB3.4: "694920"
+IB4.4: "00694920"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "041cdb40"
+IB3.6: "000000"
+IB4.6: "29209080"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-2
+IB1.0: "fe"
+IB2.0: "fffe"
+IB3.0: "fffffe"
+IB4.0: "fffffffe"
+IB1.1: "ec"
+IB2.1: "ffec"
+IB3.1: "ffffec"
+IB4.1: "ffffffec"
+IB1.2: "00"
+IB2.2: "ff38"
+IB3.2: "ffff38"
+IB4.2: "ffffff38"
+IB1.3: "00"
+IB2.3: "f830"
+IB3.3: "fff830"
+IB4.3: "fffff830"
+IB2.4: "b1e0"
+IB3.4: "ffb1e0"
+IB4.4: "ffffb1e0"
+IB2.5: "0000"
+IB3.5: "fcf2c0"
+IB4.5: "fffcf2c0"
+IB3.6: "e17b80"
+IB4.6: "ffe17b80"
+IB3.7: "000000"
+IB4.7: "feced300"
+IB3.8: "000000"
+IB4.8: "f4143e00"
+IB4.9: "88ca6c00"
+IB4.10: "00000000"
+-11
+IB1.0: "f5"
+IB2.0: "fff5"
+IB3.0: "fffff5"
+IB4.0: "fffffff5"
+IB1.1: "92"
+IB2.1: "ff92"
+IB3.1: "ffff92"
+IB4.1: "ffffff92"
+IB1.2: "00"
+IB2.2: "fbb4"
+IB3.2: "fffbb4"
+IB4.2: "fffffbb4"
+IB1.3: "00"
+IB2.3: "d508"
+IB3.3: "ffd508"
+IB4.3: "ffffd508"
+IB2.4: "0000"
+IB3.4: "fe5250"
+IB4.4: "fffe5250"
+IB2.5: "0000"
+IB3.5: "ef3720"
+IB4.5: "ffef3720"
+IB3.6: "000000"
+IB4.6: "ff582740"
+IB3.7: "000000"
+IB4.7: "f9718880"
+IB3.8: "000000"
+IB4.8: "be6f5500"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-123
+IB1.0: "85"
+IB2.0: "ff85"
+IB3.0: "ffff85"
+IB4.0: "ffffff85"
+IB1.1: "00"
+IB2.1: "fb32"
+IB3.1: "fffb32"
+IB4.1: "fffffb32"
+IB1.2: "00"
+IB2.2: "cff4"
+IB3.2: "ffcff4"
+IB4.2: "ffffcff4"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "fe1f88"
+IB4.3: "fffe1f88"
+IB2.4: "0000"
+IB3.4: "ed3b50"
+IB4.4: "ffed3b50"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "ff445120"
+IB3.6: "000000"
+IB4.6: "f8ab2b40"
+IB3.7: "000000"
+IB4.7: "b6afb080"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-1234
+IB1.0: "00"
+IB2.0: "fb2e"
+IB3.0: "fffb2e"
+IB4.0: "fffffb2e"
+IB1.1: "00"
+IB2.1: "cfcc"
+IB3.1: "ffcfcc"
+IB4.1: "ffffcfcc"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fe1df8"
+IB4.2: "fffe1df8"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "ed2bb0"
+IB4.3: "ffed2bb0"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "ff43b4e0"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "f8a510c0"
+IB3.6: "000000"
+IB4.6: "b672a780"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-913
+IB1.0: "00"
+IB2.0: "fc6f"
+IB3.0: "fffc6f"
+IB4.0: "fffffc6f"
+IB1.1: "00"
+IB2.1: "dc56"
+IB3.1: "ffdc56"
+IB4.1: "ffffdc56"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fe9b5c"
+IB4.2: "fffe9b5c"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f21198"
+IB4.3: "fff21198"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "ff74aff0"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fa8edf60"
+IB3.6: "000000"
+IB4.6: "c994b9c0"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-3.14159
+IB1.0: "fd"
+IB2.0: "fffd"
+IB3.0: "fffffd"
+IB4.0: "fffffffd"
+IB1.1: "e1"
+IB2.1: "ffe1"
+IB3.1: "ffffe1"
+IB4.1: "ffffffe1"
+IB1.2: "00"
+IB2.2: "fec6"
+IB3.2: "fffec6"
+IB4.2: "fffffec6"
+IB1.3: "00"
+IB2.3: "f3ba"
+IB3.3: "fff3ba"
+IB4.3: "fffff3ba"
+IB2.4: "8548"
+IB3.4: "ff8548"
+IB4.4: "ffff8548"
+IB2.5: "0000"
+IB3.5: "fb34d1"
+IB4.5: "fffb34d1"
+IB3.6: "d0102a"
+IB4.6: "ffd0102a"
+IB3.7: "000000"
+IB4.7: "fe20a1a4"
+IB3.8: "000000"
+IB4.8: "ed465068"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-777
+IB1.0: "00"
+IB2.0: "fcf7"
+IB3.0: "fffcf7"
+IB4.0: "fffffcf7"
+IB1.1: "00"
+IB2.1: "e1a6"
+IB3.1: "ffe1a6"
+IB4.1: "ffffe1a6"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fed07c"
+IB4.2: "fffed07c"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f424d8"
+IB4.3: "fff424d8"
+IB2.4: "0000"
+IB3.4: "897070"
+IB4.4: "ff897070"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fb5e6460"
+IB3.6: "000000"
+IB4.6: "d1afebc0"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-82
+IB1.0: "ae"
+IB2.0: "ffae"
+IB3.0: "ffffae"
+IB4.0: "ffffffae"
+IB1.1: "00"
+IB2.1: "fccc"
+IB3.1: "fffccc"
+IB4.1: "fffffccc"
+IB1.2: "00"
+IB2.2: "dff8"
+IB3.2: "ffdff8"
+IB4.2: "ffffdff8"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "febfb0"
+IB4.3: "fffebfb0"
+IB2.4: "0000"
+IB3.4: "f37ce0"
+IB4.4: "fff37ce0"
+IB2.5: "0000"
+IB3.5: "82e0c0"
+IB4.5: "ff82e0c0"
+IB3.6: "000000"
+IB4.6: "fb1cc780"
+IB3.7: "000000"
+IB4.7: "cf1fcb00"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-690
+IB1.0: "00"
+IB2.0: "fd4e"
+IB3.0: "fffd4e"
+IB4.0: "fffffd4e"
+IB1.1: "00"
+IB2.1: "e50c"
+IB3.1: "ffe50c"
+IB4.1: "ffffe50c"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fef278"
+IB4.2: "fffef278"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f578b0"
+IB4.3: "fff578b0"
+IB2.4: "0000"
+IB3.4: "96b6e0"
+IB4.4: "ff96b6e0"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fbe324c0"
+IB3.6: "000000"
+IB4.6: "d6df6f80"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-.1
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "000000"
+IB4.0: "00000000"
+IB1.1: "ff"
+IB2.1: "ffff"
+IB3.1: "ffffff"
+IB4.1: "ffffffff"
+IB1.2: "f6"
+IB2.2: "fff6"
+IB3.2: "fffff6"
+IB4.2: "fffffff6"
+IB1.3: "9c"
+IB2.3: "ff9c"
+IB3.3: "ffff9c"
+IB4.3: "ffffff9c"
+IB2.4: "fc18"
+IB3.4: "fffc18"
+IB4.4: "fffffc18"
+IB2.5: "d8f0"
+IB3.5: "ffd8f0"
+IB4.5: "ffffd8f0"
+IB3.6: "fe7960"
+IB4.6: "fffe7960"
+IB3.7: "f0bdc0"
+IB4.7: "fff0bdc0"
+IB3.8: "000000"
+IB4.8: "ff676980"
+IB4.9: "fa0a1f00"
+IB4.10: "c4653600"
+-.5
+IB1.0: "ff"
+IB2.0: "ffff"
+IB3.0: "ffffff"
+IB4.0: "ffffffff"
+IB1.1: "fb"
+IB2.1: "fffb"
+IB3.1: "fffffb"
+IB4.1: "fffffffb"
+IB1.2: "ce"
+IB2.2: "ffce"
+IB3.2: "ffffce"
+IB4.2: "ffffffce"
+IB1.3: "00"
+IB2.3: "fe0c"
+IB3.3: "fffe0c"
+IB4.3: "fffffe0c"
+IB2.4: "ec78"
+IB3.4: "ffec78"
+IB4.4: "ffffec78"
+IB2.5: "0000"
+IB3.5: "ff3cb0"
+IB4.5: "ffff3cb0"
+IB3.6: "f85ee0"
+IB4.6: "fff85ee0"
+IB3.7: "b3b4c0"
+IB4.7: "ffb3b4c0"
+IB3.8: "000000"
+IB4.8: "fd050f80"
+IB4.9: "e2329b00"
+IB4.10: "00000000"
+-.9
+IB1.0: "ff"
+IB2.0: "ffff"
+IB3.0: "ffffff"
+IB4.0: "ffffffff"
+IB1.1: "f7"
+IB2.1: "fff7"
+IB3.1: "fffff7"
+IB4.1: "fffffff7"
+IB1.2: "a6"
+IB2.2: "ffa6"
+IB3.2: "ffffa6"
+IB4.2: "ffffffa6"
+IB1.3: "00"
+IB2.3: "fc7c"
+IB3.3: "fffc7c"
+IB4.3: "fffffc7c"
+IB2.4: "dcd8"
+IB3.4: "ffdcd8"
+IB4.4: "ffffdcd8"
+IB2.5: "0000"
+IB3.5: "fea070"
+IB4.5: "fffea070"
+IB3.6: "f24460"
+IB4.6: "fff24460"
+IB3.7: "000000"
+IB4.7: "ff76abc0"
+IB3.8: "000000"
+IB4.8: "faa2b580"
+IB4.9: "ca5b1700"
+IB4.10: "00000000"
+9999.1
+IB1.0: "00"
+IB2.0: "270f"
+IB3.0: "00270f"
+IB4.0: "0000270f"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "018697"
+IB4.1: "00018697"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "0f41e6"
+IB4.2: "000f41e6"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "009892fc"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "05f5bdd8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "3b996a70"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+9999.5
+IB1.0: "00"
+IB2.0: "2710"
+IB3.0: "002710"
+IB4.0: "00002710"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "01869b"
+IB4.1: "0001869b"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "0f420e"
+IB4.2: "000f420e"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "0098948c"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "05f5cd78"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "3b9a06b0"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+9999.9
+IB1.0: "00"
+IB2.0: "2710"
+IB3.0: "002710"
+IB4.0: "00002710"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "01869f"
+IB4.1: "0001869f"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "0f4236"
+IB4.2: "000f4236"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "0098961c"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "05f5dd18"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "3b9aa2f0"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+10000
+IB1.0: "00"
+IB2.0: "2710"
+IB3.0: "002710"
+IB4.0: "00002710"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "0186a0"
+IB4.1: "000186a0"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "0f4240"
+IB4.2: "000f4240"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "00989680"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "05f5e100"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "3b9aca00"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+18231237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "000000"
+IB4.0: "01162fc5"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "000000"
+IB4.1: "0addddb2"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "6caaa8f4"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "00000000"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-9999.1
+IB1.0: "00"
+IB2.0: "d8f1"
+IB3.0: "ffd8f1"
+IB4.0: "ffffd8f1"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "fe7969"
+IB4.1: "fffe7969"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "f0be1a"
+IB4.2: "fff0be1a"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "ff676d04"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "fa0a4228"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "c4669590"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-9999.5
+IB1.0: "00"
+IB2.0: "d8f0"
+IB3.0: "ffd8f0"
+IB4.0: "ffffd8f0"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "fe7965"
+IB4.1: "fffe7965"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "f0bdf2"
+IB4.2: "fff0bdf2"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "ff676b74"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "fa0a3288"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "c465f950"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-9999.9
+IB1.0: "00"
+IB2.0: "d8f0"
+IB3.0: "ffd8f0"
+IB4.0: "ffffd8f0"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "fe7961"
+IB4.1: "fffe7961"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "f0bdca"
+IB4.2: "fff0bdca"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "ff6769e4"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "fa0a22e8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "c4655d10"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-10000
+IB1.0: "00"
+IB2.0: "d8f0"
+IB3.0: "ffd8f0"
+IB4.0: "ffffd8f0"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "fe7960"
+IB4.1: "fffe7960"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "f0bdc0"
+IB4.2: "fff0bdc0"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "ff676980"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "fa0a1f00"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "c4653600"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-8231237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "8266bb"
+IB4.0: "ff8266bb"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "000000"
+IB4.1: "fb18034e"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "cef0210c"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "00000000"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+999.1
+IB1.0: "00"
+IB2.0: "03e7"
+IB3.0: "0003e7"
+IB4.0: "000003e7"
+IB1.1: "00"
+IB2.1: "2707"
+IB3.1: "002707"
+IB4.1: "00002707"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "018646"
+IB4.2: "00018646"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0f3ebc"
+IB4.3: "000f3ebc"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00987358"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "05f48170"
+IB3.6: "000000"
+IB4.6: "3b8d0e60"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+999.5
+IB1.0: "00"
+IB2.0: "03e8"
+IB3.0: "0003e8"
+IB4.0: "000003e8"
+IB1.1: "00"
+IB2.1: "270b"
+IB3.1: "00270b"
+IB4.1: "0000270b"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "01866e"
+IB4.2: "0001866e"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0f404c"
+IB4.3: "000f404c"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "009882f8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "05f51db0"
+IB3.6: "000000"
+IB4.6: "3b9328e0"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+999.9
+IB1.0: "00"
+IB2.0: "03e8"
+IB3.0: "0003e8"
+IB4.0: "000003e8"
+IB1.1: "00"
+IB2.1: "270f"
+IB3.1: "00270f"
+IB4.1: "0000270f"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "018696"
+IB4.2: "00018696"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0f41dc"
+IB4.3: "000f41dc"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00989298"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "05f5b9f0"
+IB3.6: "000000"
+IB4.6: "3b994360"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+1000
+IB1.0: "00"
+IB2.0: "03e8"
+IB3.0: "0003e8"
+IB4.0: "000003e8"
+IB1.1: "00"
+IB2.1: "2710"
+IB3.1: "002710"
+IB4.1: "00002710"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "0186a0"
+IB4.2: "000186a0"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0f4240"
+IB4.3: "000f4240"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00989680"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "05f5e100"
+IB3.6: "000000"
+IB4.6: "3b9aca00"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+8231237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "7d9945"
+IB4.0: "007d9945"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "000000"
+IB4.1: "04e7fcb2"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "310fdef4"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "00000000"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-999.1
+IB1.0: "00"
+IB2.0: "fc19"
+IB3.0: "fffc19"
+IB4.0: "fffffc19"
+IB1.1: "00"
+IB2.1: "d8f9"
+IB3.1: "ffd8f9"
+IB4.1: "ffffd8f9"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fe79ba"
+IB4.2: "fffe79ba"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f0c144"
+IB4.3: "fff0c144"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "ff678ca8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fa0b7e90"
+IB3.6: "000000"
+IB4.6: "c472f1a0"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-999.5
+IB1.0: "00"
+IB2.0: "fc18"
+IB3.0: "fffc18"
+IB4.0: "fffffc18"
+IB1.1: "00"
+IB2.1: "d8f5"
+IB3.1: "ffd8f5"
+IB4.1: "ffffd8f5"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fe7992"
+IB4.2: "fffe7992"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f0bfb4"
+IB4.3: "fff0bfb4"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "ff677d08"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fa0ae250"
+IB3.6: "000000"
+IB4.6: "c46cd720"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-999.9
+IB1.0: "00"
+IB2.0: "fc18"
+IB3.0: "fffc18"
+IB4.0: "fffffc18"
+IB1.1: "00"
+IB2.1: "d8f1"
+IB3.1: "ffd8f1"
+IB4.1: "ffffd8f1"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fe796a"
+IB4.2: "fffe796a"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f0be24"
+IB4.3: "fff0be24"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "ff676d68"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fa0a4610"
+IB3.6: "000000"
+IB4.6: "c466bca0"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-1000
+IB1.0: "00"
+IB2.0: "fc18"
+IB3.0: "fffc18"
+IB4.0: "fffffc18"
+IB1.1: "00"
+IB2.1: "d8f0"
+IB3.1: "ffd8f0"
+IB4.1: "ffffd8f0"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "fe7960"
+IB4.2: "fffe7960"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "f0bdc0"
+IB4.3: "fff0bdc0"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "ff676980"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "fa0a1f00"
+IB3.6: "000000"
+IB4.6: "c4653600"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-8231237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "8266bb"
+IB4.0: "ff8266bb"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "000000"
+IB4.1: "fb18034e"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "cef0210c"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "00000000"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+99.1
+IB1.0: "63"
+IB2.0: "0063"
+IB3.0: "000063"
+IB4.0: "00000063"
+IB1.1: "00"
+IB2.1: "03df"
+IB3.1: "0003df"
+IB4.1: "000003df"
+IB1.2: "00"
+IB2.2: "26b6"
+IB3.2: "0026b6"
+IB4.2: "000026b6"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "01831c"
+IB4.3: "0001831c"
+IB2.4: "0000"
+IB3.4: "0f1f18"
+IB4.4: "000f1f18"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "009736f0"
+IB3.6: "000000"
+IB4.6: "05e82560"
+IB3.7: "000000"
+IB4.7: "3b1175c0"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+99.5
+IB1.0: "64"
+IB2.0: "0064"
+IB3.0: "000064"
+IB4.0: "00000064"
+IB1.1: "00"
+IB2.1: "03e3"
+IB3.1: "0003e3"
+IB4.1: "000003e3"
+IB1.2: "00"
+IB2.2: "26de"
+IB3.2: "0026de"
+IB4.2: "000026de"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0184ac"
+IB4.3: "000184ac"
+IB2.4: "0000"
+IB3.4: "0f2eb8"
+IB4.4: "000f2eb8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "0097d330"
+IB3.6: "000000"
+IB4.6: "05ee3fe0"
+IB3.7: "000000"
+IB4.7: "3b4e7ec0"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+99.9
+IB1.0: "64"
+IB2.0: "0064"
+IB3.0: "000064"
+IB4.0: "00000064"
+IB1.1: "00"
+IB2.1: "03e7"
+IB3.1: "0003e7"
+IB4.1: "000003e7"
+IB1.2: "00"
+IB2.2: "2706"
+IB3.2: "002706"
+IB4.2: "00002706"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "01863c"
+IB4.3: "0001863c"
+IB2.4: "0000"
+IB3.4: "0f3e58"
+IB4.4: "000f3e58"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00986f70"
+IB3.6: "000000"
+IB4.6: "05f45a60"
+IB3.7: "000000"
+IB4.7: "3b8b87c0"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+100
+IB1.0: "64"
+IB2.0: "0064"
+IB3.0: "000064"
+IB4.0: "00000064"
+IB1.1: "00"
+IB2.1: "03e8"
+IB3.1: "0003e8"
+IB4.1: "000003e8"
+IB1.2: "00"
+IB2.2: "2710"
+IB3.2: "002710"
+IB4.2: "00002710"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "0186a0"
+IB4.3: "000186a0"
+IB2.4: "0000"
+IB3.4: "0f4240"
+IB4.4: "000f4240"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00989680"
+IB3.6: "000000"
+IB4.6: "05f5e100"
+IB3.7: "000000"
+IB4.7: "3b9aca00"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+821237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "0c87f5"
+IB4.0: "000c87f5"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "7d4f92"
+IB4.1: "007d4f92"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "04e51bb4"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "30f31508"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-99.1
+IB1.0: "9d"
+IB2.0: "ff9d"
+IB3.0: "ffff9d"
+IB4.0: "ffffff9d"
+IB1.1: "00"
+IB2.1: "fc21"
+IB3.1: "fffc21"
+IB4.1: "fffffc21"
+IB1.2: "00"
+IB2.2: "d94a"
+IB3.2: "ffd94a"
+IB4.2: "ffffd94a"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "fe7ce4"
+IB4.3: "fffe7ce4"
+IB2.4: "0000"
+IB3.4: "f0e0e8"
+IB4.4: "fff0e0e8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "ff68c910"
+IB3.6: "000000"
+IB4.6: "fa17daa0"
+IB3.7: "000000"
+IB4.7: "c4ee8a40"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-99.5
+IB1.0: "9c"
+IB2.0: "ff9c"
+IB3.0: "ffff9c"
+IB4.0: "ffffff9c"
+IB1.1: "00"
+IB2.1: "fc1d"
+IB3.1: "fffc1d"
+IB4.1: "fffffc1d"
+IB1.2: "00"
+IB2.2: "d922"
+IB3.2: "ffd922"
+IB4.2: "ffffd922"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "fe7b54"
+IB4.3: "fffe7b54"
+IB2.4: "0000"
+IB3.4: "f0d148"
+IB4.4: "fff0d148"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "ff682cd0"
+IB3.6: "000000"
+IB4.6: "fa11c020"
+IB3.7: "000000"
+IB4.7: "c4b18140"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-99.9
+IB1.0: "9c"
+IB2.0: "ff9c"
+IB3.0: "ffff9c"
+IB4.0: "ffffff9c"
+IB1.1: "00"
+IB2.1: "fc19"
+IB3.1: "fffc19"
+IB4.1: "fffffc19"
+IB1.2: "00"
+IB2.2: "d8fa"
+IB3.2: "ffd8fa"
+IB4.2: "ffffd8fa"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "fe79c4"
+IB4.3: "fffe79c4"
+IB2.4: "0000"
+IB3.4: "f0c1a8"
+IB4.4: "fff0c1a8"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "ff679090"
+IB3.6: "000000"
+IB4.6: "fa0ba5a0"
+IB3.7: "000000"
+IB4.7: "c4747840"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-100
+IB1.0: "9c"
+IB2.0: "ff9c"
+IB3.0: "ffff9c"
+IB4.0: "ffffff9c"
+IB1.1: "00"
+IB2.1: "fc18"
+IB3.1: "fffc18"
+IB4.1: "fffffc18"
+IB1.2: "00"
+IB2.2: "d8f0"
+IB3.2: "ffd8f0"
+IB4.2: "ffffd8f0"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "fe7960"
+IB4.3: "fffe7960"
+IB2.4: "0000"
+IB3.4: "f0bdc0"
+IB4.4: "fff0bdc0"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "ff676980"
+IB3.6: "000000"
+IB4.6: "fa0a1f00"
+IB3.7: "000000"
+IB4.7: "c4653600"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-831237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "f350fb"
+IB4.0: "fff350fb"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "8129ce"
+IB4.1: "ff8129ce"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "000000"
+IB4.2: "fb0ba20c"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "ce745478"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "00000000"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+9.1
+IB1.0: "09"
+IB2.0: "0009"
+IB3.0: "000009"
+IB4.0: "00000009"
+IB1.1: "5b"
+IB2.1: "005b"
+IB3.1: "00005b"
+IB4.1: "0000005b"
+IB1.2: "00"
+IB2.2: "038e"
+IB3.2: "00038e"
+IB4.2: "0000038e"
+IB1.3: "00"
+IB2.3: "238c"
+IB3.3: "00238c"
+IB4.3: "0000238c"
+IB2.4: "0000"
+IB3.4: "016378"
+IB4.4: "00016378"
+IB2.5: "0000"
+IB3.5: "0de2b0"
+IB4.5: "000de2b0"
+IB3.6: "000000"
+IB4.6: "008adae0"
+IB3.7: "000000"
+IB4.7: "056c8cc0"
+IB3.8: "000000"
+IB4.8: "363d7f80"
+IB4.9: "00000000"
+IB4.10: "00000000"
+9.5
+IB1.0: "0a"
+IB2.0: "000a"
+IB3.0: "00000a"
+IB4.0: "0000000a"
+IB1.1: "5f"
+IB2.1: "005f"
+IB3.1: "00005f"
+IB4.1: "0000005f"
+IB1.2: "00"
+IB2.2: "03b6"
+IB3.2: "0003b6"
+IB4.2: "000003b6"
+IB1.3: "00"
+IB2.3: "251c"
+IB3.3: "00251c"
+IB4.3: "0000251c"
+IB2.4: "0000"
+IB3.4: "017318"
+IB4.4: "00017318"
+IB2.5: "0000"
+IB3.5: "0e7ef0"
+IB4.5: "000e7ef0"
+IB3.6: "000000"
+IB4.6: "0090f560"
+IB3.7: "000000"
+IB4.7: "05a995c0"
+IB3.8: "000000"
+IB4.8: "389fd980"
+IB4.9: "00000000"
+IB4.10: "00000000"
+9.9
+IB1.0: "0a"
+IB2.0: "000a"
+IB3.0: "00000a"
+IB4.0: "0000000a"
+IB1.1: "63"
+IB2.1: "0063"
+IB3.1: "000063"
+IB4.1: "00000063"
+IB1.2: "00"
+IB2.2: "03de"
+IB3.2: "0003de"
+IB4.2: "000003de"
+IB1.3: "00"
+IB2.3: "26ac"
+IB3.3: "0026ac"
+IB4.3: "000026ac"
+IB2.4: "0000"
+IB3.4: "0182b8"
+IB4.4: "000182b8"
+IB2.5: "0000"
+IB3.5: "0f1b30"
+IB4.5: "000f1b30"
+IB3.6: "000000"
+IB4.6: "00970fe0"
+IB3.7: "000000"
+IB4.7: "05e69ec0"
+IB3.8: "000000"
+IB4.8: "3b023380"
+IB4.9: "00000000"
+IB4.10: "00000000"
+10
+IB1.0: "0a"
+IB2.0: "000a"
+IB3.0: "00000a"
+IB4.0: "0000000a"
+IB1.1: "64"
+IB2.1: "0064"
+IB3.1: "000064"
+IB4.1: "00000064"
+IB1.2: "00"
+IB2.2: "03e8"
+IB3.2: "0003e8"
+IB4.2: "000003e8"
+IB1.3: "00"
+IB2.3: "2710"
+IB3.3: "002710"
+IB4.3: "00002710"
+IB2.4: "0000"
+IB3.4: "0186a0"
+IB4.4: "000186a0"
+IB2.5: "0000"
+IB3.5: "0f4240"
+IB4.5: "000f4240"
+IB3.6: "000000"
+IB4.6: "00989680"
+IB3.7: "000000"
+IB4.7: "05f5e100"
+IB3.8: "000000"
+IB4.8: "3b9aca00"
+IB4.9: "00000000"
+IB4.10: "00000000"
+81237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "013d55"
+IB4.0: "00013d55"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "0c6552"
+IB4.1: "000c6552"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "7bf534"
+IB4.2: "007bf534"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "04d79408"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "306bc850"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-9.1
+IB1.0: "f7"
+IB2.0: "fff7"
+IB3.0: "fffff7"
+IB4.0: "fffffff7"
+IB1.1: "a5"
+IB2.1: "ffa5"
+IB3.1: "ffffa5"
+IB4.1: "ffffffa5"
+IB1.2: "00"
+IB2.2: "fc72"
+IB3.2: "fffc72"
+IB4.2: "fffffc72"
+IB1.3: "00"
+IB2.3: "dc74"
+IB3.3: "ffdc74"
+IB4.3: "ffffdc74"
+IB2.4: "0000"
+IB3.4: "fe9c88"
+IB4.4: "fffe9c88"
+IB2.5: "0000"
+IB3.5: "f21d50"
+IB4.5: "fff21d50"
+IB3.6: "000000"
+IB4.6: "ff752520"
+IB3.7: "000000"
+IB4.7: "fa937340"
+IB3.8: "000000"
+IB4.8: "c9c28080"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-9.5
+IB1.0: "f6"
+IB2.0: "fff6"
+IB3.0: "fffff6"
+IB4.0: "fffffff6"
+IB1.1: "a1"
+IB2.1: "ffa1"
+IB3.1: "ffffa1"
+IB4.1: "ffffffa1"
+IB1.2: "00"
+IB2.2: "fc4a"
+IB3.2: "fffc4a"
+IB4.2: "fffffc4a"
+IB1.3: "00"
+IB2.3: "dae4"
+IB3.3: "ffdae4"
+IB4.3: "ffffdae4"
+IB2.4: "0000"
+IB3.4: "fe8ce8"
+IB4.4: "fffe8ce8"
+IB2.5: "0000"
+IB3.5: "f18110"
+IB4.5: "fff18110"
+IB3.6: "000000"
+IB4.6: "ff6f0aa0"
+IB3.7: "000000"
+IB4.7: "fa566a40"
+IB3.8: "000000"
+IB4.8: "c7602680"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-9.9
+IB1.0: "f6"
+IB2.0: "fff6"
+IB3.0: "fffff6"
+IB4.0: "fffffff6"
+IB1.1: "9d"
+IB2.1: "ff9d"
+IB3.1: "ffff9d"
+IB4.1: "ffffff9d"
+IB1.2: "00"
+IB2.2: "fc22"
+IB3.2: "fffc22"
+IB4.2: "fffffc22"
+IB1.3: "00"
+IB2.3: "d954"
+IB3.3: "ffd954"
+IB4.3: "ffffd954"
+IB2.4: "0000"
+IB3.4: "fe7d48"
+IB4.4: "fffe7d48"
+IB2.5: "0000"
+IB3.5: "f0e4d0"
+IB4.5: "fff0e4d0"
+IB3.6: "000000"
+IB4.6: "ff68f020"
+IB3.7: "000000"
+IB4.7: "fa196140"
+IB3.8: "000000"
+IB4.8: "c4fdcc80"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-10
+IB1.0: "f6"
+IB2.0: "fff6"
+IB3.0: "fffff6"
+IB4.0: "fffffff6"
+IB1.1: "9c"
+IB2.1: "ff9c"
+IB3.1: "ffff9c"
+IB4.1: "ffffff9c"
+IB1.2: "00"
+IB2.2: "fc18"
+IB3.2: "fffc18"
+IB4.2: "fffffc18"
+IB1.3: "00"
+IB2.3: "d8f0"
+IB3.3: "ffd8f0"
+IB4.3: "ffffd8f0"
+IB2.4: "0000"
+IB3.4: "fe7960"
+IB4.4: "fffe7960"
+IB2.5: "0000"
+IB3.5: "f0bdc0"
+IB4.5: "fff0bdc0"
+IB3.6: "000000"
+IB4.6: "ff676980"
+IB3.7: "000000"
+IB4.7: "fa0a1f00"
+IB3.8: "000000"
+IB4.8: "c4653600"
+IB4.9: "00000000"
+IB4.10: "00000000"
+-81237
+IB1.0: "00"
+IB2.0: "0000"
+IB3.0: "fec2ab"
+IB4.0: "fffec2ab"
+IB1.1: "00"
+IB2.1: "0000"
+IB3.1: "f39aae"
+IB4.1: "fff39aae"
+IB1.2: "00"
+IB2.2: "0000"
+IB3.2: "840acc"
+IB4.2: "ff840acc"
+IB1.3: "00"
+IB2.3: "0000"
+IB3.3: "000000"
+IB4.3: "fb286bf8"
+IB2.4: "0000"
+IB3.4: "000000"
+IB4.4: "cf9437b0"
+IB2.5: "0000"
+IB3.5: "000000"
+IB4.5: "00000000"
+IB3.6: "000000"
+IB4.6: "00000000"
+IB3.7: "000000"
+IB4.7: "00000000"
+IB3.8: "000000"
+IB4.8: "00000000"
+IB4.9: "00000000"
+IB4.10: "00000000"
+1.1
+IB1.0: "01"
+IB2.0: "0001"
+IB3.0: "000001"
+IB4.0: "00000001"
+IB1.1: "0b"
+IB2.1: "000b"
+IB3.1: "00000b"
+IB4.1: "0000000b"
+IB1.2: "6e"
+IB2.2: "006e"
+IB3.2: "00006e"
+IB4.2: "0000006e"
+IB1.3: "00"
+IB2.3: "044c"
+IB3.3: "00044c"
+IB4.3: "0000044c"
+IB2.4: "2af8"
+IB3.4: "002af8"
+IB4.4: "00002af8"
+IB2.5: "0000"
+IB3.5: "01adb0"
+IB4.5: "0001adb0"
+IB3.6: "10c8e0"
+IB4.6: "0010c8e0"
+IB3.7: "000000"
+IB4.7: "00a7d8c0"
+IB3.8: "000000"
+IB4.8: "068e7780"
+IB4.9: "4190ab00"
+IB4.10: "00000000"
+-1.1
+IB1.0: "ff"
+IB2.0: "ffff"
+IB3.0: "ffffff"
+IB4.0: "ffffffff"
+IB1.1: "f5"
+IB2.1: "fff5"
+IB3.1: "fffff5"
+IB4.1: "fffffff5"
+IB1.2: "92"
+IB2.2: "ff92"
+IB3.2: "ffff92"
+IB4.2: "ffffff92"
+IB1.3: "00"
+IB2.3: "fbb4"
+IB3.3: "fffbb4"
+IB4.3: "fffffbb4"
+IB2.4: "d508"
+IB3.4: "ffd508"
+IB4.4: "ffffd508"
+IB2.5: "0000"
+IB3.5: "fe5250"
+IB4.5: "fffe5250"
+IB3.6: "ef3720"
+IB4.6: "ffef3720"
+IB3.7: "000000"
+IB4.7: "ff582740"
+IB3.8: "000000"
+IB4.8: "f9718880"
+IB4.9: "be6f5500"
+IB4.10: "00000000"
+1.5
+IB1.0: "02"
+IB2.0: "0002"
+IB3.0: "000002"
+IB4.0: "00000002"
+IB1.1: "0f"
+IB2.1: "000f"
+IB3.1: "00000f"
+IB4.1: "0000000f"
+IB1.2: "00"
+IB2.2: "0096"
+IB3.2: "000096"
+IB4.2: "00000096"
+IB1.3: "00"
+IB2.3: "05dc"
+IB3.3: "0005dc"
+IB4.3: "000005dc"
+IB2.4: "3a98"
+IB3.4: "003a98"
+IB4.4: "00003a98"
+IB2.5: "0000"
+IB3.5: "0249f0"
+IB4.5: "000249f0"
+IB3.6: "16e360"
+IB4.6: "0016e360"
+IB3.7: "000000"
+IB4.7: "00e4e1c0"
+IB3.8: "000000"
+IB4.8: "08f0d180"
+IB4.9: "59682f00"
+IB4.10: "00000000"
+-1.5
+IB1.0: "fe"
+IB2.0: "fffe"
+IB3.0: "fffffe"
+IB4.0: "fffffffe"
+IB1.1: "f1"
+IB2.1: "fff1"
+IB3.1: "fffff1"
+IB4.1: "fffffff1"
+IB1.2: "00"
+IB2.2: "ff6a"
+IB3.2: "ffff6a"
+IB4.2: "ffffff6a"
+IB1.3: "00"
+IB2.3: "fa24"
+IB3.3: "fffa24"
+IB4.3: "fffffa24"
+IB2.4: "c568"
+IB3.4: "ffc568"
+IB4.4: "ffffc568"
+IB2.5: "0000"
+IB3.5: "fdb610"
+IB4.5: "fffdb610"
+IB3.6: "e91ca0"
+IB4.6: "ffe91ca0"
+IB3.7: "000000"
+IB4.7: "ff1b1e40"
+IB3.8: "000000"
+IB4.8: "f70f2e80"
+IB4.9: "a697d100"
+IB4.10: "00000000"
+1.9
+IB1.0: "02"
+IB2.0: "0002"
+IB3.0: "000002"
+IB4.0: "00000002"
+IB1.1: "13"
+IB2.1: "0013"
+IB3.1: "000013"
+IB4.1: "00000013"
+IB1.2: "00"
+IB2.2: "00be"
+IB3.2: "0000be"
+IB4.2: "000000be"
+IB1.3: "00"
+IB2.3: "076c"
+IB3.3: "00076c"
+IB4.3: "0000076c"
+IB2.4: "4a38"
+IB3.4: "004a38"
+IB4.4: "00004a38"
+IB2.5: "0000"
+IB3.5: "02e630"
+IB4.5: "0002e630"
+IB3.6: "1cfde0"
+IB4.6: "001cfde0"
+IB3.7: "000000"
+IB4.7: "0121eac0"
+IB3.8: "000000"
+IB4.8: "0b532b80"
+IB4.9: "713fb300"
+IB4.10: "00000000"
+-1.9
+IB1.0: "fe"
+IB2.0: "fffe"
+IB3.0: "fffffe"
+IB4.0: "fffffffe"
+IB1.1: "ed"
+IB2.1: "ffed"
+IB3.1: "ffffed"
+IB4.1: "ffffffed"
+IB1.2: "00"
+IB2.2: "ff42"
+IB3.2: "ffff42"
+IB4.2: "ffffff42"
+IB1.3: "00"
+IB2.3: "f894"
+IB3.3: "fff894"
+IB4.3: "fffff894"
+IB2.4: "b5c8"
+IB3.4: "ffb5c8"
+IB4.4: "ffffb5c8"
+IB2.5: "0000"
+IB3.5: "fd19d0"
+IB4.5: "fffd19d0"
+IB3.6: "e30220"
+IB4.6: "ffe30220"
+IB3.7: "000000"
+IB4.7: "fede1540"
+IB3.8: "000000"
+IB4.8: "f4acd480"
+IB4.9: "8ec04d00"
+IB4.10: "00000000"
diff --git a/rust/pspp/src/format/testdata/p.txt b/rust/pspp/src/format/testdata/p.txt
new file mode 100644 (file)
index 0000000..87f87bd
--- /dev/null
@@ -0,0 +1,748 @@
+.
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "0000000f"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0000000f"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+2
+P1.0: "2f"
+P2.0: "002f"
+P3.0: "00002f"
+P4.0: "0000002f"
+P2.1: "020f"
+P3.1: "00020f"
+P4.1: "0000020f"
+P3.2: "00200f"
+P4.2: "0000200f"
+P4.3: "0002000f"
+11
+P1.0: "0f"
+P2.0: "011f"
+P3.0: "00011f"
+P4.0: "0000011f"
+P2.1: "110f"
+P3.1: "00110f"
+P4.1: "0000110f"
+P3.2: "01100f"
+P4.2: "0001100f"
+P4.3: "0011000f"
+123
+P1.0: "0f"
+P2.0: "123f"
+P3.0: "00123f"
+P4.0: "0000123f"
+P2.1: "000f"
+P3.1: "01230f"
+P4.1: "0001230f"
+P3.2: "12300f"
+P4.2: "0012300f"
+P4.3: "0123000f"
+1234
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01234f"
+P4.0: "0001234f"
+P2.1: "000f"
+P3.1: "12340f"
+P4.1: "0012340f"
+P3.2: "00000f"
+P4.2: "0123400f"
+P4.3: "1234000f"
+913
+P1.0: "0f"
+P2.0: "913f"
+P3.0: "00913f"
+P4.0: "0000913f"
+P2.1: "000f"
+P3.1: "09130f"
+P4.1: "0009130f"
+P3.2: "91300f"
+P4.2: "0091300f"
+P4.3: "0913000f"
+3.14159
+P1.0: "3f"
+P2.0: "003f"
+P3.0: "00003f"
+P4.0: "0000003f"
+P2.1: "031f"
+P3.1: "00031f"
+P4.1: "0000031f"
+P3.2: "00314f"
+P4.2: "0000314f"
+P4.3: "0003142f"
+777
+P1.0: "0f"
+P2.0: "777f"
+P3.0: "00777f"
+P4.0: "0000777f"
+P2.1: "000f"
+P3.1: "07770f"
+P4.1: "0007770f"
+P3.2: "77700f"
+P4.2: "0077700f"
+P4.3: "0777000f"
+82
+P1.0: "0f"
+P2.0: "082f"
+P3.0: "00082f"
+P4.0: "0000082f"
+P2.1: "820f"
+P3.1: "00820f"
+P4.1: "0000820f"
+P3.2: "08200f"
+P4.2: "0008200f"
+P4.3: "0082000f"
+690
+P1.0: "0f"
+P2.0: "690f"
+P3.0: "00690f"
+P4.0: "0000690f"
+P2.1: "000f"
+P3.1: "06900f"
+P4.1: "0006900f"
+P3.2: "69000f"
+P4.2: "0069000f"
+P4.3: "0690000f"
+-2
+P1.0: "2d"
+P2.0: "002d"
+P3.0: "00002d"
+P4.0: "0000002d"
+P2.1: "020d"
+P3.1: "00020d"
+P4.1: "0000020d"
+P3.2: "00200d"
+P4.2: "0000200d"
+P4.3: "0002000d"
+-11
+P1.0: "0f"
+P2.0: "011d"
+P3.0: "00011d"
+P4.0: "0000011d"
+P2.1: "110d"
+P3.1: "00110d"
+P4.1: "0000110d"
+P3.2: "01100d"
+P4.2: "0001100d"
+P4.3: "0011000d"
+-123
+P1.0: "0f"
+P2.0: "123d"
+P3.0: "00123d"
+P4.0: "0000123d"
+P2.1: "000f"
+P3.1: "01230d"
+P4.1: "0001230d"
+P3.2: "12300d"
+P4.2: "0012300d"
+P4.3: "0123000d"
+-1234
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01234d"
+P4.0: "0001234d"
+P2.1: "000f"
+P3.1: "12340d"
+P4.1: "0012340d"
+P3.2: "00000f"
+P4.2: "0123400d"
+P4.3: "1234000d"
+-913
+P1.0: "0f"
+P2.0: "913d"
+P3.0: "00913d"
+P4.0: "0000913d"
+P2.1: "000f"
+P3.1: "09130d"
+P4.1: "0009130d"
+P3.2: "91300d"
+P4.2: "0091300d"
+P4.3: "0913000d"
+-3.14159
+P1.0: "3d"
+P2.0: "003d"
+P3.0: "00003d"
+P4.0: "0000003d"
+P2.1: "031d"
+P3.1: "00031d"
+P4.1: "0000031d"
+P3.2: "00314d"
+P4.2: "0000314d"
+P4.3: "0003142d"
+-777
+P1.0: "0f"
+P2.0: "777d"
+P3.0: "00777d"
+P4.0: "0000777d"
+P2.1: "000f"
+P3.1: "07770d"
+P4.1: "0007770d"
+P3.2: "77700d"
+P4.2: "0077700d"
+P4.3: "0777000d"
+-82
+P1.0: "0f"
+P2.0: "082d"
+P3.0: "00082d"
+P4.0: "0000082d"
+P2.1: "820d"
+P3.1: "00820d"
+P4.1: "0000820d"
+P3.2: "08200d"
+P4.2: "0008200d"
+P4.3: "0082000d"
+-690
+P1.0: "0f"
+P2.0: "690d"
+P3.0: "00690d"
+P4.0: "0000690d"
+P2.1: "000f"
+P3.1: "06900d"
+P4.1: "0006900d"
+P3.2: "69000d"
+P4.2: "0069000d"
+P4.3: "0690000d"
+-.1
+P1.0: "0d"
+P2.0: "000d"
+P3.0: "00000d"
+P4.0: "0000000d"
+P2.1: "001d"
+P3.1: "00001d"
+P4.1: "0000001d"
+P3.2: "00010d"
+P4.2: "0000010d"
+P4.3: "0000100d"
+-.5
+P1.0: "1d"
+P2.0: "001d"
+P3.0: "00001d"
+P4.0: "0000001d"
+P2.1: "005d"
+P3.1: "00005d"
+P4.1: "0000005d"
+P3.2: "00050d"
+P4.2: "0000050d"
+P4.3: "0000500d"
+-.9
+P1.0: "1d"
+P2.0: "001d"
+P3.0: "00001d"
+P4.0: "0000001d"
+P2.1: "009d"
+P3.1: "00009d"
+P4.1: "0000009d"
+P3.2: "00090d"
+P4.2: "0000090d"
+P4.3: "0000900d"
+9999.1
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "09999f"
+P4.0: "0009999f"
+P2.1: "000f"
+P3.1: "99991f"
+P4.1: "0099991f"
+P3.2: "00000f"
+P4.2: "0999910f"
+P4.3: "9999100f"
+9999.5
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "10000f"
+P4.0: "0010000f"
+P2.1: "000f"
+P3.1: "99995f"
+P4.1: "0099995f"
+P3.2: "00000f"
+P4.2: "0999950f"
+P4.3: "9999500f"
+9999.9
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "10000f"
+P4.0: "0010000f"
+P2.1: "000f"
+P3.1: "99999f"
+P4.1: "0099999f"
+P3.2: "00000f"
+P4.2: "0999990f"
+P4.3: "9999900f"
+10000
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "10000f"
+P4.0: "0010000f"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0100000f"
+P3.2: "00000f"
+P4.2: "1000000f"
+P4.3: "0000000f"
+18231237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "0000000f"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0000000f"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+-9999.1
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "09999d"
+P4.0: "0009999d"
+P2.1: "000f"
+P3.1: "99991d"
+P4.1: "0099991d"
+P3.2: "00000f"
+P4.2: "0999910d"
+P4.3: "9999100d"
+-9999.5
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "10000d"
+P4.0: "0010000d"
+P2.1: "000f"
+P3.1: "99995d"
+P4.1: "0099995d"
+P3.2: "00000f"
+P4.2: "0999950d"
+P4.3: "9999500d"
+-9999.9
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "10000d"
+P4.0: "0010000d"
+P2.1: "000f"
+P3.1: "99999d"
+P4.1: "0099999d"
+P3.2: "00000f"
+P4.2: "0999990d"
+P4.3: "9999900d"
+-10000
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "10000d"
+P4.0: "0010000d"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0100000d"
+P3.2: "00000f"
+P4.2: "1000000d"
+P4.3: "0000000f"
+-8231237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "8231237d"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0000000f"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+999.1
+P1.0: "0f"
+P2.0: "999f"
+P3.0: "00999f"
+P4.0: "0000999f"
+P2.1: "000f"
+P3.1: "09991f"
+P4.1: "0009991f"
+P3.2: "99910f"
+P4.2: "0099910f"
+P4.3: "0999100f"
+999.5
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01000f"
+P4.0: "0001000f"
+P2.1: "000f"
+P3.1: "09995f"
+P4.1: "0009995f"
+P3.2: "99950f"
+P4.2: "0099950f"
+P4.3: "0999500f"
+999.9
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01000f"
+P4.0: "0001000f"
+P2.1: "000f"
+P3.1: "09999f"
+P4.1: "0009999f"
+P3.2: "99990f"
+P4.2: "0099990f"
+P4.3: "0999900f"
+1000
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01000f"
+P4.0: "0001000f"
+P2.1: "000f"
+P3.1: "10000f"
+P4.1: "0010000f"
+P3.2: "00000f"
+P4.2: "0100000f"
+P4.3: "1000000f"
+8231237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "8231237f"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0000000f"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+-999.1
+P1.0: "0f"
+P2.0: "999d"
+P3.0: "00999d"
+P4.0: "0000999d"
+P2.1: "000f"
+P3.1: "09991d"
+P4.1: "0009991d"
+P3.2: "99910d"
+P4.2: "0099910d"
+P4.3: "0999100d"
+-999.5
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01000d"
+P4.0: "0001000d"
+P2.1: "000f"
+P3.1: "09995d"
+P4.1: "0009995d"
+P3.2: "99950d"
+P4.2: "0099950d"
+P4.3: "0999500d"
+-999.9
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01000d"
+P4.0: "0001000d"
+P2.1: "000f"
+P3.1: "09999d"
+P4.1: "0009999d"
+P3.2: "99990d"
+P4.2: "0099990d"
+P4.3: "0999900d"
+-1000
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "01000d"
+P4.0: "0001000d"
+P2.1: "000f"
+P3.1: "10000d"
+P4.1: "0010000d"
+P3.2: "00000f"
+P4.2: "0100000d"
+P4.3: "1000000d"
+-8231237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "8231237d"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0000000f"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+99.1
+P1.0: "0f"
+P2.0: "099f"
+P3.0: "00099f"
+P4.0: "0000099f"
+P2.1: "991f"
+P3.1: "00991f"
+P4.1: "0000991f"
+P3.2: "09910f"
+P4.2: "0009910f"
+P4.3: "0099100f"
+99.5
+P1.0: "0f"
+P2.0: "100f"
+P3.0: "00100f"
+P4.0: "0000100f"
+P2.1: "995f"
+P3.1: "00995f"
+P4.1: "0000995f"
+P3.2: "09950f"
+P4.2: "0009950f"
+P4.3: "0099500f"
+99.9
+P1.0: "0f"
+P2.0: "100f"
+P3.0: "00100f"
+P4.0: "0000100f"
+P2.1: "999f"
+P3.1: "00999f"
+P4.1: "0000999f"
+P3.2: "09990f"
+P4.2: "0009990f"
+P4.3: "0099900f"
+100
+P1.0: "0f"
+P2.0: "100f"
+P3.0: "00100f"
+P4.0: "0000100f"
+P2.1: "000f"
+P3.1: "01000f"
+P4.1: "0001000f"
+P3.2: "10000f"
+P4.2: "0010000f"
+P4.3: "0100000f"
+821237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "0821237f"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "8212370f"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+-99.1
+P1.0: "0f"
+P2.0: "099d"
+P3.0: "00099d"
+P4.0: "0000099d"
+P2.1: "991d"
+P3.1: "00991d"
+P4.1: "0000991d"
+P3.2: "09910d"
+P4.2: "0009910d"
+P4.3: "0099100d"
+-99.5
+P1.0: "0f"
+P2.0: "100d"
+P3.0: "00100d"
+P4.0: "0000100d"
+P2.1: "995d"
+P3.1: "00995d"
+P4.1: "0000995d"
+P3.2: "09950d"
+P4.2: "0009950d"
+P4.3: "0099500d"
+-99.9
+P1.0: "0f"
+P2.0: "100d"
+P3.0: "00100d"
+P4.0: "0000100d"
+P2.1: "999d"
+P3.1: "00999d"
+P4.1: "0000999d"
+P3.2: "09990d"
+P4.2: "0009990d"
+P4.3: "0099900d"
+-100
+P1.0: "0f"
+P2.0: "100d"
+P3.0: "00100d"
+P4.0: "0000100d"
+P2.1: "000f"
+P3.1: "01000d"
+P4.1: "0001000d"
+P3.2: "10000d"
+P4.2: "0010000d"
+P4.3: "0100000d"
+-831237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "00000f"
+P4.0: "0831237d"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "8312370d"
+P3.2: "00000f"
+P4.2: "0000000f"
+P4.3: "0000000f"
+9.1
+P1.0: "9f"
+P2.0: "009f"
+P3.0: "00009f"
+P4.0: "0000009f"
+P2.1: "091f"
+P3.1: "00091f"
+P4.1: "0000091f"
+P3.2: "00910f"
+P4.2: "0000910f"
+P4.3: "0009100f"
+9.5
+P1.0: "0f"
+P2.0: "010f"
+P3.0: "00010f"
+P4.0: "0000010f"
+P2.1: "095f"
+P3.1: "00095f"
+P4.1: "0000095f"
+P3.2: "00950f"
+P4.2: "0000950f"
+P4.3: "0009500f"
+9.9
+P1.0: "0f"
+P2.0: "010f"
+P3.0: "00010f"
+P4.0: "0000010f"
+P2.1: "099f"
+P3.1: "00099f"
+P4.1: "0000099f"
+P3.2: "00990f"
+P4.2: "0000990f"
+P4.3: "0009900f"
+10
+P1.0: "0f"
+P2.0: "010f"
+P3.0: "00010f"
+P4.0: "0000010f"
+P2.1: "100f"
+P3.1: "00100f"
+P4.1: "0000100f"
+P3.2: "01000f"
+P4.2: "0001000f"
+P4.3: "0010000f"
+81237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "81237f"
+P4.0: "0081237f"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0812370f"
+P3.2: "00000f"
+P4.2: "8123700f"
+P4.3: "0000000f"
+-9.1
+P1.0: "9d"
+P2.0: "009d"
+P3.0: "00009d"
+P4.0: "0000009d"
+P2.1: "091d"
+P3.1: "00091d"
+P4.1: "0000091d"
+P3.2: "00910d"
+P4.2: "0000910d"
+P4.3: "0009100d"
+-9.5
+P1.0: "0f"
+P2.0: "010d"
+P3.0: "00010d"
+P4.0: "0000010d"
+P2.1: "095d"
+P3.1: "00095d"
+P4.1: "0000095d"
+P3.2: "00950d"
+P4.2: "0000950d"
+P4.3: "0009500d"
+-9.9
+P1.0: "0f"
+P2.0: "010d"
+P3.0: "00010d"
+P4.0: "0000010d"
+P2.1: "099d"
+P3.1: "00099d"
+P4.1: "0000099d"
+P3.2: "00990d"
+P4.2: "0000990d"
+P4.3: "0009900d"
+-10
+P1.0: "0f"
+P2.0: "010d"
+P3.0: "00010d"
+P4.0: "0000010d"
+P2.1: "100d"
+P3.1: "00100d"
+P4.1: "0000100d"
+P3.2: "01000d"
+P4.2: "0001000d"
+P4.3: "0010000d"
+-81237
+P1.0: "0f"
+P2.0: "000f"
+P3.0: "81237d"
+P4.0: "0081237d"
+P2.1: "000f"
+P3.1: "00000f"
+P4.1: "0812370d"
+P3.2: "00000f"
+P4.2: "8123700d"
+P4.3: "0000000f"
+1.1
+P1.0: "1f"
+P2.0: "001f"
+P3.0: "00001f"
+P4.0: "0000001f"
+P2.1: "011f"
+P3.1: "00011f"
+P4.1: "0000011f"
+P3.2: "00110f"
+P4.2: "0000110f"
+P4.3: "0001100f"
+-1.1
+P1.0: "1d"
+P2.0: "001d"
+P3.0: "00001d"
+P4.0: "0000001d"
+P2.1: "011d"
+P3.1: "00011d"
+P4.1: "0000011d"
+P3.2: "00110d"
+P4.2: "0000110d"
+P4.3: "0001100d"
+1.5
+P1.0: "2f"
+P2.0: "002f"
+P3.0: "00002f"
+P4.0: "0000002f"
+P2.1: "015f"
+P3.1: "00015f"
+P4.1: "0000015f"
+P3.2: "00150f"
+P4.2: "0000150f"
+P4.3: "0001500f"
+-1.5
+P1.0: "2d"
+P2.0: "002d"
+P3.0: "00002d"
+P4.0: "0000002d"
+P2.1: "015d"
+P3.1: "00015d"
+P4.1: "0000015d"
+P3.2: "00150d"
+P4.2: "0000150d"
+P4.3: "0001500d"
+1.9
+P1.0: "2f"
+P2.0: "002f"
+P3.0: "00002f"
+P4.0: "0000002f"
+P2.1: "019f"
+P3.1: "00019f"
+P4.1: "0000019f"
+P3.2: "00190f"
+P4.2: "0000190f"
+P4.3: "0001900f"
+-1.9
+P1.0: "2d"
+P2.0: "002d"
+P3.0: "00002d"
+P4.0: "0000002d"
+P2.1: "019d"
+P3.1: "00019d"
+P4.1: "0000019d"
+P3.2: "00190d"
+P4.2: "0000190d"
+P4.3: "0001900d"
diff --git a/rust/pspp/src/format/testdata/pib.txt b/rust/pspp/src/format/testdata/pib.txt
new file mode 100644 (file)
index 0000000..9b32497
--- /dev/null
@@ -0,0 +1,2108 @@
+.
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+2
+PIB1.0: "02"
+PIB2.0: "0002"
+PIB3.0: "000002"
+PIB4.0: "00000002"
+PIB1.1: "14"
+PIB2.1: "0014"
+PIB3.1: "000014"
+PIB4.1: "00000014"
+PIB1.2: "c8"
+PIB2.2: "00c8"
+PIB3.2: "0000c8"
+PIB4.2: "000000c8"
+PIB1.3: "00"
+PIB2.3: "07d0"
+PIB3.3: "0007d0"
+PIB4.3: "000007d0"
+PIB2.4: "4e20"
+PIB3.4: "004e20"
+PIB4.4: "00004e20"
+PIB2.5: "0000"
+PIB3.5: "030d40"
+PIB4.5: "00030d40"
+PIB3.6: "1e8480"
+PIB4.6: "001e8480"
+PIB3.7: "000000"
+PIB4.7: "01312d00"
+PIB3.8: "000000"
+PIB4.8: "0bebc200"
+PIB4.9: "77359400"
+PIB4.10: "00000000"
+11
+PIB1.0: "0b"
+PIB2.0: "000b"
+PIB3.0: "00000b"
+PIB4.0: "0000000b"
+PIB1.1: "6e"
+PIB2.1: "006e"
+PIB3.1: "00006e"
+PIB4.1: "0000006e"
+PIB1.2: "00"
+PIB2.2: "044c"
+PIB3.2: "00044c"
+PIB4.2: "0000044c"
+PIB1.3: "00"
+PIB2.3: "2af8"
+PIB3.3: "002af8"
+PIB4.3: "00002af8"
+PIB2.4: "0000"
+PIB3.4: "01adb0"
+PIB4.4: "0001adb0"
+PIB2.5: "0000"
+PIB3.5: "10c8e0"
+PIB4.5: "0010c8e0"
+PIB3.6: "a7d8c0"
+PIB4.6: "00a7d8c0"
+PIB3.7: "000000"
+PIB4.7: "068e7780"
+PIB3.8: "000000"
+PIB4.8: "4190ab00"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+123
+PIB1.0: "7b"
+PIB2.0: "007b"
+PIB3.0: "00007b"
+PIB4.0: "0000007b"
+PIB1.1: "00"
+PIB2.1: "04ce"
+PIB3.1: "0004ce"
+PIB4.1: "000004ce"
+PIB1.2: "00"
+PIB2.2: "300c"
+PIB3.2: "00300c"
+PIB4.2: "0000300c"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "01e078"
+PIB4.3: "0001e078"
+PIB2.4: "0000"
+PIB3.4: "12c4b0"
+PIB4.4: "0012c4b0"
+PIB2.5: "0000"
+PIB3.5: "bbaee0"
+PIB4.5: "00bbaee0"
+PIB3.6: "000000"
+PIB4.6: "0754d4c0"
+PIB3.7: "000000"
+PIB4.7: "49504f80"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+1234
+PIB1.0: "00"
+PIB2.0: "04d2"
+PIB3.0: "0004d2"
+PIB4.0: "000004d2"
+PIB1.1: "00"
+PIB2.1: "3034"
+PIB3.1: "003034"
+PIB4.1: "00003034"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "01e208"
+PIB4.2: "0001e208"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "12d450"
+PIB4.3: "0012d450"
+PIB2.4: "0000"
+PIB3.4: "bc4b20"
+PIB4.4: "00bc4b20"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "075aef40"
+PIB3.6: "000000"
+PIB4.6: "498d5880"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+913
+PIB1.0: "00"
+PIB2.0: "0391"
+PIB3.0: "000391"
+PIB4.0: "00000391"
+PIB1.1: "00"
+PIB2.1: "23aa"
+PIB3.1: "0023aa"
+PIB4.1: "000023aa"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "0164a4"
+PIB4.2: "000164a4"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0dee68"
+PIB4.3: "000dee68"
+PIB2.4: "0000"
+PIB3.4: "8b5010"
+PIB4.4: "008b5010"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "057120a0"
+PIB3.6: "000000"
+PIB4.6: "366b4640"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+3.14159
+PIB1.0: "03"
+PIB2.0: "0003"
+PIB3.0: "000003"
+PIB4.0: "00000003"
+PIB1.1: "1f"
+PIB2.1: "001f"
+PIB3.1: "00001f"
+PIB4.1: "0000001f"
+PIB1.2: "00"
+PIB2.2: "013a"
+PIB3.2: "00013a"
+PIB4.2: "0000013a"
+PIB1.3: "00"
+PIB2.3: "0c46"
+PIB3.3: "000c46"
+PIB4.3: "00000c46"
+PIB2.4: "7ab8"
+PIB3.4: "007ab8"
+PIB4.4: "00007ab8"
+PIB2.5: "0000"
+PIB3.5: "04cb2f"
+PIB4.5: "0004cb2f"
+PIB3.6: "2fefd6"
+PIB4.6: "002fefd6"
+PIB3.7: "000000"
+PIB4.7: "01df5e5c"
+PIB3.8: "000000"
+PIB4.8: "12b9af98"
+PIB4.9: "bb40dbf0"
+PIB4.10: "00000000"
+777
+PIB1.0: "00"
+PIB2.0: "0309"
+PIB3.0: "000309"
+PIB4.0: "00000309"
+PIB1.1: "00"
+PIB2.1: "1e5a"
+PIB3.1: "001e5a"
+PIB4.1: "00001e5a"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "012f84"
+PIB4.2: "00012f84"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0bdb28"
+PIB4.3: "000bdb28"
+PIB2.4: "0000"
+PIB3.4: "768f90"
+PIB4.4: "00768f90"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "04a19ba0"
+PIB3.6: "000000"
+PIB4.6: "2e501440"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+82
+PIB1.0: "52"
+PIB2.0: "0052"
+PIB3.0: "000052"
+PIB4.0: "00000052"
+PIB1.1: "00"
+PIB2.1: "0334"
+PIB3.1: "000334"
+PIB4.1: "00000334"
+PIB1.2: "00"
+PIB2.2: "2008"
+PIB3.2: "002008"
+PIB4.2: "00002008"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "014050"
+PIB4.3: "00014050"
+PIB2.4: "0000"
+PIB3.4: "0c8320"
+PIB4.4: "000c8320"
+PIB2.5: "0000"
+PIB3.5: "7d1f40"
+PIB4.5: "007d1f40"
+PIB3.6: "000000"
+PIB4.6: "04e33880"
+PIB3.7: "000000"
+PIB4.7: "30e03500"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+690
+PIB1.0: "00"
+PIB2.0: "02b2"
+PIB3.0: "0002b2"
+PIB4.0: "000002b2"
+PIB1.1: "00"
+PIB2.1: "1af4"
+PIB3.1: "001af4"
+PIB4.1: "00001af4"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "010d88"
+PIB4.2: "00010d88"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0a8750"
+PIB4.3: "000a8750"
+PIB2.4: "0000"
+PIB3.4: "694920"
+PIB4.4: "00694920"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "041cdb40"
+PIB3.6: "000000"
+PIB4.6: "29209080"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-2
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-11
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-123
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-1234
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-913
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-3.14159
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-777
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-82
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-690
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-.1
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-.5
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-.9
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+9999.1
+PIB1.0: "00"
+PIB2.0: "270f"
+PIB3.0: "00270f"
+PIB4.0: "0000270f"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "018697"
+PIB4.1: "00018697"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "0f41e6"
+PIB4.2: "000f41e6"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "9892fc"
+PIB4.3: "009892fc"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "05f5bdd8"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "3b996a70"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+9999.5
+PIB1.0: "00"
+PIB2.0: "2710"
+PIB3.0: "002710"
+PIB4.0: "00002710"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "01869b"
+PIB4.1: "0001869b"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "0f420e"
+PIB4.2: "000f420e"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "98948c"
+PIB4.3: "0098948c"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "05f5cd78"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "3b9a06b0"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+9999.9
+PIB1.0: "00"
+PIB2.0: "2710"
+PIB3.0: "002710"
+PIB4.0: "00002710"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "01869f"
+PIB4.1: "0001869f"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "0f4236"
+PIB4.2: "000f4236"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "98961c"
+PIB4.3: "0098961c"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "05f5dd18"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "3b9aa2f0"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+10000
+PIB1.0: "00"
+PIB2.0: "2710"
+PIB3.0: "002710"
+PIB4.0: "00002710"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "0186a0"
+PIB4.1: "000186a0"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "0f4240"
+PIB4.2: "000f4240"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "989680"
+PIB4.3: "00989680"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "05f5e100"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "3b9aca00"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+18231237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "01162fc5"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "0addddb2"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "6caaa8f4"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-9999.1
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-9999.5
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-9999.9
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-10000
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-8231237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+999.1
+PIB1.0: "00"
+PIB2.0: "03e7"
+PIB3.0: "0003e7"
+PIB4.0: "000003e7"
+PIB1.1: "00"
+PIB2.1: "2707"
+PIB3.1: "002707"
+PIB4.1: "00002707"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "018646"
+PIB4.2: "00018646"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0f3ebc"
+PIB4.3: "000f3ebc"
+PIB2.4: "0000"
+PIB3.4: "987358"
+PIB4.4: "00987358"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "05f48170"
+PIB3.6: "000000"
+PIB4.6: "3b8d0e60"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+999.5
+PIB1.0: "00"
+PIB2.0: "03e8"
+PIB3.0: "0003e8"
+PIB4.0: "000003e8"
+PIB1.1: "00"
+PIB2.1: "270b"
+PIB3.1: "00270b"
+PIB4.1: "0000270b"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "01866e"
+PIB4.2: "0001866e"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0f404c"
+PIB4.3: "000f404c"
+PIB2.4: "0000"
+PIB3.4: "9882f8"
+PIB4.4: "009882f8"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "05f51db0"
+PIB3.6: "000000"
+PIB4.6: "3b9328e0"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+999.9
+PIB1.0: "00"
+PIB2.0: "03e8"
+PIB3.0: "0003e8"
+PIB4.0: "000003e8"
+PIB1.1: "00"
+PIB2.1: "270f"
+PIB3.1: "00270f"
+PIB4.1: "0000270f"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "018696"
+PIB4.2: "00018696"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0f41dc"
+PIB4.3: "000f41dc"
+PIB2.4: "0000"
+PIB3.4: "989298"
+PIB4.4: "00989298"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "05f5b9f0"
+PIB3.6: "000000"
+PIB4.6: "3b994360"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+1000
+PIB1.0: "00"
+PIB2.0: "03e8"
+PIB3.0: "0003e8"
+PIB4.0: "000003e8"
+PIB1.1: "00"
+PIB2.1: "2710"
+PIB3.1: "002710"
+PIB4.1: "00002710"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "0186a0"
+PIB4.2: "000186a0"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0f4240"
+PIB4.3: "000f4240"
+PIB2.4: "0000"
+PIB3.4: "989680"
+PIB4.4: "00989680"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "05f5e100"
+PIB3.6: "000000"
+PIB4.6: "3b9aca00"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+8231237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "7d9945"
+PIB4.0: "007d9945"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "04e7fcb2"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "310fdef4"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-999.1
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-999.5
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-999.9
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-1000
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-8231237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+99.1
+PIB1.0: "63"
+PIB2.0: "0063"
+PIB3.0: "000063"
+PIB4.0: "00000063"
+PIB1.1: "00"
+PIB2.1: "03df"
+PIB3.1: "0003df"
+PIB4.1: "000003df"
+PIB1.2: "00"
+PIB2.2: "26b6"
+PIB3.2: "0026b6"
+PIB4.2: "000026b6"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "01831c"
+PIB4.3: "0001831c"
+PIB2.4: "0000"
+PIB3.4: "0f1f18"
+PIB4.4: "000f1f18"
+PIB2.5: "0000"
+PIB3.5: "9736f0"
+PIB4.5: "009736f0"
+PIB3.6: "000000"
+PIB4.6: "05e82560"
+PIB3.7: "000000"
+PIB4.7: "3b1175c0"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+99.5
+PIB1.0: "64"
+PIB2.0: "0064"
+PIB3.0: "000064"
+PIB4.0: "00000064"
+PIB1.1: "00"
+PIB2.1: "03e3"
+PIB3.1: "0003e3"
+PIB4.1: "000003e3"
+PIB1.2: "00"
+PIB2.2: "26de"
+PIB3.2: "0026de"
+PIB4.2: "000026de"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0184ac"
+PIB4.3: "000184ac"
+PIB2.4: "0000"
+PIB3.4: "0f2eb8"
+PIB4.4: "000f2eb8"
+PIB2.5: "0000"
+PIB3.5: "97d330"
+PIB4.5: "0097d330"
+PIB3.6: "000000"
+PIB4.6: "05ee3fe0"
+PIB3.7: "000000"
+PIB4.7: "3b4e7ec0"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+99.9
+PIB1.0: "64"
+PIB2.0: "0064"
+PIB3.0: "000064"
+PIB4.0: "00000064"
+PIB1.1: "00"
+PIB2.1: "03e7"
+PIB3.1: "0003e7"
+PIB4.1: "000003e7"
+PIB1.2: "00"
+PIB2.2: "2706"
+PIB3.2: "002706"
+PIB4.2: "00002706"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "01863c"
+PIB4.3: "0001863c"
+PIB2.4: "0000"
+PIB3.4: "0f3e58"
+PIB4.4: "000f3e58"
+PIB2.5: "0000"
+PIB3.5: "986f70"
+PIB4.5: "00986f70"
+PIB3.6: "000000"
+PIB4.6: "05f45a60"
+PIB3.7: "000000"
+PIB4.7: "3b8b87c0"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+100
+PIB1.0: "64"
+PIB2.0: "0064"
+PIB3.0: "000064"
+PIB4.0: "00000064"
+PIB1.1: "00"
+PIB2.1: "03e8"
+PIB3.1: "0003e8"
+PIB4.1: "000003e8"
+PIB1.2: "00"
+PIB2.2: "2710"
+PIB3.2: "002710"
+PIB4.2: "00002710"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "0186a0"
+PIB4.3: "000186a0"
+PIB2.4: "0000"
+PIB3.4: "0f4240"
+PIB4.4: "000f4240"
+PIB2.5: "0000"
+PIB3.5: "989680"
+PIB4.5: "00989680"
+PIB3.6: "000000"
+PIB4.6: "05f5e100"
+PIB3.7: "000000"
+PIB4.7: "3b9aca00"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+821237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "0c87f5"
+PIB4.0: "000c87f5"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "7d4f92"
+PIB4.1: "007d4f92"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "04e51bb4"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "30f31508"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-99.1
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-99.5
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-99.9
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-100
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-831237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+9.1
+PIB1.0: "09"
+PIB2.0: "0009"
+PIB3.0: "000009"
+PIB4.0: "00000009"
+PIB1.1: "5b"
+PIB2.1: "005b"
+PIB3.1: "00005b"
+PIB4.1: "0000005b"
+PIB1.2: "00"
+PIB2.2: "038e"
+PIB3.2: "00038e"
+PIB4.2: "0000038e"
+PIB1.3: "00"
+PIB2.3: "238c"
+PIB3.3: "00238c"
+PIB4.3: "0000238c"
+PIB2.4: "0000"
+PIB3.4: "016378"
+PIB4.4: "00016378"
+PIB2.5: "0000"
+PIB3.5: "0de2b0"
+PIB4.5: "000de2b0"
+PIB3.6: "8adae0"
+PIB4.6: "008adae0"
+PIB3.7: "000000"
+PIB4.7: "056c8cc0"
+PIB3.8: "000000"
+PIB4.8: "363d7f80"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+9.5
+PIB1.0: "0a"
+PIB2.0: "000a"
+PIB3.0: "00000a"
+PIB4.0: "0000000a"
+PIB1.1: "5f"
+PIB2.1: "005f"
+PIB3.1: "00005f"
+PIB4.1: "0000005f"
+PIB1.2: "00"
+PIB2.2: "03b6"
+PIB3.2: "0003b6"
+PIB4.2: "000003b6"
+PIB1.3: "00"
+PIB2.3: "251c"
+PIB3.3: "00251c"
+PIB4.3: "0000251c"
+PIB2.4: "0000"
+PIB3.4: "017318"
+PIB4.4: "00017318"
+PIB2.5: "0000"
+PIB3.5: "0e7ef0"
+PIB4.5: "000e7ef0"
+PIB3.6: "90f560"
+PIB4.6: "0090f560"
+PIB3.7: "000000"
+PIB4.7: "05a995c0"
+PIB3.8: "000000"
+PIB4.8: "389fd980"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+9.9
+PIB1.0: "0a"
+PIB2.0: "000a"
+PIB3.0: "00000a"
+PIB4.0: "0000000a"
+PIB1.1: "63"
+PIB2.1: "0063"
+PIB3.1: "000063"
+PIB4.1: "00000063"
+PIB1.2: "00"
+PIB2.2: "03de"
+PIB3.2: "0003de"
+PIB4.2: "000003de"
+PIB1.3: "00"
+PIB2.3: "26ac"
+PIB3.3: "0026ac"
+PIB4.3: "000026ac"
+PIB2.4: "0000"
+PIB3.4: "0182b8"
+PIB4.4: "000182b8"
+PIB2.5: "0000"
+PIB3.5: "0f1b30"
+PIB4.5: "000f1b30"
+PIB3.6: "970fe0"
+PIB4.6: "00970fe0"
+PIB3.7: "000000"
+PIB4.7: "05e69ec0"
+PIB3.8: "000000"
+PIB4.8: "3b023380"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+10
+PIB1.0: "0a"
+PIB2.0: "000a"
+PIB3.0: "00000a"
+PIB4.0: "0000000a"
+PIB1.1: "64"
+PIB2.1: "0064"
+PIB3.1: "000064"
+PIB4.1: "00000064"
+PIB1.2: "00"
+PIB2.2: "03e8"
+PIB3.2: "0003e8"
+PIB4.2: "000003e8"
+PIB1.3: "00"
+PIB2.3: "2710"
+PIB3.3: "002710"
+PIB4.3: "00002710"
+PIB2.4: "0000"
+PIB3.4: "0186a0"
+PIB4.4: "000186a0"
+PIB2.5: "0000"
+PIB3.5: "0f4240"
+PIB4.5: "000f4240"
+PIB3.6: "989680"
+PIB4.6: "00989680"
+PIB3.7: "000000"
+PIB4.7: "05f5e100"
+PIB3.8: "000000"
+PIB4.8: "3b9aca00"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+81237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "013d55"
+PIB4.0: "00013d55"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "0c6552"
+PIB4.1: "000c6552"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "7bf534"
+PIB4.2: "007bf534"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "04d79408"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "306bc850"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-9.1
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-9.5
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-9.9
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-10
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+-81237
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+1.1
+PIB1.0: "01"
+PIB2.0: "0001"
+PIB3.0: "000001"
+PIB4.0: "00000001"
+PIB1.1: "0b"
+PIB2.1: "000b"
+PIB3.1: "00000b"
+PIB4.1: "0000000b"
+PIB1.2: "6e"
+PIB2.2: "006e"
+PIB3.2: "00006e"
+PIB4.2: "0000006e"
+PIB1.3: "00"
+PIB2.3: "044c"
+PIB3.3: "00044c"
+PIB4.3: "0000044c"
+PIB2.4: "2af8"
+PIB3.4: "002af8"
+PIB4.4: "00002af8"
+PIB2.5: "0000"
+PIB3.5: "01adb0"
+PIB4.5: "0001adb0"
+PIB3.6: "10c8e0"
+PIB4.6: "0010c8e0"
+PIB3.7: "a7d8c0"
+PIB4.7: "00a7d8c0"
+PIB3.8: "000000"
+PIB4.8: "068e7780"
+PIB4.9: "4190ab00"
+PIB4.10: "00000000"
+-1.1
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+1.5
+PIB1.0: "02"
+PIB2.0: "0002"
+PIB3.0: "000002"
+PIB4.0: "00000002"
+PIB1.1: "0f"
+PIB2.1: "000f"
+PIB3.1: "00000f"
+PIB4.1: "0000000f"
+PIB1.2: "96"
+PIB2.2: "0096"
+PIB3.2: "000096"
+PIB4.2: "00000096"
+PIB1.3: "00"
+PIB2.3: "05dc"
+PIB3.3: "0005dc"
+PIB4.3: "000005dc"
+PIB2.4: "3a98"
+PIB3.4: "003a98"
+PIB4.4: "00003a98"
+PIB2.5: "0000"
+PIB3.5: "0249f0"
+PIB4.5: "000249f0"
+PIB3.6: "16e360"
+PIB4.6: "0016e360"
+PIB3.7: "e4e1c0"
+PIB4.7: "00e4e1c0"
+PIB3.8: "000000"
+PIB4.8: "08f0d180"
+PIB4.9: "59682f00"
+PIB4.10: "00000000"
+-1.5
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
+1.9
+PIB1.0: "02"
+PIB2.0: "0002"
+PIB3.0: "000002"
+PIB4.0: "00000002"
+PIB1.1: "13"
+PIB2.1: "0013"
+PIB3.1: "000013"
+PIB4.1: "00000013"
+PIB1.2: "be"
+PIB2.2: "00be"
+PIB3.2: "0000be"
+PIB4.2: "000000be"
+PIB1.3: "00"
+PIB2.3: "076c"
+PIB3.3: "00076c"
+PIB4.3: "0000076c"
+PIB2.4: "4a38"
+PIB3.4: "004a38"
+PIB4.4: "00004a38"
+PIB2.5: "0000"
+PIB3.5: "02e630"
+PIB4.5: "0002e630"
+PIB3.6: "1cfde0"
+PIB4.6: "001cfde0"
+PIB3.7: "000000"
+PIB4.7: "0121eac0"
+PIB3.8: "000000"
+PIB4.8: "0b532b80"
+PIB4.9: "713fb300"
+PIB4.10: "00000000"
+-1.9
+PIB1.0: "00"
+PIB2.0: "0000"
+PIB3.0: "000000"
+PIB4.0: "00000000"
+PIB1.1: "00"
+PIB2.1: "0000"
+PIB3.1: "000000"
+PIB4.1: "00000000"
+PIB1.2: "00"
+PIB2.2: "0000"
+PIB3.2: "000000"
+PIB4.2: "00000000"
+PIB1.3: "00"
+PIB2.3: "0000"
+PIB3.3: "000000"
+PIB4.3: "00000000"
+PIB2.4: "0000"
+PIB3.4: "000000"
+PIB4.4: "00000000"
+PIB2.5: "0000"
+PIB3.5: "000000"
+PIB4.5: "00000000"
+PIB3.6: "000000"
+PIB4.6: "00000000"
+PIB3.7: "000000"
+PIB4.7: "00000000"
+PIB3.8: "000000"
+PIB4.8: "00000000"
+PIB4.9: "00000000"
+PIB4.10: "00000000"
diff --git a/rust/pspp/src/format/testdata/pibhex.txt b/rust/pspp/src/format/testdata/pibhex.txt
new file mode 100644 (file)
index 0000000..4c6a9de
--- /dev/null
@@ -0,0 +1,340 @@
+.
+PIBHEX2: "b'  '"
+PIBHEX4: "b'    '"
+PIBHEX6: "b'      '"
+PIBHEX8: "b'        '"
+2
+PIBHEX2: "b'02'"
+PIBHEX4: "b'0002'"
+PIBHEX6: "b'000002'"
+PIBHEX8: "b'00000002'"
+11
+PIBHEX2: "b'0B'"
+PIBHEX4: "b'000B'"
+PIBHEX6: "b'00000B'"
+PIBHEX8: "b'0000000B'"
+123
+PIBHEX2: "b'7B'"
+PIBHEX4: "b'007B'"
+PIBHEX6: "b'00007B'"
+PIBHEX8: "b'0000007B'"
+1234
+PIBHEX2: "b'**'"
+PIBHEX4: "b'04D2'"
+PIBHEX6: "b'0004D2'"
+PIBHEX8: "b'000004D2'"
+913
+PIBHEX2: "b'**'"
+PIBHEX4: "b'0391'"
+PIBHEX6: "b'000391'"
+PIBHEX8: "b'00000391'"
+3.14159
+PIBHEX2: "b'03'"
+PIBHEX4: "b'0003'"
+PIBHEX6: "b'000003'"
+PIBHEX8: "b'00000003'"
+777
+PIBHEX2: "b'**'"
+PIBHEX4: "b'0309'"
+PIBHEX6: "b'000309'"
+PIBHEX8: "b'00000309'"
+82
+PIBHEX2: "b'52'"
+PIBHEX4: "b'0052'"
+PIBHEX6: "b'000052'"
+PIBHEX8: "b'00000052'"
+690
+PIBHEX2: "b'**'"
+PIBHEX4: "b'02B2'"
+PIBHEX6: "b'0002B2'"
+PIBHEX8: "b'000002B2'"
+-2
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-11
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-123
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-1234
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-913
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-3.14159
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-777
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-82
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-690
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+9999.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'270F'"
+PIBHEX6: "b'00270F'"
+PIBHEX8: "b'0000270F'"
+9999.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'2710'"
+PIBHEX6: "b'002710'"
+PIBHEX8: "b'00002710'"
+9999.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'2710'"
+PIBHEX6: "b'002710'"
+PIBHEX8: "b'00002710'"
+10000
+PIBHEX2: "b'**'"
+PIBHEX4: "b'2710'"
+PIBHEX6: "b'002710'"
+PIBHEX8: "b'00002710'"
+18231237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'01162FC5'"
+-9999.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-9999.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-9999.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-10000
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-8231237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+999.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'03E7'"
+PIBHEX6: "b'0003E7'"
+PIBHEX8: "b'000003E7'"
+999.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'03E8'"
+PIBHEX6: "b'0003E8'"
+PIBHEX8: "b'000003E8'"
+999.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'03E8'"
+PIBHEX6: "b'0003E8'"
+PIBHEX8: "b'000003E8'"
+1000
+PIBHEX2: "b'**'"
+PIBHEX4: "b'03E8'"
+PIBHEX6: "b'0003E8'"
+PIBHEX8: "b'000003E8'"
+8231237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'7D9945'"
+PIBHEX8: "b'007D9945'"
+-999.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-999.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-999.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-1000
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-8231237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+99.1
+PIBHEX2: "b'63'"
+PIBHEX4: "b'0063'"
+PIBHEX6: "b'000063'"
+PIBHEX8: "b'00000063'"
+99.5
+PIBHEX2: "b'64'"
+PIBHEX4: "b'0064'"
+PIBHEX6: "b'000064'"
+PIBHEX8: "b'00000064'"
+99.9
+PIBHEX2: "b'64'"
+PIBHEX4: "b'0064'"
+PIBHEX6: "b'000064'"
+PIBHEX8: "b'00000064'"
+100
+PIBHEX2: "b'64'"
+PIBHEX4: "b'0064'"
+PIBHEX6: "b'000064'"
+PIBHEX8: "b'00000064'"
+821237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'0C87F5'"
+PIBHEX8: "b'000C87F5'"
+-99.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-99.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-99.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-100
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-831237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+9.1
+PIBHEX2: "b'09'"
+PIBHEX4: "b'0009'"
+PIBHEX6: "b'000009'"
+PIBHEX8: "b'00000009'"
+9.5
+PIBHEX2: "b'0A'"
+PIBHEX4: "b'000A'"
+PIBHEX6: "b'00000A'"
+PIBHEX8: "b'0000000A'"
+9.9
+PIBHEX2: "b'0A'"
+PIBHEX4: "b'000A'"
+PIBHEX6: "b'00000A'"
+PIBHEX8: "b'0000000A'"
+10
+PIBHEX2: "b'0A'"
+PIBHEX4: "b'000A'"
+PIBHEX6: "b'00000A'"
+PIBHEX8: "b'0000000A'"
+81237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'013D55'"
+PIBHEX8: "b'00013D55'"
+-9.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-9.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-9.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-10
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+-81237
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+1.1
+PIBHEX2: "b'01'"
+PIBHEX4: "b'0001'"
+PIBHEX6: "b'000001'"
+PIBHEX8: "b'00000001'"
+-1.1
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+1.5
+PIBHEX2: "b'02'"
+PIBHEX4: "b'0002'"
+PIBHEX6: "b'000002'"
+PIBHEX8: "b'00000002'"
+-1.5
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
+1.9
+PIBHEX2: "b'02'"
+PIBHEX4: "b'0002'"
+PIBHEX6: "b'000002'"
+PIBHEX8: "b'00000002'"
+-1.9
+PIBHEX2: "b'**'"
+PIBHEX4: "b'****'"
+PIBHEX6: "b'******'"
+PIBHEX8: "b'********'"
diff --git a/rust/pspp/src/format/testdata/pk.txt b/rust/pspp/src/format/testdata/pk.txt
new file mode 100644 (file)
index 0000000..f521e81
--- /dev/null
@@ -0,0 +1,748 @@
+.
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+2
+PK1.0: "02"
+PK2.0: "0002"
+PK3.0: "000002"
+PK4.0: "00000002"
+PK2.1: "0020"
+PK3.1: "000020"
+PK4.1: "00000020"
+PK3.2: "000200"
+PK4.2: "00000200"
+PK4.3: "00002000"
+11
+PK1.0: "11"
+PK2.0: "0011"
+PK3.0: "000011"
+PK4.0: "00000011"
+PK2.1: "0110"
+PK3.1: "000110"
+PK4.1: "00000110"
+PK3.2: "001100"
+PK4.2: "00001100"
+PK4.3: "00011000"
+123
+PK1.0: "00"
+PK2.0: "0123"
+PK3.0: "000123"
+PK4.0: "00000123"
+PK2.1: "1230"
+PK3.1: "001230"
+PK4.1: "00001230"
+PK3.2: "012300"
+PK4.2: "00012300"
+PK4.3: "00123000"
+1234
+PK1.0: "00"
+PK2.0: "1234"
+PK3.0: "001234"
+PK4.0: "00001234"
+PK2.1: "0000"
+PK3.1: "012340"
+PK4.1: "00012340"
+PK3.2: "123400"
+PK4.2: "00123400"
+PK4.3: "01234000"
+913
+PK1.0: "00"
+PK2.0: "0913"
+PK3.0: "000913"
+PK4.0: "00000913"
+PK2.1: "9130"
+PK3.1: "009130"
+PK4.1: "00009130"
+PK3.2: "091300"
+PK4.2: "00091300"
+PK4.3: "00913000"
+3.14159
+PK1.0: "03"
+PK2.0: "0003"
+PK3.0: "000003"
+PK4.0: "00000003"
+PK2.1: "0031"
+PK3.1: "000031"
+PK4.1: "00000031"
+PK3.2: "000314"
+PK4.2: "00000314"
+PK4.3: "00003142"
+777
+PK1.0: "00"
+PK2.0: "0777"
+PK3.0: "000777"
+PK4.0: "00000777"
+PK2.1: "7770"
+PK3.1: "007770"
+PK4.1: "00007770"
+PK3.2: "077700"
+PK4.2: "00077700"
+PK4.3: "00777000"
+82
+PK1.0: "82"
+PK2.0: "0082"
+PK3.0: "000082"
+PK4.0: "00000082"
+PK2.1: "0820"
+PK3.1: "000820"
+PK4.1: "00000820"
+PK3.2: "008200"
+PK4.2: "00008200"
+PK4.3: "00082000"
+690
+PK1.0: "00"
+PK2.0: "0690"
+PK3.0: "000690"
+PK4.0: "00000690"
+PK2.1: "6900"
+PK3.1: "006900"
+PK4.1: "00006900"
+PK3.2: "069000"
+PK4.2: "00069000"
+PK4.3: "00690000"
+-2
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-11
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-123
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-1234
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-913
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-3.14159
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-777
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-82
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-690
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-.1
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+9999.1
+PK1.0: "00"
+PK2.0: "9999"
+PK3.0: "009999"
+PK4.0: "00009999"
+PK2.1: "0000"
+PK3.1: "099991"
+PK4.1: "00099991"
+PK3.2: "999910"
+PK4.2: "00999910"
+PK4.3: "09999100"
+9999.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "010000"
+PK4.0: "00010000"
+PK2.1: "0000"
+PK3.1: "099995"
+PK4.1: "00099995"
+PK3.2: "999950"
+PK4.2: "00999950"
+PK4.3: "09999500"
+9999.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "010000"
+PK4.0: "00010000"
+PK2.1: "0000"
+PK3.1: "099999"
+PK4.1: "00099999"
+PK3.2: "999990"
+PK4.2: "00999990"
+PK4.3: "09999900"
+10000
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "010000"
+PK4.0: "00010000"
+PK2.1: "0000"
+PK3.1: "100000"
+PK4.1: "00100000"
+PK3.2: "000000"
+PK4.2: "01000000"
+PK4.3: "10000000"
+18231237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "18231237"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-9999.1
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-9999.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-9999.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-10000
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-8231237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+999.1
+PK1.0: "00"
+PK2.0: "0999"
+PK3.0: "000999"
+PK4.0: "00000999"
+PK2.1: "9991"
+PK3.1: "009991"
+PK4.1: "00009991"
+PK3.2: "099910"
+PK4.2: "00099910"
+PK4.3: "00999100"
+999.5
+PK1.0: "00"
+PK2.0: "1000"
+PK3.0: "001000"
+PK4.0: "00001000"
+PK2.1: "9995"
+PK3.1: "009995"
+PK4.1: "00009995"
+PK3.2: "099950"
+PK4.2: "00099950"
+PK4.3: "00999500"
+999.9
+PK1.0: "00"
+PK2.0: "1000"
+PK3.0: "001000"
+PK4.0: "00001000"
+PK2.1: "9999"
+PK3.1: "009999"
+PK4.1: "00009999"
+PK3.2: "099990"
+PK4.2: "00099990"
+PK4.3: "00999900"
+1000
+PK1.0: "00"
+PK2.0: "1000"
+PK3.0: "001000"
+PK4.0: "00001000"
+PK2.1: "0000"
+PK3.1: "010000"
+PK4.1: "00010000"
+PK3.2: "100000"
+PK4.2: "00100000"
+PK4.3: "01000000"
+8231237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "08231237"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "82312370"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-999.1
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-999.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-999.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-1000
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-8231237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+99.1
+PK1.0: "99"
+PK2.0: "0099"
+PK3.0: "000099"
+PK4.0: "00000099"
+PK2.1: "0991"
+PK3.1: "000991"
+PK4.1: "00000991"
+PK3.2: "009910"
+PK4.2: "00009910"
+PK4.3: "00099100"
+99.5
+PK1.0: "00"
+PK2.0: "0100"
+PK3.0: "000100"
+PK4.0: "00000100"
+PK2.1: "0995"
+PK3.1: "000995"
+PK4.1: "00000995"
+PK3.2: "009950"
+PK4.2: "00009950"
+PK4.3: "00099500"
+99.9
+PK1.0: "00"
+PK2.0: "0100"
+PK3.0: "000100"
+PK4.0: "00000100"
+PK2.1: "0999"
+PK3.1: "000999"
+PK4.1: "00000999"
+PK3.2: "009990"
+PK4.2: "00009990"
+PK4.3: "00099900"
+100
+PK1.0: "00"
+PK2.0: "0100"
+PK3.0: "000100"
+PK4.0: "00000100"
+PK2.1: "1000"
+PK3.1: "001000"
+PK4.1: "00001000"
+PK3.2: "010000"
+PK4.2: "00010000"
+PK4.3: "00100000"
+821237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "821237"
+PK4.0: "00821237"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "08212370"
+PK3.2: "000000"
+PK4.2: "82123700"
+PK4.3: "00000000"
+-99.1
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-99.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-99.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-100
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-831237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+9.1
+PK1.0: "09"
+PK2.0: "0009"
+PK3.0: "000009"
+PK4.0: "00000009"
+PK2.1: "0091"
+PK3.1: "000091"
+PK4.1: "00000091"
+PK3.2: "000910"
+PK4.2: "00000910"
+PK4.3: "00009100"
+9.5
+PK1.0: "10"
+PK2.0: "0010"
+PK3.0: "000010"
+PK4.0: "00000010"
+PK2.1: "0095"
+PK3.1: "000095"
+PK4.1: "00000095"
+PK3.2: "000950"
+PK4.2: "00000950"
+PK4.3: "00009500"
+9.9
+PK1.0: "10"
+PK2.0: "0010"
+PK3.0: "000010"
+PK4.0: "00000010"
+PK2.1: "0099"
+PK3.1: "000099"
+PK4.1: "00000099"
+PK3.2: "000990"
+PK4.2: "00000990"
+PK4.3: "00009900"
+10
+PK1.0: "10"
+PK2.0: "0010"
+PK3.0: "000010"
+PK4.0: "00000010"
+PK2.1: "0100"
+PK3.1: "000100"
+PK4.1: "00000100"
+PK3.2: "001000"
+PK4.2: "00001000"
+PK4.3: "00010000"
+81237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "081237"
+PK4.0: "00081237"
+PK2.1: "0000"
+PK3.1: "812370"
+PK4.1: "00812370"
+PK3.2: "000000"
+PK4.2: "08123700"
+PK4.3: "81237000"
+-9.1
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-9.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-9.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-10
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+-81237
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+1.1
+PK1.0: "01"
+PK2.0: "0001"
+PK3.0: "000001"
+PK4.0: "00000001"
+PK2.1: "0011"
+PK3.1: "000011"
+PK4.1: "00000011"
+PK3.2: "000110"
+PK4.2: "00000110"
+PK4.3: "00001100"
+-1.1
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+1.5
+PK1.0: "02"
+PK2.0: "0002"
+PK3.0: "000002"
+PK4.0: "00000002"
+PK2.1: "0015"
+PK3.1: "000015"
+PK4.1: "00000015"
+PK3.2: "000150"
+PK4.2: "00000150"
+PK4.3: "00001500"
+-1.5
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
+1.9
+PK1.0: "02"
+PK2.0: "0002"
+PK3.0: "000002"
+PK4.0: "00000002"
+PK2.1: "0019"
+PK3.1: "000019"
+PK4.1: "00000019"
+PK3.2: "000190"
+PK4.2: "00000190"
+PK4.3: "00001900"
+-1.9
+PK1.0: "00"
+PK2.0: "0000"
+PK3.0: "000000"
+PK4.0: "00000000"
+PK2.1: "0000"
+PK3.1: "000000"
+PK4.1: "00000000"
+PK3.2: "000000"
+PK4.2: "00000000"
+PK4.3: "00000000"
diff --git a/rust/pspp/src/format/testdata/split-binhex-out.expected.py b/rust/pspp/src/format/testdata/split-binhex-out.expected.py
new file mode 100644 (file)
index 0000000..c7d5e87
--- /dev/null
@@ -0,0 +1,107 @@
+#! /usr/bin/python3
+
+import sys
+import pathlib
+
+outputs = {}
+for format in ["P", "PK", "IB", "PIB", "PIBHEX"]:
+    outputs[format] = open(format.lower() + '.txt', 'w')
+
+values = [
+    ".",
+    "2",
+    "11",
+    "123",
+    "1234",
+    "913",
+    "3.14159",
+    "777",
+    "82",
+    "690",
+    "-2",
+    "-11",
+    "-123",
+    "-1234",
+    "-913",
+    "-3.14159",
+    "-777",
+    "-82",
+    "-690",
+    "-.1",
+    "-.5",
+    "-.9",
+    "9999.1",
+    "9999.5",
+    "9999.9",
+    "10000",
+    "18231237",
+    "-9999.1",
+    "-9999.5",
+    "-9999.9",
+    "-10000",
+    "-8231237",
+    "999.1",
+    "999.5",
+    "999.9",
+    "1000",
+    "8231237",
+    "-999.1",
+    "-999.5",
+    "-999.9",
+    "-1000",
+    "-8231237",
+    "99.1",
+    "99.5",
+    "99.9",
+    "100",
+    "821237",
+    "-99.1",
+    "-99.5",
+    "-99.9",
+    "-100",
+    "-831237",
+    "9.1",
+    "9.5",
+    "9.9",
+    "10",
+    "81237",
+    "-9.1",
+    "-9.5",
+    "-9.9",
+    "-10",
+    "-81237",
+    "1.1",
+    "-1.1",
+    "1.5",
+    "-1.5",
+    "1.9",
+    "-1.9",
+]
+
+b = pathlib.Path('binhex-out.expected').read_bytes()
+ofs = 0
+for value in values:
+    for f in outputs.values():
+        f.write(f"{value}\n")
+    x = ofs
+    for d in range(4):
+        for w in range(d + 1, 5):
+            outputs["P"].write(f"P{w}.{d}: \"{b[x:x + w].hex()}\"\n")
+            x += w
+    for d in range(4):
+        for w in range(d + 1, 5):
+            outputs["PK"].write(f"PK{w}.{d}: \"{b[x:x + w].hex()}\"\n")
+            x += w
+    for d in range(11):
+        for w in range([1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4][d], 5):
+            outputs["IB"].write(f"IB{w}.{d}: \"{b[x:x + w].hex()}\"\n")
+            x += w
+    for d in range(11):
+        for w in range([1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4][d], 5):
+            outputs["PIB"].write(f"PIB{w}.{d}: \"{b[x:x + w].hex()}\"\n")
+            x += w
+    for w in [2,4,6,8]:
+        outputs["PIBHEX"].write(f"PIBHEX{w}: \"{b[x:x + w]}\"\n")
+        x += w
+
+    ofs += 256
diff --git a/rust/pspp/src/format/testdata/split-num-out.expected.py b/rust/pspp/src/format/testdata/split-num-out.expected.py
new file mode 100644 (file)
index 0000000..a38e936
--- /dev/null
@@ -0,0 +1,23 @@
+#! /usr/bin/python3
+
+import sys
+import re
+
+outputs = {}
+for format in [
+        "CCA", "CCB", "CCC", "CCD", "CCE",
+        "COMMA", "DOLLAR", "DOT", "E",
+        "F", "N", "PCT", "Z",
+]:
+    outputs[format] = open(format.lower() + '.txt', 'w')
+
+for line in sys.stdin:
+    line = line.strip()
+    if line == '':
+        continue
+    m = re.match('([A-Z]+)', line)
+    if m:
+        outputs[m.group(1)].write(line + '\n')
+    else:
+        for f in outputs.values():
+            f.write(line + '\n')
index 01e7e8c5401100635165811043c1c47643f1d5b9..ac41b22e64e2d69e94475e3f3c8ee4f723ecbba5 100644 (file)
@@ -5,7 +5,8 @@ use enum_map::EnumMap;
 use crate::{
     endian::Endian,
     format::{Format, Settings as FormatSettings},
-    message::Severity, output::pivot::Look,
+    message::Severity,
+    output::pivot::Look,
 };
 
 /// Whether to show variable or value labels or the underlying value or variable
@@ -40,9 +41,16 @@ impl Show {
 pub struct Settings {
     pub look: Arc<Look>,
 
+    /// Endianness for reading IB and PIB formats.
     pub input_integer_format: Endian,
+
+    /// Endianness for reading RB and RBHEX formats.
     pub input_float_format: Endian,
+
+    /// Endianness for writing IB and PIB formats.
     pub output_integer_format: Endian,
+
+    /// Endianness for writing RB and RBHEX formats.
     pub output_float_format: Endian,
 
     /// `MDISPLAY`: how to display matrices in `MATRIX`...`END MATRIX`.