Hi Peter, If you got the correct answer with the method you mentioned, your T0-will be 01-JAN-yyyy. If it was a different date (say 25-DEC-yyyy), you must have got wrong results. The correction step i suggested in my previous mail is to take care of this T0 effect. For more details, please see the attached jnl file (extract_jan_daily.jnl). It will be very helpfull (for later explorations!!!) if you write scripts in a general way, such that this sort of pitfalls are taken care off. That is the only motivation behind applying a correction like this, rather than checking the T0 and adjusting the values manually... Please let me know if you have any questions, Cheers........ Jaison On Sat, 05 Jan 2008 14:23:21 +0100, Peter Szabo wrote > Hi Ansley and Jaison, > > Thank You for your help. > I used this method to have the January and July data: > > let day = l[gt=precip] > let jan = if (mod(day,360) le 30) and (mod(day,360) ge 1) then 1 > else 0 let jul = if (mod(day,360) le 210) and (mod(day,360) ge 181) > then 1 else 0 let precip2a = precip * jan let precip2u = precip * jul > > I checked writing out the 30 years for one point and I got 0 for > every December 30th and February 1th data either. > > Jaison,I did not get the point of this line: > let t_jan_base = T[gt=var] - t[gt=var,t=01-JAN-1971] + 1 ! > step 2 But the script worked fine changed to this one: let > t_jan_base = T[gt=var] + 1 ! step 2 > > And I used the compresssl function, thanks for that. > > Peter > > !---------------example starts here------------------------------- > \cancel mode verify > ! Description : Example script for extracting January data from a > daily ! 30-year time series on 360-day calendar. ! > !----------------------------------------------------------------- > > !--create a dummy variable : 360_DAY calendar, daily, 30-years > > define axis/t=01-JAN-1971:30-DEC-2000:1/units=days/calendar=360_DAY\ > /t0=30-JAN-1971 t30yr > let var = SIN(t[gt=t30yr]/500) > > !---This method will result in wrong answer > > let year_days = MOD(t[gt=var],360) > let daily_mask = IF year_days LE 30 THEN 1 > let var_jan_all= var * daily_mask > let var_jan = COMPRESSL(var_jan_all) > let jan_pts = var_jan[l=@NGD] > list jan_pts > > !---The accurate method.... > > ! 1. assume that time units are days > ! 2. remove the effects of T0 on T-values > ! 3. account for 30-DEC (or multiples of 360) > > let t_jan_base = T[gt=var] - t[gt=var,t=01-JAN-1971] + 1 ! > step 2 let year_days = MOD(t_jan_base,360) let daily_mask > = IF year_days GE 1 AND year_days LE 30 THEN 1 ! step 3 let > var_jan_all= var * daily_mask let var_jan = > COMPRESSL(var_jan_all) let jan_pts = var_jan[l=@NGD] list > jan_pts > > !list/l=1:35 daily_mask > !list/l=325:365 daily_mask > !list/l=715:755 daily_mask > !list/l=3595:3635 daily_mask > !---------------example ends here------------------------------- > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Attachment:
extract_jan_daily.jnl
Description: Binary data