There must be some simple little thing I don't understand about foreach,
or about conditions, and I am wondering if someone can explain. I have
isolated the problem into a test script at the end of this message.
The thing I am trying to program is:
I have a text file containing several types of fixed-format records.
It is for transferring money to the bank. A type of record is
identified by a single digit in the first character position of the
record. In the file, there is one particular record I want to find,
the only one with a particular record type code in the first position (a
trailer record, but not the last record in the file, so I can't just use
"last.")
So, I read the file into memory with read/lines. Each line becomes a
string. I loop through the block of strings (lines) and check the first
character of each. When I find the record type (first character) I am
looking for, I save that record in another place so I can examine it
more detail later in the program.
In the following test script, if you run it, you see that "print
TEST-RECORD/1" is executed and displays the first character of every
record. BUT, HOLD-TEST-RECORD never gets set to anything (besides its
initial value of a null string) and "print 'We found record type 4'"
never is executed. So that condition of 'if TEST-RECORD/1 = "4"' is
never true.
What am I doing wrong? It looks so obviously correct. I read the
manual, and I am "sure" I have seen code like that before.
Thank you.
;;;; test script
REBOL [
]
TEST-FILE: [
"1this is record one"
"2this is record two"
"3this is one of many type 3 records"
"3this is one of many type 3 records"
"4this is the record we want"
"9this is some ending record"
]
HOLD-FOUND-RECORD: copy ""
foreach TEST-RECORD TEST-FILE [
print TEST-RECORD/1
if TEST-RECORD/1 = "4" [
HOLD-FOUND-RECORD: copy TEST-RECORD
print "We found record type 4"
]
]
print rejoin ["HOLD-FOUND-RECORD=" HOLD-FOUND-RECORD]
;;;; end of test script
Steven White
City of Bloomington
1800 W Old Shakopee Rd
Bloomington MN 55431-3096
USA
952-563-4882 (voice)
952-563-4672 (fax)
[EMAIL PROTECTED]
--
To unsubscribe from the list, just send an email to
lists at rebol.com with unsubscribe as the subject.