BookmarkSubscribeRSS Feed
Ronein
Onyx | Level 15

Hello

I run this code and get error.

It is not only the error . SAS get crazy and cannnot work anymore after  and show always error 49 after if i run any other correct code.

 

What is wrong with this code??

 

%include '!RSMEHOME/SASCode/SHARECode/Libname.sas';
LIBNAME md "/usr/local/abtretsme/SASData/CS/leumi/model_cs_2024";
LIBNAME abtnm "/usr/local/SAS/MidulOld/score_cs/ABT_NM";
LIBNAME nm_cs_t "/usr/local/SAS/SASUsers/LabRet/UserDir/Udclkbv/nm_cs_t";  /**For the clean files,be attention all pop is there not only clean but here have keshel future and reteaf info***/


%let YYMM1=2506;

Data _null_;
YYMM_date=input("&YYMM1.",YYMMn4.);
Minus0Mon_date=intnx('month',YYMM_date,-0);
Minus1Mon_date=intnx('month',YYMM_date,-1);
Minus2Mon_date=intnx('month',YYMM_date,-2);
Minus3Mon_date=intnx('month',YYMM_date,-3);
Minus4Mon_date=intnx('month',YYMM_date,-4);
Minus5Mon_date=intnx('month',YYMM_date,-5);
Minus6Mon_date=intnx('month',YYMM_date,-6);
Minus7Mon_date=intnx('month',YYMM_date,-7);
Minus8Mon_date=intnx('month',YYMM_date,-8);
Minus9Mon_date=intnx('month',YYMM_date,-9);
Minus10Mon_date=intnx('month',YYMM_date,-10);
Minus11Mon_date=intnx('month',YYMM_date,-11);
Minus12Mon_date=intnx('month',YYMM_date,-12);

minus0=input(put(Minus0Mon_date,yymmn4.),best.);
minus1=input(put(Minus1Mon_date,yymmn4.),best.);
minus2=input(put(Minus2Mon_date,yymmn4.),best.);
minus3=input(put(Minus3Mon_date,yymmn4.),best.);
minus4=input(put(Minus4Mon_date,yymmn4.),best.);
minus5=input(put(Minus5Mon_date,yymmn4.),best.);
minus6=input(put(Minus6Mon_date,yymmn4.),best.);
minus7=input(put(Minus7Mon_date,yymmn4.),best.);
minus8=input(put(Minus8Mon_date,yymmn4.),best.);
minus9=input(put(Minus9Mon_date,yymmn4.),best.);
minus10=input(put(Minus10Mon_date,yymmn4.),best.);
minus11=input(put(Minus11Mon_date,yymmn4.),best.);
minus12=input(put(Minus12Mon_date,yymmn4.),best.);

call symputx('minus0',minus0);
call symputx('minus1',minus1);
call symputx('minus2',minus2);
call symputx('minus3',minus3);
call symputx('minus4',minus4);
call symputx('minus5',minus5);
call symputx('minus6',minus6);
call symputx('minus7',minus7);
call symputx('minus8',minus8);
call symputx('minus9',minus9);
call symputx('minus10',minus10);
call symputx('minus11',minus11);
Run;
%put minus11=&minus11;  /**2407**/
%put minus0=&minus0; /**2506**/

 
 
