DS2 - Variables locales et globales

Dans le langage SAS DS2, les variables sont toujours globales sauf si elle sont déclarées dans une méthode. Exemple :
proc ds2;
     data _null_ ;
          dcl int a; 
          dcl int b;

          method init();
          end;
          method run();
               dcl int c; 
               dcl int d;
          end;
enddata;
run;
Les variables a et b sont globales car définit avant le init() ( et hors méthode) Les variable c et d sont locales à la méthode run() Pour illustrer le fonctionnement des variables globales et locales, prenons un autre exemple ci-dessous :
proc ds2;
     data exempleLocalGlobal;
          
          dcl bigint maVar1;
          dcl double maVar2;

          method init();
              dcl date maVar3;
              dcl float maVar4;
              maNewVar=34;
          end;
     enddata;
run;
quit;
Dans cette exemple, le dataset exempleLocalGlobal contient, après exécution, 3 variables. Les variables globales maVar1 et maVar2  (car justement elles sont globales) et la variable maNewVar. maNewVar est en effet automatiquement créée comme variable globale : proc-ds2-newvar-globale   proc-ds2-newvar-globale-proc-contents  

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.