Cobol to Decimal
jwg2s opened this issue · comments
Here's an example of converting Cobol to Decimal if it could be useful.
class CobolToDecimalTransform < ExtractTransferLoad::Transform
# Initialize the transformer.
#
# Configuration options:
# * <tt>:significant</tt>: The number of significant decimal digits.
# * <tt>:places</tt>: The number of implied decimal places.
def initialize(control, name, configuration={})
super
@significant = configuration[:significant] ||= 0
@places = configuration[:places] ||= 0
end
# Transform the value
def transform(name, value, row)
return value if value.nil?
decimal = BigDecimal.new(value.to_s, @significant)
@places.times do |x|
decimal = decimal / 10
end
decimal
end
end
Hi John! By COBOL, do you mean fixed point arithmetic stored as integers? (can you provide example of input data?)
I think this could go to a contrib area or something.
That's exactly what I meant. An exmaple would be:
Format: 9(4)v9(3)
Value: 1249204
After Transform: 1249.204
Example usage:
transform field, :cobol_to_decimal, :significant => 7, :decimal => 3
Thanks for contributing that!
Although it's too specific for being added to the core, I definitely want to track down this kind of examples.
It makes me remember I have a repo with contributions like this one over there.
I could move the repo to the activewarehouse organization; then you could add this transform over there (with specs maybe?)
What do you think?
Sure, I'd be happy to do that.
Cool! Just moved the etl-goodies repo here:
https://github.com/activewarehouse/etl-goodies
Can you issue a pull-request from there?
If you can add specs too, it would be perfect (otherwise I'll write them!).