turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- BI
- /
- Enterprise Guide
- /
- Code Formatter

Topic Options

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-07-2011 11:16 AM

is there some advice for "code formatter/beautifier", to help line-up the SAS

code, to improve readability in SAS?

code, to improve readability in SAS?

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to Prasad

03-07-2011 12:36 PM

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/

http://blogs.sas.com/sasdummy/

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to Doc_Duke

03-08-2011 04:41 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to ChrisHemedinger

03-09-2011 10:25 AM

Hello Chris,

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

Sincerely,

SPR

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

Sincerely,

SPR

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-15-2011 08:30 AM

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]

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]

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to ChrisHemedinger

03-15-2011 09:26 AM

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

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

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

03-16-2011 12:50 PM

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

Chris