progress-4gl
Kompilieren
Suche…
Einführung
Kompilieren Sie den Fortschrittscode als "r-Code" und wird normalerweise in einer Datei mit der Erweiterung .r gespeichert. Es gibt verschiedene Arten des Kompilierens: Mit der COMPILE
Anweisung oder unter Linux oder AppBuilder: dem integrierten Anwendungs-Compiler. In Developer Studio (der Eclipse-Umgebung) ist das Compilieren in den Erstellungsprozess integriert.
Sie müssen 4GL Development oder OpenEdge Studio installiert haben, um 4GL-Programme zu kompilieren, die die Datenbank aktualisieren.
Syntax
- COMPILE program.p SPEICHERN. // program.p kompilieren und den R-Code speichern
- COMPILE VALUE (var) SPEICHERN. // Kompiliere den Namen, der in der Variablen "var" gespeichert ist, und speichere den R-Code
- COMPILE prog.p XREF prog.xref LISTE prog.list. // prog.p kompilieren und Xref- und Listing-Dateien erstellen. Speichern Sie den R-Code nicht.
- COMPILE program.p SPEICHERN NO-FEHLER. // program.p kompilieren, R-Code speichern und Fehler unterdrücken, um die Ausführung zu stoppen.
Anwendungs-Compiler
Windows AppBuilder
Im Windows Appbuilder befindet sich der Application Compiler im Menü Tools.
Prozedureditor (Linux - pro
oder Windows pro.exe
Im Prozedur-Editor (sowohl Linux als auch Windows) den Compiler, wenn er sich im Menü Extras befindet.
Anwendungs-Compiler
Unabhängig vom Betriebssystem ist die Funktionalität des Compilers gleich. Sie können Verzeichnisse und / oder Dateien hinzufügen und kompilieren.
Haupteinstellungen (mehr unten):
- Speichern Sie die neue .r-Datei. Wenn diese Option nicht aktiviert ist, werden die Dateien nur kompiliert, aber nicht gespeichert. Zum Beispiel für die Fehlerverfolgung nützlich.
- Schauen Sie in Unterverzeichnisse. Andernfalls müssen Unterverzeichnisse hinzugefügt werden.
- Alte .r-Dateien entfernen. Alte R-Datei überschreiben.
- Onlu-Kompilierung, wenn keine .r-Datei. Kompiliert nur nicht kompilierte Dateien.
Optionen:
- Propath - zeigt Ihnen den Propath und lässt Sie Verzeichnisse auswählen, die daraus erstellt werden sollen.
- Hinzufügen - Damit können Sie ein Verzeichnis oder eine Datei eingeben.
- Ändern - Damit können Sie einen vorhandenen Eintrag ändern.
- Löschen - Löscht einen Eintrag.
- Compile starten - Startet den Compiler. Abkürzung: F2
Die Hauptmenüoptionen:
- Datei -> Beenden: Beendet den Compiler
- Compile -> Compile starten: Startet den Compiler. Abkürzung: F2
- Tools -> Zugriff auf andere Tools
- Option -> Compiler ...: Einstellungen, siehe unten.
- Hilfe -> OpenEdge-Hilfe (nur Windows). Onlinehilfe. Abkürzung: F1
die Einstellungen
- Default File Spec: Dateinamenerweiterungen zum Kompilieren
- Meldungsprotokolldatei: Datei zum Speichern von Meldungen, Warnungen und Fehlern
- Speichern in: Speicherort der .r-Datei Wenn leer, dasselbe Verzeichnis wie der Code.
- Sprachen: für Übersetzungen. Hier nicht abgedeckt.
- V6Frame: Alt und unbrauchbar ...
- Steam-IO: Wenn Sie die Compiler-Ausgabe drucken möchten. Höchst wahrscheinlich nicht.
- Auflistungsdatei: Wenn der Compiler eine Auflistungsdatei erstellen soll. Nützlich zum Debuggen
- Anhängen: Zur vorhandenen Listungsdatei hinzufügen. Ansonsten überschreiben.
- Seitenbreite + Länge: Format der Auflistungsdatei.
- Xref-Datei: Wenn Sie möchten, dass der Compiler eine
XREF
DateiXREF
. Nützlich zum Debuggen, Überprüfen der Indexnutzung usw. - XML-Format: Wenn der Compiler xref eine xml sein soll. Ansonsten "einfacher" Text.
- Anhängen: Fügt die vorhandene XRef-Datei hinzu. Ansonsten überschreiben.
- Debug-Datei: Debugger-Auflistungsdatei.
- Verschlüsselungsschlüssel: Wenn die Quelldatei mit
xcode
verschlüsselt ist, gebenxcode
den Schlüssel hier ein. - R-Code-Größe minimieren: Entfernen Sie einige Debugging-Informationen, um den R-Code klein zu halten.
- MD-5 generieren: Meist für WebClient-Kompilierung.
Grundlegende Verwendung
- Starten Sie den Compiler
- Einen Pfad hinzufügen (falls noch nicht von der letzten Sitzung gespeichert)
- Drücken Sie zum Kompilieren die Taste F2 .
- Beachten Sie eventuelle Fehler.
- Ausgang
COMPILE-Anweisung
Mit der Anweisung zum Kompilieren können Sie Programme in Progress ABL kompilieren:
Grundnutzung:
COMPILE hello-world.p SAVE.
Mit einer Variable:
DEFINE VARIABLE prog AS CHARACTER NO-UNDO.
prog = "hello.p".
COMPILE VALUE(prog) SAVE.
Es gibt verschiedene Optionen für die COMPILE
-Anweisung:
SAVE
gibt an, dass der .r-Code zur späteren Verwendung gespeichert werden soll.
COMPILE hello-world.p SAVE.
SAVE INTO dir OR SAVE INTO VALUE(dir-variable)
speichert den R-Code im angegebenen Verzeichnis:
COMPILE hello-world.p SAVE INTO /usr/sources.
LISTING file
. Erzeugt eine Auflistungsdatei mit Debug-Informationen zu Blöcken, Include-Elementen usw.
COMPILE program.p SAVE LISTING c:\temp\listing.txt.
Die Auflistung bietet mehrere Optionen zum Anhängen von Dateien, Seitengröße und Seitenbreite:
APPEND PAGE-SIZE num PAGE-WIDTH num
XREF xreffile
einen Compiler xref - Datei , die Informationen über String und Indexnutzung usw. speichern Sie können auch APPEND
diese.
COMPILE checkFile.p SAVE XREF c:\directory\xref-file.txt.
XREF-XML xreffile-or-dir
macht dasselbe wie XREF
, speichert die Datei jedoch im XML-Format. Wenn Sie ein Verzeichnis verwenden, wird die XRef-Datei mit dem Namen programname.xref.xml
.
COMPILE file.p SAVE XREF c:\temp\.
NO-ERROR
unterdrückt eventuelle Fehler beim Stoppen Ihres Programms.
COMPILE program SAVE NO-ERROR.
DEBUG-LIST file
generiert eine Debug-Datei mit Zeilennummern.
COMPILE checkFile.p SAVE DEBUG-LIST c:\temp\debug.txt.
PREPROCESS file
übersetzt zuerst alle Präprozessoren und erstellt dann vor dem Kompilieren eine neue .p-Datei mit dem Code.
COMPILE checkFile.p SAVE PREPROCESS c:\temp\PREPROC.txt.
XCODE key
einen verschlüsselten Quellcode mit dem key
als Schlüssel. Sie können XCODE nicht zusammen mit den Optionen XREF, XREF-XML, STRING-XREF oder LISTING verwenden.
COMPILE program.p SAVE XCODE myKey.
Sie können mehrere Optionen kombinieren:
COMPILE prog.p SAVE INTO /usr/r-code XREF /usr/xrefs/xref.txt APPEND LISTING /usr/listings.txt APPEND NO-ERROR.
COMPILER Systemgriff
Mit dem COMPILER
System-Handle können Sie Informationen zu einem kürzlich erstellten Compile COMPILER
.
Angenommen, ok-program.p
ist ein Programm ohne Fehler oder Warnungen:
COMPILE ok-program.p SAVE NO-ERROR.
DEFINE VARIABLE iError AS INTEGER NO-UNDO.
MESSAGE
"Errors: " COMPILER:ERROR SKIP
"Warnings: " COMPILER:WARNING SKIP
"Messages: " COMPILER:NUM-MESSAGES
VIEW-AS ALERT-BOX INFORMATION.
Dies wird Folgendes bewirken:
Ein Programm mit einer Warnung erstellen:
/* program-with-warning.p */
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
c = "hello".
DISPLAY c.
//This RETURN makes the program exit here and the code below unreachable.
RETURN.
IF TRUE THEN DO:
i = 10.
END.
Programm zusammenstellen:
COMPILE program-with-warning.p SAVE.
DEFINE VARIABLE iError AS INTEGER NO-UNDO.
MESSAGE
"Errors: " COMPILER:ERROR SKIP
"Warnings: " COMPILER:WARNING SKIP
"Messages: " COMPILER:NUM-MESSAGES
VIEW-AS ALERT-BOX INFORMATION.
DO iError = 1 TO COMPILER:NUM-MESSAGES:
DISPLAY
COMPILER:GET-FILE-NAME(iError) LABEL "Filename" FORMAT "x(20)"
COMPILER:GET-MESSAGE(iError) LABEL "Message" FORMAT "x(50)"
COMPILER:GET-NUMBER(iError) LABEL "Msg#"
COMPILER:GET-ERROR-COLUMN(iError) LABEL "Column"
COMPILER:GET-ERROR-ROW(iError) LABEL "Row"
WITH FRAME fr1 SIDE-LABELS 1 COLUMNS.
END.
Ergebnis:
Ein Programm wird mit einem Fehler kompiliert
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
c = "hello".
DISPLAY c.
//Casting should be required below...
IF TRUE THEN DO:
i = c.
END.
Programm zusammenstellen:
//Use no-errors to supress any error messages from interrupting us.
COMPILE c:\temp\program-with-error.p SAVE NO-ERROR.
DEFINE VARIABLE iError AS INTEGER NO-UNDO.
MESSAGE
"Errors: " COMPILER:ERROR SKIP
"Warnings: " COMPILER:WARNING SKIP
"Messages: " COMPILER:NUM-MESSAGES
VIEW-AS ALERT-BOX INFORMATION.
DO iError = 1 TO COMPILER:NUM-MESSAGES:
DISPLAY
COMPILER:GET-FILE-NAME(iError) LABEL "Filename" FORMAT "x(20)"
COMPILER:GET-MESSAGE(iError) LABEL "Message" FORMAT "x(50)"
COMPILER:GET-NUMBER(iError) LABEL "Msg#"
COMPILER:GET-ERROR-COLUMN(iError) LABEL "Column"
COMPILER:GET-ERROR-ROW(iError) LABEL "Row"
WITH FRAME fr1 SIDE-LABELS 1 COLUMNS 20 DOWN.
DOWN WITH FRAME fr1.
END.
Das Ergebnis ist fast immer zwei Fehler pro Fehler. "Konnte nicht verstehen" folgt der eigentliche Fehler: