Änderungen und Anpassungen in Release 9.08

Inkrement und Dekrement

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
alt.cs
TaskCur += 1;
StakAnz -= 1;
neu.cs
TaskCur++;
StakAnz--;

PERFORM VARY FROM BY UNTIL

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)
alt.cs
for (IndexZ0aaave = 1;
     !((IndexZ0aaave > ItemsZ0aaave));
     IndexZ0aaave += 1)
{
neu.cs
for (IndexZ0aaave = 1;
     IndexZ0aaave <= ItemsZ0aaave;
     IndexZ0aaave++)
{

EXEC TAA ADD mit CURRENT oder ohne Position

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
alt.cs
{
	var idx = this.Data.Snlppme.IndexOf(this.Data.Snlppme.NextOrDefault());
	if (idx < 0) idx = this.Data.Snlppme.Count ;
	this.Data.Snlppme.Insert(idx, DataLnlppm2);
}
neu.cs
// MIG_NOTE: DataLnlppm2 will be added in undefined position; if position is important please adapt to insert with index
this.Data.Snlppme.Add(DataLnlppm2);

EXEC TAA ADD LAST

Für ein ADD mit LAST wird jetzt das passende Coding erzeugt.

EXEC TAA
    ADD LAST SNLPPME
END-EXEC
alt.cs
this.Data.Snlppme.Add(Snlppme);
neu.cs
this.Data.Snlppme.Insert(this.Data.Snlppme.Count, Snlppme);

Zeilenumbrüche in Bedingungen

Zeilenumbrüche in Bedingungen werden jetzt den Umbrüchen im COBOL Code angepasst.

IF B-RUEWA-NEIN     OR
   B-RUEABSCHL-JA
THEN
alt.cs
if (!BRuewaJa || BRueabschlJa) {
neu.cs
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
alt.cs
this.Data.Snlppm1.FirstOrDefault(rec => rec.X50PraeTypK == PraeKonstanten.KBpopo && rec.T80VeinKnotK == PraeKonstanten.KVeinKnotBnd)?.CopyLocal(Snlppm1);
neu.cs
this.Data.Snlppm1.FirstOrDefault(rec => rec.X50PraeTypK == PraeKonstanten.KBpopo && 
	rec.T80VeinKnotK == PraeKonstanten.KVeinKnotBnd)?.CopyLocal(Snlppm1);

Klammern in Bedingungen

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
alt.cs
if ((ZwVevBzgPrae == 0) && !BFehler) {
neu.cs
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
alt.cs
if ((Snlppme.X50PraeTypK == PraeKonstanten.KJnetpraerz) && (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotRis) || (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotVev)) {
neu.cs
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
alt.cs
if (PbtSichPraeBt[ZwPreInd] == PbtPraeBt[ZwPreInd] && 
	(!(SwWrtUpd & WrtUpdEnum.WrtXxxJa) != 0 || (SwWrtUpd & WrtUpdEnum.WrtXxxJa) != 0 && 
	PbtSichPraeWrt[ZwPreInd] == PbtPraeWrt[ZwPreInd])) {
neu.cs
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
alt.cs
if (ZwKnotTypBer == KKnotTypRis && (SwRunden == RundenEnum.Ja)) {
neu.cs
if (ZwKnotTypBer == KKnotTypRis && SwRunden == RundenEnum.Ja) {

Komplexe Bedingungen

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
alt.cs
if ((Snlppme.X50PraeTypK == PraeKonstanten.KInfprae1) && 
	(Snlppme.PmePraeBt == 0) && 
	BBzgGroesTar && 
	(String.IsNullOrWhiteSpace(Snltd.Z08TPrgRef))) {
neu.cs
if ((Snlppme.X50PraeTypK == PraeKonstanten.KInfprae1 || 
	Snlppme.X50PraeTypK == PraeKonstanten.KInfprae2) && 
	Snlppme.PmePraeBt == 0 && 
	BBzgGroesTar && 
	String.IsNullOrWhiteSpace(Snltd.Z08TPrgRef)) {
cobmig:cs:908_updates · Zuletzt geändert: 13.11.2019 18:34

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum