Counterbalancing Part of a List [was Re: ]

Susan Campbell susanc at andrew.cmu.edu
Wed Nov 6 22:07:00 UTC 2002


I¹m afraid that without looking at the structure of your experiment, I
cannot figure out what the InLine here is supposed to do.  As such, I¹ve
written two that do similar things in different contexts, neither one of
which may match your experiment¹s structure (if you¹d like to send me a copy
of the experiment, feel free to do so.).  If I were to pick a structure for
an experiment like this, I would use the second structure I explain here.

--The first code sample assumes that you have a block list called BlockList,
and that ³InstructList² is the name of an attribute, which is then used
later to determine what list is nested.

This structure would look something like this:
-SessionProc
    -BlockList (1 row, with InstructList as a column)
        -TestProc
            -InLine1
            -List2 (1 row, with [InstructList] in the Nested column)
                ?InstructList
-Unreferenced E-Objects
    -one (the lists referenced above, since list names can¹t be numbers)
    -two
    -three

and InLine1 would be:
If c.GetAttrib(³Session²) = ³1² Then
    BlockList.SetAttrib 1, ³InstructList², ³three²
Else
    If (CInt(c.GetAttrib(³Subject²))+CInt(c.GetAttrib(³Session²))) Mod 2 = 0
Then
        BlockList.SetAttrib 1, ³InstructList², ³one²
    Else
        BlockList.SetAttrib 1, ³InstructList², ³two²
    End If
End If

(The math here is a hack because I couldn¹t figure out how to get it to
counterbalance only two levels.  Basically, if the Subject number and the
Session number add to make an even number, set the list to 1, else set it to
2.)

--The second, different structure assumes that you want to set which level
of a list runs (on a global level).  That structure would look like this:

-SessionProc
    -InLine2
    -InstructList (3 rows)
        -TestProc2

and InLine2 would be:

If c.GetAttrib(³Session²) = ³1² Then
    Set InstructList.Order = ExplicitOrder (³3²)
    InstructList.Reset
Else
    If (CInt(c.GetAttrib(³Subject²)) + CInt(c.GetAttrib(³Session²))) Mod 2 =
0 Then
        Set InstructList.Order = ExplicitOrder (³1²)
        InstructList.Reset
    Else
        Set InstructList.Order = ExplicitOrder (³2²)
        InstructList.Reset
    End If
End If

(The numbers here refer to which row of the list runs.  For instance, in a
list with three rows, Set List1.Order = ExplicitOrder(³1 2 3²) makes the
list run in sequential order.)

Sorry if this is sort of obscure and technical; I wasn¹t sure exactly what
you were looking for.

Hope this helps,
Susan Campbell
STEP Project
Carnegie Mellon

On 11/6/02 16:00, "Tracy Mitzner" <tracy.mitzner at psych.gatech.edu> wrote:

> hi,
> i'm trying to control the order of my block variable ("InstrictList") based on
> the session number.  does anyone know what the correct inline statement would
> be and should the inline be placed before or after the block list?  i want the
> 3rd list to always be presented 1st  (i.e., session 1) and i want the 1st and
> 2nd lists to be counterbalanced (i.e., sessions 2 and 3).  below is the inline
> statement i tried that isn't working...
> 
> If "Session" = 1 Then
> c.GetAttrib ("InstructList") = 3
> Else 
> c.GetAttrib ("InstructList") = 1 or 2
> End If
> 
> 
> thanks,
> tracy
> 
> 
> 
> 
> Tracy L. Mitzner, Ph.D.
> Post-Doctoral Fellow
> School of Psychology
> Georgia Institute of Technology
> Atlanta, GA 30332-0170
> Tel:404-385-2690 
> Fax:404-894-8905 
> http://www.prism.gatech.edu/~wr43/hf_aging/index.html



More information about the Eprime mailing list