\subsection{Multiple Motors} Multiple Motors is a module which implements a special syntax for SANS. Motors are collected into a group. For example beamstop and manipulated through them. Furthermore multiple motors support named positions and a special position {\bf back} which is the position before the last movement. Multiple Motors works, but it if larger changes become necessary it might be sensible to drop it and replace it by a work alike in the macro language. Please note, that multiple motors starts motors to run, but does not wait for them to finish. Multiple motors are characterized through the following data structure: \begin{verbatim} typedef struct __MULMOT { pObjectDescriptor pDes; char *name; pStringDict pAlias; pStringDict pNamPos; ObPar *pParam; } MulMot; \end{verbatim} The fields are: \begin{description} \item[pDes] A pointer to the usual SICS object descriptor. \item[name] The name of the multi motor. \item[pAlias] A string dictionary which maps group internal motor names to real SICS motor names. \item[pNamPos] A string dictionary which maps named positions to the SICS command necessary to run to that position. \end{description} Multiple motors are interfaced to with the following functions: \begin{description} \item[pMulMot MakeMultiMotor(void)] creates multi motors device. Returns a pointer to a new data structure on success, NULL in case of failure. \item[void KillMultiMotor(void *pData)] deletes a multi motor device. \item[int MultiWrapper(SConnection *pCon, SicsInterp *pSics, void *pData, \\ int argc, char *argv[])] The object wrapper function for multiple motors. \item[int MakeMulti(SConnection *pCon, SicsInterp *pSics, void *pData,\\ int argc, char *argv[])] The object factory function for multiple motors. \item[int ConfigMulti(SConnection *pCon, SicsInterp *pSics, void *pData,\\ int argc, char *argv[])] The configuration function for multiple motors. \end{description} The implementation of multiple motors can be found in files mumo.c, mumoconf.c, mumo.h and mumo.i.