I have the following code:
%let dt = &systime;
%let dhour = substr(&dt.,1,2);
%let dminute = substr(&dt.,4,2);
%put NOTE : system data is &dhour. &dminute. ;
which produced the following result:
NOTE : system data is substr(10:44,1,2) substr(10:44,4,2)
The result I want is:
NOTE : system data is 10 44
Can you help me to correct the code?
The macro processor is just a text pre-processor. It looks for the & and % triggers to see where it needs to take action.
In your code you are only use the & trigger. So the string substr is not modified by the macro processor.
You probably want to use the macro function %SUBSTR() or the macro function %SCAN() instead.
555 %let dt=&systime; 556 %let dhour=%substr(&dt,1,2); 557 %let dminute=%substr(&dt,4,2); 558 %put &=systime &=dt &=dhour &=dminute; SYSTIME=09:44 DT=09:44 DHOUR=09 DMINUTE=44