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