When you import a migrated project into a V7.0 workspace, the Generation Results view might indicate that a part cannot be generated because a default build descriptor is missing; this can occur even if you have set a default build descriptor.
To resolve this issue, update the builders for the project so that the EGL Advanced Builder is listed after the EGL Build Parts Model Builder and the EGL Validation Builder.
If you define a part with the same name as an EGL property, EGL might resolve references to that name with the user-defined part, rather than the EGL property.
If you migrated a stringAsDecimal function, the migration tool might add a cast to the DECIMAL type to maintain the behavior of the old code. In this case, you must manually add a length.
myStringNumber string = "5";
myResult decimal(7,2);
myResult = stringAsDecimal(myStringNumber) + 5;
myStringNumber string = "5";
myResult decimal(7,2);
myResult = myStringNumber as decimal() + 5;
myStringNumber string = "5";
myResult decimal(7,2);
myResult = myStringNumber as decimal(7,2) + 5;
You cannot have a variable and a function within a logic part with the same name. Rename the variable or the function.
Programs that are the target of a call statement must have a parameter list. This parameter list can be empty, but the parentheses denoting the parameter list are now required.
If a variable in a JSF Handler has the selectType property set to index, that variable must be an INT type.
When a variable has the selectFromListItem property, the value of the property cannot be a record array or an array of primitive variables within a record. The valid types are a data table column or an array of primitive variables that are not within a record. To use a record array or an array of primitive variables within a record as a list of selection options, use the selectedRowItem or selectedValueItem properties.
The value that is returned by getRequestAttr() must be the same type as the argument you used for setRequestAttr() to prevent runtime errors.
EGL V7.0 saves only the business data from the object to reduce heap storage requirements.
The algorithm for preserving unique names when an EGL name contains characters that are invalid in Java names has changed. The underscore character ("_") now precedes the hexadecimal value for the invalid character. Java names generated from EGL names containing an underscore now include the 005 hexadecimal value.
This does not cause a problem between EGL programs if all programs are regenerated in version 7. However any non-EGL program that invokes an EGL program must be modified to use the new form of any names that contained underscores. This includes non-EGL clients of EGL services or Jasper Reports.
The algorithm for generating the WSDL definition of a service parameter produces different code in version 7 for structured records. Any client that invokes the service must be modified to invoke the service with the new parameter name.
When you use the in modifier on a parameter definition for an array, the argument element type must be the same as the parameter element type.
function main();
arrayArg CHAR(50)[ ] = ["A", "B", "C"];
showArray (arrayArg); // invalid statement in Version 7
end
function showArray (arrrayParm CHAR(100) [ ] in)
i, iEnd INT;
iEnd = size (arrayParm);
for (i from 1 to iEnd)
writeStdOut (arrayParm[i]);
end
end
Thein modifier on arrayParm means that a temporary local variable is allocated for the parameter when the function is invoked and the argument is assigned to the temporary variable on entry to the function. In version 6, the assignment resulted in a copy being made of the argument array. In version 7, the assignment is a reference to the array. Because array assignments in version 7 must be between arrays with the same element type, the showArray() invocation in main() is flagged as an error in version 7.
function main() ;
arrayArg CHAR(50)[ ] = ["A", "B", "C"];
tempArrayArg CHAR(100) [ ];
move arrayArg to tempArrayArg;
showArray (tempArrayArg);
end
function main();
arrayArg STRING[ ] = ["A", "B", "C"];
showArray (arrayArg); // invalid statement in Version 7
end
function showArray (arrrayParm STRING[ ] in)
i, iEnd INT;
iEnd = size (arrayParm);
for (i from 1 to iEnd)
writeStdOut (arrayParm[i]);
end
end
Links to JSF pages are specified on forward to url statements and on the action property for variables defined with displayUse = hyperlink. The EGL version 7 migration tool automatically changes the link extension from .jsp to .faces if the URL or action is specified as a literal value ending in .jsp. This change must be made manually if the link value does not end in .jsp or the value comes from a variable rather than from a literal.
In string-to-date conversion in version 7, the order of day, month, and year in the string must be the same as the order of day, month, and year in the defaultDateFormat build descriptor option. For the default values when this build descriptor option is not specified, see defaultDateFormat (build descriptor option).
In version 6, the conversion algorithm assumed a yyyyMMdd format. As a result, a date value such as "20050810" can cause an error in version 7 unless you explicitly set the defaultDateFormat build descriptor option to yyyyMMdd.