Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400ILE COBOL et SQL
Vous devez vous identifier pour créer des messages et des sujets.

ILE COBOL et SQL

Bonjour,

Je n'arrive pas à utiliser SQL avec ILE COBOL.
Je voudrais un exemple simple comme suit :
Soit un fichier LIB1/FIC1 qui contient les zones suivantes NUM(int), NOM(String) et VAR(real).
Je voudrais créer un programme à qui on lui passe (via LINKAGE SECTION) une valeur entière VAR1, il effectue la requête suivante :

SELECT COUNT(*) FROM LIB1/FIC1 WHERE NUM=VAR1

Il faut utiliser des variables hôtes pour faire l'interface entre requêtes SQL et programme Cobol.
Toutes les instructions SQL doivent être encadrées par les mot-clés EXEC SQL . . . END-EXEC.
Le programme doit être du type SQLCBLLE et compilé avec la commande CRTSQLCBLI.

Par exemple :

* déclaration des variables hôtes
  EXEC SQL
       BEGIN DECLARE SECTION
  END-EXEC.
  77 BD-COUNT  PIC S9(9).
  77 BD-VAR1   PIC S9(4).
  EXEC SQL
       END DECLARE SECTION
  END-EXEC.

  LINKAGE SECTION.

  77 LK-VAR1   PIC 9(4).

  PROCEDURE DIVISION USING LK-VAR1

  MOVE LK-VAR1 TO BD-VAR1.

* exécution requête
  EXEC SQL              
       SELECT COUNT(*)              
         INTO :BD-COUNT
         FROM LIB1/FIC1               
        WHERE VAR = :BD-VAR1
  END-EXEC.

* résultat OK
  IF SQLSTATE = SPACES
     DISPLAY BD-COUNT
* résultat en erreur
  ELSE
      DISPLAY  "Ereeur : " SQLSTATE
  END-IF.

Deux choses sur les variables hôtes :
- elles doivent être signées quand elles sont numériques
- elles doivent préfixées avec ":" quand elles dont utilisées dans une requête SQL.

Sur le contrôle d'erreur par SQLSTATE : https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzala/rzalakickoff.htm

Que signifie "variable hôte" ?

Que signifie "variable hôte" ?

Ce sont les variables utilisées dans les requêtes SQL pour échanger des données avec le programme utilisant SQL. Elles doivent être déclarées dans un bloc BEGIN DECLARE SECTION . . . END DECLARE SECTION.

Voir par exemple la documentation Ibm Embedded SQL Programming à la section Common concepts and rules for using embedded SQL.