EGL バージョン 7.0 へのマイグレーションの際に、必要な変更の一部がマイグレーション・ツールによって実行されないことがあります。
マイグレーション済みのプロジェクトを V7.0 ワークスペースにインポートすると、デフォルトのビルド記述子を設定していた場合でも、デフォルトのビルド記述子が欠落しているためにパーツを生成できないと、「生成結果」ビューに表示されることがあります。
この問題を解決するには、プロジェクトのビルダーを更新して、EGL Advanced Builder が EGL Build Parts Model Builder および EGL Validation Builder の後にリストされるようにします。
EGL プロパティーと同じ名前を持つパーツを定義すると、EGL は、その名前への参照を、EGL プロパティーではなく、ユーザー定義パーツによって解決する場合があります。
stringAsDecimal 関数をマイグレーションすると、マイグレーション・ツールは、古いコードの動作を維持するために DECIMAL 型へのキャストを追加することがあります。 この場合は、長さを手動で追加する必要があります。
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;
1 つの論理パーツ内で、変数と関数が同じ名前を持つことはできません。 変数または関数の名前を変更してください。
call ステートメントのターゲットであるプログラムには、パラメーター・リストがなければなりません。このパラメーター・リストは空であっても構いませんが、パラメーター・リストであることを示すための括弧が必要になりました。
JSF ハンドラー内の変数で、selectType プロパティーが index に設定されている場合、その変数は INT 型でなければなりません。
変数が selectFromListItem プロパティーを持つ場合、そのプロパティーの値は、レコード配列やレコード内のプリミティブ変数の配列にはできません。 有効な型は、データ・テーブル列か、レコード内ではないプリミティブ変数の配列です。 レコード配列またはレコード内のプリミティブ変数の配列を選択オプションのリストとして使用するには、 selectedRowItem プロパティーまたは selectedValueItem プロパティーを使用してください。
ランタイム・エラーにならないためには、getRequestAttr() が返す値は、setRequestAttr() で使用した引数と同じ型でなければ なりません。
EGL V7.0 では、ヒープ・ストレージ要件を下げるために、 オブジェクトからビジネス・データのみを保存します。
Java 名では無効な文字が EGL 名に含まれる場合に固有の名前を保持するためのアルゴリズムが変更されました。下線文字 (「_」) が無効文字の 16 進値の前に配置されるようになりました。 下線文字を含む EGL 名から生成される Java 名は、16 進値 005 を含む ようになりました。
すべてのプログラムをバージョン 7 で再生成すれば、EGL プログラム間でこれが問題を引き起こすことはありません。一方、EGL プログラムを起動するすべての非 EGL プログラムは、下線を含むすべての名前で新しい形式を使用するように変更する必要があります。これには、EGL サービスや Jasper レポートの非 EGL クライアントを含みます。
バージョン 7 では、サービス・パラメーターの WSDL 定義を生成するアルゴリズムにより、 構造化レコードについてこれまでと異なるコードが生成されます。 そのサービスを呼び出すすべてのクライアントは、新しいパラメーター名でサービスを呼び出すように変更しなければなりません。
配列のパラメーター定義で in 修飾子を 使用する場合、引数要素の型は、パラメーター要素の型と同じである 必要があります。
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
arrayParm の in 修飾子は、 関数が呼び出されたときにそのパラメーター用の一時的なローカル変数が割り振られ、関数に入る際にその 一時的な変数に引数が代入されることを意味します。バージョン 6 では、この代入の結果、 引数配列のコピーが行われていました。バージョン 7 では、この代入は、 配列の参照になっています。バージョン 7 での配列の代入は、同じ要素型の配列間で実行される必要があるため、main() での showArray() の呼び出しは、バージョン 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
JSF ページへのリンクは、 forward to url ステートメントや、displayUse = hyperlink を指定して定義されている変数の action プロパティーに指定されます。EGL バージョン 7 マイグレーション・ツールでは、その URL またはアクションが .jsp で終わるリテラル値として指定されている場合、リンクの拡張子を .jsp から .faces に自動で変更します。 リンクの値が .jsp で終了されていないか、リテラルではなく変数によって指定されている値の場合は、この変更を手動で行う必要があります。
バージョン 7 でのストリングから日付への変換では、ストリングにおける日、月、および年の順序は、defaultDateFormat ビルド記述子オプションにおける日、月、および年の順序と同じである必要があります。このビルド記述子オプションが指定されていないときのデフォルト値については、defaultDateFormat (ビルド記述子オプション)を参照してください。
バージョン 6 では、変換アルゴリズムは yyyyMMdd 形式を想定しています。その結果、明示的に defaultDateFormat ビルド記述子オプションを yyyyMMdd に設定しない限り、「20050810」などの日付値はバージョン 7 でエラーを引き起こす可能性があります。