DATA Step, Macro, Functions and more

Intnx: %sysfunc vs data_null Issue

Accepted Solution Solved
Reply
New Contributor
Posts: 2
Accepted Solution

Intnx: %sysfunc vs data_null Issue

Hi,

I'm not sure if this is a bug, or if I'm not understanding how the intnx() function works with %sysfunc.

Method 1, using %sysfunc, spits out the error

"WARNING: An argument to the function INTNX referenced by the %SYSFUNC or %QSYSFUNC macro

         function is out of range.

NOTE: Mathematical operations could not be performed during %SYSFUNC function execution. The

      result of the operations have been set to a missing value."

Methods 2 and 3 output correctly within a data _null_ step.

If anyone could help enlighten me on why %sysfunc fails here, I would be really grateful.

Thanks,

Vincent

BEGIN PROGRAM

%let x=today();

/* method 1 */

%let y1=%sysfunc(intnx('qtr.2',&x,-9,'b'));

%put x=&x y1=&y1;

/* method 2 */

data _null_;

  y2=intnx('qtr.2',&x,-9,'b');

  put "y2=" y2;

run;

/* method 3*/

data _null_;

  call symput('y3', intnx('qtr.2',&x,-9,'b'));

run;

%put y3=&y3;


Accepted Solutions
Solution
‎08-21-2014 02:40 PM
Trusted Advisor
Posts: 1,204

Re: Intnx: %sysfunc vs data_null Issue

%let x=%sysfunc(today());

/* method 1 */

%let y1=%sysfunc(intnx(qtr.2,&x,-9,b));

%put x=&x y1=&y1;

View solution in original post


All Replies
Solution
‎08-21-2014 02:40 PM
Trusted Advisor
Posts: 1,204

Re: Intnx: %sysfunc vs data_null Issue

%let x=%sysfunc(today());

/* method 1 */

%let y1=%sysfunc(intnx(qtr.2,&x,-9,b));

%put x=&x y1=&y1;

New Contributor
Posts: 2

Re: Intnx: %sysfunc vs data_null Issue

Thanks for the helpful emails!

The following solution for method 1 worked, by removing all quotes, and enclosing &x with another %sysfunc() for &x.

%let y1=%sysfunc(intnx(qtr.2,%sysfunc(&x),-9,b));

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 193 views
  • 0 likes
  • 2 in conversation