Fluid Attacks logo
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Usar Adecuadamente Opciones de Depuración

Necesidad

Usar adecuadamente las opciones de depuración que provee COBOL.

Contexto

A continuación se describe las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en COBOL.

  2. El desarrollador desea depurar el flujo de la aplicación sin afectar el programa final.

  3. Los eventos con severidad de depuración no deben estar habilitados en producción[1].

Solución

  1. La cláusula WITH DEBUGGING MODE[2] ayuda a los programadores a depurar código mientras la aplicación se encuentra en desarrollo y permite un despliegue transparente de la misma a un entorno de producción.

  2. Esta cláusula causa que cualquier procedimiento usado para depuración (Letra D en la columna 7) sea compilado. Sin esta cláusula, estos procedimientos son tratados como comentarios.

  3. El siguiente código muestra un ejemplo sencillo donde el programador requiere depurar el programa. Es importante que en entornos de producción no se generen eventos de depuración, ya que podría afectar la disponibilidad de la aplicación.

  4. Se da inicio a la aplicación definiendo la división IDENTIFICATION DIVISION[3]:

    coboldbg.cbl
    1
    2
    3
    4
    5
           IDENTIFICATION DIVISION.
          ******************
          * Identification *
          ******************
           PROGRAM-ID. COBOLDBG.
    
  5. En la división ENVIRONMENT DIVISION[4] especificamos el modo WITH DEBUGGING dentro de la sección CONFIGURATION SECTION. Dicho modo debe ser desactivado en entornos de producción:

    1
    2
    3
    4
    5
    6
          ***************
          * Environment *
          ***************
           ENVIRONMENT DIVISION.
           CONFIGURATION SECTION.
           SOURCE-COMPUTER. IBM-ISERIES WITH DEBUGGING MODE.
    
  6. En la división DATA DIVISION[5] definimos dos variables, una llamada CONTADOR y otra denominada RESULTADO que llevará el resultado de una operación matemática:

    1
    2
    3
    4
    5
    6
    7
          ********
          * Data *
          ********
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 RESULTADO  PIC 9(04) VALUE 1.
           01 CONTADOR   PIC 9(02).
    
  7. Iteramos sobre la variable CONTADOR 9 veces, multiplicando la variable RESULTADO por 2. Note como la columna 7 de la sentencia DISPLAY tiene la letra D. Si el modo WITH DEBUGGING está activado, esta línea es compilada, en caso contrario, la línea es tratada como un comentario:

    1
    2
    3
    4
    5
    6
    7
    8
    9
          ********
          * Main *
          ********
           PROCEDURE DIVISION.
           MAIN.
               PERFORM VARYING CONTADOR FROM 1 BY 1 UNTIL CONTADOR > 10
          D        DISPLAY "Actual: " RESULTADO
                   COMPUTE RESULTADO = RESULTADO * 2
               END-PERFORM.
    
  8. Mostramos el resultado final:

    1
    2
    3
           DISPLAY "Resultado: " RESULTADO.
    
           STOP RUN.
    
  9. El resultado usando el modo WITH DEBUGGING es el siguiente:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    Actual: 0001
    Actual: 0002
    Actual: 0004
    Actual: 0008
    Actual: 0016
    Actual: 0032
    Actual: 0064
    Actual: 0128
    Actual: 0256
    Actual: 0512
    Resultado: 1024
    
  10. El resultado sin usar el modo WITH DEBUGGING es el siguiente:

    1
    Resultado: 1024
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. coboldbg.cbl contiene la implementación del código depurado anteriormente.


Service status - Terms of Use