progress-4gl
compilazione
Ricerca…
introduzione
Compilare il codice di avanzamento come viene chiamato "r-code" e viene normalmente salvato in un file con estensione .r. Ci sono un paio di modi diversi di compilazione: usando l'istruzione COMPILE
o su Linux o AppBuilder: il compilatore di applicazioni integrato. Developer Studio (l'ambiente Eclipse) è stato compilato nel suo processo di compilazione.
È necessario avere 4GL Development o OpenEdge Studio installato per compilare programmi 4GL che aggiornano il database.
Sintassi
- COMPILE program.p SALVA. // Compilare program.p e salvare il suo codice r
- VALORE COMPILATO (var) RISPARMIA. // Compilare il nome salvato nella variabile "var" e salvare il suo codice r
- COMPILE prog.p XREF prog.xref LISTING prog.list. // Compila prog.p e crea xref e list-files. Non salvare il codice r.
- COMPILE program.p SAVE NO-ERROR. // Compilare program.p, salvare gli errori r-code e supress per interrompere l'esecuzione.
Compilatore di applicazioni
Windows AppBuilder
In Windows Appbuilder il compilatore di applicazioni si trova nel menu Strumenti.
Editor delle procedure (Linux- pro
o Windows pro.exe
Nell'editor delle procedure (sia Linux che Windows) il compilatore, se presente nel menu Strumenti.
Compilatore di applicazioni
Indipendentemente dal sistema operativo, la funzionalità del compilatore è la stessa. È possibile aggiungere directory e / o file e compilarli.
Impostazioni principali (più sotto):
- Salva il nuovo file .r. Se non selezionato, i file verranno semplicemente compilati ma non salvati. Utile per il tracciamento degli errori, per esempio.
- Cerca nelle sottodirectory. Altrimenti dovranno essere aggiunte sottodirectory.
- Rimuovi i vecchi file .r. Sovrascrivi il vecchio file .r.
- Onlu Compile se No .r File. Compila solo i file non compilati.
Opzioni:
- Propath: ti mostra il propath e ti consente di selezionare le directory da compilare.
- Aggiungi: consente di inserire una directory o un file.
- Modifica: consente di modificare una voce esistente.
- Elimina: elimina una voce.
- Start Compile - Avvia il compilatore. Scorciatoia: F2
Le scelte del menu principale:
- File -> Esci: esce dal compilatore
- Compila -> Inizia compilazione: avvia il compilatore. Scorciatoia: F2
- Strumenti -> Accesso ad altri strumenti
- Opzione -> Compilatore ...: Impostazioni, vedi sotto.
- Aiuto -> Guida OpenEdge (solo per Windows). Aiuto online. Scelta rapida: F1
impostazioni
- Default File Spec: Filename estensioni da compilare
- File di registro messaggi: file per salvare messaggi, avvisi ed errori in
- Salva in: dove archiviare il file .r. Se vuoto la stessa directory del codice.
- Lingue: per traduzioni. Non coperto qui.
- V6Frame: vecchio e inutile ...
- Steam-IO: se si desidera stampare l'output del compilatore. Molto probabilmente no.
- File di elenco: se si desidera che il compilatore crei un file di elenco. Utile per il debug
- Aggiungi: aggiungi al file di elenco esistente. Altrimenti sovrascrivi.
- Larghezza pagina + lunghezza: formato del file dell'elenco.
- File Xrif: se vuoi che il compilatore crei un
XREF
. Utile per il debug, controllo dell'uso dell'indice ecc. - Formato XML: se il compilatore xref deve essere un xml. Altrimenti testo "semplice".
- Aggiungi: aggiungi al file xrif esistente. Altrimenti sovrascrivi.
- File di debug: file di elenco debugger.
- Chiave di crittografia: se il file di origine è crittografato utilizzando
xcode
inserire la chiave qui. - Riduci al minimo le dimensioni del codice R: rimuovi alcune informazioni di debug per mantenere piccolo il codice r.
- Genera MD-5: Principalmente per la compilazione di WebClient.
Utilizzo di base
- Avvia il compilatore
- Aggiungi un percorso (se non è già stato salvato dall'ultima sessione)
- Premi F2 per compilare.
- Osserva eventuali errori.
- Uscita
Dichiarazione COMPILE
L'istruzione di compilazione ti consente di compilare i programmi in corso ABL:
Utilizzo di base:
COMPILE hello-world.p SAVE.
Con una variabile:
DEFINE VARIABLE prog AS CHARACTER NO-UNDO.
prog = "hello.p".
COMPILE VALUE(prog) SAVE.
Ci sono diverse opzioni per lo stato COMPILE
:
SAVE
afferma che il codice .r deve essere salvato per un uso futuro.
COMPILE hello-world.p SAVE.
SAVE INTO dir OR SAVE INTO VALUE(dir-variable)
salva il codice r nella directory specificata:
COMPILE hello-world.p SAVE INTO /usr/sources.
LISTING file
. Crea un file di elenco contenente informazioni di debug riguardanti i blocchi, include ecc.
COMPILE program.p SAVE LISTING c:\temp\listing.txt.
Listing ha un paio di opzioni per aggiungere file, dimensioni della pagina e larghezza della pagina:
APPEND PAGE-SIZE num PAGE-WIDTH num
XREF xreffile
salverà un file xref del compilatore contenente informazioni sull'utilizzo di stringhe e indici ecc. Puoi anche APPEND
questo.
COMPILE checkFile.p SAVE XREF c:\directory\xref-file.txt.
XREF-XML xreffile-or-dir
farà la stessa cosa di XREF
ma invece di salvare il file in formato xml. Se si utilizza una directory, il file xref sarà denominato programname.xref.xml
.
COMPILE file.p SAVE XREF c:\temp\.
NO-ERROR
sopprimerà eventuali errori dall'arresto del programma.
COMPILE program SAVE NO-ERROR.
DEBUG-LIST file
genera un file di debug con numeri di riga.
COMPILE checkFile.p SAVE DEBUG-LIST c:\temp\debug.txt.
PREPROCESS file
prima tradurrà tutti i preprocessori e quindi creerà un nuovo file .p con il codice prima della compilazione.
COMPILE checkFile.p SAVE PREPROCESS c:\temp\PREPROC.txt.
XCODE key
compilerà un codice sorgente crittografato con key
come chiave. Non è possibile utilizzare XCODE con le opzioni XREF, XREF-XML, STRING-XREF o LISTING insieme.
COMPILE program.p SAVE XCODE myKey.
Puoi combinare diverse opzioni:
COMPILE prog.p SAVE INTO /usr/r-code XREF /usr/xrefs/xref.txt APPEND LISTING /usr/listings.txt APPEND NO-ERROR.
Gestire il sistema COMPILER
Il sistema COMPILER
ti consente di esaminare le informazioni relative a una compilazione recente.
Supponendo che ok-program.p
sia un programma senza errori o avvertenze:
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.
Questo procede:
Compilare un programma con un avvertimento:
/* 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.
Compilando il programma:
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.
Risultato:
Compilare un programma con un errore
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.
Compilando il programma:
//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.
Risultato, ci sono quasi sempre due errori per errore. "Could not understand" è seguito dall'errore effettivo: