!!HELP!! – RBOD problem fixed

When using !!HELP!!, sooner or later a red box will pop-up on your display.

After a lot of try and error it seems that I finally found a solution.

We use the following code to switch betwen the framesets

_defaultNewFrame := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "AlwaysOpenNewNavigationFrame" ; 2;[FailSilent] ));
@If(_defaultnewFrame!="YES";
@Do(
@SetTargetFrame("_top");
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"));
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"))

@SetTargetFrame(“_top”) ( intoduced in Notes R5 ) obviously is responsible for the crash.

I tried to substitute @SetTargetFrame(“_top”); and found that @Command([CloseWindow]); ( introduced in R6 ) does the same job; with a little side effect ;-). The database has to be the last in the database switcher … This is logic; a workaround and to be serious, I dunno like workarounds. So, I had to find another solution.

For what ever reason I tried the following formula:

_defaultNewFrame := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "AlwaysOpenNewNavigationFrame" ; 2;[FailSilent] ));
@If(_defaultnewFrame!="YES";
@Do(
@SetTargetFrame("_top");
@Command([CloseWindow]);
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"));
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"))

And what shall I say; this seems to be the solution. No RBODs anymore 😉

To avoid an RBOD when switching the language, you have to replace the existing code in the OUT-LANGUAGE outline with the code below

REM { find users language };
_defaultLang := _defaultLang := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "LANGUAGE" ; 2 ));
_view:="($LULANG)";
_foundlanguages := @Unique(@DbColumn("Notes" : "NoCache"; "" : ""; _view; 1));
_userlanguage :=@If(@ClientType="Web";
@UpperCase(@LanguagePreference([Region]))[1];
@If(@Environment("HDLang")="";@UpperCase(@LanguagePreference([Content]));@Environment("HDLang")));
_language:=@If(@IsMember(_userlanguage;_foundlanguages);_userlanguage;_defaultlang);

REM { find label };
_key:="outDlgLang";
_label := @Implode(@DbLookup( "" : "NoCache" ; "":"" ; "($LULANGTYPE)" ;_language + "~outline";"typestring");";");
_val:=@Right(_LABEL; _key + "=");
REM { find all possible languages };
_LANGUAGE:="**": @Unique(@DbColumn("Notes" : "NoCache"; "" : ""; _view; 1));
REM {select a new language or delete the entry from notes.ini if "**" is selected};
_NEWLANG:=@Prompt([OkCancelCombo];
@Word(@Word(_val;";";1);"~";1);
@Word(@Word(_val;";";1);"~";2);
@Environment("HDLang"); _LANGUAGE);
REM { Set the environment variable };
@If(_NEWLANG = "**";@Environment("HDLang"; "");@Environment("HDLang"; @UpperCase(_NEWLANG)));
@SetTargetFrame("_top");
@Command([CloseWindow]);
@Command([OpenFrameset];"FS-MAIN")

Is this worth to tell IBM about ?

UPDATE:

According to Damien Katz there is possibly a bug in the frameset window title formula

“Stack traces from rip files are a little unreliable,
but the best I can tell is that its crashing in a frameset window title formula, but I can’t tell why.
Try removing that formula and see what happens. On second look, it could be any frameset formula, not necessary a window title one.”