COBOL S9 書式の数値を十進数に変換する

投稿者: | 2012/10/22

週末挟んだら、もう忘れていたのでメモ

今回は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

 


 

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください