activewarehouse / activewarehouse-etl

Extract-Transform-Load library from ActiveWarehouse

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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!).