运行sas代码时没有发生任何事情

运行sas代码时没有发生任何事情,sas,Sas,还有其他人有这个问题吗?基本上,有时当我编写宏并运行代码时,什么都不会发生。日志只是以黑色写入您试图执行的代码,但这就像SAS被禁用一样,您必须关闭SAS并重新打开,然后才能正常运行。有没有一种方法可以解决这个问题,而不必关闭和打开sas 这是我的代码: dm 'clear log';

还有其他人有这个问题吗?基本上,有时当我编写宏并运行代码时,什么都不会发生。日志只是以黑色写入您试图执行的代码,但这就像SAS被禁用一样,您必须关闭SAS并重新打开,然后才能正常运行。有没有一种方法可以解决这个问题,而不必关闭和打开sas

这是我的代码:

dm 'clear log';                                                                                                                                                                
dm 'clear output';                                                                                                                                                             
dm 'odsresults: clear';                                                                                                                                                        
libname projet 'C:\Users\MJ-INFO\Desktop\Projet scoring1' ;                                                                                                                    
/*Extrcation de la base d'etude et creation d'une copie*/                                                                                                                      
data Examen ;                                                                                                                                                                  
set projet.base_resiliation_proj ;                                                                                                                                             
run;                                                                                                                                                                           

/*Contenu de la base*/                                                                                                                                                         
proc contents data=Examen;                                                                                                                                                     
run;                                                                                                                                                                           
/*Corespondance entre les formats et les variables */                                                                                                                          

proc format ;                                                                                                                                                                  
value $sexe                                                                                                                                                                    
"1"="homme"                                                                                                                                                                    
"2"="femme";                                                                                                                                                                   
run;                                                                                                                                                                           
/*Applicatation des formats*/                                                                                                                                                  
data Examen;                                                                                                                                                                   
set projet.base_resiliation_proj ;                                                                                                                                             
format sexe $sexe.;                                                                                                                                                            
run ;                                                                                                                                                                          

/*Nous avons 53892 observations et 8 variables dans notre base*/                                                                                                               

/*Definition de la variable à expliquer *                                                                                                                                      
%let var_cible=RESIL;                                                                                                                                                          

/*Definition des variables explicatives */                                                                                                                                     
%let var_quali=formule sexe;                                                                                                                                                   
%let var_quanti=anc_client anc_cont cotisation id nb_cont;                                                                                                                     
/*Vue sur la variable cible*/                                                                                                                                                  
proc freq data=Examen;                                                                                                                                                         
table &var_cible;                                                                                                                                                              
run;                                                                                                                                                                           
/*14.42 des contrats sont des fragiles*/                                                                                                                                       
/*Exploration des variables candidates  de la base*/                                                                                                                           
proc freq data=Examen;                                                                                                                                                         
table &var_quali;                                                                                                                                                              
run;                                                                                                                                                                           

proc means data=Examen min max mean median nmiss;                                                                                                                              
var &var_quanti;                                                                                                                                                               
run;                                                                                                                                                                           

/*Traitement des valeurs manquantes/aberrantes*/                                                                                                                               
data Examen;                                                                                                                                                                   
set Examen;                                                                                                                                                                    
if cotisation=-1 then delete;                                                                                                                                                  
if cotisation='.' then delete;                                                                                                                                                 
if nb_cont=99999 then delete;                                                                                                                                                  
run;                                                                                                                                                                           

/*II.Preparation des donnees*/                                                                                                                                                 
/*Etude des liaisons entre variables qualitatives et variable cible */                                                                                                         
/*Variables qualitatives : test de Khi-2 & v de Cramer*/                                                                                                                       
%macro quali(table,var,cible,mod);                                                                                                                                             
/*Representation en terme d'effectif*/                                                                                                                                         
proc gchart data=&table;                                                                                                                                                       
vbar3d &var. / sumvar=&cible discrete;                                                                                                                                         
title "Effectifs de la variable &var";                                                                                                                                         
run;                                                                                                                                                                           
/*Taux de contrat à risque*                                                                                                                                                    
proc freq data=&table;                                                                                                                                                         
table &var.*&cible / chisq outpct out=pct;                                                                                                                                     
run;                                                                                                                                                                           
proc gchart data=pct (where=(&cible=&mod));                                                                                                                                    
vbar3d &var. / sumvar=pct_row discrete;                                                                                                                                        
title "Taux de contrats à risque de la variable &var";                                                                                                                         
run;                                                                                                                                                                           
quit;                                                                                                                                                                          
title;                                                                                                                                                                         
%mend;                                                                                                                                                                         
%quali(Examen,sexe,&var_cible,1);
Sas显示运行此代码的黑色执行:

/*II.Preparation des donnees*/                                                                                                                                                 
/*Etude des liaisons entre variables qualitatives et variable cible */                                                                                                         
/*Variables qualitatives : test de Khi-2 & v de Cramer*/                                                                                                                       
%macro quali(table,var,cible,mod);                                                                                                                                             
/*Representation en terme d'effectif*/                                                                                                                                         
proc gchart data=&table;                                                                                                                                                       
vbar3d &var. / sumvar=&cible discrete;                                                                                                                                         
title "Effectifs de la variable &var";                                                                                                                                         
run;                                 
我不明白为什么当我看到日志页时,即使代码没有错误,我也会得到黑色执行

谢谢你的帮助

您的代码:

%macro quali(table,var,cible,mod);                                                                                                                                             
/*Representation en terme d'effectif*/                                                                                                                                         
proc gchart data=&table;                                                                                                                                                       
vbar3d &var. / sumvar=&cible discrete;                                                                                                                                         
title "Effectifs de la variable &var";                                                                                                                                         
run;        
已开始定义宏,但从未完成。最后没有%mend语句,因此SAS认为您仍在向其发送宏代码以进行编译。如果您添加了一个%mend,它应该可以工作

SA以这种方式感觉无响应的最常见原因是未关闭的宏定义、未关闭的注释块和不匹配的引号。如果你在谷歌搜索SAS magic string,你会发现一些代码示例,当你陷入这种情况时,你可以提交这些代码来尝试恢复。比如:

*';*";*/;%mend;

如果您使用的是EnterpriseGuide,它会在每次提交代码时自动添加一个神奇的字符串。这意味着您的会话不会感到挂起。但如果有未关闭的宏定义,则会使其更难识别,因为它看起来一切正常。但实际上,它根本没有执行。神奇的字符串最终会隐藏问题。我假设SAS studio也添加了一个神奇的字符串,但我还没有检查

SAS Studio可用于以交互方式以及批处理方式运行,因此在这方面它与EG有所不同。Studio确实添加了神奇字符串,但它不包括%MEND、&GRAPHTERM;;*';*;*/;跑退出