DOCTOR2

OBJET: Norme de nomenclature des variables lors de l'écriture d'un code source

Le présent document décrit l'application d'une variante locale de la norme DOCTOR (Gibson, ECMWF, 1982 et 1986), dont l'objectif est de donner à l'utilisateur d'un code, par l'intermédiaire d'une norme de nomenclature des variables de ce code, une idée la plus juste possible du type, de la portée (l'ampleur de la distribution), ainsi que de l'utilisation d'une variable quelconque par le simple examen du nom de cette variable.

La norme utilise un préfixe de deux lettres dans le nom de toute variable, d'où le nom de DOCTOR2.

Cette norme est utilisée en sus de la déclaration explicite du type de toute variable, au sens de l'énoncé IMPLICIT NONE (ou son équivalent) qui devrait être présent dans tous les modules du code.

Le tableau ci-dessous résume la norme DOCTOR2:

Les catégories suivantes sont définies:

-GLOBAL: les variables distribuées par common.

-FORMAL PARAMETER: les arguments d'un sous-programmme.

-PRIVATE: les variables locales.

-CONSTANT: les constantes définies par un énoncé PARAMETER.

-BOUCLE: l'indice de boucle et les autres variables entières calculées à partir de l`indice de boucle et utilisables seulement dans la boucle.

-TASK-SHARED: variables qui sont partagées par les membres d'une même tâche (macro/micro tasking (TASK COMMON ou LOCAL COMMON). Voir experts pour détails.

-UNKNOWN: regroupe les cas où la portée d'une variable n'est pas bien connue/définie (ou dépend de l'implémentation) et ceux qui ne sont pas prévus par cette norme.

Le nom d'une variable est de la forme:

{p1}{p2} [c1][c2]c3][c4][c5]

où {p1} = préfixe 1

{p2} = préfixe 2.

[c1]=[a-z]

[c2-5]=[a-z 0-9]

Le nom est composé de 2 préfixes suivi d'au plus 5 caractères. Noter que dans le cas des variables de boucle, le préfixe n'a finalement qu'une seule lettre. Les cas les plus fréquents sont indiqués en italique gras. Les préfixes 1 et 2 utilisent deux ensembles disjoints de caractères.

Portée =>         Préfixe   Global   Formal      Private  Constant   Boucle   Task-sh  Unknown    
Type             1 horiz.            parameter                                ared                
                 Préfixe    g        f           p        c          i - m    s        x          
                 2 vertic.                                                                        
integer              n      gn       fn          pn       cn         i - m    sn       xn         
real *4              r      gr       fr          pr       cr         *        sr       xr         
real *8              d      gd       fd          pd       cd         *        sd       xd         
logical              l      gl       fl          pl       cl         *        sl       xl         
character            t      gt       ft          pt       ct         *        st       xt         
complex 2x *4        z      gz       fz          pz       cz         *        sz       xz         
complex 2x *8        q      gq       fq          pq       cq         *        sq       xq         
pointer              a      ga       *           pa       *          *        sa       xa         

NOTA: Un logiciel de vérification du respect de la norme décrite précédemment est disponible.