%MACRO PCS(YYMM);
%if %sysfunc(exist(LABTRET.ABT_CS_&YYMM.Y())  %Then %Do;
Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
SET LABTRET.ABT_CS_&YYMM.Y(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
mon=&YYMM.;
Run;
%end;

%Else %if %sysfunc(exist(md.ABT_CS_&YYMM.Y_PROD_BFMEKU))  %Then %Do;
Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
SET md.ABT_CS_&YYMM.Y_PROD_BFMEKU(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
mon=&YYMM.;
Run;
%end;

%Else %if %sysfunc(exist( ABTNM.ABT_CS_&YYMM.Y_NM))  %Then %Do;
Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
SET  ABTNM.ABT_CS_&YYMM.Y_NM(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
mon=&YYMM.;
Run;
%end;
%MEND PCS;
%PCS(YYMM=&minus0)
%PCS(YYMM=&minus1)
%PCS(YYMM=&minus2)
%PCS(YYMM=&minus3)
%PCS(YYMM=&minus4)
%PCS(YYMM=&minus5)
%PCS(YYMM=&minus6)
%PCS(YYMM=&minus7)
%PCS(YYMM=&minus8)
%PCS(YYMM=&minus9)
%PCS(YYMM=&minus10)
%PCS(YYMM=&minus11)

Here is the Log

 

1                                                          The SAS System                              09:12 Saturday, July 19, 2025

1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          %LET _CLIENTTASKLABEL='Program';
4          %LET _CLIENTPROCESSFLOWNAME='Standalone Not In Project';
5          %LET _CLIENTPROJECTPATH='';
6          %LET _CLIENTPROJECTPATHHOST='';
7          %LET _CLIENTPROJECTNAME='';
8          %LET _SASPROGRAMFILE='';
9          %LET _SASPROGRAMFILEHOST='';
10         
11         ODS _ALL_ CLOSE;
12         OPTIONS DEV=SVG;
13         GOPTIONS XPIXELS=0 YPIXELS=0;
14         %macro HTML5AccessibleGraphSupported;
15             %if %_SAS_VERCOMP_FV(9,4,4, 0,0,0) >= 0 %then ACCESSIBLE_GRAPH;
16         %mend;
17         FILENAME EGHTML TEMP;
18         ODS HTML5(ID=EGHTML) FILE=EGHTML
19             OPTIONS(BITMAP_MODE='INLINE')
20             %HTML5AccessibleGraphSupported
NOTE: The ACCESSIBLE_GRAPH option is pre-production for this release.
21             ENCODING='utf-8'
22             STYLE=HTMLBlue
23             NOGTITLE
24             NOGFOOTNOTE
25             GPATH=&sasworklocation
26         ;
NOTE: Writing HTML5(EGHTML) Body file: EGHTML
27         
28         
29         %MACRO PCS(YYMM);
30         %if %sysfunc(exist(LABTRET.ABT_CS_&YYMM.Y())  %Then %Do;
ERROR: Macro keyword DO appears as text.
ERROR: A dummy macro will be compiled.
31         Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
32         SET LABTRET.ABT_CS_&YYMM.Y(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
33         mon=&YYMM.;
34         Run;
35         %end;
ERROR: Macro keyword END appears as text.
36         
37         %Else %if %sysfunc(exist(md.ABT_CS_&YYMM.Y_PROD_BFMEKU))  %Then %Do;
ERROR: There is no matching %IF statement for the %ELSE.
ERROR: Macro keyword IF appears as text.
38         Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
39         SET md.ABT_CS_&YYMM.Y_PROD_BFMEKU(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
40         mon=&YYMM.;
41         Run;
42         %end;
ERROR: Macro keyword END appears as text.
43         
44         %Else %if %sysfunc(exist( ABTNM.ABT_CS_&YYMM.Y_NM))  %Then %Do;
ERROR: There is no matching %IF statement for the %ELSE.
ERROR: Macro keyword IF appears as text.
45         Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
46         SET  ABTNM.ABT_CS_&YYMM.Y_NM(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
47         mon=&YYMM.;
48         Run;
2                                                          The SAS System                              09:12 Saturday, July 19, 2025

49         %end;
ERROR: Macro keyword END appears as text.
50         %MEND PCS;
ERROR: Macro keyword MEND appears as text.
51         %PCS(YYMM=&minus0)
52         
53         %LET _CLIENTTASKLABEL=;
ERROR: Macro keyword LET appears as text.
54         %LET _CLIENTPROCESSFLOWNAME=;
ERROR: Macro keyword LET appears as text.
55         %LET _CLIENTPROJECTPATH=;
ERROR: Macro keyword LET appears as text.
56         %LET _CLIENTPROJECTPATHHOST=;
ERROR: Macro keyword LET appears as text.
57         %LET _CLIENTPROJECTNAME=;
ERROR: Macro keyword LET appears as text.
58         %LET _SASPROGRAMFILE=;
ERROR: Macro keyword LET appears as text.
59         %LET _SASPROGRAMFILEHOST=;
ERROR: Macro keyword LET appears as text.
60         
61         ;*';*";*/;quit;run;
62         ODS _ALL_ CLOSE;
63         
64         
65         QUIT; RUN;
66         
3 REPLIES 3
Ronein
Onyx | Level 15

I found the solution,

here is the correct code

The question why sas stop working well due to the error?

%include '!RSMEHOME/SASCode/SHARECode/Libname.sas';
LIBNAME md "/usr/local/abtretsme/SASData/CS/leumi/model_cs_2024";
LIBNAME abtnm "/usr/local/SAS/MidulOld/score_cs/ABT_NM";
LIBNAME nm_cs_t "/usr/local/SAS/SASUsers/LabRet/UserDir/Udclkbv/nm_cs_t";  /**For the clean files,be attention all pop is there not only clean but here have keshel future and reteaf info***/


%let YYMM1=2506;

Data _null_;
YYMM_date=input("&YYMM1.",YYMMn4.);
Minus0Mon_date=intnx('month',YYMM_date,-0);
Minus1Mon_date=intnx('month',YYMM_date,-1);
Minus2Mon_date=intnx('month',YYMM_date,-2);
Minus3Mon_date=intnx('month',YYMM_date,-3);
Minus4Mon_date=intnx('month',YYMM_date,-4);
Minus5Mon_date=intnx('month',YYMM_date,-5);
Minus6Mon_date=intnx('month',YYMM_date,-6);
Minus7Mon_date=intnx('month',YYMM_date,-7);
Minus8Mon_date=intnx('month',YYMM_date,-8);
Minus9Mon_date=intnx('month',YYMM_date,-9);
Minus10Mon_date=intnx('month',YYMM_date,-10);
Minus11Mon_date=intnx('month',YYMM_date,-11);
Minus12Mon_date=intnx('month',YYMM_date,-12);

minus0=input(put(Minus0Mon_date,yymmn4.),best.);
minus1=input(put(Minus1Mon_date,yymmn4.),best.);
minus2=input(put(Minus2Mon_date,yymmn4.),best.);
minus3=input(put(Minus3Mon_date,yymmn4.),best.);
minus4=input(put(Minus4Mon_date,yymmn4.),best.);
minus5=input(put(Minus5Mon_date,yymmn4.),best.);
minus6=input(put(Minus6Mon_date,yymmn4.),best.);
minus7=input(put(Minus7Mon_date,yymmn4.),best.);
minus8=input(put(Minus8Mon_date,yymmn4.),best.);
minus9=input(put(Minus9Mon_date,yymmn4.),best.);
minus10=input(put(Minus10Mon_date,yymmn4.),best.);
minus11=input(put(Minus11Mon_date,yymmn4.),best.);
minus12=input(put(Minus12Mon_date,yymmn4.),best.);

call symputx('minus0',minus0);
call symputx('minus1',minus1);
call symputx('minus2',minus2);
call symputx('minus3',minus3);
call symputx('minus4',minus4);
call symputx('minus5',minus5);
call symputx('minus6',minus6);
call symputx('minus7',minus7);
call symputx('minus8',minus8);
call symputx('minus9',minus9);
call symputx('minus10',minus10);
call symputx('minus11',minus11);
Run;
%put minus11=&minus11;  /**2407**/
%put minus0=&minus0; /**2506**/

 
 
%MACRO PCS(YYMM);
%if %sysfunc(exist(LABTRET.ABT_CS_&YYMM.Y))  %Then %Do;
Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
SET LABTRET.ABT_CS_&YYMM.Y(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
mon=&YYMM.;
Run;
%end;

%else %if %sysfunc(exist(md.ABT_CS_&YYMM.Y_PROD_BFMEKU))  %Then %Do;
Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
SET md.ABT_CS_&YYMM.Y_PROD_BFMEKU(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
mon=&YYMM.;
Run;
%end;

%else %if %sysfunc(exist(ABTNM.ABT_CS_&YYMM.Y_NM))  %Then %Do;
Data Ind_Crd&YYMM.(KEEP=lakoach  mon SHIUCH_CHATIVA_CD);
SET ABTNM.ABT_CS_&YYMM.Y_NM(rename=(rej_nm_ind=REJ_IND  bad_ind=BAD_NM_IND  sum_nizcard_cdo_6=sum_nizcard_cdo));
mon=&YYMM.;
Run;
%end;
%MEND PCS;
%PCS(YYMM=&minus0)
%PCS(YYMM=&minus1)
%PCS(YYMM=&minus2)
%PCS(YYMM=&minus3)
%PCS(YYMM=&minus4)
%PCS(YYMM=&minus5)
%PCS(YYMM=&minus6)
%PCS(YYMM=&minus7)
%PCS(YYMM=&minus8)
%PCS(YYMM=&minus9)
%PCS(YYMM=&minus10)
%PCS(YYMM=&minus11)




 
SASKiwi
PROC Star

The first problem I see is this line:

%if %sysfunc(exist(LABTRET.ABT_CS_&YYMM.Y())  %Then %Do;

You have an extra left bracket on the EXIST function. Try this:

%if %sysfunc(exist(LABTRET.ABT_CS_&YYMM.Y))  %Then %Do; 

 

Tom
Super User Tom
Super User

You left SAS hunting for the closing parentheses.  And to compound it you did it inside a macro definition so it is also looking for an end to the macro definition (the one it was going to ignore because of the error it detected).

 

Sometimes you just need to restart SAS when you have given it too confusing a string of characters.

 

 

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 360 views
  • 0 likes
  • 3 in conversation