note
soonix
You missed that FIELD4 has PICTURE 9(8) which doesn't fit in two bytes.
<p>But, you are right, the modules for BCD do exist, as you expected, however, they are not the easiest to find.</p>
<ul>
<li>[mod://Convert::IBM390] on CPAN seems to work with EBCDIC only</li>
<li>[Corion]'s PIC module is in [id://696464]</li>
</ul><p>
Meanwhile, [id://11116438] probably has his problem solved, but here's my take on it, anyway:<br>
(test data from [id://11116444])</p><code>
use 5.011;
use warnings;
use Data::Dumper;
my $rec = "\0\0\1\257\a\344\0\3\0\0\0s\0\6\2\267\0\0\0\0\0\0\5E\35\0\0\0\0\0\0\0\0\f";
say "Length is ", length $rec;
my @fields = unpack "l>s>s>l>s>s>H18H18", $rec;
say Dumper @fields;
say Dumper map {
my ($value, $sign) = unpack "A17A";
$value = ( $sign =~ /[BD]/i ? -1 : +1 ) * $value;
} @fields[-2 .. -1];
</code>
11116442
11116524