Subform from 5.09 to 6.5 errors out

Hi All,

I have a subform that gets used in a main form to pop-up some data lists. In 5.09, it worked without a problem, but since the migration to 6.5, I get an error in the designer indicating

Unexpected: split; Expected: Identifier

on the Option Explicit line in my subforms Options section??? And when I try to change something within the subform (anything!! even put a space anywhere on the form), it gives me this error. If I try to exit designer, it won’t. It just hangs on this form and will not let me out. Even if I hit the little “x” on the tab, it does nothing. I have to logoff, and re-boot my machine entirely. Has anybody seen this, or know of something I can do about it???

Any help is appreciated…

Mick

Subject: Split is a new Function to LS therefore is a reserved word.

Returns an Array of Strings that are the substrings of the specified String.Syntax

Split(expression as String[, delimiter as String[, count as Integer[, compare as Integer]]]) as Variant

Elements

expression

The scalar String to be split into its substrings

delimiter

An optional scalar String containing the characters to separate substrings. If delimiter is not specified, then the space character " " is used

count

An Integer specifying the number of substrings to return. The default value of -1 indicates that all substrings are returned.

compare

An Integer specifying the type of comparison to use when searching for the delimiter

Return value

Split returns an Array of Strings. Each element of this array contains a substring found in expression.

Subject: RE: Split is a new Function to LS therefore is a reserved word.

Thanks for the response Bill. I know it is a reserved word (function) in LS. I use this function to split some arrays that are produced. It is fine in R5, but when I try to make ANY change on the subform in R6, it will not allow me to close the form because of the errors. But there are no errors!! All of the variables are defined, everything is declared, and all parameters are set correctly! I can modify the subform with ANY change in 5 and it works! Allows me to save the form, and exit properly. However, in 6, I make ANY change to it, and it will not save because of these errors, so normally, you get a response like “Script errors, click “Yes” to continue editing, or “No” to quit without saving”. I dont even get that or any dialog box allowing me to cancel!! It gets hung up, and will not close the subform, even if i log out of designer AND notes itself!!! The form stays active and will not close!! I have to reboot my machine!! Luckily, notes does not “save” any of the errors or the change I made, and the form is OK when I go back into it on the server. Its like the form gets locked out or caught in a loop or something!! Very bizarre!!

Any ideas?? Anybody??

Thanks…

Mick

Addendum: I made the changes I need on a machine that has R5, saved it (the changes were merely cosmetic to make the subform look better, no additions of fields or script), and then exited. Went over to my machine (R6), and saved it WITHOUT making any further changes, and pushed the save icon on the tool bar immediately, and it saved ok. What is the deal?? Does this mean I am going to have to keep a version 5 machine near (to make changes to forms that produce errors in R6), make all changes there, and then re-save it with a version 6 template to be sure it works!!! What is up with that???

Subject: RE: Split is a new Function to LS therefore is a reserved word.

I think split was not a reserved word in R5, possibly you have it defined in a script library in that application, and when you are loading the form it is picking up your version instead of the 6.5 version hence the failure of the entire client?

Subject: RE: Split is a new Function to LS therefore is a reserved word.

Thanks for the response Evelyn, but split was a function new with R5. That is why I used it, and was able to get a clean “compile” with this application in R5. Good point about a script library, but one is not used in this app. All of the functions used are defined in the “Globals” section of the subform.

I tried a little experiment, and found out that the table that is used in the subform, got corrupted when the migration occurred. I wiped away the table, and rebuilt the entire form (with R6.5 designer), and everything seems to be fine. It is really strange that a corruption of such magnitude, would force me to have to re-boot the machine!! I mean crap, thats all I would need is having some executive going thru this app, and then crashing their machine!!

I realize that things like this do happen, but for this migration we have got thousands of databases, and each form, process, code, anything for every database has to checked!!!

Holy Crap, here comes the overhead, and the overtime… oh well

Thanks for the responses…

Mick

Subject: RE: Split is a new Function to LS therefore is a reserved word.

Thanks for the response Evelyn, but split was a function new with R5.

No, Split is new with Notes 6.00. I’d lay a bet this is the cause of at least some of the issues you’re experiencing. If you used a function called “Split” in your R5 application, then this is a custom function defined elsewhere. It will cause issues in Notes 6.xx because Lotusscript has that function too. Note that there are other new internal functions like StrToken, Join, Implode and Replace which may also cause problems.

Good to hear you got the issue sorted, even if it does mean reams of work :frowning:

Subject: RE: Split is a new Function to LS therefore is a reserved word.

Yep, Ben you are correct… my appologies Evelyn, it is with R6. I took that and merely re-named all of the calls to the custome Split function (instead of Split, I renamed the function SplitArraysProcess), and located all calls to the function re-naming them accordingly. Everything works fine now, just kind of bizarre how only the designer seemed to be affected by this, because after the migration, testing the database, and everything was OK. Only after making a change to or attempting to the subform did this occur… why would it not have blown up before in production??

Thanks again…

Mick

Subject: Not really. It was compiled code. The references to you internal Split function were valid once compiled in R5.

Subject: Not really. It was compiled code. The references to you internal Split function were valid once compiled in R5.

Bill,

I agree that it was compiled code for R5, but this database was moved (migrated) to a 6.5 environment. In that environment, split is a supplied function for notes. As soon as the environment saw that the split was wrong BECAUSE it was custom made in the R5 platform, that means either the R6 platform ignores the fact that it is there UNTIL sombody does want to make a change to it, OR it was somehow still using the R5 template. Which I don’t think the latter could be true at all. I guess it comes down to when a database is copied, moved, replicated to another server with an upgraded environment, what is pushed with it (database design and documents, templates, default database properties of the nsf, etc…). If this was the case I was just wondering why any new documents that were created after being moved to the R6 server, would not have errors, or some screwed up data in the fields on the subform where the split parsed its data??

I also wonder what would happen if after moving the db, do a “Refresh Design” or a “Replace Design” on the db and see what happens…

Anyway, I got it fixed, so I wont worry about it until that happens…

Thanks

Mick

Subject: RE: Not really. It was compiled code. The references to you internal Split function were valid once compiled in R5.

Moving to a new version won’t affect the compiled version, and the compiled version doesn’t change until you recompile the source code. In the compiled version, there’s no “Split” to worry about – there’s a pointer to some code to execute. The source code, at that point, is just some text along for the ride so you’ll have something recognizable to edit later. It’s not until you try to edit it that the source code (and the word “Split”) rears its ugly head, and the compiler has to try to figure out what “Split” means.

Subject: RE: Not really. It was compiled code. The references to you internal Split function were valid once compiled in R5.

Stan you are the man,

I completely agree with that…

Mick