From f8e97fd09ede0ab5a0dcad8b8b4a928310b368de Mon Sep 17 00:00:00 2001 From: Jeilyn Peguero Date: Mon, 26 Oct 2026 15:56:18 -0400 Subject: [PATCH] ipprmt021: consulta el nombre del usuario una sola vez por usuario (antes una consulta por fila) Co-Authored-By: Claude Sonnet 5.5 --- PROYECTO/ipdir/ipprmt021.4gl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/PROYECTO/ipdir/ipprmt021.4gl b/PROYECTO/ipdir/ipprmt021.4gl index 1a0ab50..8288975 100644 --- a/PROYECTO/ipdir/ipprmt021.4gl +++ b/PROYECTO/ipdir/ipprmt021.4gl @@ -20,6 +20,7 @@ GLOBALS us_crea VARCHAR(50) END RECORD DEFINE nombreUsuario,email,etiqueta STRING +DEFINE cacheUsuarios DICTIONARY OF STRING MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios @@ -59,8 +60,12 @@ FUNCTION ipprmt021() LET idx = 1 FOREACH buscardata INTO arr_busqueda[idx].* - CALL usuarioSistema(arr_busqueda[idx].us_crea) RETURNING nombreUsuario,email - LET arr_busqueda[idx].usuario = nombreUsuario + # Nombre del usuario: se consulta una sola vez por usuario + IF NOT cacheUsuarios.contains(arr_busqueda[idx].us_crea) THEN + CALL usuarioSistema(arr_busqueda[idx].us_crea) RETURNING nombreUsuario,email + LET cacheUsuarios[arr_busqueda[idx].us_crea] = nombreUsuario + END IF + LET arr_busqueda[idx].usuario = cacheUsuarios[arr_busqueda[idx].us_crea] LET idx = idx + 1 END FOREACH IF idx = 1 THEN