Notifications 
Reti­rer tout

[Réso­lu] /If Define(copie_H)

Posts
Uti­li­sa­teurs
Reac­tions
110  Vu
0
Début du sujet

Bon­jour,

Pour­quoi 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 ?

Cor­dia­le­ment,

Éti­quettes du sujet
1 Réponse 
0

D’a­près ce que je com­prend 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 direc­tive de com­pi­la­tion passe la condi­tion boo­léenne entre paren­thèse à Vrai.

Et la direc­tive de com­pi­la­tion if Defi­ned() teste si la condi­tion boo­léenne est vrai.

/if defined(blabla_H)
    /eof
/endif

/define blabla_H

/COPY QCPYSRC,blabla2

Lors de la com­pi­la­tion, la 1re fois que le com­pi­la­teur lit ces lignes, 

Ligne 1, il véri­fie que la condi­tion 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 condi­tion blabla_H à Vrai.
Ligne 7, il prend en compte la copy.

Si plus loin dans le source, il trouve de nou­veau ces direc­tives, le com­pi­la­teur fait :

Ligne 1, il véri­fie que la condi­tion blabla_H est à Vrai, ce qui est le cas donc il exé­cute la ligne 2
Ligne 2, la direc­tive de com­pi­la­tion /eof lui indique d’al­ler à la fin du membre source et ne pas prendre en compte la suite dans la compilation.

Le _H n’a aucune impor­tance, n’im­porte quel nom aurait pu être uti­li­sé. Cette conven­tion est uti­li­sé par cer­tain déve­lop­peurs. Mais je n’en connais pas la rai­son exact.

Cor­dia­le­ment, 

Share :