🛠️ Résolution d'une Erreur SQL312 avec IBM i - RPG & SQL

🛠️ Résolution d'une Erreur SQL312 avec IBM i - RPG & SQL

Récemment, en accompagnant un de mes alternants sur IBM i, nous avons été confrontés à une erreur SQL SQL0312 indiquant « Variable non définie ou non utilisable ». Après plusieurs essais et recherches, nous avons identifié la source du problème : l’ordre de déclaration des options SQL et des fichiers d’écran dans le code RPG. Voici un retour d'expérience et quelques bonnes pratiques.


🔍 Contexte et Cause du Problème

Dans son code, l’instruction EXEC SQL SET OPTION était placée avant la déclaration du fichier d’écran. Ce placement empêche SQL de correctement initialiser les variables d’écran et génère donc une erreur SQL312. En effet, lorsque l'on travaille en RPG avec SQL intégré, il est important de déclarer tous les fichiers et variables avant de configurer des options SQL pour que le précompilateur puisse reconnaître correctement les variables et éviter les erreurs.


✅ Solution Apportée

Pour résoudre le problème, nous avons ajusté le code de manière à ce que les fichiers soient déclarés en amont des options SQL. Voici un exemple de structure correcte :

**FREE
// Déclaration des fichiers d’abord
DCL-F MON_ECRAN WORKSTN;
DCL-F MA_TABLE KEYED;

// Puis les options SQL
EXEC SQL
  SET OPTION COMMIT = *NONE, DATFMT = *ISO,  TIMFMT = *ISO;
        

🚀 Comprendre la Précompilation SQL dans RPG

Lorsqu'un programme RPG contient du SQL intégré, une séquence spéciale de compilation est appliquée. Avant la compilation RPG, une phase de précompilation SQL est exécutée. Cette phase, réalisée par le précompilateur SQL, scanne le code source pour repérer toutes les instructions SQL ainsi que les variables d’hôtes déclarées en RPG.

Le précompilateur SQL effectue ensuite plusieurs opérations :

  1. Vérification et validation des instructions SQL : il s'assure de la validité syntaxique et de la bonne correspondance des objets dans la base de données (tables, colonnes, etc.).
  2. Préparation des instructions SQL pour la compilation RPG : il génère des appels SQL intégrés dans le code RPG.
  3. Production d'un fichier source temporaire : un fichier est créé temporairement pour que le programme compilé RPG puisse intégrer et exécuter les instructions SQL de manière transparente.

Cette étape de précompilation signifie que l’ordre des déclarations dans le code est essentiel. Placer les options SQL avant les fichiers d’écran peut empêcher le précompilateur SQL de reconnaître les variables nécessaires, générant des erreurs comme SQL312.


📈 Résultat et Bonnes Pratiques

Grâce à ce changement, l’alternant a pu exécuter son programme sans erreur. Ce type d'expérience montre à quel point la gestion de l’ordre des instructions et une bonne compréhension du processus de compilation sont imortant pour optimiser le développement sur IBM i.



Christophe Seewald

Référent technique IT chez THK Manufacturing Of Europe S.A.S.

5 mois

Vous en connaissez beaucoup des développeurs RPG qui feraient ça ? En traditionnel, l'exec sql sera de toutes façons dans les spécifications de calcul, impossible à mettre avant les déclarations de fichiers. Mais je comprends que la souplesse du **FREE puisse inciter à faire ce genre de mélanges.

Djibril SOW

Responsable des systèmes d'information chez DUOPHARM

5 mois

Conseils utiles

Guy Routier

Président Armonie (marques : NOTOS - PHL soft - iD INFO)

5 mois

Bravo Sylvain , Vos talents conjugués à la formation continue de l'école d'Armonie font que vous êtes vraiment performants en code et compréhension règles métiers. Nos clients des centres de services TMA/TME sont tous ravis de collaborer avec vous . L'équipe s'étoffe tous les semestres vous étes désormais une quarantaine pour gérer l'évolution des SI et pour rassurer les directions de votre capacité de remplacer immédiatement les techniciens partant a la retraite Continuez 👍

Maurice Hendryckx

Chef de projet technique IBM i ( ex AS400)

5 mois

Merci, je viens d'apprendre quelque chose de très utile.

Identifiez-vous pour afficher ou ajouter un commentaire

Plus d’articles de Sylvain Aktepe

Autres pages consultées

Explorer les sujets