/*********************************************************/ /*Titre: Exemple.sas */ /*Date: 01/03/07 */ /*Auteur: Pascal Lemetayer (Support Clients SAS) */ /*Sujet: Ce programme crée les données d'exemple et */ /* réalise une extraction d'enregistrement à partir*/ /* d'une liste d'identifiants contenus dans une */ /* table. */ /* Il est en rapport avec l'article 'Le code Hash' */ /* de 'A la une du support' de Mars 2007. */ /* */ /*********************************************************/ /*Table de données*/ data table1; Length keyvar var1-var8 8 ; input keyvar var1-var8; datalines; 1 11 . 11 11 11 11 11 11 2 22 22 22 22 22 22 22 22 3 . 33 . 33 33 33 . 33 4 . . 44 . . 44 . 44 5 55 55 55 55 55 55 55 . 6 . 66 . . . . . . ; run; /*Liste des identifiants à extraire*/ data table2; Length keyvar 8 ; input keyvar; datalines; 1 3 6 7 ; run; /*Extraction des enregistrements de la table1 correspondant aux identifiants*/ /*contenus dans la table2*/ data extraction (drop = Cr i); Declare hash mon_objet_hash () ; /*Définir la taille de toutes les variables de la table en mémoire*/ Length keyvar var1-var4 8 ; array var(4); /*Définir la variable identifiante*/ Cr = mon_objet_hash.DefineKey ("keyvar"); /*Définir les autres variables*/ Cr = Mon_objet_hash.DefineData ("var1", "var2", "var3", "var4"); /*Ecriture de la structure de la table*/ Cr = Mon_objet_hash.DefineDone (); /*Remplissage de la table en mémoire*/ do until (eof_table1) ; set work.table1 (keep=keyvar var1-var4) end =eof_table1; Cr = Mon_objet_hash.add(); end ; /*Extraction des enregistrements*/ do until (eof_table2) ; set work.table2 end =eof_table2; do i=lbound(var) to hbound(var); var(i) = .; end; Cr = Mon_objet_hash.find() ; output ; end ; run;