The Procedure object is used to present a sequence of events. Events occur in sequential order, unless another control mechanism is imposed (e.g., jumps). Experiments are usually comprised of multiple Procedures (e.g., session, block and trial level Procedures) defining the levels of the experiment.
The Procedure object as it appears in the Toolbox.
The Procedure object window consists of a single procedural timeline. Objects may be dragged and dropped onto the timeline to determine the sequence of events defining the Procedure.
In the image above, the procedural timeline consists of three objects. The order of the objects, left to right, represents the sequence of events for the Procedure. In this example, the first event will be the TextDisplay object named Welcome, followed by the trials run by the TrialList and finally the TextDisplay object called Goodbye.
Procedures can be nested (i.e., a Procedure can contain other Procedure objects as part of the timeline). However, Procedures are not referenced directly by another Procedure, and in fact, it is not possible to add a Procedure object directly to a procedural timeline. It is necessary to use a List object to launch a Procedure. For example, as shown in the example below, the BlockList runs the block Procedure (BlockProc), which in turn calls the TrialList to run the trial Procedure (TrialProc).
Like all objects within E-Studio, the Procedure object features a set of tabbed Property pages. The Property pages are accessible via the Properties window. Click the ellipsis (…) in the Property pages field to display the Property pages. The Procedure object’s Property pages contain three tabs: Common, General, and Task Events.
The General tab features a checkbox option to set the status of data logging. When the Log Data box is checked, data will be logged for the Procedure. By default, all Procedures are set to log data.
If the LogData checkbox is unchecked, no data will be logged for the Procedure. For situations in which contingent logging is required, it is possible to log data manually using the Log method of the Context object (i.e., c.Log).
If the FlushDataLog box is checkmarked then the object will flush its log data after logging. Specifying 'Yes' to GenerateLabels will generate labels in the Full Script. Lastly, ProcessPendingInputMasks determines whether or not this procedure will process none, last only, or all pending input masks.
The following are the specific properties of the Procedure object:
|(Name)||String values||Represents the name or label of the selected object.|
|(About)||None||Reveals version information for the Procedure object.|
|(Property Pages)||None||Reveals the property page interface to specify the properties for the selected object.|
|FlushDataLog||Yes, No||Determines whether or not the object will flush its log data after logging.|
|GenerateLabels||Yes, No||Determines whether or not the object will generate labels in the full script. See below for more information.|
|GeneratePostRun||Inherit, EndOfProcedure, AfterObjectRun||Where the postrun part of this object is generated in the script.|
|GeneratePreRun||Inherit, TopOfProcedure, BeforeObjectRun||Where the prerun part of this object is generated in the script.|
|Handles ConditionalExit||Yes, No||Determines whether or not the object responds to the conditional exit event.|
|LogData||Yes, No||Determines if data is logged for the Procedure.|
|Notes||String values||User-entered text useful for storing information or comments related to an object.|
|ProcessPendingInputMasks||All, Last, None||Determines whether or not this procedure will process none, last only, or all pending input masks.|
|Tag||String values, Attribute references||User-defined string that is useful for associating information with the object.|
This option determines whether the Procedure Object generates Labels in the Full Script. Generating labels increases experiment portability. It allows for a consistent means of using the GoTo statement in E-Basic script or via the 'Jump' End Action. When this property is checked, E-Studio generates the following labels:
- Procedure_Start - This label marks the initiation of a Procedure and occurs prior to any calls to load object resources and prior to Procedure_Timeline_Start. If the GeneratePreRun property for any objects is set to TopOfProcedure, the .Load script for those objects will be generated relative to the Procedure_Start label.
- Procedure_Timeline_Start - This label marks the beginning of the Procedure events, and occurs following Procedure_Start and prior to any calls to run objects.
- Procedure_TimeLine_Finish - This label marks the end of the Procedure events, and occurs following all calls to run objects, prior to logging to the Context.
- Procedure_Finish - This label marks the conclusion of the Procedure script execution, after the Context has been logged. Procedure_Finish should not be used without calling c.Log or handling custom data logging.
- Procedure_Feedback_Start - This Label occurs before script execution for a Feedback Object commences.
- Procedure_Feedback_Finish - This Label occurs after script execution for the Feedback Object in the Procedure concludes. Calling GoTo Procedure_Feedback_Finish in an InLine Object prior to the Feedback would skip the Feedback Object.
Accessing the Generate Labels Feature
To access this option for a Procedure, open the Procedure Properties. On the General tab, check the option to Generate Labels.