31.12.1. Inclusion de fichiers
Pour inclure un fichier externe dans un programme SQL embarqué, il
suffit d'utiliser :
EXEC SQL INCLUDE nomfichier;
Le préprocesseur du SQL embarqué cherche un fichier nommé
nomfichier
.h, le prétraite et
l'inclut dans la sortie C résultante. De ce fait, les instructions
C embarquées du fichier inclus sont correctement gérées.
Ce
n'
est
pas
la même chose que
#include <nomfichier.h>
parce que ce fichier n'est alors pas sujet au prétraitement des
commandes SQL. Naturellement, la directive C #include peut toujours être utilisée pour inclure
d'autres fichiers d'en-tête.
Note
Le nom du fichier inclus est sensible à la casse, même si le
reste de la commande EXEC SQL INCLUDE
suit les règles habituelles de sensibilité à la casse du SQL.
31.12.2. Directives #define et #undef
Le SQL embarqué utilise un concept similaire à la directive
#define utilisée en C :
EXEC SQL DEFINE nom;
EXEC SQL DEFINE nom valeur;
Un nom peut être défini :
EXEC SQL DEFINE HAVE_FEATURE;
Des constantes peuvent aussi être définies :
EXEC SQL DEFINE MON_NOMBRE 12;
EXEC SQL DEFINE MA_CHAINE 'abc';
undef est utilisé pour supprimer une
définition :
EXEC SQL UNDEF MON_NOMBRE;
Les versions C de #define et #undef peuvent, évidemment, continuer à être
utilisées dans le programme qui embarque le SQL. La différence se
situe à l'endroit où les valeurs définies sont évaluées. Si
EXEC SQL DEFINE est utilisé, alors le
préprocesseur ecpg évalue les définitions et effectue les
substitutions. Par exemple, si on écrit :
EXEC SQL DEFINE MON_NOMBRE 12;
...
EXEC SQL UPDATE Tbl SET col = MON_NOMBRE;
alors ecpg effectue la substitution et le compilateur C ne voit
aucun nom ou identifiant MON_NOMBRE.
#define ne peut pas être utilisé pour une
constante utilisée dans une requête SQL embarquée car, dans ce cas,
le précompilateur ecpg n'est pas capable de voir cette déclaration.
31.12.3. Directives ifdef, ifndef, else, elif et endif
Les directives suivantes peuvent être utilisées pour compiler des
sections de code de façon conditionnelle :
-
EXEC SQL ifdef
nom
;
-
vérifie un
nom
et
traite les lignes qui suivent si
nom
a été créé avec EXEC SQL define
nom
;
-
EXEC SQL ifndef
nom
;
-
vérifie un
nom
et
traite les lignes qui suivent si
nom
n'
a
pas
été créé avec EXEC SQL define
nom
;
-
EXEC SQL
else;
-
commence le traitement d'une section alternative à une
section introduite avec EXEC SQL ifdef
nom
ou EXEC SQL ifndef
nom
;
-
EXEC SQL elif
nom
;
-
vérifie
nom
et commence
le traitement d'une section alternative si
nom
a été créé avec EXEC SQL define
nom
;
-
EXEC SQL
endif;
-
termine une section alternative.
Exemple :
exec sql ifndef TZVAR;
exec sql SET TIMEZONE TO 'GMT';
exec sql elif TZNAME;
exec sql SET TIMEZONE TO TZNAME;
exec sql else;
exec sql SET TIMEZONE TO TZVAR;
exec sql endif;