btelles
btelles

Reputation: 5420

Is there an existing gem or script that converts numbers to comp-3/packed decimal format?

Continuing with my adventure to convert COBOL to a Ruby program, I have to convert a decimal digit to a comp-3/packed decimal format. Anyone know of a simple Ruby script or gem that does this? Berns

Upvotes: 2

Views: 536

Answers (1)

Marc-André Lafortune
Marc-André Lafortune

Reputation: 79562

Ruby knows how to pack nibbles, so it turns out to be quite easy:

def pack_comp(n)
  s = n.abs.to_s + (n < 0 ? "d" : "c")
  s = "0" + s if s.size.odd?
  [s].pack("H*")
end

Upvotes: 4

Related Questions