BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
chann1313
Calcite | Level 5
data txns; do amt = 40000, 42000, 48000;
output;
end;
run;
data process;
set txns; if amt >= 50000 then do;
%let title_suffix = NOTE: Large Transaction Amounts!!;
large_tran_flag = 'Y';
end;
run; title "Transaction Report &title_suffix";
proc print data = process:
run;
 
 
another one :
 
Given the following array, how would you total the values
 
array abc(5) ( 12 5 . 17 20);
1 ACCEPTED SOLUTION

Accepted Solutions
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Sorry, your first question doesn't make sense, then title can be found on the row indicated by the arrow 3 in the below code plus the text from the macro variable indicated by arrow 2 (note I have updated your to follow some good programmnig practice rules such as indentation and keeping one code line on one line for readbility).  Do note that the %let is not condition in this code, macro code is separate from datastep code.  Output is marked by arrow 1:

data txns; 
  do amt=40000, 42000, 48000;
    output;     <--1
  end;
run;

%let title_suffix=NOTE: Large Transaction Amounts!!;  <--2

data process;
  set txns;
  if amt >= 50000 then do;
    large_tran_flag = 'Y';
  end;
run;

title "Transaction Report &title_suffix";    <--3
proc print data=process:
run;

For your second question - which should be in a separate post - you can use the of array syntax to simplfy your code:

data want;
  array abc(5) (12 5 . 17 20);
  result=sum(of abc{*});
run;

View solution in original post

2 REPLIES 2
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Sorry, your first question doesn't make sense, then title can be found on the row indicated by the arrow 3 in the below code plus the text from the macro variable indicated by arrow 2 (note I have updated your to follow some good programmnig practice rules such as indentation and keeping one code line on one line for readbility).  Do note that the %let is not condition in this code, macro code is separate from datastep code.  Output is marked by arrow 1:

data txns; 
  do amt=40000, 42000, 48000;
    output;     <--1
  end;
run;

%let title_suffix=NOTE: Large Transaction Amounts!!;  <--2

data process;
  set txns;
  if amt >= 50000 then do;
    large_tran_flag = 'Y';
  end;
run;

title "Transaction Report &title_suffix";    <--3
proc print data=process:
run;

For your second question - which should be in a separate post - you can use the of array syntax to simplfy your code:

data want;
  array abc(5) (12 5 . 17 20);
  result=sum(of abc{*});
run;
chann1313
Calcite | Level 5
Thanks rw9, I m trying to learn.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

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