LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (December 2006, week 4)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Sat, 23 Dec 2006 11:26:58 -0300
Reply-To:     rdporto1 <rdporto1@TERRA.COM.BR>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         rdporto1 <rdporto1@TERRA.COM.BR>
Subject:      Re: Holiday Tune Courtesy of SAS
Content-Type: text/plain; charset=iso-8859-1

Does anybody knows why did I get:

ERROR: Read Access Violation In Task ( DATASTEP ] Exception occurred at (67ECE421) Task Traceback

And how to solve this?

Happy Holidays,

Rogerio.

---------- Original message -----------

Date: Fri, 22 Dec 2006 14:46:34 -0500 Subject: Holiday Tune Courtesy of SAS

> I'm sure some of you have seen this before, but I figured, I'd send this > out for the holidays. > > This was forwarded to me by a colleague of mine who had received it > somewhere else a few years ago. > > Copy the code and execute it in SAS. > > Merry Christmas and Happy Holidays, > > Mark J. Lamias > > data holidays; > retain fmtname '@$holiday'; > length data $3; > ratio = 1.05946309436; > str1 ='A A#B C C#D D#E F F#G G#'; > str2='A BbCbB#DbD EbFbE#GbG Ab'; > o = 1; > do i = 0 to 87; > p = 55 * ratio**i; > data = compress(substr(str1,mod(i,12)*2+1,2)||o); > output; > if data^=compress(substr(str2,mod(i,12)*2+1,2)||o) then do; > data = compress(substr(str2,mod(i,12)*2+1,2)||o); > output; > end; > if mod(i,12)=2 then o=o+1; > end; > rename data=start p=label; > keep fmtname data p; > run; > > proc format cntlin=holidays; > run; > > %macro play(input); > data _Null_; > %let i=1; > %do %while(%scan(&input,&i,%str( ))^=); > %let note = %scan(&input,&i,%str( )); > %let pitch = %upcase(%scan(&note,1,=)); > %let duration = %scan(&note,2,=); > %let i = %eval(&i+1); > %if &pitch=R %then > call sleep((1/&duration)*750); > %else > call sound(input("&pitch",$holiday.),(1/&duration)*300); > ; > %end; > run; > %mend; > > %play(%str( > C6=1 B5=1.5 A5=6 G5=1 R=2 F5=2 E5=1 D5=1 C5=1 > R=2 G5=2 A5=1 R=2 A5=2 B5=1 R=2 B5=2 C6=.33 > C6=2 C6=2 B5=2 A5=2 G5=2 G5=1.5 F5=4 E5=2 > C6=2 C6=2 B5=2 A5=2 G5=2 G5=1.5 F5=4 E5=2 E5=2 > E5=2 E5=2 E5=2 E5=4 F5=4 G5=1 R=4 F5=4 E5=4 > D5=2 D5=2 D5=2 D5=4 E5=4 F5=1 R=4 E5=4 D5=4 > C5=2 C6=1 A5=2 G5=1.5 F5=6 E5=2 F5=2 E5=1 D5=1 C5=1 > ));


Back to: Top of message | Previous page | Main SAS-L page