週末挟んだら、もう忘れていたのでメモ
今回は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