I-tasks have the ability to perform more than one action concurrently. ICL includes two commands which enable actions to be performed concurrently while waiting for all of the actions to complete. Suppose our PHOTOM I-task has another action APERTURE which moves the aperture wheel to a required position. The following is a procedure which would allow the filter and aperture wheels to be moved simultaneously.
PROC SETUP F A
{ move filter to position F and aperture to position A }
{ Start both actions }
STARTOBEY (P1) (M1) PHOTOM FILTER (F)
STARTOBEY (P2) (M2) PHOTOM APERTURE (A)
{ Wait for the actions to complete }
ENDOBEY (P1) (M1)
ENDOBEY (P2) (M2)
END PROC
STARTOBEY starts an action and returns the path and message identifier, which together uniquely identify a given invocation of an action, into two ICL variables. ENDOBEY can then be used to wait for the completion of such an action. The above procedure will therefore exit only when both actions are complete.
ICL The Interactive Command Language for ADAM