|
|
|
|
- Présentation
- Mise en place
- Inclusion des fichiers de l'interface Cobol de WINDEV
- Chargement de la bibliothèque WINDEV (WDL)
- Exécution de codes WINDEV depuis le langage externe
- Mettre fin à l'application
Langage externe : Programmation en Cobol
Il s'agit ici d'appeler les éléments développés en WINDEV (projet, fenêtres, analyse, ...) depuis le langage Cobol. Le code WLangage utilisé depuis le langage externe sera compilé dynamiquement et exécuté lors de son appel. Ce mode est illustré dans le projet Ville.cbl (au format Cobol) fourni dans le sous-répertoire "LangagesExternes\Cobol" du répertoire d'installation de WINDEV. Remarque : Le langage externe Cobol ne permet pas d'utiliser le moteur HFSQL. Pour manipuler le moteur HFSQL, réalisez les traitements WLangage nécessaires dans WINDEV. Inclusion des fichiers de l'interface Cobol de WINDEV Voici une liste des fichiers à inclure dans un projet Cobol pour faire appel à l'interface Cobol de WINDEV : - WDDEB.CBL
- WDFIN.CBL
- WinDev.CPY
Les lignes suivantes doivent être placées dans le code du fichier ".CBL" principal de votre projet Cobol :
* set ans85 noosvs mf defaultbyte"00" IDENTIFICATION DIVISION. PROGRAM-ID. WinDev. special-names. call-convention 3 is WINAPI. data division. working-storage section. * Fichier de declaration obligatoire copy "Windev.cpy". 77 STRCH pic x(255). 77 Champ pic x(255). 77 Cle pic x(255). 77 TypeRech pic 9. 77 chn pic xx. local-storage SECTION. linkage section. 01 hInst pic xx comp-5. 01 hPrevInstance pic xx comp-5. 01 lpszCmdLine pic x(120). 01 nCmdShow pic xx comp-5. procedure division WINAPI using by value hInst by value hPrevInstance by reference lpszCmdLine by value nCmdShow. MyWinMain section. * Initialisation obligatoire de windev copy "WDDEB.CBL".
Ces lignes permettent de récupérer les déclarations minimales nécessaires pour l'utilisation de l'interface externe. Chargement de la bibliothèque WINDEV (WDL) La bibliothèque WINDEV d'extension .WDL contient tous les éléments du projet (fenêtres, états, classes, requêtes, analyse, ...). Il faut donc la charger en mémoire pour faire appel aux composants qu'elle contient. Attention : Si la bibliothèque à charger contient des fenêtres, le code de chacune de ces fenêtres doit être intégré dans le fichier ".WDW" correspondant (option "Intégrer le code compilé" cochée, dans l'onglet "Détail" de la description de chaque fenêtre).
* Ouverture de la bibliothèque * si WDEntier n'est pas nul, la bibliothèque * n'a pas été trouvée! call APPELWD using by reference "Bibli,disque,ville.wdl" & x"00" if (WDEntier = 0) move " " to WDTouche ... else * Bibliothèque non trouvée call APPELWD using by reference "Erreur, Bibliothèque non trouvée" & x"00" end-if
Exécution de codes WINDEV depuis le langage externe 1. Appel d'un code WLangageToutes les fonctions WLangage peuvent être appelées depuis le langage externe. Leur comportement et les valeurs retournées par ces fonctions du WLangage sont exactement identiques qu'elles soient appelées : - depuis WINDEV ou
- depuis l'interface langage externe
Pour connaître les paramètres et les valeur de retour d'une fonction du WLangage, il suffit donc de se reporter à l'aide en ligne ou la documentation papier habituelle relative au WLangage. L'appel à une procédure du WLangage depuis l'interface externe se fait par la fonction AppelWD. Par exemple :
* ouverture de la première fenêtre du programme contenant le menu call APPELWD using by reference "Ouvre,menufc.wdw" & x"00"
2. Récupération des événements déclenchés dans les fenêtres WINDEV La saisie dans les fenêtres WINDEV rend nécessaire la récupération des événements déclenchés dans ces fenêtres. Afin de récupérer les événements (clic sur un menu, un bouton ...) de l'utilisateur, vous devez mettre en place un système basé sur une boucle dans votre programme Cobol. Cette boucle sera active tant que la fenêtre WINDEV sera ouverte et permettra d'intercepter chaque action de l'utilisateur. Pour connaître le type d'action de l'utilisateur, vous disposez d'une variable de type chaîne de caractères (en WLangage) nommée 'WDTouche'. Cette variable sera utilisée dans votre code WLangage pour signaler au programme Cobol quel bouton a par exemple été actionné. Exemple : Code Cobol
* ouverture de la première fenêtre du programme contenant le menu call APPELWD using by reference "Ouvre,menufc.wdw" & x"00" * le programme boucle jusqu'à ce que le choix Fichier Quitte * soit sélectionné Perform MENUSAIS with test before until (WDTouche = "ESC") ... MENUSAIS. * on effectue la saisie du menu call APPELWD using by reference "Ecran,Saisie" & x"00" * le compte-rendu WDTouche vaut *M* lorsque un choix de menu * a été sélectionné if (WDTouche = "*M*") move WDChaine to chn *--------------------------------------- * Decodage de l'option choisie. * WDChaine contient la suite des lettres d'appel * qui aboutissent au choix de menu sélectionné *--------------------------------------- if (Chn = "FQ") Move "ESC" TO WDTouche end-if ... end-if.
Code d'interception de la sélection du menu "Fichier..Quitter" de la fenêtre WINDEV "Menu" :
* le programme boucle jusqu'à ce que le choix Fichier Quitter * soit sélectionné Perform MENUSAIS with test before until (WDTouche = "ESC") ... if (Chn = "FQ") Move "ESC" TO WDTouche end-if ... * Terminer... copy "wdfin.cbl". exit program returning zero. stop run.
Lorsque l'utilisateur cliquera sur le choix de menu "Fichier..Quitter", WDTouche sera égale à "ESC". Note : La variable WDTouche étant une chaîne de caractères, son contenu peut être une description détaillée de l'action à entreprendre. Par exemple "Fermer l'application". Mettre fin à l'application Pour terminer l'utilisation de l'interface externe, il suffit de saisir les lignes de code suivantes :
* Terminer... copy "wdfin.cbl". exit program returning zero. stop run.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|