******************************************************************** ********************* LISTE DES COMMANDES *********************** ******************************************************************** ******** Utlilisable dans les processeurs et dans ********** ******** certaines partie du noyau de ZOOM (ZOOM KER) ********** ******************************************************************** remise a jour mai 93 ==================================================================== ====================== L'IMPRESSION FACILE ===================== ==================================================================== Z_Pr : Var_List; Z2_Pr : Var_List; Print_Class_CL(LCL); Print_CL_ID(LCL); CL_ID(LCL) Print_Class_TR(LTR); Print_TR_ID(LTR); Print_SV_CL_ID(LSV); Print_TV_TR_ID(LTV); FM_ID(LFM) arguments : Var_List : Liste des variables à imprimer, séparées par des virgules LCL : adresse de la cellule LTR : adresse de la cellule LSV : adresse du C-Plug de la cellule LTV : adresse du T_Plug du transfert LFM : adresse de la famille ==================================================================== ==================== PREMISSES D'UN P.D.L. ===================== ==================================================================== ======= Langages dédié à l'écriture des processeurs ======== ==================================================================== INSTRUCTIONS POUR LES PROCESSSEURS DE CELLULES ============================================== Print_CL_ID (LCL); Print_Class_CL(LCL); CL_ID(LCL) grasp array eta,gamma (LCL); grasp array FI_TV (LTV); Print_TV_TR_ID(LTV); grasp array ABt_TV (LCL,LTV) for (LCX); Set_signed_ABt (LCL); Zinit_Entry {Proc_Name} ( CL_Var = ...., ...); Parameter_Entry; arguments: LCL : bank instancie attache a la cellule LCX : bank instancie attache a la connexion cellule - T-Plug LTV : bank instancie attache au T-Plug du transfert connecte INSTRUCTIONS POUR LES PROCESSEURS DE TRANSFERT ============================================== Print_TR_ID(LTR); Print_Class_TR(LTR); grasp array fi,omega (LTR); Print_SV_CL_ID(LSV); grasp array ETA_SV (LSV); grasp array Ct_SV (LSV,LTR) for (LCX); Zinit_Entry {Proc_Name} ( TR_Var = ...., ...); Parameter_Entry; arguments: LTR : bank instancie attache au transfert LCX : bank instancie attache a la connexion transfert - C-Plug LSV : bank instancie attache au C-Plug de la cellule connectee INSTRUCTIONS POUR LES PROCESSEURS DE TRANSFERT AVEC MATRICE D ============================================================== Print_TV_TR_ID(LTV2); grasp array D_TV (LTV2,LTR) for (LCX2,LCL,LCX); grasp array FIZ_TV (LTV2); grasp array OMEGA_TV(LTV2); copy array FI in FIZ (LTR); copy array FIZ in FI (LTR); grasp array FIZ (LTR); arguments: LTR : bank instancie attache au "transfert origine" LTV2 : bank instancie attache au T-Plug du "transfert connecte" LCX2 : bank " " a la connex. Cellule-"Transfert connecte" LCX : bank " " a la connex. "Transfert origine"-Cellule LCL : bank instancie attache a la cellule par laquelle passe la connexion entre ces deux transferts ==================================================================== ========================= A. L. L. I. S. ========================= ==================================================================== DECLARATION DE VARIABLES LOCALES ================================ LOCAL_VARIABLES: (Var_Name1,Var_Name2,Var_Name3,...) ; == CASE == =========== TYPE mach_in OF (truc_1,truc_2,truc_3); . Instruction de declaration, declaree avant toute instruction FORTRAN executable. mach_in = truc_3; . Instanciation de la variable mach_in CASE mach_in IS < WHEN truc_1 <... > WHEN truc_3 <... > ..... WHEN_OTHERS <... > > PROCEDURE ========= Appel de la procedure execute Procedure_Name; Déclaration de la procédure (à la fin,en dehors du "zero-level FROM bloc") procedure Procedure_Name < ..... ..... > A l'interireur de la peocedure, on peut sortir a l'aide de l'instruction : RETURN_FROM_PROCEDURE; AT-PROCEDURE ============ Appel de la procedure at LBank execute Procedure_Name; Déclaration de la procédure (à la fin,en dehors du "zero-level FROM bloc") procedure Procedure_Name at LBank_Loc < from Cl_Bk(LBank_Loc) < ..... ..... > > A l'interireur de la peocedure, on peut sortir a l'aide de l'instruction : RETURN_FROM_PROCEDURE; ==================================================================== ================= DECLARATION LOCALE D'UN BANK ================= ==================================================================== ======= Utilisé en particulier pour déclarer les banks ======= ======= TD et CD des processeurs de Transfert et de Cellule ======= ==================================================================== DEBUT ET FIN DE DECLARATION DU BANK ===================================== IMPLICIT ACCESS TO BANK Cl_Name(Bank); DECLARE CLASS Cl_Name {,Cl_Name_2...}; END DECLARE CLASS Cl_Name{,Cl_Name_2...}; arguments : Bank : Variable correspondant a l'adresse du bank Cl_Name : Nom de la classe auquel appartiend le Bank DECLARATION DES VARIABLES ============================= LOCAL_VAR Var_name{( nbcol{,nblin} ) } {,Var_name_2....} {:type} IN CLASS Cl_Name; LINK_VAR Var_name{( nbcol{,nblin} ) } {,Var_name_2....} {:type} IN CLASS Cl_Name; VAR Var_name{( nbcol{,nblin} ) } {,Var_name_2....} {:type} IN CLASS Cl_Name; arguments : Var_Name : Nom des variables INITIALISATION DU LIEN D'UNE LINK_VAR ======================================= link Var_Name to Eta_SV(Indice); link Var_Name to Fi_TV(Indice); link Var_Name to Fiz_TV(Indice); link Var_Name_1 to Var_Name_2 of(LObj); link Var_Name_1 to Var_Name_2; LECTURE D'UNE VARIABLE D'UN AUTRE OBJET ========================================= set X = [Var2]{:type} of (LProc); " {...} veut dire optionel " DECLARATION DES LIENS ======================= SLINK Lk_Name{(dim)} {,Lk_Name_2....} IN CLASS Cl_Name; RLINK Lk_Name{(dim)} {,Lk_Name_2....} IN CLASS Cl_Name; ADRESSES DES VARIABLES ====================== @(Bk_Name . Cl_Name).Var_Name { (Ncol,Nligne)} PROTECTION DES VARIABLES , CONTROLE DES INDICES DE TABLEAUX ============================================================== WRITE PROTECT ARRAY Var_Name; INHIBIT CHECK ARRAY; CHECK ARRAY ( RD=Y_N , WR=Y_N )Var_Name; avec Y_N = Y ou N (Yes or No) Initialisation par defaut CHECK ARRAY(RD=Y,WR=Y); ==================================================================== ================= Z.B.M. (ZOOM Bank Manager ) ================== ==================================================================== ===== Chainage des banks, définition de l'origine du chainage, ===== ===== création des bank, accès aux variables des bank, .... ===== ==================================================================== DEFINITION DES CHAINAGES DE BANK ================================ local_valid_chains:[~CL~SV~CX~TV~TR~], ou ...~CX(.)~.. [~CX~IC~], [~etc~FM*~IN~etc~], end_chains; DEFINITION DE LA PREMIERE ORIGINE DES CHAINAGES DE BANK ======================================================= (zero-level FROM ) =================== - pour un processeur de cellule: from CL(LCL) < ...... > - pour un processeur de transfert: from TR(LTR) < ...... > DEFINITION DE L'ORIGINE DES CHAINAGES DE BANK ============================================= from Cl_Bk(LBank) < .......... ..... exit from LBank; "sortie de FROM" .......... > Arguments : Cl_Bk : Bank Class name LBank : Bank addresse BOUCLE SUR TOUS LES BANKS D'UNE CLASSE AVEC REDEFINTION ======================================================= DE L'ORIGINE DES CHAINAGES DE BANK ================================== - Cas general -------------- skip thru Cl_Bk(LBank) < ..... ..... to next LBank; ..... exit from LBank; > Arguments : Cl_Bk : Bank Class name LBank : Bank addresse - Cas particulier ----------------- Cas rencontre lorsque l'on veut parcourir les connexions sous un T-Plug NCX = (LTV).Nb_Cx_CX; "Nombre de connexions de ce T-Plug" read thru CX(LCX) (J=1,NCX) < ..... ..... to next LCX; .... exit from LCX; > Arguments : CX : nom de la classe du bank LCX: adresse du bank J : indice de boucle NCX: nombre de connexions sur lesquelles s'effectue la boucle variante : read thru CX(LCX) (J=1,*) < ..... ..... to next LCX; .... exit from LCX; > => meme effet que la boucle precedente, sans definition de NCX - Boucles compactes ------------------- skip thru TV(LTV)/CX(LCX) (JCX=1,*)/.SV(LSV) < > equivalent a : skip thru TV(LTV) < if (LTV).Nb_Tr_Var .eq. 0 < to next LTV; >; read thru CX(LCX) (JCX-1,*) < From SV(LSV) < > > > meme utilisation des exit from et to next; - Boucles compactes avec echappements ------------------------------------- skip thru TV(LTV.ne.LTV2)/CX(LCX) (JCX=1,*)/.SV(LSV.eq.Face-*) < > equivalent a : skip thru TV(LTV) < if (LTV).Nb_Tr_Var .eq. 0 < to next LTV; >; if (LTV .eq. LTV2 < to next LTV; >; read thru CX(LCX) (JCX-1,*) < From SV(LSV) < if (LSV).C_Plug_Nm .ne. 'Face' < to next LCX; >; > > > INSTANCIATION D'UN BANK, SANS MODIFICATION DE L'ORIGINE DES CHAINAGES ===================================================================== get Cl_Bk(LBank); Arguments : Cl_Bk : Bank Class name LBank : Bank addresse ACCES AUX VARIABLES D'UN BANK INSTANCIE ======================================= (Lbank).Var_Name ou (Lbank).Var_Name(..) pour les variables dimensionnees. Arguments : LBank : Bank addresse Var_Name : nom de variable CREATION D'UN BANK ================== * Instanciation de variable necéssaire a la création du bank Set .Var_name for Cl_Bk = Valeur; Arguments : Var_Name, Cl_Bk, Valeur * Création du bank Lift Lbank of class Cl_Bk under (L_Up, -N_Lk); Arguments : Cl_Bk : Bank Class name LBank : Bank addresse L_Up : Adresse du bank de reference auquel ser attache l'objet cree N_Lk : si = 0, on cree le bank en next de L_Up si <>0, on cree le bank sous L_up, rattache au lien numero N_Lk