Der gene­rier­te Source­code

Der folgende Source­code ist das Ergebnis der Gene­rie­rung des Beispieles. Er beginnt mit einem Kommentar-Header, dann folgen der Prolog, die Ent­schei­dungs­ta­bellen-Regeln (der IF-ELSE-Regelbaum) mit Fehlerbehandlung und zum Schluss Epilog und Abschluss-Kommentar:

L:\Projekte\LF‑ET-Demo\Cobol\COMPARE.cob

  • * WARNING: DO NOT MODIFY * This is a generated Cobol source

  • code!

    *
  • Generated by LF‑ET 2.1.3 (100820a), http://www.lohrfink.de/lfet

  • From decision table

  • "L:/Projekte/LF‑ET-Demo/Cobol/Compare.lfet"

  • 20.08.2010 09:27

    *
  • Changes to this code resulting from refactorings can be

  • synchronised with LF‑ET using the function "Scrapbook Import".

    *
  • Prolog Decision Table ---→

    WORKING-STORAGE SECTION.
    COPY COMPARE-CONST.
    LINKAGE SECTION.
    COPY COMPARE-PARM.
    PROCEDURE DIVISION USING COMPARE-PARM.
  • Prolog Decision Table ←---

    COMPARE SECTION.
  • Condition B01: String 1 kleiner String 2 ?

    IF ( STRING1 < STRING2 ) THEN
  • Rule R01 ---→

  • Action A01: Ergebnis: String 1 ist kleiner als String 2

    MOVE RESULT-S1-LT-S2 TO RESULT
  • Rule end

    GO TO COMPARE-EXIT
  • Rule R01 ←---

    ELSE
  • Condition B02: String 1 größer String 2 ?

    IF ( STRING1 > STRING2 ) THEN
  • Rule R02 ---→

  • Action A02: Ergebnis: String 1 ist größer als String 2

    MOVE RESULT-S1-GT-S2 TO RESULT
  • Rule end

    GO TO COMPARE-EXIT
  • Rule R02 ←---

    ELSE
  • Rule R03 ---→

  • Action A03: Ergebnis: String 1 ist gleich String 2

    MOVE RESULT-S1-EQ-S2 TO RESULT
  • Rule end

    GO TO COMPARE-EXIT
  • Rule R03 ←---

    END-IF
    END-IF
    .
  • Error ---→

  • profile LFET.Cobol.Error.ini not found

  • used LF‑ET 2.1.3 (100820a) build in default

    DISPLAY "No rule executed in decision table 'Compare'"
    STOP RUN
    .
  • Error ←---

    COMPARE-EXIT.
    EXIT.
  • Epilog Decision Table ---→

    EXIT-PROGRAM.
  • Epilog Decision Table ←---

  • End of generated Cobol source code

  • Generated by LF‑ET 2.1.3 (100820a), http://www.lohrfink.de/lfet

Betrachten wir die einzelnen Abschnitte des Sourcecodes noch etwas genauer, zuerst den gene­rier­ten Header-Kommentar. Hier finden sich Informationen zum Zeitpunkt der Gene­rie­rung, aus welcher Ent­schei­dungs­ta­belle und mit welcher LF‑ET-Version der Source­code ge­ne­riert wurde:

  • * WARNING: DO NOT MODIFY * This is a generated Cobol source

  • code!

    *
  • Generated by LF‑ET 2.1.3 (100820a), http://www.lohrfink.de/lfet

  • From decision table

  • "L:/Projekte/LF‑ET-Demo/Cobol/Compare.lfet"

  • 20.08.2010 09:27

    *
  • Changes to this code resulting from refactorings can be

  • synchronised with LF‑ET using the function "Scrapbook Import".

Bei Bedarf kann LF‑ET auch einen individuell gestaltbaren Projekt-Header vor diesen LF‑ET-Header einbinden, nähere Informationen dazu finden Sie im Kapitel: Individueller Header.

Danach folgt sofort der Ent­schei­dungs­ta­bellen-Prolog, Anfang und Ende sind an den gene­rier­ten Kommentaren gut erkennbar.

Das eigentliche Regelwerk (der IF-ELSE-Baum) wird in einer mit dem Datei­namen übereinstimmenden Section eingebettet:

  • Prolog Decision Table ---→

    WORKING-STORAGE SECTION.
    COPY COMPARE-CONST.
    LINKAGE SECTION.
    COPY COMPARE-PARM.
    PROCEDURE DIVISION USING COMPARE-PARM.
  • Prolog Decision Table ←---

    COMPARE SECTION.

Die Elemente des IF-ELSE-Regelbaumes sind durch Leerzeilen voneinander getrennt und ausführlich kommentiert, wobei dazu die fachlichen Texte aus der Ent­schei­dungs­ta­belle verwendet werden. Die Regel-Reihenfolge entspricht grundsätzlich immer der Standardsortierung.

  • Condition B01: String 1 kleiner String 2 ?

    IF ( STRING1 < STRING2 ) THEN
  • Rule R01 ---→

  • Action A01: Ergebnis: String 1 ist kleiner als String 2

    MOVE RESULT-S1-LT-S2 TO RESULT
  • Rule end

    GO TO COMPARE-EXIT
  • Rule R01 ←---

    ELSE

Wenn eine Regel erfolg­reich ausgeführt wurde, dann wird zum Ende des 'logischen Blocks' (d.h. zum Ende des Regelwerkes) gesprungen, hier mit GO TO COMPARE-EXIT.

Anmerkung: Diese Art der GO-TO-Verwendung ist nach den Regeln der Strukturierten-Programmierung durchaus zulässig: Vorwärts-Sprung zu einem 'zentralen' Block-Ende.

Wenn keine Regel ausgeführt wurde, d.h. die Ent­schei­dungs­ta­belle hat versagt (konnte den aktuellen Systemzustand nicht verarbeiten!) dann läuft die Verarbeitung auto­ma­tisch nach dem letzten END-IF auf eine Fehlerbehandlung. Diese Art Fehler kann nur auftreten, wenn erweiterte Bedingungen verwendet werden und ein systemseitig möglicher (und auch aufgetretener) Bedin­gungs-Wert bei der Spezifikation nicht beachtet wurde. Die Fehlerbehandlung kann individuell angepasst werden, siehe hierzu auch Kapitel: Fehlerbehandlung.

END-IF
END-IF
.
  • Error ---→

  • profile LFET.Cobol.Error.ini not found

  • used LF‑ET 2.1.3 (100820a) build in default

    DISPLAY "No rule executed in decision table 'Compare'"
    STOP RUN
    .
  • Error ←---

Den Abschluss bildet der Epilog, in unserem Beispiel wird das Unterprogramm einfach beendet:

COMPARE-EXIT.
EXIT.
  • Epilog Decision Table ---→

    EXIT-PROGRAM.
  • Epilog Decision Table ←---

  • End of generated Cobol source code

  • Generated by LF‑ET 2.1.3 (100820a), http://www.lohrfink.de/lfet