progress-4gl
Compiler
Recherche…
Introduction
Compiler le code de progression appelé "code-r" et est normalement enregistré dans un fichier avec l'extension .r. Il existe différentes méthodes de compilation: à l'aide de l'instruction COMPILE
ou sous Linux ou AppBuilder: le compilateur d'application intégré. Developer Studio (l’environnement Eclipse) a été compilé dans son processus de construction.
Vous devez avoir 4GL Development ou OpenEdge Studio installé pour compiler les programmes 4GL qui mettent à jour la base de données.
Syntaxe
- COMPILE program.p SAVE. // Compile program.p et sauvegarde son code r
- Valeur de compilation (var) SAVE. // Compile le nom enregistré dans la variable "var" et enregistre son code-r
- COMPILE prog.p XREF prog.xref LISTING prog.list. // Compile prog.p et crée des fichiers xref et listing-files. Ne sauvegardez pas le r-code.
- COMPILE program.p SAVE NO-ERROR. // Compilez program.p, enregistrez le code r et supprimez les erreurs pour arrêter l'exécution.
Compilateur d'application
Windows AppBuilder
Dans Windows Appbuilder, le compilateur d'application se trouve dans le menu Outils.
Éditeur de procédure (Linux - pro
ou Windows pro.exe
Dans l'éditeur de procédures (Linux et Windows), le compilateur se trouve dans le menu Outils.
Compilateur d'application
Indépendamment du système d'exploitation, les fonctionnalités du compilateur sont les mêmes. Vous pouvez ajouter des répertoires et / ou des fichiers et les compiler.
Paramètres principaux (plus ci-dessous):
- Enregistrez le nouveau fichier .r. Si ce n'est pas coché, les fichiers seront simplement compilés mais pas enregistrés. Utile pour le suivi des erreurs, par exemple.
- Regardez dans les sous-répertoires. Sinon, les sous-répertoires devront être ajoutés.
- Supprimez les anciens fichiers .r. Ecraser l'ancien fichier .r
- Onlu Compiler si No .r File. Ne compile que les fichiers non compilés.
Options:
- Propath - vous montre le propath et vous permet de sélectionner les répertoires à compiler.
- Ajouter - vous permet d'entrer un répertoire ou un fichier.
- Modifier - permet de modifier une entrée existante.
- Supprimer - Supprime une entrée.
- Démarrer la compilation - Démarre le compilateur. Raccourci: F2
Les choix de menu principaux:
- Fichier -> Quitter: quitte le compilateur
- Compiler -> Start Compile: lance le compilateur. Raccourci: F2
- Outils -> Accès à d'autres outils
- Option -> Compilateur ...: Paramètres, voir ci-dessous.
- Aide -> Aide OpenEdge (Windows uniquement). Aide en ligne. Raccourci: F1
Paramètres
- Spécification de fichier par défaut: extensions de nom de fichier à compiler
- Message Log File: Fichier pour enregistrer les messages, les avertissements et les erreurs dans
- Enregistrer dans: Où stocker le fichier .r. Si vide le même répertoire que le code.
- Langues: pour les traductions. Non couvert ici.
- V6Frame: Ancien et inutile ...
- Steam-IO: Si vous souhaitez imprimer le résultat du compilateur. Préférablement pas.
- Liste de fichiers: Si vous souhaitez que le compilateur crée un fichier de liste. Utile pour le débogage
- Ajouter: ajouter au fichier de liste existant. Sinon écraser.
- Largeur de page + Longueur: Format du fichier de listage.
- Fichier Xref: Si vous souhaitez que le compilateur crée un
XREF
. Utile pour le débogage, la vérification de l'utilisation des index, etc. - Format XML: Si le compilateur xref doit être un XML. Sinon, texte "clair".
- Ajouter: ajoute au fichier xref existant. Sinon écraser.
- Fichier de débogage: fichier de liste du débogueur.
- Clé de cryptage: si le fichier source est crypté à l'aide de
xcode
insérez la clé ici. - Réduire la taille du code R: Supprimez certaines informations de débogage pour garder le code r plus petit.
- Générer MD-5: Principalement pour la compilation WebClient.
Utilisation de base
- Démarrer le compilateur
- Ajouter un chemin (s'il n'est pas déjà enregistré à la dernière session)
- Appuyez sur F2 pour compiler.
- Observez les erreurs.
- Sortie
Déclaration COMPILE
L'instruction de compilation vous permet de compiler des programmes en Progress ABL:
Utilisation de base:
COMPILE hello-world.p SAVE.
Avec une variable:
DEFINE VARIABLE prog AS CHARACTER NO-UNDO.
prog = "hello.p".
COMPILE VALUE(prog) SAVE.
Il y a plusieurs options à l' COMPILE
COMPILE:
SAVE
indique que le code .r doit être enregistré pour une utilisation ultérieure.
COMPILE hello-world.p SAVE.
SAVE INTO dir OR SAVE INTO VALUE(dir-variable)
enregistre le r-code dans le répertoire spécifié:
COMPILE hello-world.p SAVE INTO /usr/sources.
LISTING file
. Crée un fichier de liste contenant des informations de débogage concernant les blocs, les inclusions, etc.
COMPILE program.p SAVE LISTING c:\temp\listing.txt.
Le listing a quelques options pour ajouter des fichiers, taille de page et largeur de page:
APPEND PAGE-SIZE num PAGE-WIDTH num
XREF xreffile
enregistre un fichier xref de compilateur contenant des informations sur l'utilisation de la chaîne et de l'index, etc. Vous pouvez également APPEND
celui-ci.
COMPILE checkFile.p SAVE XREF c:\directory\xref-file.txt.
XREF-XML xreffile-or-dir
fera la même chose que XREF
mais enregistre le fichier au format xml à la place. Si vous utilisez un répertoire, le fichier xref s'appellera programname.xref.xml
.
COMPILE file.p SAVE XREF c:\temp\.
NO-ERROR
supprimera toute erreur d'arrêt de votre programme.
COMPILE program SAVE NO-ERROR.
DEBUG-LIST file
génère un fichier de débogage avec des numéros de ligne.
COMPILE checkFile.p SAVE DEBUG-LIST c:\temp\debug.txt.
PREPROCESS file
traduira d'abord tous les préprocesseurs, puis créera un nouveau PREPROCESS file
avec le code avant la compilation.
COMPILE checkFile.p SAVE PREPROCESS c:\temp\PREPROC.txt.
XCODE key
compilera un code source chiffré avec la key
comme clé. Vous ne pouvez pas utiliser XCODE avec les options XREF, XREF-XML, STRING-XREF ou LISTING.
COMPILE program.p SAVE XCODE myKey.
Vous pouvez combiner plusieurs options:
COMPILE prog.p SAVE INTO /usr/r-code XREF /usr/xrefs/xref.txt APPEND LISTING /usr/listings.txt APPEND NO-ERROR.
Poignée du système COMPILER
Le COMPILER
système COMPILER
vous permet d’examiner des informations concernant une compilation récente.
En supposant que ok-program.p
est un programme sans erreur ni avertissement:
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.
Cela va aboutir:
Compiler un programme avec un avertissement:
/* 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.
Compiler le programme:
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.
Résultat:
Compiler un programme avec une erreur
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.
Compiler le programme:
//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.
Résultat, il y a presque toujours deux erreurs par erreur. "Impossible de comprendre" est suivi de l'erreur réelle: