COMMIT en SQLRPGLE
Posté : lun. 21 déc. 2015, 17:01:02
Bonjour,
J'ai besoin de faire des mises à jour de fichier en ne rendant accessibles les données, qu'à la fin de mon programme.
Dans mon exemple, j'ai journalisé le fichier RAM_ECHAN2.
le début du pgm commence par:
/Free
exec sql set option
commit = *chg,
closqlcsr = *endmod;
/End-Free
Voici la requête SQL
C/Exec Sql
C+ UPDATE Ram_Echan2
C+ SET STATUT = :F3Statut
C+ WHERE Nature = :E1Nature and
C+ Statut = :C1Statut and
C+ Date(Date_Depot) = :E1Date_d
C/End-exec
C Eval B_Valide_F3 = *On
C/Exec Sql
+ Commit
C/End-exec
Je m'aperçois, en mettant un point d'arrêt en debug, sur la ligne b_Valide_F3 que les enregistrements modifiés sont déjà accessibles avant le COMMIT.
Le pgm est compilé avec l'option COMMIT(*CHG) et le cl appelant contient les lignes
STRCMTCTL LCKLVL(*CHG) CMTSCOPE(*JOB)
CALL PGM
ENDCMTCTL
Merci de m'aider à comprendre.
J'ai besoin de faire des mises à jour de fichier en ne rendant accessibles les données, qu'à la fin de mon programme.
Dans mon exemple, j'ai journalisé le fichier RAM_ECHAN2.
le début du pgm commence par:
/Free
exec sql set option
commit = *chg,
closqlcsr = *endmod;
/End-Free
Voici la requête SQL
C/Exec Sql
C+ UPDATE Ram_Echan2
C+ SET STATUT = :F3Statut
C+ WHERE Nature = :E1Nature and
C+ Statut = :C1Statut and
C+ Date(Date_Depot) = :E1Date_d
C/End-exec
C Eval B_Valide_F3 = *On
C/Exec Sql
+ Commit
C/End-exec
Je m'aperçois, en mettant un point d'arrêt en debug, sur la ligne b_Valide_F3 que les enregistrements modifiés sont déjà accessibles avant le COMMIT.
Le pgm est compilé avec l'option COMMIT(*CHG) et le cl appelant contient les lignes
STRCMTCTL LCKLVL(*CHG) CMTSCOPE(*JOB)
CALL PGM
ENDCMTCTL
Merci de m'aider à comprendre.