BookmarkSubscribeRSS Feed
Prasad
Calcite | Level 5
is there some advice for "code formatter/beautifier", to help line-up the SAS
code, to improve readability in SAS?
6 REPLIES 6
Doc_Duke
Rhodochrosite | Level 12
Upgrade to EGuide 4.3. there is one built in to it. Check the SAS/Dummy blog archives for an article on it.

http://blogs.sas.com/sasdummy/
SPR
Quartz | Level 8 SPR
Quartz | Level 8
Hello Chris,

BTW, I found that Ctrl+I does not format proc SQL.

Sincerely,
SPR
ChrisHemedinger
Community Manager
It should format PROC SQL, at least with basic indentation.

For me, it turns this:
[pre]
proc sql;
create table work.out as
select age,
(height/weight) as ratio
from sashelp.class where age>12;
quit;
[/pre]

into this:
[pre]
proc sql;
create table work.out as
select age,
(height/weight) as ratio
from sashelp.class where age>12;
quit;
[/pre]
It's time to register for SAS Innovate! Join your SAS user peers in Las Vegas on April 16-19 2024.
SPR
Quartz | Level 8 SPR
Quartz | Level 8
Hello Chris,

This is a real life example. I've got this code from a macro that produces SQL code in LOG (options mprint):
[pre]
proc SQL;
create view pd as
select
case
when dlq = 1 and iltv=0 and RB < 555 then 100*1+0 when dlq = 1 and iltv=0 and
555 <= RB < 634 then 100*1+1 when dlq = 1 and iltv=0 and 634 <= RB < 672 then 100*1+2 when dlq = 1 and iltv=0 and 672 <= RB then
100*1+3 when dlq = 1 and iltv=1 and RB < 558 then 100*1+50+0 when dlq = 1 and iltv=1 and 558 <= RB < 644 then 100*1+50+1 when dlq =
1 and iltv=1 and 644 <= RB < 707 then 100*1+50+2 when dlq = 1 and iltv=1 and 707 <= RB < 732 then 100*1+50+3 when dlq = 1 and
iltv=1 and 732 <= RB then 100*1+50+4 when dlq = 2 and iltv=0 and RB < 646 then 100*2+0 when dlq = 2 and iltv=0 and 646 <= RB then
100*2+1 when dlq = 2 and iltv=1 and RB < 556 then 100*2+50+0 when dlq = 2 and iltv=1 and 556 <= RB < 631 then 100*2+50+1 when dlq =
2 and iltv=1 and 631 <= RB then 100*2+50+2 when dlq = 3 then 100*dlq when dlq = 4 then 100*dlq when dlq > 4 then 500 else 999
end as pnam label="RC75 RB Pools",
date, SUM(PD*N) as Nb, SUM(N) as N,
SUM(PD*N)/SUM(N)*10000 as bps label="PD, bps" format=6.1,
SUM(Bal) as Bal format 15.0
from _w.ds75_&t
group by date, pnam
order by date, pnam
;quit;
[/pre]
Automatic identation does not help in this case. All Case clauses are messed.
Sincerely,
SPR
ChrisHemedinger
Community Manager
Thanks for the example. No, the formatter doesn't dive deep into these constructs (such as CASE). But I'll pass this on to the development team!

Chris
It's time to register for SAS Innovate! Join your SAS user peers in Las Vegas on April 16-19 2024.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 6 replies
  • 2265 views
  • 0 likes
  • 4 in conversation