BookmarkSubscribeRSS Feed
deleted_user
Not applicable
Hi

No idea if this is the right place to put this - please let me know where if not.

New to SAS (new gig, new tools). I am trying to adjust a macro that takes input from a delimited, variable length file and spits it into a SAS output file. I want to select a subset of columns and change the order. How might I do this please? Below indicative of what I am trying to do. I would like the output columns to be THATCOLUMN and then THISCOLUMN. Any help very gratefully received.

%macro test_macro (indset =, outdset =);
data &outdset (keep = THATCOLUMN THISCOLUMN);
infile &indset delimiter = '|' dsd truncover lrecl = 1500;
input THISCOLUMN : 9.
THATCOLUMN : 9.
ANOTHERCOLUMN : 9.;
run;
%mend test_macro;

Thanks
2 REPLIES 2
Olivier
Pyrite | Level 9
Just add a LABEL statement for your variable between the DATA and the INFILE statement ; in that LABEL, give the names of the columns in the order that you want them at the end...

%macro test_macro (indset =, outdset =);
data &outdset (keep = THATCOLUMN THISCOLUMN);
LENGTH THATCOLUMN = "That column" THISCOLUMN = "This column" ;
infile &indset delimiter = '|' dsd truncover lrecl = 1500;
input THISCOLUMN : 9.
THATCOLUMN : 9.
ANOTHERCOLUMN : 9.;
run;
%mend test_macro;
deleted_user
Not applicable
Brilliant thanks Oliver. Obviously, you gave the right answer but got distracted when you wrote out the code (LENGTH rather than LABEL).

I appreciate that a lot 🙂

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
  • 2 replies
  • 1426 views
  • 0 likes
  • 2 in conversation