Bonjour
j'utilise des panels sous ISPF pour effectuer une recherche dans une table DB2.
On commence par un REXX qui affiche le premier panel de critére puis qui reprend la main pour construire une requete SQL DB2 (SELECT) et pour l'executer. Pour chaque ligne renvoyée par la requete, je formate le résultat et je le met dans une table ISPF que je créé pour l'occasion (TBCREATE)
Problème : Si plusieurs utilisateurs utilisent mes écrans, à un moment donnée, l'un est sur le panel IxxxRES : a ce moment, la table TBxxx est ouverte. L'autre essaye de créér la table et comme elle est ouverte ca plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 /*REXX*/ /* AFFICHAGE DU PANEL ICRECRI */ "ISPEXEC DISPLAY PANEL(IxxxCRI)" /* CONSTRUCTION DE LA REQUETE */ ... /* EXECUTION DE LA REQUETE */ ... "ISPEXEC TBCREATE TBxxx NAMES(ANNEE QUANT TYPE LIB) replace" DO UNTIL(SQLCODE <> 0) ADDRESS DSNREXX "EXECSQL FETCH C1 USING DESCRIPTOR :OUT" IF SQLCODE == 0 THEN DO /* FORMATAGE DU RESULTAT ET AJOUT DE LA LIGNE DANS LA TABLE */ ... "ISPEXEC TBADD TBxxx" END END "ISPEXEC TBTOP TBxxx" "ISPEXEC TBDISPL TBxxx PANEL(IxxxRES) " "ISPEXEC TBCLOSE TBxxx"
Même Problème lorsque le même utilisateur lance plusieurs fois le même panel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 ISPF Dialog Error Command ===> ****************************************************************************** * ISPT036 * * * * Table in use * * TBCREATE issued for table TBxxx that is in use, ENQUEUE failed. * * * * * * * * * * * * * * Current dialog statement: * * TBCREATE TBxxx NAMES(ANNEE QUANT TYPE LIB) replace * * * * Enter HELP command for further information regarding this error. * * Press ENTER key to terminate the dialog. * * * * * * * * * ******************************************************************************
Comment faire ?
Partager