>A part of my experiment asks some questions using a Likert scale. The
>questions are taken from a list which are given sequentially in a
>slide. Because kids are completing it, they often say they hit "2"
>instead of "0" and so on. However, that item is gone and the next item
>is showing. Can I write script that counts the trial (count+1)? Then,
>if the person wants to change sample 10 then I can press "b" on sample
>11 which will go to the list and retrieve sample number count-1. Is
>that even possible? I started writing script, but I've never used any
>goto statement that did not go to a label.
Boy, wouldn't that be a nice feature! Unfortunately the structure of
E-Prime programming objects presents several obstacles to your goal.
But first off, if you just want to do Likert scales and are not too
fussy about the timing, you might try MediaLab from
Empirisoft. MediaLab (and its companion product, DirectRT) cannot do
everything that E-Prime does (e.g., cannot do a psychophysical
threshold procedure), but what they do they do much better than
E-Prime. I believe you can get a trial version from the Empirisoft web site.
Now I assume that your EP program just presents your questions from a
list object, and you want to return to a prior level (row) of the
list. And that is the problem. Once a list is running EP does not
provide any good way to backtrack (or skip forward) through the
list. Specifically, no "goto" will help you, because there is no
program destination to return to, you really want to re-run an
earlier level from the list object. To be sure, you could try things
like List.GetPrevAttrib (see the online E-Basic Help), and as I
recall from my explorations that even has the side effect of moving
the list's order pointer backwards. But even if that moved you back,
you would have to change the Exit Condition (List.TerminateCondition)
to add one more sample before the list quits, and I do not think that
you can alter the Exit Condition once the list is running. Finally,
once a response gets logged you cannot unlog it, so you would still
have the invalid answers in the .edat file and would have to filter those out.
Of course, I would like it very much if someone else could weigh in
with a solution, perhaps I missed something.
>I still can't run videos on eprime on my Vista machine. ho-hum.
Then you just need to revert to XP. As has been reported several
times on this list and the PST Forum, EP2 continues to have problems
with video and sound under Vista, although they seem to work OK under
XP. (EP1 sound does work under Vista, although EP1 cannot do videos
at all, and its sound does not have the new streaming buffer
mode.) I am one of the few people who actually likes what Microsoft
is trying to do with Vista, unfortunately Microsoft did not finish
writing the OS before they marketed it. Perhaps when Microsoft
finishes writing the code everything will be OK. Until then
researchers need to stick with XP. Or we should all just find a way
to move to Linux or Max OS X.
-- David McFarlane, Professional Faultfinder
More to the point, I believe the current version of MediaLab includes
a specific feature for moving back one question at a time.
I gave your problem some more thought last night (once my mind
latches on to one of these little puzzles it's hard to let it
go). Now I do not think that your goal is quite so impossible, and
at the risk of boring others on the list I will give you my latest thoughts.
I would try putting a bit of script at the beginning and the end of
your trial procedure. At the end I would use a bit of script just to
set a "flag" if I wanted to return to the previous list item. In the
beginning of the trial procedure I would use some script to check
this flag -- for the sake of discussion, let's call the current trial
"trial B", and the previous one "trial A". If the flag were set then
I would use List.GetPrevAttrib or whatever to set all the attributes
back to the values from trial A, and then run the trial. Now, I do
not know if the list would then automatically return to trial B and
continue from there, so that may be a problem.
There remains the problem of changing the number of trials during the
list. For that I would just set the list properties to exit after
some large number of trials (say, 10,000 cycles). Then my script at
the end of the trial procedure would take care of figuring out when
to end the list, and then end the list from script with List.Terminate.
Oh, you might also look at the "Rerun Error Trials Until All Correct"
sample at http://www.pstnet.com/e-prime/support/samples.asp (requires
login). From the description this does not do exactly what you want,
as I think it defers rerunning the trials until it has finished the
first run of all the trials, but it might give you some ideas.
I will be very interested if you make this work, so please write back
and let us know how this turns out!
Sorry I keep coming back to this, but you pose a fascinating little puzzle.
As yet another alternative, if you just want to do Likert scales and
do not care too much about the timing, you could do this with a bit
of HTML, JavaScript, and maybe some ActiveX in Internet Explorer or
another suitable web browser. With HTML links you can easily make
each trial go whereever you like. We have done things like this
ourselves to good effect, and it does not cost anything.
Just another thought,