Bucles

Un bucle es la ejecución repetida de algún código. Si no ha planificado el bucle, o si lo ha diseñado en la aplicación pero por alguna razón no puede terminar, obtendrá un conjunto de síntomas que varían en función de lo que esté haciendo el código. En algunos casos, un bucle puede al principio diagnosticarse como una espera o un problema de rendimiento, porque la tarea de bucle compite por los recursos del sistema con otras tareas que no están implicadas en el bucle.

Los siguientes son algunos síntomas característicos de los bucles:
  • El símbolo de 'ocupación del sistema' se visualiza de forma permanente en el área de información del operador de una unidad de visualización, o permanece visualizado durante largos periodos.
  • La transacción termina de forma anómala con el código de terminación anómala AICA.
  • El uso de CPU es muy alto, quizás se acerca al 100%, pero algunas tareas permanecen suspendidas o preparadas, pero no en ejecución, durante mucho tiempo.

    Puede comprobar cuál es el uso de la CPU para cualquier trabajo MVS utilizando el comando DISPLAY ACTIVE en la consola MVS para mostrar los usuarios activos.

  • Hay una actividad reducida en los terminales, o posiblemente ninguna actividad.
  • Una o más regiones CICS parecen estar atascadas, o sólo están continuando lentamente.
  • No se graban mensajes CICS en ningún destino, cuando se esperan.
  • No se puede iniciar ninguna tarea nueva.
  • Las tareas existentes permanecen suspendidas.
  • No se puede utilizar la transacción CEMT.
  • Salida repetitiva obtenida. Intente buscar en estas áreas:
    • Terminales y la consola del sistema.
    • Colas de almacenamiento temporal. Puede utilizar CEBR para examinarlos en línea.
    • Archivos de datos y diarios CICS .
    • Tablas de rastreo, pero recuerde que algunos bucles son intencionados; algunas tareas del sistema CICS los utilizan, por ejemplo, para ver si hay algún trabajo que realizar.
  • Demanda excesiva de almacenamiento. Si el bucle contiene una solicitud GETMAIN, el almacenamiento se adquiere cada vez que se pasa este punto del bucle, siempre que el almacenamiento suficiente para satisfacer la solicitud permanezca disponible. Si el almacenamiento no se libera también en el bucle, CICS finalmente se queda corto en el almacenamiento (SOS) en uno de los DSA. A continuación, obtendrá un mensaje que indica que CICS está bajo estrés en una de estas áreas.

    Otro efecto es que las tareas que emiten solicitudes GETMAIN incondicionales se suspenden más a menudo a medida que el bucle continúa y el almacenamiento se utiliza progresivamente. No es necesario que las tareas que realizan solicitudes de almacenamiento estén en el bucle para que se vean afectadas de esta forma.

  • Las estadísticas muestran un gran número de tareas iniciadas automáticamente.
  • Se muestran grandes números de accesos de archivo para una tarea individual.

Algunos bucles se pueden hacer para dar algún tipo de salida repetitiva. Las esperas y los problemas de rendimiento nunca dan una salida repetitiva. Si el bucle no produce ninguna salida, a veces se puede obtener un patrón de repetición utilizando el rastreo. Un procedimiento para hacerlo se describe en Cómo tratar con bucles.

Si puede utilizar la transacción CEMT, intente emitir CEMT INQ TASK repetidamente. Si se muestra que la misma transacción se está ejecutando cada vez, esto es una indicación adicional de que la tarea está en bucle. Sin embargo, tenga en cuenta que la transacción CEMT siempre se está ejecutando cuando se utiliza para consultar tareas.

Si se observa que se están ejecutando transacciones diferentes, esto podría indicar un bucle, pero que implica más que una sola transacción.

Si no puede utilizar la transacción CEMT, puede deberse a que una tarea está en bucle y no permite que CICS recupere el control. Un procedimiento para investigar este tipo de situación se describe en Qué hacer si CICS se ha detenido.

Considere la evidencia que tiene hasta ahora. ¿Indica un bucle? Si es así, vaya a Cómo tratar con bucles, donde hay procedimientos para definir los límites del bucle.