DATA Step, Macro, Functions and more

macro loop

Accepted Solution Solved
Reply
Contributor
Posts: 45
Accepted Solution

macro loop

I really need help with this !

i need to receive 3 files into a macro ( english comp and sat ) . i have written it but have a small problem with calling a file in a loop . you can see below . hope someone can help me please . no sure what i should put on line 1559    because "file" is part of the macro and also "i".  maybe my input is not correct ....

1555  %macro cg (file1,file2,file3);

1556  options mprint symbolgen mlogic;

1557  %do i = 1 %to &3;

1558  data cg&i;

1559  set &file&i;

1560  f&i= (x*m)/100;

1561  %end;

1562  run;

1563  %mend;

1564

1565  %cg (math, english, sat)


Accepted Solutions
Solution
‎01-26-2012 03:46 PM
Contributor
Posts: 65

macro loop

If I understand correctly, you need another leading ampersand in 1559:

set &&file&i;

View solution in original post


All Replies
Solution
‎01-26-2012 03:46 PM
Contributor
Posts: 65

macro loop

If I understand correctly, you need another leading ampersand in 1559:

set &&file&i;

Contributor
Posts: 45

Re: macro loop


thank you it worked!!!!  could you please help me with this :

i need to receive 3 files X1 X2 and X3

trying to do it in a Marco but i have a problem with the loop and the sequence, i have tried so many differnt things ways its driving me mad ...   thanks ... CL

%macro avgofzt;

%do i=1 %to 3;

data a&i;

infile "c:\X.&i.txt";

id=1;

ERROR: Physical file does not exist, c:\X.1txt.

Super Contributor
Posts: 1,636

Re: macro loop


try changing

infile "c:\x.&i.txt";

to

infile "c:\x&i..txt";

Contributor
Posts: 45

macro loop

THANKS IT WORKED !!!!

infile "C:\X&i..txt";

Contributor
Posts: 65

Re: macro loop

Sure. 2 dots after the &i:

infile "c:\x.&i..txt";

The 1st dot terminates macro replacement, and the second is the literal "." before the extension.

I'm glad my earlier response helped. Good luck.

Contributor
Posts: 45

macro loop

Thanks worked ! 

Super Contributor
Posts: 1,636

Re: macro loop

data math english sat;

do x=1 to 5;

  do m=2 to 6;

  output;

  end;end;

run;

options mprint symbolgen mlogic;

%macro cg (file1,file2,file3);

%do i = 1 %to 3;

data cg&i;

set &&file&i;

f&i= (x*m)/100;

run;

%end;

%mend;

%cg (math, english, sat)

Linlin

☑ This topic is SOLVED.

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

Discussion stats
  • 7 replies
  • 232 views
  • 7 likes
  • 3 in conversation