From: Geoff Schaller on 12 May 2010 04:12 Tham, It isn't that tedious, in fact, I'd go so far as to say it would be beneficial. Ok so now you're going to have to go through effectively 6 upgrades in one step, instead of one at a time over 5 years and yes, there will be some effort but here are the benefits: 1. tighter compiler rules. 2. more efficient classes. 3. better design time error handling. 4. better source code editor with new features. 5. some 100+ useful bug fixes (and many others) 6. new classes 7. existing class extensions 8. new controls and streamlined controls 9. a heaps better IDE 10. way better source control integration (if used) 11. a move away from registry based installation This is just a start. I am sure others could add to the list so I mean what I say. It would be hugely beneficial to you and your clients to upgrade. And no, it isn't like re-writing your applications but yes, you will have to deal with the newer compiler rules (which can be turned off of course). Moving to Dot Net is a different issue and that is where you will have to choose between C#, VB or Vulcan. Geoff "tham chan weng" <tcw(a)multiplex.com.my> wrote in message news:9a6b970e-1eb5-4f0c-953a-c9f3ce3ad1c7(a)42g2000prb.googlegroups.com: > Geoff, > > Point taken. If the migrating process is tedious, I would have to make > a choice. To continue with VO or another programming language. > > > > On May 12, 6:44 am, "Geoff Schaller" > <geo...(a)softxwareobjectives.com.au> wrote: > > > Tham, > > > > > > And Geoff, on your suggestion to upgrade to 2.8. I have consider this > > > for quite some time but worry on migrating issues. I am doing > > > > > Wrong attitude. I would be worrying about your clients and all the > > functionality they are missing out and all the performance enhancements > > YOU are missing out. Surely you have a process in place to upgrade a > > version and test? Yes? Then jeepers... just get out there and do it! > > > > Do I need to point out it has over been 5 years now? > > > > Cheers, > > > > Geoff > > > > > > > > > > customized systems for clients and would say all of them are running > > > well. It would be embrassing if not devasting should issues surfaced > > > after the upgrade. I started with v2.5 and I would say it is a breeze > > > to 'convert' everything to 2.6. I have quite a number of udfs and > > > custom classes. Would it be the same as from 2.5 to 2.6 for 2.8? If it > > > is too much trouble, I may opt for Vulcan or VS. > > > > > On May 11, 6:24 am, "Geoff Schaller" > > > <geo...(a)softxwareobjectives.com.au> wrote: > > > > > > > Tham, > > > > > > Firstly, the VO 2.6 email classes had some significant bugs (it was only > > > > ever a very simple demo app) which I re-wrote and recommend you use > > > > instead. I also hope you aren't still messing with VO 2.6 and that you > > > > have actually upgraded to 2.8 SP3. > > > > > > Secondly, you are using the classes incorrectly anyway. Once you have > > > > done GetMail, it is all over from a receiving perspective. You can now > > > > look at the raw email data to confirm what you really received. From > > > > here you could visually look at the number of cc recipients. > > > > > > Thirdly, if cCList length is 2 or 3 then that is what it is. > > > > > > Cheers, > > > > > > Geoff > > > > > > "tham chan weng" <t...(a)multiplex.com.my> wrote in messagenews:e9aafd57-424d-4f82-9659-88968a1ddedb(a)t26g2000prt.googlegroups.com: > > > > > > > > I am trying to incorporate a simple feature for emailing and started > > > > > toying with the sample prog from VO2.6. So far I got what I want > > > > > except for the cclist. The return array does not contains the full > > > > > list. Most of the time it returns 2 and sometime the most 3 out of a > > > > > list of 5. Is this an issue with the sample, class or I miss out > > > > > something. I did not change any of codes. Just added the following for > > > > > debugging. > > > > > > > oPop := CFixedPop{aMailInfo[DEF_POPSERVER]} > > > > > > > oPop:Logon(aMailInfo[DEF_ACCOUNT],aMailInf[DEF_PASSWORD]) > > > > > > > n := oPop:GetStatus() > > > > > > > nList := oPop:MailCount > > > > > > > FOR iMail := 1 UPTO nList > > > > > IF oPop:GetMail(iMail) > > > > > oEmailServer:Append() > > > > > oEmailServer:FIELDPUT( #E_Box, "Inbox" ) > > > > > oEmailServer:FIELDPUT( #E_Date, Today()) > > > > > oEmailServer:FIELDPUT( #E_To, __MakeString(oPop:Email:DestList) ) > > > > > oEmailServer:FIELDPUT( #E_Subject, oPop:Email:Subject ) > > > > > > > /// this is the part I added > > > > > ? len(oPop:Email:CCList) /// returns as 2 or 3 > > > > > for var := 1 upto len()oPop:Email:CCList > > > > > ? oPop:Email:CCList[var] > > > > > next > > > > > wait > > > > > //// > > > > > > > oEmailServer:FIELDPUT( #E_CCs, __MakeString(oPop:Email:CCList) ) > > > > > oEmailServer:FIELDPUT( #E_Body, oPop:Email:MailBody) > > > > > > > cFile := SELF:GetAttachFileNames( oPop ) > > > > > IF cFile != Null_String > > > > > oEmailServer:FIELDPUT( #E_Attach, cFile) > > > > > ENDIF > > > > > > > oEmailServer:Commit() > > > > > SELF:FillListView( SELF:oDCEmailTreeView:GetSelectedItem()) > > > > > > > // UH 06/29/1999 > > > > > // IF !oPop:DeleteMail( 1 ) > > > > > IF !oPop:DeleteMail( iMail ) > > > > > textbox{,"Email","Could not delete the message from the > > > > > server."}:show() > > > > > ENDIF > > > > > ENDIF > > > > > NEXT > > > > > oPop:Disconnect()- Hide quoted text - > > > > > > > - Show quoted text -- Hide quoted text - > > > > > - Show quoted text -
From: E®!k /!$$E® on 12 May 2010 04:19 Tham, Unfortunately VO is as dead as can be although some here tend to deny that. If you have a choice, I would advise you to drop it and use one of the very well supported (and the express editions are for free!) MS languages. Better language, bigger user base, better support etc. You name (Google) a problem and most likely you'll find a solution. I have moved to C# and never had any regrets. Erik "tham chan weng" <tcw(a)multiplex.com.my> schreef in bericht news:9a6b970e-1eb5-4f0c-953a-c9f3ce3ad1c7(a)42g2000prb.googlegroups.com... > Geoff, > > Point taken. If the migrating process is tedious, I would have to make > a choice. To continue with VO or another programming language. > > > > On May 12, 6:44 am, "Geoff Schaller" > <geo...(a)softxwareobjectives.com.au> wrote: >> Tham, >> >> > And Geoff, on your suggestion to upgrade to 2.8. I have consider this >> > for quite some time but worry on migrating issues. I am doing >> >> Wrong attitude. I would be worrying about your clients and all the >> functionality they are missing out and all the performance enhancements >> YOU are missing out. Surely you have a process in place to upgrade a >> version and test? Yes? Then jeepers... just get out there and do it! >> >> Do I need to point out it has over been 5 years now? >> >> Cheers, >> >> Geoff >> >> >> >> > customized systems for clients and would say all of them are running >> > well. It would be embrassing if not devasting should issues surfaced >> > after the upgrade. I started with v2.5 and I would say it is a breeze >> > to 'convert' everything to 2.6. I have quite a number of udfs and >> > custom classes. Would it be the same as from 2.5 to 2.6 for 2.8? If it >> > is too much trouble, I may opt for Vulcan or VS. >> >> > On May 11, 6:24 am, "Geoff Schaller" >> > <geo...(a)softxwareobjectives.com.au> wrote: >> >> > > Tham, >> >> > > Firstly, the VO 2.6 email classes had some significant bugs (it was >> > > only >> > > ever a very simple demo app) which I re-wrote and recommend you use >> > > instead. I also hope you aren't still messing with VO 2.6 and that >> > > you >> > > have actually upgraded to 2.8 SP3. >> >> > > Secondly, you are using the classes incorrectly anyway. Once you have >> > > done GetMail, it is all over from a receiving perspective. You can >> > > now >> > > look at the raw email data to confirm what you really received. From >> > > here you could visually look at the number of cc recipients. >> >> > > Thirdly, if cCList length is 2 or 3 then that is what it is. >> >> > > Cheers, >> >> > > Geoff >> >> > > "tham chan weng" <t...(a)multiplex.com.my> wrote in >> > > messagenews:e9aafd57-424d-4f82-9659-88968a1ddedb(a)t26g2000prt.googlegroups.com: >> >> > > > I am trying to incorporate a simple feature for emailing and >> > > > started >> > > > toying with the sample prog from VO2.6. So far I got what I want >> > > > except for the cclist. The return array does not contains the full >> > > > list. Most of the time it returns 2 and sometime the most 3 out of >> > > > a >> > > > list of 5. Is this an issue with the sample, class or I miss out >> > > > something. I did not change any of codes. Just added the following >> > > > for >> > > > debugging. >> >> > > > oPop := CFixedPop{aMailInfo[DEF_POPSERVER]} >> >> > > > oPop:Logon(aMailInfo[DEF_ACCOUNT],aMailInf[DEF_PASSWORD]) >> >> > > > n := oPop:GetStatus() >> >> > > > nList := oPop:MailCount >> >> > > > FOR iMail := 1 UPTO nList >> > > > IF oPop:GetMail(iMail) >> > > > oEmailServer:Append() >> > > > oEmailServer:FIELDPUT( #E_Box, "Inbox" ) >> > > > oEmailServer:FIELDPUT( #E_Date, Today()) >> > > > oEmailServer:FIELDPUT( #E_To, __MakeString(oPop:Email:DestList) ) >> > > > oEmailServer:FIELDPUT( #E_Subject, oPop:Email:Subject ) >> >> > > > /// this is the part I added >> > > > ? len(oPop:Email:CCList) /// returns as 2 or 3 >> > > > for var := 1 upto len()oPop:Email:CCList >> > > > ? oPop:Email:CCList[var] >> > > > next >> > > > wait >> > > > //// >> >> > > > oEmailServer:FIELDPUT( #E_CCs, __MakeString(oPop:Email:CCList) ) >> > > > oEmailServer:FIELDPUT( #E_Body, oPop:Email:MailBody) >> >> > > > cFile := SELF:GetAttachFileNames( oPop ) >> > > > IF cFile != Null_String >> > > > oEmailServer:FIELDPUT( #E_Attach, cFile) >> > > > ENDIF >> >> > > > oEmailServer:Commit() >> > > > SELF:FillListView( SELF:oDCEmailTreeView:GetSelectedItem()) >> >> > > > // UH 06/29/1999 >> > > > // IF !oPop:DeleteMail( 1 ) >> > > > IF !oPop:DeleteMail( iMail ) >> > > > textbox{,"Email","Could not delete the message from the >> > > > server."}:show() >> > > > ENDIF >> > > > ENDIF >> > > > NEXT >> > > > oPop:Disconnect()- Hide quoted text - >> >> > > - Show quoted text -- Hide quoted text - >> >> - Show quoted text - >
From: tham chan weng on 12 May 2010 08:15 This is exactly the crossroad I'm at. I started off since Clipper days and moving to VO was the logical choice for Win enviroment then. It was very difficult during the mirgation but it worth all the sleepless nights and effort put in. I'm very thankful, even now, to have VO to change all my DOS to Win based. And most important the amount of support in this group here on helping out. If by changing 20% of the existing codes for upgrading to 2.8, I won't mind spending the time if I can continue working on it and getting the kind of support that I'm having here for the next 2/3 years. But if the percentage of changes is higher and not having a clear idea on VO future, I need to consider alternatives. Loyalty ask me to continue the VO path and hope that Vulcan will sit in nicely for the future. But reality wise is it the right choice? I believe a lot of other old timers share my feeling on this. On May 12, 4:19 pm, E®!k \\/!$$E® <nos...(a)nospam.com> wrote: > Tham, > > Unfortunately VO is as dead as can be although some here tend to deny that. > If you have a choice, I would advise you to drop it and use one of the very > well supported (and the express editions are for free!) MS languages. > Better language, bigger user base, better support etc. You name (Google) a > problem and most likely you'll find a solution. > > I have moved to C# and never had any regrets. > > Erik > > "tham chan weng" <t...(a)multiplex.com.my> schreef in berichtnews:9a6b970e-1eb5-4f0c-953a-c9f3ce3ad1c7(a)42g2000prb.googlegroups.com... > > > > > Geoff, > > > Point taken. If the migrating process is tedious, I would have to make > > a choice. To continue with VO or another programming language. > > > On May 12, 6:44 am, "Geoff Schaller" > > <geo...(a)softxwareobjectives.com.au> wrote: > >> Tham, > > >> > And Geoff, on your suggestion to upgrade to 2.8. I have consider this > >> > for quite some time but worry on migrating issues. I am doing > > >> Wrong attitude. I would be worrying about your clients and all the > >> functionality they are missing out and all the performance enhancements > >> YOU are missing out. Surely you have a process in place to upgrade a > >> version and test? Yes? Then jeepers... just get out there and do it! > > >> Do I need to point out it has over been 5 years now? > > >> Cheers, > > >> Geoff > > >> > customized systems for clients and would say all of them are running > >> > well. It would be embrassing if not devasting should issues surfaced > >> > after the upgrade. I started with v2.5 and I would say it is a breeze > >> > to 'convert' everything to 2.6. I have quite a number of udfs and > >> > custom classes. Would it be the same as from 2.5 to 2.6 for 2.8? If it > >> > is too much trouble, I may opt for Vulcan or VS. > > >> > On May 11, 6:24 am, "Geoff Schaller" > >> > <geo...(a)softxwareobjectives.com.au> wrote: > > >> > > Tham, > > >> > > Firstly, the VO 2.6 email classes had some significant bugs (it was > >> > > only > >> > > ever a very simple demo app) which I re-wrote and recommend you use > >> > > instead. I also hope you aren't still messing with VO 2.6 and that > >> > > you > >> > > have actually upgraded to 2.8 SP3. > > >> > > Secondly, you are using the classes incorrectly anyway. Once you have > >> > > done GetMail, it is all over from a receiving perspective. You can > >> > > now > >> > > look at the raw email data to confirm what you really received. From > >> > > here you could visually look at the number of cc recipients. > > >> > > Thirdly, if cCList length is 2 or 3 then that is what it is. > > >> > > Cheers, > > >> > > Geoff > > >> > > "tham chan weng" <t...(a)multiplex.com.my> wrote in > >> > > messagenews:e9aafd57-424d-4f82-9659-88968a1ddedb(a)t26g2000prt.googlegroups.com: > > >> > > > I am trying to incorporate a simple feature for emailing and > >> > > > started > >> > > > toying with the sample prog from VO2.6. So far I got what I want > >> > > > except for the cclist. The return array does not contains the full > >> > > > list. Most of the time it returns 2 and sometime the most 3 out of > >> > > > a > >> > > > list of 5. Is this an issue with the sample, class or I miss out > >> > > > something. I did not change any of codes. Just added the following > >> > > > for > >> > > > debugging. > > >> > > > oPop := CFixedPop{aMailInfo[DEF_POPSERVER]} > > >> > > > oPop:Logon(aMailInfo[DEF_ACCOUNT],aMailInf[DEF_PASSWORD]) > > >> > > > n := oPop:GetStatus() > > >> > > > nList := oPop:MailCount > > >> > > > FOR iMail := 1 UPTO nList > >> > > > IF oPop:GetMail(iMail) > >> > > > oEmailServer:Append() > >> > > > oEmailServer:FIELDPUT( #E_Box, "Inbox" ) > >> > > > oEmailServer:FIELDPUT( #E_Date, Today()) > >> > > > oEmailServer:FIELDPUT( #E_To, __MakeString(oPop:Email:DestList) ) > >> > > > oEmailServer:FIELDPUT( #E_Subject, oPop:Email:Subject ) > > >> > > > /// this is the part I added > >> > > > ? len(oPop:Email:CCList) /// returns as 2 or 3 > >> > > > for var := 1 upto len()oPop:Email:CCList > >> > > > ? oPop:Email:CCList[var] > >> > > > next > >> > > > wait > >> > > > //// > > >> > > > oEmailServer:FIELDPUT( #E_CCs, __MakeString(oPop:Email:CCList) ) > >> > > > oEmailServer:FIELDPUT( #E_Body, oPop:Email:MailBody) > > >> > > > cFile := SELF:GetAttachFileNames( oPop ) > >> > > > IF cFile != Null_String > >> > > > oEmailServer:FIELDPUT( #E_Attach, cFile) > >> > > > ENDIF > > >> > > > oEmailServer:Commit() > >> > > > SELF:FillListView( SELF:oDCEmailTreeView:GetSelectedItem()) > > >> > > > // UH 06/29/1999 > >> > > > // IF !oPop:DeleteMail( 1 ) > >> > > > IF !oPop:DeleteMail( iMail ) > >> > > > textbox{,"Email","Could not delete the message from the > >> > > > server."}:show() > >> > > > ENDIF > >> > > > ENDIF > >> > > > NEXT > >> > > > oPop:Disconnect()- Hide quoted text - > > >> > > - Show quoted text -- Hide quoted text - > > >> - Show quoted text -- Hide quoted text - > > - Show quoted text -
From: Willie Moore on 12 May 2010 08:19 Tham, I have used clipper since summer 87. I moved from clipper to VO and now VO to Vulcan. Making the move to VO 2.8 will not be that painful and it will position yourself to move that code straight to Vulcan. You can modify your windows from inside VS. You can also run VO windows and winform/wpf windows side by side. I am happy that I made the move to Vulcan. Regards, Willie "tham chan weng" <tcw(a)multiplex.com.my> wrote in message news:3696e19d-02cb-47ee-abe5-64573afed956(a)g5g2000pre.googlegroups.com: > This is exactly the crossroad I'm at. I started off since Clipper days > and moving to VO was the logical choice for Win enviroment then. It > was very difficult during the mirgation but it worth all the sleepless > nights and effort put in. I'm very thankful, even now, to have VO to > change all my DOS to Win based. And most important the amount of > support in this group here on helping out. > > If by changing 20% of the existing codes for upgrading to 2.8, I won't > mind spending the time if I can continue working on it and getting the > kind of support that I'm having here for the next 2/3 years. But if > the percentage of changes is higher and not having a clear idea on VO > future, I need to consider alternatives. > > Loyalty ask me to continue the VO path and hope that Vulcan will sit > in nicely for the future. But reality wise is it the right choice? > > I believe a lot of other old timers share my feeling on this. > > On May 12, 4:19 pm, ER!k \\/!$$ER <nos...(a)nospam.com> wrote: > > > Tham, > > > > Unfortunately VO is as dead as can be although some here tend to deny that. > > If you have a choice, I would advise you to drop it and use one of the very > > well supported (and the express editions are for free!) MS languages. > > Better language, bigger user base, better support etc. You name (Google) a > > problem and most likely you'll find a solution. > > > > I have moved to C# and never had any regrets. > > > > Erik > > > > "tham chan weng" <t...(a)multiplex.com.my> schreef in berichtnews:9a6b970e-1eb5-4f0c-953a-c9f3ce3ad1c7(a)42g2000prb.googlegroups.com... > > > > > > > > > > Geoff, > > > > > Point taken. If the migrating process is tedious, I would have to make > > > a choice. To continue with VO or another programming language. > > > > > On May 12, 6:44 am, "Geoff Schaller" > > > <geo...(a)softxwareobjectives.com.au> wrote: > > > >> Tham, > > > > > >> > And Geoff, on your suggestion to upgrade to 2.8. I have consider this > > >> > for quite some time but worry on migrating issues. I am doing > > > > > >> Wrong attitude. I would be worrying about your clients and all the > > >> functionality they are missing out and all the performance enhancements > > >> YOU are missing out. Surely you have a process in place to upgrade a > > >> version and test? Yes? Then jeepers... just get out there and do it! > > > > >> Do I need to point out it has over been 5 years now? > > > > >> Cheers, > > > > >> Geoff > > > > > >> > customized systems for clients and would say all of them are running > > >> > well. It would be embrassing if not devasting should issues surfaced > > >> > after the upgrade. I started with v2.5 and I would say it is a breeze > > >> > to 'convert' everything to 2.6. I have quite a number of udfs and > > >> > custom classes. Would it be the same as from 2.5 to 2.6 for 2.8? If it > > >> > is too much trouble, I may opt for Vulcan or VS. > > > > >> > On May 11, 6:24 am, "Geoff Schaller" > > >> > <geo...(a)softxwareobjectives.com.au> wrote: > > > > > >> > > Tham, > > > > >> > > Firstly, the VO 2.6 email classes had some significant bugs (it was > > >> > > only > > >> > > ever a very simple demo app) which I re-wrote and recommend you use > > >> > > instead. I also hope you aren't still messing with VO 2.6 and that > > >> > > you > > >> > > have actually upgraded to 2.8 SP3. > > > > >> > > Secondly, you are using the classes incorrectly anyway. Once you have > > >> > > done GetMail, it is all over from a receiving perspective. You can > > >> > > now > > >> > > look at the raw email data to confirm what you really received. From > > >> > > here you could visually look at the number of cc recipients. > > > > >> > > Thirdly, if cCList length is 2 or 3 then that is what it is. > > > > >> > > Cheers, > > > > >> > > Geoff > > > > >> > > "tham chan weng" <t...(a)multiplex.com.my> wrote in > > >> > > messagenews:e9aafd57-424d-4f82-9659-88968a1ddedb(a)t26g2000prt.googlegroups.com: > > > > > >> > > > I am trying to incorporate a simple feature for emailing and > > >> > > > started > > >> > > > toying with the sample prog from VO2.6. So far I got what I want > > >> > > > except for the cclist. The return array does not contains the full > > >> > > > list. Most of the time it returns 2 and sometime the most 3 out of > > >> > > > a > > >> > > > list of 5. Is this an issue with the sample, class or I miss out > > >> > > > something. I did not change any of codes. Just added the following > > >> > > > for > > >> > > > debugging. > > > > >> > > > oPop := CFixedPop{aMailInfo[DEF_POPSERVER]} > > > > >> > > > oPop:Logon(aMailInfo[DEF_ACCOUNT],aMailInf[DEF_PASSWORD]) > > > > >> > > > n := oPop:GetStatus() > > > > >> > > > nList := oPop:MailCount > > > > >> > > > FOR iMail := 1 UPTO nList > > >> > > > IF oPop:GetMail(iMail) > > >> > > > oEmailServer:Append() > > >> > > > oEmailServer:FIELDPUT( #E_Box, "Inbox" ) > > >> > > > oEmailServer:FIELDPUT( #E_Date, Today()) > > >> > > > oEmailServer:FIELDPUT( #E_To, __MakeString(oPop:Email:DestList) ) > > >> > > > oEmailServer:FIELDPUT( #E_Subject, oPop:Email:Subject ) > > > > >> > > > /// this is the part I added > > >> > > > ? len(oPop:Email:CCList) /// returns as 2 or 3 > > >> > > > for var := 1 upto len()oPop:Email:CCList > > >> > > > ? oPop:Email:CCList[var] > > >> > > > next > > >> > > > wait > > >> > > > //// > > > > >> > > > oEmailServer:FIELDPUT( #E_CCs, __MakeString(oPop:Email:CCList) ) > > >> > > > oEmailServer:FIELDPUT( #E_Body, oPop:Email:MailBody) > > > > >> > > > cFile := SELF:GetAttachFileNames( oPop ) > > >> > > > IF cFile != Null_String > > >> > > > oEmailServer:FIELDPUT( #E_Attach, cFile) > > >> > > > ENDIF > > > > >> > > > oEmailServer:Commit() > > >> > > > SELF:FillListView( SELF:oDCEmailTreeView:GetSelectedItem()) > > > > >> > > > // UH 06/29/1999 > > >> > > > // IF !oPop:DeleteMail( 1 ) > > >> > > > IF !oPop:DeleteMail( iMail ) > > >> > > > textbox{,"Email","Could not delete the message from the > > >> > > > server."}:show() > > >> > > > ENDIF > > >> > > > ENDIF > > >> > > > NEXT > > >> > > > oPop:Disconnect()- Hide quoted text - > > > > > >> > > - Show quoted text -- Hide quoted text - > > > > > >> - Show quoted text -- Hide quoted text - > > > > > - Show quoted text - __________ Information from ESET NOD32 Antivirus, version of virus signature database 5107 (20100512) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com
From: Ginny Caughey on 12 May 2010 10:52 I doubt that you will have to change as much as 20% of your existing code for VO 2.8. Many of the changes are just new warnings which, if your present code is running perfectly, you may choose to turn off. You will have to make more changes for Vulcan however, but you may still find that's a good choice. -- Ginny Caughey www.wasteworks.com
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 4 Prev: lterative to VO Next: VO 2.7 internet.aef from december 2006 |