Für Syntax siehe hier.
Einfacher EVALUATE:
EVALUATE SNLPPME-T80-VEIN-KNOT-K * WHEN K-VEIN-KNOT-RIS PERFORM M03-0-VTL-UEBER-RIS-FINDEN PERFORM M54-SNAPME-RIS-SUCHEN * WHEN K-VEIN-KNOT-VEV PERFORM M03-0-VTL-UEBER-VEV-FINDEN PERFORM M55-SNAPME-VEV-SUCHEN * WHEN OTHER CONTINUE * END-EVALUATE
if (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotRis) { M030VtlUeberRisFinden(); M54SnapmeRisSuchen(); } else if (Snlppme.T80VeinKnotK == PraeKonstanten.KVeinKnotVev) { M030VtlUeberVevFinden(); M55SnapmeVevSuchen(); } else { }
Mehrere WHEN-Zweige für eine Aktion:
EVALUATE ZW-PRAETYP-BER * WHEN K-INDMPNLAS-NR WHEN K-INDDAUNLAS-NR WHEN K-INDZSCH-NR WHEN K-INDNLAS-NR WHEN K-TBNDNLAS-NR WHEN K-INDBNDNLRZ-NR SET B-BETROFFEN-JA TO TRUE * WHEN OTHER SET B-BETROFFEN-NEIN TO TRUE END-EVALUATE
if (ZwPraetypBer == SnstrPraeNrSkzTab.KIndmpnlasNr || ZwPraetypBer == SnstrPraeNrSkzTab.KInddaunlasNr || ZwPraetypBer == SnstrPraeNrSkzTab.KIndzschNr || ZwPraetypBer == SnstrPraeNrSkzTab.KIndnlasNr || ZwPraetypBer == SnstrPraeNrSkzTab.KTbndnlasNr || ZwPraetypBer == SnstrPraeNrSkzTab.KIndbndnlrzNr) { SwBetroffen.IsBBetroffenJa = true; } else { SwBetroffen.IsBBetroffenNein = true; }
Komplexer Matrix-EVALUATE (konkreter Code verkürzt um EVALUATE hervorzuheben):
EVALUATE ZW-PRE-NR ALSO ZW-TO-KNOT-TYP * 19.07.13 Ticket 31485 ah: WHEN K-WERTUNG-NR ALSO ANY CONTINUE * * Wenn individueller Mehrpersonennachlass WHEN K-INDMPNLAS-NR ALSO ANY * Vertrag merken PERFORM SNIP_SNIP * * Wenn individueller Dauernachlass, dann bei allen gleich WHEN K-INDDAUNLAS-NR ALSO ANY PERFORM SNIP_SNIP * * Gesamtjahresnettoprämie bei Gruppen-Unfall * ========================================== WHEN K-JNETGEPRAE-NR ALSO K-KNOT-TYP-VEL PERFORM SNIP_SNIP * * Manuelle Vorgabe Netto-/Bruttoprämie * gem. ZW auf Vertrags-, oder Bündelebene * ======================================= WHEN K-NETPRAEZW-NR ALSO K-KNOT-TYP-VEV WHEN K-NETPRAEZW-NR ALSO K-KNOT-TYP-BND WHEN K-BRUPRAEZW-NR ALSO K-KNOT-TYP-VEV WHEN K-BRUPRAEZW-NR ALSO K-KNOT-TYP-BND PERFORM SNIP_SNIP * * Korrektur aufgrund manueller Vorgabe der Endprämie * ================================================== WHEN K-KORMANVOR-NR ALSO K-KNOT-TYP-RIS PERFORM SNIP_SNIP * * Manuelle Vorgabe auf Vertragselementebene * ========================================= WHEN K-JNETPRAE-NR ALSO K-KNOT-TYP-VEL PERFORM M1-2-43-MANVOR-VEL-EINGEGEBEN * * Korrektur aufgrund manueller Vorgabe auf VEL-Ebene * ================================================== WHEN K-KORMANVEL-NR ALSO K-KNOT-TYP-RIS PERFORM SNIP_SNIP WHEN OTHER CONTINUE END-EVALUATE
// 19.07.13 Ticket 31485 ah: if (ZwPreNr == SnstrPraeNrSkzRs.KWertungNr) { } // Wenn individueller Mehrpersonennachlass else if (ZwPreNr == SnstrPraeNrSkzTab.KIndmpnlasNr) { // Vertrag merken SnipSnip(); } // Wenn individueller Dauernachlass, dann bei allen gleich else if (ZwPreNr == SnstrPraeNrSkzTab.KInddaunlasNr) { SnipSnip(); } // Gesamtjahresnettoprämie bei Gruppen-Unfall // ========================================== else if (ZwPreNr == SnstrPraeNrSkzTab.KJnetgepraeNr && ZwToKnotTyp == KKnotTypVel) { SnipSnip(); } // Manuelle Vorgabe Netto-/Bruttoprämie // gem. ZW auf Vertrags-, oder Bündelebene // ======================================= else if (ZwPreNr == SnstrPraeNrSkzTab.KNetpraezwNr && ZwToKnotTyp == KKnotTypVev || ZwPreNr == SnstrPraeNrSkzTab.KNetpraezwNr && ZwToKnotTyp == KKnotTypBnd || ZwPreNr == SnstrPraeNrSkzTab.KBrupraezwNr && ZwToKnotTyp == KKnotTypVev || ZwPreNr == SnstrPraeNrSkzTab.KBrupraezwNr && ZwToKnotTyp == KKnotTypBnd) { SnipSnip(); } // Korrektur aufgrund manueller Vorgabe der Endprämie // ================================================== else if (ZwPreNr == SnstrPraeNrSkzTab.KKormanvorNr && ZwToKnotTyp == KKnotTypRis) { SnipSnip(); } // Manuelle Vorgabe auf Vertragselementebene // ========================================= else if (ZwPreNr == SnstrPraeNrSkzTab.KJnetpraeNr && ZwToKnotTyp == KKnotTypVel) { M1243ManvorVelEingegeben(); } // Korrektur aufgrund manueller Vorgabe auf VEL-Ebene // ================================================== else if (ZwPreNr == SnstrPraeNrSkzTab.KKormanvelNr && ZwToKnotTyp == KKnotTypRis) { SnipSnip(); } else { }
Falls erkannt wird, dass die EVALUATE Anweisung eine direkte Auswahl der ausgelösten TAA-Operation darstellt, wird eine dementsprechende switch
-Anweisung erzeugt.
*------------------------------------------OPERATION ANSTEUERN EVALUATE TRUE * WHEN TC-EVENT-BERECHNEN PERFORM E01-BERECHNEN * WHEN TC-EVENT-DO-SPEZIAL PERFORM E02-DO-SPEZIAL * WHEN TC-EVENT-OFFENEPOSTEN PERFORM SNLPPME-GETINFO IF (ITEMS-SNLPPME > ZERO) THEN PERFORM E03-OFFENEPOSTEN ELSE SET TC-STATE-OK OF ME TO TRUE END-IF * WHEN OTHER *---------------------------------------------FALSCHE OPERATION SET TC-STATE-FEHLER OF ME TO TRUE EXEC TAA SET AND RAISE SEVERE GROUP STOSTR CODE 03 ARGUMENTS = (TC-MODULE-NAME, TC-EVENT) * OBER = 1 TYP = '01' SACH-ID = ZEROS PRIM-ETI-ID = ZEROS PRIM-ETI-KURZ = ZEROS SEKD-ETI-ID = ZEROS SEKD-ETI-KURZ = ZEROS VMKSCHREIBEN = 04 END-EXEC END-EVALUATE
// ------------------------------------------OPERATION ANSTEUERN switch (this.Operation.Active) { case OperationEnum.Berechnen: E01Berechnen(); break; case OperationEnum.DoSpezial: E02DoSpezial(); break; case OperationEnum.Offeneposten: SnlppmeGetinfo(); if (ItemsSnlppme > 0) { E03Offeneposten(); } else { this.State.Active = StateEnum.Ok; } break; default: // ---------------------------------------------FALSCHE OPERATION this.State.Active = StateEnum.Fehler; { var cnd = this.Condition.New<Mldg_Aarch.Stostr.Message3>(SeverityEnum.Severe, this.Name, this.OperationName(this.Operation.Active)); cnd.Associations["OBER"] = 1; cnd.Associations["TYP"] = "01"; cnd.Associations["SACH-ID"] = 0; cnd.Associations["PRIM-ETI-ID"] = 0; cnd.Associations["PRIM-ETI-KURZ"] = 0; cnd.Associations["SEKD-ETI-ID"] = 0; cnd.Associations["SEKD-ETI-KURZ"] = 0; cnd.Associations["VMKSCHREIBEN"] = 4; cnd.Raise(); } break; }
Wenn erkannt wird, dass die EVALUATE-Anweisung eine Auswahl über den Rückkehrwert eines gerufenen TAA-Bausteins darstellt, wird eine dementsprechende switch
-Anweisung generiert:
EVALUATE TRUE * WHEN TC-STATE-OK OF Z0AAX50 * CONTINUE * WHEN TC-STATE-NICHT-OK OF Z0AAX50 WHEN TC-STATE-NICHT-GEFUND OF Z0AAX50 WHEN TC-STATE-DUPKEY OF Z0AAX50 WHEN TC-STATE-FEHLERLISTE OF Z0AAX50 WHEN TC-STATE-ABBRUCH OF Z0AAX50 * SET TC-STATE-NICHT-OK OF ME TO TRUE EXEC TAA SET AND RAISE ERROR GROUP SNPRAEMIE * PRAEMIENTYP-SCHLUESSELTABELLE KANN NICHT AUSGE- * LESEN WERDEN -> PRAEMIE KANN NICHT BERECHNET * WERDEN! CODE 92 END-EXEC * WHEN OTHER * SET TC-STATE-FEHLER OF ME TO TRUE EXEC TAA SET AND RAISE SEVERE GROUP STOSTR CODE 06 ARGUMENTS = ("Z0AAX50", TC-EVENT) END-EXEC * END-EVALUATE
switch (LastCall.Z0aax50State) { case Base.Ezug.Aarch.Z0aax50.StateEnum.Ok: break; case Base.Ezug.Aarch.Z0aax50.StateEnum.NichtOk: case Base.Ezug.Aarch.Z0aax50.StateEnum.NichtGefund: case Base.Ezug.Aarch.Z0aax50.StateEnum.Dupkey: case Base.Ezug.Aarch.Z0aax50.StateEnum.Fehlerliste: case Base.Ezug.Aarch.Z0aax50.StateEnum.Abbruch: this.State.Active = StateEnum.NichtOk; this.Condition.New<Mldg_Privat.Snpraemie.Message92>(SeverityEnum.Error).Raise(); break; default: this.State.Active = StateEnum.Fehler; this.Condition.New<Mldg_Aarch.Stostr.Message6>(SeverityEnum.Severe, "Z0AAX50", this.OperationName(this.Operation.Active)).Raise(); break; }
switch
-Anweisung erzeugt werden.