Wenn festgestellt wird, dass eine Zuweisung auf eine Gruppenebene gemacht wird, so wird statt einer direkten Zuweisung eine CopyFrom
-Anweisung generiert:
// ORIG: MOVE L-VTL-REC (L-VTL-CUR) TO L-N-VERTEIL-REC LNVerteilRec.CopyFrom(LVtlRec[LVtlCur]);
Wenn festgestellt wird, dass eine Zuweisung auf eine Datensatzebene1) gemacht wird, so wird statt einer direkten Zuweisung eine CopyTo
-Anweisung generiert:
// ORIG: MOVE LNLPPM2-REC TO LRPPME1-REC Lnlppm2.CopyTo(Lrppme1);
Wenn festgestellt wird, dass die Zuweisung mittles eines sog. Reference Modifiers vorgenommen wird, so wird die Wert-Zuweisung mit einem Substitute
-Aufruf realisiert:
IF L-BUF-STR (L-POS:1) = K-SCHARFES-S THEN MOVE K-BUCHSTABE-S TO L-BUF-SWP (L-LEN + 1:1) MOVE K-BUCHSTABE-S TO L-BUF-SWP (L-LEN + 2:1) END-IF
if (LBufStr.Substring(LPos - 1, 1) == KScharfesS) { LBufSwp = LBufSwp.Substitute(LLen, 1, KBuchstabeS); LBufSwp = LBufSwp.Substitute(LLen + 1, 1, KBuchstabeS); }
Wenn festgestellt wird, dass eine Zuweisung auf mehrere Datenelemente gleichzeitig gemacht wird, so wird nach Möglichkeit (unten hervorgehoben, wo es nicht möglich war) eine Zuweisungskette anstelle einzelner Zuweisungen generiert:
MOVE ZW-RUNDUNG-BT2 TO SNLPPME-PME-PRAE-BT SNLPPME-PME-SICH-PRAE-BT SNLPPME-000-NEU-PRAE-BT SNLPPME-000-DIF-PRAE-BT MOVE W-PFZR-ENDE TO LLPPME2-PRM-PRAEA-FAELV-D0 L-BZUG-D0
Snlppme.PmePraeBt = Snlppme.PmeSichPraeBt = Snlppme._000NeuPraeBt = Snlppme._000DifPraeBt = ZwRundungBt2; Llppme2.PrmPraeaFaelvD0 = WPfzrEnde; LBzugD0.CopyFrom(WPfzrEnde);
Wenn festgestellt wird dass bei der Zuweisung ein Feld als Datumsfeld erkannt würde, wird die Zuweisung ggf. mit eine ToTimestampString
-, FromTimestampString
-, ToDateString
- oder FromDateString
-Aufruf realisiert.
// ORIG: MOVE K-HIGH-UNIT TO Z0AAPRM-000-HIST-ANUL-TS Z0aaprm._000HistAnulTs = SnstrKonstanten.KHighUnit.FromTimestampString(); // ORIG: MOVE K-HIGH-DATE TO Z0AAPRM-000-HIST-GBI-D0 Z0aaprm._000HistGbiD0 = SnstrKonstanten.KHighDate.FromDateString(); // ORIG: MOVE SNLLPME-PRM-PRAEA-FAELV-D0 // ORIG: TO L-PRM-PRAEA-FAELV-D0 LPrmPraeaFaelvD0 = Snllpme.PrmPraeaFaelvD0.ToDateString();
Wenn der Empfänger als boolsche Variable erkannt würde, wird die Zuweisung mit eine zusätzliche erzeugte Methode realisiert. Dieser prüft ob der Wert den definierten Wert für den true
-Fall entspricht. Die Methode wird nur dann erzeugt, wenn sie auch tatsächlich benötigt wird.
// ORIG: 10 SW-BETROFFEN PIC X. // ORIG: 88 B-BETROFFEN-NEIN VALUE 'N' SPACES. // ORIG: 88 B-BETROFFEN-JA VALUE 'J'. private System.Boolean BBetroffenJa; private static bool IsBBetroffenJa(System.String value) => String.CompareOrdinal(value, "J") == 0; <snip>...</snip> // ORIG: MOVE SW-TSK-CND (ZW-CUR-COND) TO SW-BETROFFEN BBetroffenJa = IsBBetroffenJa(SwTskCnd[ZwCurCond - 1]);
Sollte es sich beim dem zugewiesener Wert um Datendeklaration mit 88 Stufen handelt, wird geprüft ob es eine Überlappung mit den true
-Fall gibt. Dieser wird dann ggf. bei der Zuweisung verwendet.
// ORIG: 20 SW-TSK-CND PIC X. // ORIG: 88 B-TSK-CND-NEIN VALUE 'N' SPACES. // ORIG: 88 B-TSK-CND-JA VALUE 'J'. <snip>...</snip> // ORIG: MOVE SW-TSK-CND TO SW-BETROFFEN BBetroffenJa = SwTskCnd.IsBTskCndJa;
Sollte dieser Datendeklaration selber auch als boolsche Variable erkannt worden sein, wird dessen true
-Fall bei der Zuweisung verwendet:
// ORIG: 20 SW-TSK-CND PIC X. // ORIG: 88 B-TSK-CND-NEIN VALUE 'N' SPACES. // ORIG: 88 B-TSK-CND-JA VALUE 'J'. private System.Boolean BTskCndJa; <snip>...</snip> // ORIG: MOVE SW-TSK-CND TO SW-BETROFFEN BBetroffenJa = BTskCndJa;