DEPURAR SIN IDE: cuando el DSPLY era tu mejor amigo y el STRISDB tu peor pesadilla

PRIMERO DE TODO: ¿QUÉ CARAJOS ERA STRISDB?

Hoy los juniors abren Chrome DevTools, ponen un breakpoint con un clic, inspeccionan variables en 4K, ven la pila de llamadas en colores pastel… y se creen dioses.

Nosotros teníamos STRISDB. El comando que prometía salvarte las nalgas y siempre te las rompía un poco más.

rpg

STRISDB PGMA (TUCODIGO/TUPRG) UPDPROD(*YES)

Y ahí empezaba el viacrucis:

  1. La pantalla se congelaba.
  2. Aparecía una línea con > esperando comandos.
  3. No había mouse. No había ventanas. No había «Step Over».
  4. Si querías ver el valor de una variable, escribías: EVAL CAMPO
  5. Y te respondía: *NONE (que significa: «no tengo ni idea»).
  6. Entonces tenías que compilar con opción de debug (DBGVIEW(*LIST)).
  7. Rezar de nuevo.
  8. Volver a empezar.

La mayoría abandonábamos a los 10 minutos. F3, F3, ENTER y a correr con DSPLY como los cavernícolas digitales que éramos.


DSPLY: EL console.log() DE LOS POBRES (PERO EN VERDE NUCLEAR)

No había console.log(«llegue hasta aqui»). Había:

rpg

C                     MOVEL     'HOLA MUNDO'      CADENA 50
C                     DSPLY                   CADENA

Y en la parte de abajo de la pantalla, en la línea de comandos, aparecía:

text

HOLA MUNDO

¡Y TENÍAS QUE PRESIONAR ENTER PARA CONTINUAR!

Imagínate: 500 DSPLY en un loop de 10.000 registros. Tu programa se convertía en un juego de «presiona ENTER 10.000 veces si te atreves».

¿El resultado? Un dedo índice musculoso, un F3 desgastado, y una terapia psicológica pendiente.


LA TRILOGÍA DE LA DESESPERACIÓN

Cuando STRISDB te fallaba (siempre) y DSPLY no era suficiente (nunca), tenías tres opciones:

1. El DSPLY con *N

rpg

C                     DSPLY                   CADENA
C                     DSPLY                   '*N'

El *N significaba «no esperes tecla». El programa seguía solo. Pero no veías el mensaje porque pasaba volando. Entonces… ¿para qué?

2. El DSPLY con contador

rpg

C           CONT     IFEQ 100
C                     DSPLY                   'Llegue a 100'
C           CONT     END

Así solo te paraba cada 100 iteraciones. Tecnología avanzada para la época.

3. El DSPLY a un archivo de salida

rpg

C                     EXCPTPRINT
C                     OCCUR PRINT

Y luego:

bash

WRKSPLF SELECT(*CURRENT)

Veías tu programa escribiendo en tiempo real como si fuera un ECG de paciente en paro.


EL DÍA QUE DSPLY TE SALVÓ LA VIDA (Y EL TRABAJO)

Anécdota real (y si no lo fue, debería haberlo sido):

Un viernes a las 17:30, el programa de nóminas de una empresa con 3000 empleados dejó de pagar a la mitad del personal.

El error era reproducible solo en producción. En desarrollo, funcionaba perfecto.

¿Qué haces? No puedes usar STRISDB porque el programa está compilado sin debug en producción. No puedes recompilar porque es viernes y el cambio requiere aprobación.

Solución de viejo zorro:

  • Copiaste el programa a una librería de pruebas.
  • Le metiste 47 DSPLY en lugares estratégicos.
  • Compilaste con DBGVIEW(*SOURCE) pero sin cambiar firma.
  • Corriste en producción… en horario no laboral.
  • Un DSPLY te mostró: CLAVE-VACIA en el registro 2345.
  • El problema: un campo de 10 caracteres venía con espacios pero el programa esperaba ceros.
  • Lo arreglaste con un IF de una línea.
  • A las 19:00 las nóminas estaban pagadas.

Ese día, DSPLY fue más héroe que cualquier IDE moderno. Y tú te fuiste a casa con el pecho inflado y la botella de vino más cara del supermercado.


LOS ERRORES MÁS PUTOQUERIDOS QUE NOS HICIERUSAR DSPLY

ErrorSolución con DSPLYNivel de sufrimientoCPF5029 – Índice no válidoDSPLY antes del SETLL y READE😭😭😭MCH3601 – Puntero no asignadoDSPLY del puntero (sí, se podía)🤯💀RNQ0103 – División por ceroDSPLY de los operandos antes de DIV😤😩CPF4103 – Archivo no abiertoDSPLY del *IN del archivo😒🔫

Y el peor de todos… cuando no sale ningún error pero EL RESULTADO ESTÁ MAL. Ahí metías DSPLY hasta en los sueños.


¿Y HOY? ¿SIGUE VIVO EL DSPLY?

Claro que sí. Aunque ahora los desarrolladores de IBM i moderno usan más RDi (Rational Developer for i) con debug gráfico, o incluso VS Code con extensiones…

El viejo lobo sigue usando DSPLY.

Porque el DSPLY:

  • No necesita configuraciones.
  • No falla por un signature mismatch.
  • No te pide permiso.
  • Y cuando falla… al menos te enseñó algo.

CIERRE CON HUEVOS (Y UN DSPLY FINAL)

Así que la próxima vez que un junior te diga «no entiendo cómo depuraban ustedes», abrázalo, sonríe, y enséñale esto:

rpg

C                     DSPLY     'ASi se hacia, crio'
C                     DSPLY     '*N'

Y si te pregunta qué significa *N, le dices: «Que no esperábamos a nadie. Seguíamos adelante. Como siempre.»


¿TE SUENA? CUÉNTAME TU PEOR EXPERIENCIA CON STRISDB

Porque todos tenemos una. Esa vez que STRISDB te tiró el sistema. O que se colgó después de 3 horas. O que nunca, nunca, nunca te mostró el error real.

Yo espero aquí, con el F9 listo para recuperar el comando.

Y si todavía usas DSPLY aunque tengas RDi… eres de los míos.

joalweingartt