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

CL avec variables dans un SQL

Bonjour,
Je patauche lamentablement depuis plus jours sur l'insertion de données variables dans une requete SQL lancé depuis un CL.

Voici mon code:
PGM PARM(&user)
DCL VAR(&user) TYPE(*CHAR) LEN(20)
DCL &SQLSTMT TYPE(*CHAR) LEN(500)

CHGVAR VAR(&SQLSTMT) VALUE('INSERT INTO +
MYLIB/LOGS (DATIM, UTIL) +
VALUES(CURRENT TIMESTAMP, +
'' || &user || '')')

RUNSQL SQL(&SQLSTMT) COMMIT(*NONE)

 

Le problème c'est qu'il ne prend pas en compte le contenu de ma variable &user, dans le fichier, je me retrouve avec "|| &user || " comme valeur de la colonne UTIL.

J'ai essayé plein de syntaxes glanées parci parla sur le net, mais aucune ne fonctionne.

Merci pour votre aide

Marc

bonjour

comme cela :

 

PGM        PARM(&USER)
DCL        VAR(&USER) TYPE(*CHAR) LEN(20)
DCL        VAR(&SQLSTMT) TYPE(*CHAR) LEN(500)

CHGVAR     VAR(&SQLSTMT) VALUE('INSERT INTO MYLIB/LOGS +
(DATIM, UTIL) VALUES(CURRENT TIMESTAMP, +
''' *CAT &USER *TCAT ''')')

RUNSQL     SQL(&SQLSTMT) COMMIT(*NONE)

Rappel sur le doublement de '  en cl et rpg :

pour avoir une ' il faut la doubler

pour avoir insérer une '  dans une constante, il en faut 4:

 

VALUE('INSERT INTO MYLIB/LOGS   (DATIM, UTIL) VALUES(CURRENT TIMESTAMP,  ''' *CAT &USER *TCAT ''')')

______1_____________________________________________________________234

1 ouverture de la constante

2 et 3 caractères '

4 fermeture de la constante.

Il y a un truc assez simple lorsque l'on utilise des variables dans une commande CL.

Elles doivent se trouver en majuscule après la validation du F4 sur la commande, sinon cela est vue comme une constante

Cdlt

 

 

Alors la, un grand merci pour tes explications limpides et le plus beau, c'est que ca marche ;-)))

Un grand merci, mais purée que c'est pas simple de travailler en CL, la syntaxe est vraiment spéciale et très strict.

Nous travaillons en émulation 5250 avec PCSWS V6, est ce que tu sais s'il existe des émulateurs, éditeurs, outils qui faciliteraient notre travail.

Encore merci

Marco

Bonjour

malheureusement pour la gestion des caractères d'échappement, il n'y a pas d'éditeurs qui peut te simplifier la vie. (même en dehors de l'IBMi) .

Ce problème de doublements de  '  se trouve aussi bien en cl qu'en RPG (pas de souvenir en cobol).

pour les développement j'utilise RDI . (je fais surtout du RPGILE, très peu de CLLE).

Pour l'émulation j'utilse ACS car les ancien versions de Client Access pour window ne sont plus supporté).

Cdlt

 

 

Merci pour ta réponse, je vais regarder les outils que tu utilises.
Je suis novice sur AS400 et je cherche des outils qui pourraient me simplifier la vie et me faire gagner du temps.

Bonne journée

Marc