Page 1 sur 1

Commande de compilation perso - retour dans RDi

Posté : mar. 25 juil. 2017, 11:27:06
par NicolasG
Bonjour,

la compilation de nos programmes passe par une routine interne qui construit un PF-SRC INCFILE dans QTEMP pour y déposer les copy (cobol) utilisé dans les instructions include de SQL.


Pour avoir le résultat de compil dans RDi, j'ai construit une commande avec en paramètres les chaines "SRCMBR" et "OPTION(*EVENTF)" comme indiqué dans la doc.

Mais rien n'y fait. je n'ai pas de retour dans Rdi

info sur le process:
Nos objets sont créés dans QTEMP, je fichier EVFEVENT aussi
les objets sont déplacés vers LIBOBJ et le membre au nom de l'objet dans EVFEVENT est copier vers la bib de création aussi.
==> toutes cette phase fonctionne bien.

Si quelqu'un dispose d'une astuce , je suis preneur. Merci.

RDI et EVFEVENT

Posté : mar. 25 juil. 2017, 13:58:14
par cmasse
voici ce que j'avais noté la dernière fois que j'ai rencontré ce problème


Si vous avez ajouté vos propres commandes de compilation elles doivent contenir deux chaînes de caractère pour que cette fenêtre s'affiche :

*EVENTF (s'il le faut en commentaire ! )
SRCMBR(le_nom_du_source)

et elles doivent générer un fichier EVFEVENT dans la bibliothèque de création avec un membre portant le même nom que le source

Si le fichier EVFEVENT n'est pas bien localisé , vous pouvez forcer un modifiant la *LDA

de 1 à 10 : la bibliothèque contenant le fichier EVFEVENT
de 11 à 20 : le membre source

Posté : mer. 26 juil. 2017, 11:46:33
par NicolasG
Bonjour et merci pour votre retour.

pour une compilation dans une bib quelconque celà fonctionne. mais pour une génération dans QTEMP puis déplacement de l'objet vers la bib objet, c'est une autre affaire.
j'ai beau déplacer le membre EVFEVENT vers la bib de création, RDi ne le trouve pas.

si d'autres pistes existent ?

*eventf

Posté : mer. 26 juil. 2017, 12:12:40
par cmasse
et vous avez bien la chaîne *EVENTF dans la commande de compil RDI , s'il le faut sous forme de commentaire ?

Posté : mer. 26 juil. 2017, 14:47:13
par NicolasG
Oui Oui, voici la commande qu j'envoi à Ibmi depuis Rdi:

CPLRDI SRCLIB(PRJGRN) SRCFIL(QCBLLESRC) SRCMBR(ADRUPD) CRTLIB(PRJGRN) OPTION(*EVENTF)

la commande appelle un pgm CL qui determine le source
si c'est un cobol sql, le pgm résout les dépendances SQL include src-mbr pour alimenter la zone incfile de la commande,
et lance le commande de compilation qui va bien :
CRTCBLMOD avec option(*EVENTF) => crée le module dans QTEMP
puis je recopie le membre ADRUPD de EVFEVENT de QTEMP vers CRTLIB
puis CRTPGM => bnd le module dans CRTLIB .
puis je supprime le module de QTEMP.
ou
CRTSQLCBLI option(*EVENTF) => crée le module dans QTEMP
puis je recopie le membre ADRUPD de EVFEVENT de QTEMP vers CRTLIB
puis CRTPGM => bnd le module dans CRTLIB.
puis je supprime le module de Qtemp


Si je modifie mon CL de compilation pour créer mes objets directement en CRTLIB, RDi veut bien afficher la liste des erreurs.

Est-ce l'utilisation de QTEMP qui pose problème ?

Cdlt,

RDI et compilation

Posté : mer. 26 juil. 2017, 16:33:08
par cmasse
Effectivement ça semble coincer, j'ai fait un petit test de compilation RPG

Code : Tout sélectionner

PGM PARM(&SRCF &SRCL &SRCM)
DCL &SRCL *CHAR 10
DCL &SRCF *CHAR 10
DCL &SRCM *CHAR 10
             CRTBNDRPG  PGM(QTEMP/&SRCM) SRCFILE(&SRCL/&SRCF) +
                          SRCMBR(&SRCM) OPTION(*EVENTF)
             MONMSG     CPF0000 EXEC(RETURN)
              MONMSG     RNS0000
             MOVOBJ     OBJ(QTEMP/&SRCM) OBJTYPE(*PGM) TOLIB(&SRCL)
             MONMSG     CPF0000
             CPYF       FROMFILE(QTEMP/EVFEVENT) TOFILE(&SRCL/EVFEVENT) +
                          FROMMBR(&SRCM) MBROPT(*REPLACE) CRTFILE(*YES)
             CHGDTAARA  DTAARA(*LDA (1 10)) VALUE(&SRCL)
             CHGDTAARA  DTAARA(*LDA (11 10)) VALUE(&SRCF)

ENDPGM                   
il ne m'affiche rien, pourtant si je renseigne mal la *LDA (en inversant &SRCF et &SRCL, par ex.), RDI m'affiche une erreur....

je craint qu'il ne faille ouvrir un incident.

fichier EVFEVENT

Posté : ven. 28 juil. 2017, 11:36:24
par cmasse
Bonjour,

j'ai trouvé ça https://www.ibm.com/developerworks/comm ... 8e34d84372.

Il faudrait modifier le contenu de EVFEVENT pour qu'il contienne le nom de la bonne bibliothèque.

Posté : mer. 09 août 2017, 13:28:04
par NicolasG
je suis parvenu à mes fins.
apres avoir déplacé le membre EVFEVENT concerné, il fallait bien modifier la *LDA.

Merci.
Cette question est résolue