Wenn eine Variable in einer ADD
oder SUBTRACT
Anweisung um die Konstante 1
erhöht oder verringert wird, so wird ein Inkrement- oder Dekrement-Operator anstelle des Additions- oder Subtraktionszuweisungsoperators verwendet.
ADD 1 TO TASK-CUR SUBTRACT 1 FROM STAK-ANZ
TaskCur += 1; StakAnz -= 1;
TaskCur++; StakAnz--;
Die für eine PERFORM/VARY/UNTIL Schleife erzeugte for
-Anweisung wurde verbessert. Increment/Decrement wird erkannt und dementsprechend erzeugt, die UNTIL Bedingung wurde besser in eine for-while
Bedingung umgesetzt.
PERFORM ... VARYING INDEX-Z0AAAVE FROM 1 BY 1 UNTIL (INDEX-Z0AAAVE > ITEMS-Z0AAAVE)
for (IndexZ0aaave = 1; !((IndexZ0aaave > ItemsZ0aaave)); IndexZ0aaave += 1) {
for (IndexZ0aaave = 1; IndexZ0aaave <= ItemsZ0aaave; IndexZ0aaave++) {
Anstelle der Generierung von komplexem Code, der sicherstellt, dass die Daten hinter dem aktuellen Satz hinzugefügt werden, wird das Hinzufügen nicht-deterministisch generiert. Dafür wird ein ''MIG_NOTE''-Hinweis erzeugt, dass man diese Stellen prüfen sollte, ob hier ggf. komplexere Maßnahmen notwendig werden, falls die Reihenfolge der hinzugefügten Daten relevant sein sollten.
EXEC TAA ADDLIST LNLPPM2 TO SNLPPME END-EXEC
{ var idx = this.Data.Snlppme.IndexOf(this.Data.Snlppme.NextOrDefault()); if (idx < 0) idx = this.Data.Snlppme.Count ; this.Data.Snlppme.Insert(idx, DataLnlppm2); }
// MIG_NOTE: DataLnlppm2 will be added in undefined position; if position is important please adapt to insert with index this.Data.Snlppme.Add(DataLnlppm2);
Für ein ADD mit LAST wird jetzt das passende Coding erzeugt.
EXEC TAA ADD LAST SNLPPME END-EXEC
this.Data.Snlppme.Add(Snlppme);
this.Data.Snlppme.Insert(this.Data.Snlppme.Count, Snlppme);
Zeilenumbrüche in Bedingungen werden jetzt den Umbrüchen im COBOL Code angepasst.
IF B-RUEWA-NEIN OR B-RUEABSCHL-JA THEN
if (!BRuewaJa || BRueabschlJa) {
if (!BRuewaJa || BRueabschlJa) {
EXEC TAA GET FIRST SNLPPM1 WHERE SNLPPM1-X50-PRAE-TYP-K = K-BPOPO AND SNLPPM1-T80-VEIN-KNOT-K = K-VEIN-KNOT-BND END-EXEC
this.Data.Snlppm1.FirstOrDefault(rec => rec.X50PraeTypK == PraeKonstanten.KBpopo && rec.T80VeinKnotK == PraeKonstanten.KVeinKnotBnd)?.CopyLocal(Snlppm1);
this.Data.Snlppm1.FirstOrDefault(rec => rec.X50PraeTypK == PraeKonstanten.KBpopo && rec.T80VeinKnotK == PraeKonstanten.KVeinKnotBnd)?.CopyLocal(Snlppm1);
Die Klammersetzung in Bedingungen wurde nicht immer korrekt übernommen. Außerdem werden jetzt überflüssige Klammern entfernt.
IF (ZW-VEV-BZG-PRAE = 0 AND B-KEIN-FEHLER) THEN
if ((ZwVevBzgPrae == 0) && !BFehler) {
if (ZwVevBzgPrae == 0 && !BFehler) {
IF (SNLPPME-X50-PRAE-TYP-K = K-JNETPRAERZ) AND ((SNLPPME-T80-VEIN-KNOT-K = K-VEIN-KNOT-RIS) OR (SNLPPME-T80-VEIN-KNOT-K = K-VEIN-KNOT-VEV)) THEN
if ((Snlppme.X50PraeTypK == PraeKonstanten.KJnetpraerz) && (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotRis) || (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotVev)) {
if (Snlppme.X50PraeTypK == PraeKonstanten.KJnetpraerz && (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotRis || Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotVev)) {
IF PBT-SICH-PRAE-BT (ZW-PRE-IND) = PBT-PRAE-BT (ZW-PRE-IND) AND (NOT B-WRT-XXX-JA OR B-WRT-XXX-JA AND PBT-SICH-PRAE-WRT (ZW-PRE-IND) = PBT-PRAE-WRT (ZW-PRE-IND)) THEN
if (PbtSichPraeBt[ZwPreInd] == PbtPraeBt[ZwPreInd] && (!(SwWrtUpd & WrtUpdEnum.WrtXxxJa) != 0 || (SwWrtUpd & WrtUpdEnum.WrtXxxJa) != 0 && PbtSichPraeWrt[ZwPreInd] == PbtPraeWrt[ZwPreInd])) {
if (PbtSichPraeBt[ZwPreInd] == PbtPraeBt[ZwPreInd] && (!((SwWrtUpd & WrtUpdEnum.WrtXxxJa) != 0) || (SwWrtUpd & WrtUpdEnum.WrtXxxJa) != 0 && PbtSichPraeWrt[ZwPreInd] == PbtPraeWrt[ZwPreInd])) {
IF ZW-KNOT-TYP-BER = K-KNOT-TYP-RIS AND B-RUNDEN-JA THEN
if (ZwKnotTypBer == KKnotTypRis && (SwRunden == RundenEnum.Ja)) {
if (ZwKnotTypBer == KKnotTypRis && SwRunden == RundenEnum.Ja) {
Bei verschachtelten Bedingungen konnten Teile der Bedingung verloren gehen. Das wurde nun korrigiert.
IF (SNLPPME-X50-PRAE-TYP-K = K-INFPRAE1 OR SNLPPME-X50-PRAE-TYP-K = K-INFPRAE2) AND (SNLPPME-PME-PRAE-BT = ZERO) AND B-BZG-GROES-TAR AND (SNLTD-Z08-T-PRG-REF = SPACE) THEN
if ((Snlppme.X50PraeTypK == PraeKonstanten.KInfprae1) && (Snlppme.PmePraeBt == 0) && BBzgGroesTar && (String.IsNullOrWhiteSpace(Snltd.Z08TPrgRef))) {
if ((Snlppme.X50PraeTypK == PraeKonstanten.KInfprae1 || Snlppme.X50PraeTypK == PraeKonstanten.KInfprae2) && Snlppme.PmePraeBt == 0 && BBzgGroesTar && String.IsNullOrWhiteSpace(Snltd.Z08TPrgRef)) {