Bei der Migration auf EGL Version 7.0 nimmt das Migrationstool möglicherweise nicht alle erforderlichen Änderungen vor.
Wenn Sie ein migriertes Projekt in einen Arbeitsbereich der Version 7.0 importieren, zeigt die Sicht der Generierungsergebnisse möglicherweise an, dass ein Abschnitt nicht generiert werden konnte, da ein Standardbuilddeskriptor fehlt; dies kann auch der Fall sein, wenn Sie einen Standardbuilddeskriptor festgelegt haben.
Zur Behebung dieses Problems aktualisieren Sie die Builder für das Projekt so, dass EGL Advanced Builder nach EGL Build Parts Model Builder und EGL Validation Builder aufgeführt ist.
Wenn Sie einen Abschnitt mit demselben Namen definieren, den auch eine EGL-Eigenschaft aufweist, löst EGL Referenzen möglicherweise in den Namen mit dem benutzerdefinierten Abschnitt auf, nicht in die EGL-Eigenschaft.
Wenn Sie eine Funktion stringAsDecimal migriert haben, fügt das Migrationstool möglicherweise eine Umsetzung zum DECIMAL-Typ hinzu, um das Verhalten des alten Codes beizubehalten. In diesem Fall müssen Sie manuell eine Länge hinzufügen.
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;
Eine Variable und eine Funktion mit demselben Namen können nicht im selben Logikabschnitt enthalten sein. Benennen Sie die Variable oder die Funktion um.
Programme, bei denen es sich um das Ziel einer Anweisung call handelt, müssen über eine Parameterliste verfügen. Diese Parameterliste kann leer sein, die runden Klammern, die die Parameterliste kennzeichnen, sind nun jedoch erforderlich.
Wenn für eine Variable in einem JSF-Handler der Wert index für die Eigenschaft selectType festgelegt ist, muss diese Variable den Typ INT aufweisen.
Wenn eine Variable über die Eigenschaft selectFromListItem verfügt, darf der Wert dieser Eigenschaft kein Datensatzarray bzw. kein Array primitiver Variablen innerhalb eines Datensatzes sein. Gültige Typen sind eine Datentabellenspalte bzw. ein Array primitiver Variablen außerhalb eines Datensatzes. Wenn Sie ein Datensatzarray oder ein Array primitiver Variablen innerhalb eines Datensatzes als Liste mit Auswahloptionen verwenden möchten, verwenden Sie die Eigenschaft selectedRowItem oder selectedValueItem.
Der von getRequestAttr() zurückgegebene Wert muss denselben Typ aufweisen wie das Argument, das für setRequestAttr() verwendet wurde, um Laufzeitfehler zu vermeiden.
EGL Version 7.0 speichert nur die Geschäftsdaten des Objekts, um den Heapspeicherbedarf zu reduzieren.
Der Algorithmus zur Beibehaltung eindeutiger Namen, wenn ein EGL-Name Zeichen enthält, die in Java-Namen ungültig sind, wurde geändert. Das Unterstreichungszeichen ('_') wird nun dem Hexadezimalwert für das ungültige Zeichen vorangestellt. Java-Namen, die aus EGL-Namen mit einem Unterstreichungszeichen generiert werden, enthalten nun den Hexadezimalwert 005.
Dies führt nicht zu Problemen zwischen EGL-Programmen, wenn alle Programme in Version 7 neu generiert werden. Ein Nicht-EGL-Programm, das ein EGL-Programm aufruft, muss jedoch so geändert werden, dass es das neue Format für alle Namen verwendet, die Unterstreichungszeichen enthielten. Hierzu gehören auch Nicht-EGL-Clients von EGL-Services oder Jasper-Berichte.
Der Algorithmus für die Generierung der WSDL-Definition eines Serviceparameters liefert in Version 7 einen anderen Code für strukturierte Datensätze. Alle Clients, die den Service aufrufen, müssen so geändert werden, dass sie den Service mit dem neuen Parameternamen aufrufen.
Wenn Sie den Änderungswert in in einer Parameterdefinition für ein Array verwenden, muss der Argumentelementtyp mit dem Parameterelementtyp übereinstimmen.
function main();
arrayArg CHAR(50)[ ] = ["A", "B", "C"];
showArray (arrayArg); // ungültige Anweisung 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
Der Änderungswert in für arrayParm bedeutet, dass für den Parameter beim Aufrufen der Funktion eine temporäre lokale Variable zugeordnet wird und das Argument der temporären Variablen am Funktionsbeginn zugewiesen wird. In Version 6 bewirkte die Zuweisung, dass eine Kopie des Argumentarrays erstellt wurde. In Version 7 stellt die Zuweisung eine Referenz auf das Array dar. Da Arrayzuweisungen in Version 7 zwischen Arrays mit demselben Elementtyp erfolgen müssen, wird der Aufruf von showArray() in main() in Version 7 als Fehler gekennzeichnet.
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); // ungültige Anweisung 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 auf JSF-Seiten werden in forward to url-Anweisungen sowie in der Eigenschaft action für Variablen, die mit displayUse = hyperlink definiert sind, angegeben. Das Migrationstool von EGL Version 7 ändert die Linkerweiterung automatisch von .jsp in .faces, wenn die URL oder die Aktion als Literalwert angegeben ist, der auf .jsp endet. Diese Änderung muss manuell vorgenommen werden, falls der Linkwert nicht auf .jsp endet oder falls der Wert aus einer Variablen stammt, nicht aus einem Literal.
Bei der Zeichenfolge-in-Datum-Konvertierung in Version 7 muss die Reihenfolge von Tag, Monat und Jahr in der Zeichenfolge identisch sein mit der Reihenfolge von Tag, Monat und Jahr in der Builddeskriptoroption defaultDateFormat. Informationen zu den Standardwerten, die verwendet werden, wenn diese Builddeskriptoroption nicht angegeben wird, finden Sie in defaultDateFormat (Builddeskriptoroption).
In Version 6 ging der Konvertierungsalgorithmus vom Format jjjjMMtt aus. Daher kann ein Datumswert wie '20050810' in Version 7 zu einem Fehler führen, es sei denn, Sie geben für die Builddeskriptoroption defaultDateFormat explizit den Wert jjjjMMtt an.