Bonjour,
Pourquoi y a‑t-il un _H à la fin dans
/if defined(blabla_H)
/eof
/endif
/define blabla_H
/COPY QCPYSRC,blabla2
et qu’il existe une copie blabla ?
Cordialement,
D’après ce que je comprend des pages :
https://www.ibm.com/docs/en/i/7.4?topic=conditions-define#cddef
et
https://www.ibm.com/docs/en/i/7.4?topic=statements-conditional-directives-within-free-form-statement
Define est une directive de compilation passe la condition booléenne entre parenthèse à Vrai.
Et la directive de compilation if Defined() teste si la condition booléenne est vrai.
/if defined(blabla_H) /eof /endif /define blabla_H /COPY QCPYSRC,blabla2
Lors de la compilation, la 1re fois que le compilateur lit ces lignes,
Ligne 1, il vérifie que la condition blabla_H est à Vrai, ce qui n’est pas le cas donc il ne fait pas ce qu’il y a entre /if et /endif
Ligne 5, il passe la condition blabla_H à Vrai.
Ligne 7, il prend en compte la copy.
Si plus loin dans le source, il trouve de nouveau ces directives, le compilateur fait :
Ligne 1, il vérifie que la condition blabla_H est à Vrai, ce qui est le cas donc il exécute la ligne 2
Ligne 2, la directive de compilation /eof lui indique d’aller à la fin du membre source et ne pas prendre en compte la suite dans la compilation.
Le _H n’a aucune importance, n’importe quel nom aurait pu être utilisé. Cette convention est utilisé par certain développeurs. Mais je n’en connais pas la raison exact.
Cordialement,