週末挟んだら、もう忘れていたのでメモ
今回はPerl のお話。
先週、職場でCOBOL のS9という書式の数値データを十進数に変換する、ちっこーいプログラムを書いたのですが、今朝になったら綺麗さっぱり忘れていたので、備忘録がてらメモ。
# COBOL S9 => 十進数 変換用ハッシュ
my %S9DIC = (
'{' => 0,
'A' => 1,
'B' => 2,
'C' => 3,
'D' => 4,
'E' => 5,
'F' => 6,
'G' => 7,
'H' => 8,
'I' => 9,
'J' => 1,
'K' => 2,
'L' => 3,
'M' => 4,
'N' => 5,
'O' => 6,
'P' => 7,
'Q' => 8,
'R' => 9,
'}' => 0,
);
# S9書式の数値文字列を十進数に変換
sub s9convdic {
my $s9 = $_[0];
my $bd = substr($s9, 0, length($s9) - 1);
my $s9ed = substr($s9, -1);
my $ed = $S9DIC{$s9ed};
my $pm = 1;
if ( $s9ed =~ /[J-R]|[}]/ ){ $pm = -1; }
my $dic = ("$bd"."$ed") * $pm;
return $dic;
}
CPANにあるメジャーなモジュールで簡単にできそうな気がするんですが…。
結局、見つけられなかったんですよね。orz