Opérateur ASSI
                                             DATE     99/07/09
    Opérateur ASSI
    --------------


   1 ère possibilité
   _________________
           
       RES1 ... RESn = ASSI IASSIS INS1 ... INSP;

    Objet :
    _______

    L'opérateur ASSIstant fait exécuter par l'assistant IASSIS
 (ENTIER) l'instruction élémentaire :

     RES1 ... RESn = INS1 ... INSP;

    Si la version parallèle de Castem est utilisée, l'instruction
 sera terminée aussitot qu'elle sera transferée à l'assistant.
 Si une autre instruction a besoin de ces résultats, elle devra attendre
 que ceux-ci soient disponobles.

    Exemple 1 :
    ___________

    MAT1 = ASSI 1 MATER MODEL1 YOUNG 1E5 NU 0.3;

    L'assistant 1 va se charger d'exécuter : 

    MAT1 =  MATER MODEL1 YOUNG 1E5 NU 0.3;


    Si une autre instruction utilise par la suite MAT1, elle sera
 bloquée en attendant la disponibilité de MAT1 (que ce soit sur le
 maitre ou sur un assistant).


   2ème possibilité
   ________________

    RES1 ... RESn = ASSI 'TOUS' INS1 ... INSP;

   Objet :
   _______

    Si la même instruction est exécutée sur plusieurs assistants mais
 avec des données différentes, il suffit d'utiliser l'option 'tous' 
 et de stocker les données à distribuer sous forme de tables de soustype 
 ESCLAVE où les données associées à l'assistant I se trouvent à l'indice I.
 Les resultats sont stockés dans des tables de sous types ESCLAVE.

    Exemple 2 :
    ___________

     TMAT1 = 'ASSI' 'TOUS' MATER TMODL1 'YOUNG' 1E5 'NU' 0.3 ;

       TMODL1     : table de sous type ESCLAVE
       TMODL1 . i : modèle associé à l'assistant i
       TMAT1      : table de sous type ESCLAVE
       TMAT1 . i  : resultat associé à l'assistant i

  
    Exemple 3 :
    ___________

       TMODL1 = 'TABLE' ESCLAVE ;
       TMODL1 . 1 = MODL1 ;  
       TMODL1 . 3 = MODL2 ;  TMODL1 . 4 = MODL4 ;
      
*       Déclaration de 2 assistants
       'OPTI' 'ASSI' 2 ; 

       TMAT1 = ASSI 'TOUS' 'MATER' TMODL1 'YOUNG' 1E5 'NU' 0.3 ;
 la commande précédente est equivalente aux instructions suivantes : 
       TMAT1 = 'TABLE' ESCLAVE ;
       TMAT1 . 1 = ASSI 1 'MATER' TMODL1 . 1 'YOUNG' 1E5 'NU' 0.3 ;
       TMAT1 . 3 = 'MATER' TMODL1 . 3 'YOUNG' 1E5 'NU' 0.3 ;
       TMAT1 . 4 = ASSI 1 'MATER' TMODL1 . 4 'YOUNG' 1E5 'NU' 0.3 ;


 Remarques :
 ___________

    Lors de l'utilisation de l'option 'tous', toutes les tables ESCLAVES
 existantes dans l'instruction doivent avoir les mêmes indices.

    Il est très fortement déconseiller de transférer des tables à un
 assistant i car ces objets peuvent être modifiés durant l'opération. 

   Il est possible de faire travailler le maitre comme un assistant (le
 numero d'assistant qui lui est associé est 0 ).

   Il est possible de définir un IASSIS plus grand que le nombre 
 d'assistants déclarés NBass (opti assi nbass ; ). L'opération sera
 transférée sur l'assistant I défini par I = modulo (IASSIS,nbass+1)
 (le maitre jouant aussi le role d'un assistant).

   Ces deux dernières propriétés permettent de tester un programme 
 GIBIANE parallèle sur une machine séquentielle en définisaant 0 
 assistant ('OPTI' 'ASSI' 0 ; ).