Inhaltsverzeichnis

Zuweisungen

Gruppe

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);

Reference Modifier

Wenn festgestellt wird, dass die Zuweisung mittles eines sog. Reference Modifiers vorgenommen wird, so wird die Wert-Zuweisung mit einem Substitute-Aufruf realisiert:

  1. IF L-BUF-STR (L-POS:1) = K-SCHARFES-S
  2. THEN
  3. MOVE K-BUCHSTABE-S TO L-BUF-SWP (L-LEN + 1:1)
  4. MOVE K-BUCHSTABE-S TO L-BUF-SWP (L-LEN + 2:1)
  5. END-IF
if (LBufStr.Substring(LPos - 1, 1) == KScharfesS) {
   LBufSwp = LBufSwp.Substitute(LLen, 1, KBuchstabeS);
   LBufSwp = LBufSwp.Substitute(LLen + 1, 1, KBuchstabeS);
}

Zuweisungskette

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:

  1. MOVE ZW-RUNDUNG-BT2 TO SNLPPME-PME-PRAE-BT
  2. SNLPPME-PME-SICH-PRAE-BT
  3. SNLPPME-000-NEU-PRAE-BT
  4. SNLPPME-000-DIF-PRAE-BT
  5. MOVE W-PFZR-ENDE TO LLPPME2-PRM-PRAEA-FAELV-D0
  6. L-BZUG-D0
Snlppme.PmePraeBt = Snlppme.PmeSichPraeBt = Snlppme._000NeuPraeBt = Snlppme._000DifPraeBt = ZwRundungBt2;
Llppme2.PrmPraeaFaelvD0 = WPfzrEnde;
LBzugD0.CopyFrom(WPfzrEnde);

Datumsfeld

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();

Boolean

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;
1)
für TAA Datenobjekte