Negative nums

Morning all,

I sent an email on this yesterday and needed to give you guys some
example
code. Below is some code I have for grabbing the numbers I need from
lines
in a text file that we receive via FTP. My big concern is the negative
numbers for accounts which are indicated by a position in the file where
0
is a postive number and ­ is a negative number. What is the best way to
get
my account balance and make it a negative number? I¹m not sure I¹m
doing it
the correct way in this script.

class Info
attr_reader :acct, :money

def initialize(filename)
@acct = File.new(filename, “r”)
end
f = Info.new(“Balances20080415.txt”)
act = f.acct
act.each do |list|
#covert me to a string
futbal = list.to_s
#Pull accounts
office = futbal[22…24]
if office == “RPT”
next
else
acctnum = futbal[24…28]
end
#Pull Liquidating values
lv = futbal[217…231]
#Pull LV Indicator
lvind = futbal[215…215]
#if Negitave vlaues
if lvind == “-”
lvnegfloat = lv.to_f/1000
print acctnum," ",lvind, lvnegfloat, “\n”
#else Positive Values
else
lvposflt = lv.to_f/1000
print acctnum, " ", lvposflt, “\n”
end
end
end

Hi –

On Tue, 22 Apr 2008, Tim W. wrote:

class Info
attr_reader :acct, :money

def initialize(filename)
@acct = File.new(filename, “r”)
end
f = Info.new(“Balances20080415.txt”)

It’s extremely unusual (I don’t think I’ve ever seen it) to put
instantiation and scripting code (for lack of a better term) inside a
class definition. It will get executed, but it’s really odd-looking
:slight_smile:

Question: Can you provide some sample lines of input? I can’t quite
get a fix on what the lines look like. I’m wondering whether scanf
might help you.

David

On Tue, Apr 22, 2008 at 4:17 PM, Tim W. [email protected] wrote:

Morning all,

I sent an email on this yesterday and needed to give you guys some example
code. Below is some code I have for grabbing the numbers I need from lines
in a text file that we receive via FTP. My big concern is the negative
numbers for accounts which are indicated by a position in the file where 0
is a postive number and ­ is a negative number. What is the best way to get
my account balance and make it a negative number? I¹m not sure I¹m doing it
the correct way in this script.

what about:

    futbal = list.to_s
    #Pull accounts
    office = futbal[22..24]
    if office == "RPT"
      next
    else
      acctnum = futbal[24..28]
    end
    #Pull Liquidating values
      lv = futbal[217..231]
    #Pull LV Indicator
        is_negative = futbal[215..215] == '-'
        value = lv.to_f/1000
        value = -value if is_negative
        puts acctnum," ",value

end

or (though not very readable)

value = futbal[217…231].to_f / ((futbal[215…215] == ‘-’) ? -1000 :
1000)

or a bit better:

value = futbal[217…231].to_f / 1000 * ((futbal[215…215] == ‘-’) ? -1 :
1)