Der generierte Sourcecode
Der folgende Sourcecode ist das Ergebnis der Generierung des Beispieles. Er beginnt mit einem Kommentar-Header, dann folgen der Prolog, die Entscheidungstabellen-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 generierten Header-Kommentar. Hier finden sich Informationen zum Zeitpunkt der Generierung, aus welcher Entscheidungstabelle und mit welcher LF‑ET-Version der Sourcecode generiert 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 Entscheidungstabellen-Prolog, Anfang und Ende sind an den generierten Kommentaren gut erkennbar.
Das eigentliche Regelwerk (der IF-ELSE-Baum) wird in einer mit dem Dateinamen ü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 Entscheidungstabelle 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 erfolgreich 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 Entscheidungstabelle hat versagt (konnte den aktuellen Systemzustand nicht verarbeiten!) dann läuft die Verarbeitung automatisch 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) Bedingungs-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