Descubrimiento del lugar donde ha ocurrido un error de programa

Cuando una transacción finalice anormalmente con el código ASRA o ASRD, lo primero que debe hacer es saber dónde se ha producido la comprobación del programa. CICS® habrá intentado establecer esto para usted.

Acerca de esta tarea

Un registro del programa erróneo y el desplazamiento de la comprobación del programa dentro del módulo de carga del programa se encuentran en los siguientes lugares:
  • Mensaje DFHAP0001 o DFHSR0001, que habrá precedido a la terminación anómala
  • El bloque de control de terminación anómala de transacción (TACB) que se habrá creado para describir la terminación anómala
  • ID de punto de rastreo de excepción AP 0781 para una terminación anómala ASRA o AP 0783 para una terminación anómala ASRD.
Consulte Interpretación de vuelcos de transacción.

Procedimiento

  1. Busque el desplazamiento de la comprobación del programa dentro del módulo de carga del programa.
    El desplazamiento indica el punto del programa en el que se ha producido la comprobación del programa. Tenga en cuenta que el desplazamiento se deriva de la siguiente dirección de instrucción secuencial de PSW y, por lo tanto, puede indicar la instrucción después de la que ha fallado.
  2. Cuando el desplazamiento es X'FFFFFFFF ', CICS no ha podido establecer la ubicación de la comprobación del programa. Utilice el PSW para obtener la siguiente dirección de instrucción secuencial.
    El PSW se puede encontrar en los siguientes lugares:
    • El TACB para la terminación anómala
    • En la cabecera del vuelco de transacción formateado
    • Dentro del bloque de datos de error de kernel rastreado por los ID de punto de rastreo de excepción AP 0781 o AP 0783
  3. Tenga en cuenta las direcciones de inicio y finalización de las distintas áreas de programa en el volcado de transacción.
    ¿Es la siguiente dirección de instrucción secuencial del PSW en cualquiera de los programas? Si es así, es el programa en el que se ha producido la interrupción. Utilice el procedimiento descrito en Localización del último mandato o sentencia para identificar el último mandato ejecutado.
    Si la dirección está fuera de todos los programas, es probable que se haya producido una de dos cosas.
    • El programa en el que se ha producido la comprobación del programa se estaba ejecutando en su nombre (por ejemplo, VSAM o DL/I), pero no bajo el control de CICS . Esto suele deberse a que se han pasado parámetros incorrectos al programa o a que se han pasado parámetros en la secuencia incorrecta. Normalmente se capturan y se marcan con un código de retorno adecuado, pero ciertas combinaciones pueden causar problemas.
    • Es posible que el programa haya tomado una rama wild en algún otro fragmento de almacenamiento. Si la dirección de la PSW termina en un número impar, este es probablemente el caso, ya que las instrucciones válidas siempre están en una dirección par. La dirección podría estar dentro del espacio de direcciones CICS o en cualquier otro lugar del almacenamiento virtual.

      A menudo, se toma una rama comodín para la dirección cero, porque el registro que debe contener la dirección de rama se establece en cero. El PSW normalmente contiene la dirección X'00000004 ' después de que se haya producido una ramificación de este tipo.

  4. Compruebe el contenido del registro para ver si alguno de ellos contiene la siguiente dirección de instrucción secuencial del PSW o algo parecido.
    Esto podría ayudarle a averiguar cómo llegó a la dirección equivocada.

    Si la PSW apunta a una instrucción en uno de sus programas, lo siguiente a considerar es el tipo de comprobación de programa que ocurrió. De lo contrario, acceda directamente a Análisis adicional del problema.