Hi, Louis,

I've had a hard time understanding the exact setting of the
problem...  Sorry!

"Dr. Louis A. Turk" wrote:
> 
> all [find database code (in database/2 'chknum) database/2/chknum]
> 
> appears to be stopping most of the time at the first record in the
> database, and returning its chknum.
> 

Let me make a couple of assumptions:

1)  DATABASE is a series containing alternating strings (used
    as keys) and objects (the corresponding values).
2)  Each object has a CHKNUM attribute.
3)  Given a key (string) you want the corresponding CHKNUM
    value.

I can build a trivial test case for requirements (1) and (2) by

    database: []
    repeat i 10 [
        append database join "X" i
        append database make object! [
            chknum: i
            stuff: random 1000000
        ]
    ]

    == ["X1"
        make object! [
            chknum: 1
            stuff: 170632
        ] "X2"
        make object! [
            chknum: 2
            stuff...

Under those assumptions...

    rec: all [obref: select database code obref/chknum]

will give you back the CHKNUM field of the object associated
with CODE, or NONE if there is no such key.

    >> rec: all [obref: select database "X7" obref/chknum]
    == 7
    >> rec: all [obref: select database "XYZ" obref/chknum]
    == none
    >> rec: all [obref: select database "X3" obref/chknum]
    == 3

If the phrase

    obref: select database code

finds the desired key, then OBREF will refer to the corresponding
object and

    obref/chknum

will obtain the desired attribute.

OTOH, if the key does not exist in the series, then OBREF will
be NONE and the ALL will terminate with that value.

Hope I haven't missed the point!

-jn-


-- 
; Joel Neely                             joeldotneelyatfedexdotcom
REBOL [] do [ do func [s] [ foreach [a b] s [prin b] ] sort/skip
do function [s] [t] [ t: "" foreach [a b] s [repend t [b a]] t ] {
| e s m!zauafBpcvekexEohthjJakwLrngohOqrlryRnsctdtiub} 2 ]
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to