Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Eliminar Código Repetido

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en COBOL al eliminar el código repetido. Las buenas prácticas de programación contribuyen enormemente a desarrollar aplicaciones y servicios computacionalmente seguros.

Necesidad

Eliminar código repetido en 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 código no debe repetirse[1].

Solución

  1. Para eliminar código repetido a través de la aplicación, use la sentencia COPY en cualquier división del programa y en cualquier nivel de secuencia, con el fin incluir código almacenado en el programa. Es posible anidar sentencias COPY a cualquier nivel de profundidad.

  2. Para especificar más de una biblioteca fuente, use múltiples definiciones del sistema o la combinación de múltiples definiciones y la palabra reservada IN/OF (IN/OF nombre biblioteca)[2]:

    • z/OS batch: Use JCL para concatenar conjuntos de datos en la sentencia SYSLIB DD. De forma alternativa, utilice múltiples sentencias DD y use IN/OF de la sentencia COPY.

    • TSO: Use la sentencia ALLOCATE para concatenar conjuntos de datos para SYSLIB. De forma alternativa, utilice múltiples sentencias ALLOCATE y use IN/OF de la sentencia COPY.

    • UNIX: Use la variable de entorno SYSLIB para definir múltiples rutas hacia los copybooks. De forma alternativa, utilice múltiples variables de entorno y use IN/OF de la sentencia COPY.

  3. Por ejemplo, si usted omite la palabra reservada OF, la biblioteca por defecto es SYSLIB:

    1
           COPY MEMBER1 OF COPYLIB
    
  4. Para que las líneas del código almacenado sean tratadas como líneas de depuración, por ejemplo, como si tuviera una "D" insertada en la columna 7, ponga la D en la primera línea de la sentencia COPY[3] (Resaltar que la depuración debe ser deshabilitada en servidores en producción):

    1
          DCOPY MEMBER1 OF COPYLIB
    
  5. La instrucción COPY no puede ser depurada (es una instrucción tratada en tiempo de compilación), si el código contiene una "D" en la columna 7 y el modo WITH DEBUGGING[4] en la división ENVIRONMENT DIVISION no está especificado, la sentencia COPY nunca será procesada.

  6. En el siguiente ejemplo puede encontrar el programa usado para depurar las líneas del código almacenado:

    cobolcopyd.cbl
    1
    2
           IDENTIFICATION DIVISION.
           PROGRAM-ID. COBOLCOPYD.
    
  7. Por lo tanto, es importante definir el modo WITH DEBUGGING de la división ENVIRONMENT DIVISION:

    1
    2
    3
           ENVIRONMENT DIVISION.
           CONFIGURATION SECTION.
           SOURCE-COMPUTER. IBM-ISERIES WITH DEBUGGING MODE.
    
  8. En la división DATA DIVISION, usamos la sentencia COPY para copiar el código almacenado y contenido en QSYSINC-QCBLLESRC (Copia la estructura para códigos de error):

    1
    2
    3
           DATA DIVISION.
           WORKING-STORAGE SECTION.
          DCOPY QUSEC OF QSYSINC-QCBLLESRC.
    
  9. Se muestra el valor por defecto de la variable BYTES-PROVIDED:

    1
    2
    3
    4
           PROCEDURE DIVISION.
           MAIN.
               DISPLAY BYTES-PROVIDED OF QUS-EC.
               STOP RUN.
    

Descargas

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

  1. cobolcopyd.cbl contiene todas las instrucciones COBOL del programa.




Haz un comentario

Estado de los servicios - Términos de Uso