The long wait is finally over. FormsAPI Master V3.0 Beta has been released as 32bit and 64bit version. Customers have been waiting a long time for the Forms11gR2-64bit support and finally it's here!
Script engine breaking changes
The script engine had to be replaced (didn't get the old engine to work under stable under 64bit) but thankfully there aren't many breaking changes that would cause problems porting scripts from V2.0 to V3.0. Porting the collection of demoscripts only required changes in about 4 scripts and all of them have been minor:
- datatypes : the new scripting engine only supports number / varchar2 / datetime / boolean / variant as base datatype. The "char" datatype will have to be replaced with the varchar2 type in scripts!
- variants that have been used for OLE-Automation (using winword/excel/etc) still exists. but in order for variants to have invokable methods/properties the new "ComVariant" datatype has to be used (see the new ole_winword/ole_excel demo scripts!)
- Customers that have used external units (to move commonly used code outside the main script) will need to add a "uses orcl;" line in the unit. The "ORCL" unit contains all the helperfunctions/classes and it looks like the new scripting engine doesn't automatically add this global library to all source code units in a project. I expect to have this fixed in one of the upcoming versions. But till then you got to use the "uses orcl;" workaround as shown in the unit_tutorialinc.p2s script.
- Inline procedures/functions can no longer be declared inside a function declaration. Workaround is to move them from before "begin" keyword to after (so that the function declaration is inside the begin..end code. Looks strange but works. I expect to have that problem solved in the near future.
Probably there will be one or two other minor problems creeping up when the new script engine will get tested against a vast collection of scripts written by customers. But so far i am very pleased with the new engine.
New PL/SQL grammar
The new script engine architecture also allowed me to easily change some of the grammar. What this means is that many things have now become much more similar to PL/SQL grammar (while still keeping the old PASCAL grammar intact and supports). Following things are now possible:
- procedure declarations are now 100% pl/sql compatible. The "IN OUT NOCOPY" keywords are supported as in "procedure MyProc(p_test IN varchar2 DEFAULT 'abc') IS BEGIN NULL; END;".
- function declarations are also 100% pl/sql compatible, with the RETURN keyword as in "function MyFunc(p_test OUT varchar2) RETURN boolean is begin return true; end;"
- for-loops also got implemented : "for i IN REVERSE 1..10 loop begin null; end;" - please note that the "begin..end" is still as in pascal and that the "loop ... end loop" syntax still won't work. There are technical reasons for that - i can't implement the loop..end loop without breaking compatibility to older scripts. Currently the "for x in .." loops also don't create an implicit variable by that name (an explicit variable is still required.
Plans for the near future
I still have some entries on my todo-list of things that i want to have implemented before the final release of V3.0 officially goes out. Lot's of small stuff, but also some bigger items such as:
- script debugger (with step in/out/over and breakpoints, variable watches and callstacks)
- Unit wizard (it's one of those features that is very handy but so far hasn't been much used by customers)
- begin .. exception ..end syntax should be doable to be implemented
- code folding and background-compilation would be useful features.
This about sums it all up - if you encounter any issues or have any suggestions of features that would be useful then please contact me and let me know!
ORCL Toolbox LLP, Japan