Objectif
Dans un programme Adelia Visual, récupérer l'utilisateur (user) verrouillant un enregistrement de table en accès SQL iSeries.
Principe général
Étape 1
Récupérer le Relative Record Number (RRN) de l’enregistrement verrouillé par la requête type suivante :
select rrn(NomTable) into :ValeurRrn from NomTable where Condition
Où :
- NomTable est la table sur laquelle a été détecté un verrouillage (*BLOQUE = ‘1’ ou SQLCODE = -913)
- ValeurRrn est une variable définie en NUM_BIN_4
- Condition est la condition de la requête de mise à jour ou de lecture émise sur NomTable
Étape 2
Appeler l'API IBM QDBRRCDL (avec le format RRCD0100)
Avec :
- en paramètres d'entrée
- Le nom de table NomTable
- Le RRN récupéré à l'étape 1
- en paramètres de sortie
- Le profil utilisateur (user iSeries)
- Le nom du travail (job iSeries)
- Le n° du travail
Exemple
Traitement général
* Requête SQL, récupération du RRN de l'enregistrement verrouillé EXEC_SQL(select rrn(MATABLE) into :wrrn from MATABLE where IdCode = :WIdCode) TRAITER_PROC RTVUSER 'MATABLE' wrrn wprofil wnomtrav wnumtrav
Déclaration
***************************************************************************** * Récupération informations sur le job verrouillant un enregistrement * d'une table avec l'API QDBRRCDL * Paramètres : * - Nom table (E) * - N° relatif d'enregistrement verrouillé (E) * - Profil utilisateur (S) * - Nom job (S) * - N° job (S) ***************************************************************************** alpha(10) w_nom_pgm alpha(500) w_rec_var num_bin_4 w_lg_rec_var alpha(8) w_fmt_name alpha(20) w_rcd_id_inf alpha(10) w_mbr_name alpha(30) w_err_code num_bin_4 w_nb_rec_lck_av num_bin_4 w_nb_rec__lck_ret num_bin_4 w_depl_lst_rec_lck num_bin_4 w_size_info alpha(44) t_info_job(11) alpha(44) w_info_job alpha(10) p_job_name alpha(10) p_usr_name alpha(6) p_job_nbr alpha(1) w_lock_status alpha(1) w_lock_state num_bin_4 w_rrn_out num_bin_4 p_rrn_in alpha(44) p_info_job alpha(10) p_nom_table dsi dsrecvar w_nb_rec_lck_av w_nb_rec__lck_ret w_depl_lst_rec_lck w_size_info t_info_job dsi dsinfojob w_info_job p_job_name,1 p_usr_name,11 p_job_nbr,21 w_lock_status,27 w_lock_state,28 w_rrn_out,29 PARAM p_nom_table p_rrn_in p_usr_name p_job_name p_job_nbr
Traitement
* Format API de récupération w_fmt_name = 'RRCD0100' * Appel de l'API w_nom_pgm = 'QDBRRCDL' w_lg_rec_var = 500 w_rcd_id_inf = p_nom_table // '*LIBL ' w_mbr_name = '*FIRST' APPELER &w_nom_pgm w_rec_var w_lg_rec_var w_fmt_name w_rcd_id_inf w_mbr_name p_rrn_in w_err_code dsrecvar = w_rec_var w_info_job = t_info_job(1)