RPG and COBOL in their length declarations don't of course have to deal with Unicode. But never-the-less, I had not thought about those two. Thanks.
John Warner > -----Original Message----- > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [EMAIL PROTECTED] On Behalf Of Greg Rothlander > Sent: Wednesday, August 13, 2008 11:03 AM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Can you extend the data types in VB.Net > > RPG and COBOL are probably the most common ones that do and the ones > that I > am running into. I'm sure other languages do the same thing but I am not as > familiar with them. > > For example, when you declare a variable in RPG it has a true length > associated with it. That length is what is setting the formatting. Here's > a pseudo the VB version of what they can do... assuming that VB could have > all of this! > > Dim int1 as Integer Length(4) Inz(12) > Dim dt as date Length(8) Inz('20080812') Format(*YMD) > > If you looked out what int1 contain, it would actually contain 0012. This > is because the length is 4, but the value is only 12. So it pads with > zeros. > > Now in these legacy languages when you do something like > > int1 = dt > > the OS is able to do something for you behind the scenes. It does something > sort of like... > > Int1 = Mid(dt.Format("00000000"), 1, Int1.Length) > > Int1 would then contain 2008. In the legacy language all you have to do is > [int1 = dt]. The rest of it is handled for you. > > What I am running into is that I wrote a compiler for .Net for the legacy > languages. So I compile the legacy languages and output whatever .Net code > base you want, be it C#, VB.Net, or MSiL. But in order to correctly output > the code, I have to find a decent way to handle this stuff in .Net. This is > one area where I can handle it, but I think there is a better way. > > What I have is a function that sort of looks like... > > Int1 = FunctionCall(dt, "00000000", int1, "0000") > > Where I have to pass in the formats. That's sort of lame looking code and I > want to get ride of having to passing in the formats. I can do that if I > could do one of two things. If I could ask what the length of dt is as > defined, not what it currently contains. Or I could build a little array in > the constructor of the class and store the data. > > "int1", "4" > "dt", "8" > > When I come back around to that function call, I could do something like... > > Int1 = FunctionCall(dt) > > With this, I would have to be able to ask .Net what's the name of dt. Of > course it's "dt", but once I pass it into the function I don't know of a way > to get it's real name, so I cannot lookup the length from the little array. > > Or using extensions in 3.5 I could do > > Int1 = dt.Format() > > If I could extend .ToString() or whatever is the default for integers and > dates, I might be able to do something like... > > Int1 = dt > > I think that these options are MUCH better than hard coding the format > strings for EVERY line of code that uses the variables, which is almost > every line of code. > > It would seem that there has to be some way to get one of the options to > work. I just have something causing me problems in each version. > > Any thoughts or suggestions would be very much appreciated. > > Best regards, > Jon "Greg"ory Rothlander > > > > > > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of > John Warner > Sent: Wednesday, August 13, 2008 3:48 AM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Can you extend the data types in VB.Net > Importance: Low > > Greg, educate me a bit; what other language stores format with data types? > > John Warner > > > > -----Original Message----- > > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > > [EMAIL PROTECTED] On Behalf Of Greg Rothlander > > Sent: Tuesday, August 12, 2008 8:50 PM > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > > Subject: Re: [ADVANCED-DOTNET] Can you extend the datatypes in > VB.Net > > > > Exactly. That is what it is in .Net, but not in other languages. In > other > > languages you store the format within the data type. So I'm just trying > to > > figure out good way to keep track of the format as well. > > > > I can keep track of the format in a little array. Then look up the > format > > when the variable is about to be displayed. It seems that using > extensions > > in 3.5 might handle this for me. But now I have to figure out how to > look > > it up within an array. > > > > -----Original Message----- > > From: Discussion of advanced .NET topics. > > [mailto:[EMAIL PROTECTED] On Behalf Of > Phil > > Sayers > > Sent: Sunday, August 10, 2008 12:19 AM > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > > Subject: Re: [ADVANCED-DOTNET] Can you extend the datatypes in > VB.Net > > > > I think the idea is that formatting is a "function of display" not a > > "function of value storage". > > > > You can use hook up common Format & Parse event handlers to your > bindings > > on > > a per-datatype basis so you get common display styles for each datatype. > > > > > > > > > > -----Original Message----- > > From: Discussion of advanced .NET topics. > > [mailto:[EMAIL PROTECTED] On Behalf Of > > Greg Rothlander > > Sent: Sunday, August 10, 2008 12:02 AM > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > > Subject: [ADVANCED-DOTNET] Can you extend the datatypes in VB.Net > > > > The data types in .Net do not have a format string with them. Is it > > possible to extend the data types to add a format string? I thought I > came > > across an example of this back a few years ago, but I do not recall. It > may > > have been an example of how to create your own types. > > > > Can anyone think of a way to extend the data types? For example, let's > say > > that I want an Integer with a length of 5 and a format string of > "00000". > > Is there a way to do that? The same might do for a date. I might want > to > > set the format to "MMDDYYYY", but I would like to carry that within the > data > > type. > > > > Why? Because I have to set the format string on thousands of lines > through > > the program. If I was able to store it on the data type itself, I > wouldn't > > have to do this. If I could extend the data type I might be able to do > > something like: > > > > Dim X as Integer = 123 > > x.FormatString = "00000" > > Dim str as string = X.ToString() > > > > str would equal "00123" > > > > I'm just tired of adding the format to EVERY line of code that needs the > > length formatted to a 5 digits. What I have to do now is for every line > of > > code were X is used, I have to do something like: > > > > whateverstring = Format(X, "00000") > > > > I would rather just do something like: > > > > whateverstring = X.ToString() or maybe just whateverstring = X > > > > It seems like there would be some way to do this. It is very common in > > other languages to have the format on the data type. Dates a very > common > > thing to run into like this. It would be nice to have the format of the > > date already set by default. > > > > It would also be nice to have an integer with a length that doesn't > change. > > For example, lets say that I pull something from a database with a field > > length of 5 and it has a value of 123. If I ask it the length, it will > say > > 3. But I need to know that the real length is 5. Why? Because the > program > > wants to store 00123 in the db column and not 123. The 00 is important > for > > the application. > > > > Any thoughts? Am I missing something simple here and trying to work > around > > something that should not be worked around? I do have some limitations > > because the db needs the 00123 stored and with really mess up some of > the > > other programs that use the DB if I did store 123 in that field. Why? > > Other applications written in other languages also use the DB and the DB > is > > not SQL Server. > > > > Any thoughts would be appreciated. > > > > Best regards, > > Jon > > > > =================================== > > This list is hosted by DevelopMentor. http://www.develop.com > > > > View archives and manage your subscription(s) at > http://discuss.develop.com > > > > No virus found in this incoming message. > > Checked by AVG. > > Version: 7.5.524 / Virus Database: 270.6.0/1601 - Release Date: 8/8/2008 > > 9:02 AM > > > > > > No virus found in this outgoing message. > > Checked by AVG. > > Version: 7.5.524 / Virus Database: 270.6.0/1601 - Release Date: 8/8/2008 > > 9:02 AM > > > > =================================== > > This list is hosted by DevelopMentorR http://www.develop.com > > > > View archives and manage your subscription(s) at > http://discuss.develop.com > > > > =================================== > > This list is hosted by DevelopMentor. http://www.develop.com > > > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor. http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor. http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com