{"id":141,"date":"2012-05-27T09:37:19","date_gmt":"2012-05-27T08:37:19","guid":{"rendered":"http:\/\/dev.qualilogy.com\/es\/?p=141"},"modified":"2013-01-05T09:38:18","modified_gmt":"2013-01-05T08:38:18","slug":"sonar-cobol-lo-que-debes-saber","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/sonar-cobol-lo-que-debes-saber\/","title":{"rendered":"Sonar Cobol &#8211; Lo que debes saber"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1776\" title=\"QualCobol11\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol11.jpg\" alt=\"\" width=\"300\" height=\"417\" \/><\/a>Hice unos cuantos posts hace unos meses (<a title=\"Permalink to Sonar \u2013 An\u00e1lisis Cobol con Jenkins\" href=\"http:\/\/qualilogy.com\/es\/analisis-de-codigo-cobol-con-sonar-y-jenkins\" rel=\"bookmark\" target=\"_blank\">Sonar \u2013 An\u00e1lisis Cobol con Jenkins<\/a>, <a href=\"http:\/\/qualilogy.com\/es\/open-source-y-codigo-legacy\" target=\"_blank\">Open Source &amp; c\u00f3digo Legacy<\/a>) con el fin de demostrar que no es necesario ser un gur\u00fa de J2EE o un experto Open Source para analizar aplicaciones Legacy de Cobol (o ABAP) con Sonar y Jenkins.<\/p>\n<p>Y veo bastante visitantes llegando a estas p\u00e1ginas a mi blog, lo que refleja el inter\u00e9s por este tema.<\/p>\n<p>Pero alguien me dijo recientemente: \u00abEstamos analizando c\u00f3digo J2EE regularmente con Sonar, y todo va de maravilla. Tambi\u00e9n tenemos planes para poner las aplicaciones Cobol en Sonar y Jenkins, pero no s\u00e9 nada del mundo del mainframe\u00bb.<\/p>\n<p>Por lo tanto, este post (y los siguientes) tendr\u00e1 como objetivo ayudar a la implantaci\u00f3n de un proceso de an\u00e1lisis de c\u00f3digo Cobol con Sonar y Jenkins.<\/p>\n<p><!--more--><\/p>\n<p>No voy a hacer un curso de Mainframe-Cobol, supongo que se encuentra f\u00e1cilmente en Internet, y eso nos llevar\u00eda varios posts.<\/p>\n<p>No. La idea es la siguiente: tienes que poner en marcha este proceso de an\u00e1lisis de c\u00f3digo Cobol. Est\u00e1 previsto un encuentro con algunos representantes del mundo Mainframe de tu empresa. Para preparar esta reuni\u00f3n:<\/p>\n<ul>\n<li>\u00bfQu\u00e9 necesitas saber?<\/li>\n<li>\u00bfQu\u00e9 preguntas debes hacer?<\/li>\n<\/ul>\n<p>Primero. Necesitas saber: lo que se puede analizar<\/p>\n<h3><strong>Componentes Cobol<\/strong><\/h3>\n<p>En c\u00f3digo Java, se trabaja con clases, m\u00e9todos, librerias (.jar), etc. Estos son los objetos del lenguaje Java. Con c\u00f3digo Cobol, los tipos de componentes que debes conocer son:<\/p>\n<ul>\n<li>Programa Cobol: un archivo de instrucciones, que se compila en un ejecutable.<\/li>\n<li>Copy-Book: un archivo de instrucciones Cobol, que se utiliza como un &#8216;Include&#8217;. Equivalente de un componente reutilizable. Tambi\u00e9n se llaman &#8216;Copys&#8217;, porque la llamada a este archivo se hace con una instrucci\u00f3n COPY.<\/li>\n<\/ul>\n<p>Por ejemplo, el siguiente programa llama en la l\u00ednea 65 al Copy-Book &#8216;MYCOPY&#8217;:<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol111.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1780\" title=\"QualCobol111\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol111.jpg\" alt=\"\" width=\"368\" height=\"91\" \/><\/a>que he creado, con el siguiente c\u00f3digo:<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol112.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1781\" title=\"QualCobol112\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol112.jpg\" alt=\"\" width=\"411\" height=\"40\" \/><\/a><\/p>\n<p>Cuando se compila el programa (en este caso, cuando lo analizamos), podemos ver que el c\u00f3digo del Copy-Book se insert\u00f3 en el programa donde fue llamado:<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol1131.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1784\" title=\"QualCobol113\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/05\/QualCobol1131.jpg\" alt=\"\" width=\"342\" height=\"44\" \/><\/a>He deliberadamente incluido un error para interrumpir el proceso de an\u00e1lisis con el fin de mostrar el c\u00f3digo del Copy-Book &#8216;expanded&#8217; en el programa Cobol.<\/p>\n<p>Los Copy-Books son el equivalente de componentes reutilizables, muy \u00fatiles. Por ejemplo, las declaraciones de las estructuras de las tablas de base de datos se hacen en un Copy. De este modo, cada programa que est\u00e1 haciendo un tratamiento con la tabla (re)utiliza el Copy-Book. Cualquier cambio en la estructura de la tabla se realizar\u00e1 a trav\u00e9s del Copy, evitando as\u00ed tener que buscar y cambiar todos los programas que trabajan con la tabla.<\/p>\n<p>Entiendes que los programas y los Copys son dos componentes con c\u00f3digo Cobol que queremos an\u00e1lizar.<\/p>\n<p>Otros tipos de objetos Mainframe a conocer:<\/p>\n<ul>\n<li>Transacciones CICS \u2013 pronunciar &#8216;KiKs&#8217; para parecer un experto :): archivo que utiliza el servidor de transacciones en los mainframes de IBM. Cuando realizas una transacci\u00f3n bancaria, como sacar dinero de tu cuenta bancaria, es probable que miles de personas se encuentran actualmente realizando la misma operaci\u00f3n en el mismo momento que t\u00fa. Es el trabajo del CICS Transaction Server de manejar esas miles de transacciones (y otras) en paralelo.<\/li>\n<li>JCL: un archivo batch. El JCL es un lenguaje (Job Control Language) espec\u00edfico, no muy f\u00e1cil. Una vez realizada tu transacci\u00f3n bancaria, el sistema registra una escritura contable, por ejemplo. Pero no hay necesidad de hacerlo enseguida, lo que seria un uso innecesario de los recursos del ordenador (CPU, memoria) cuando se necesita el mejor rendimiento para las operaciones online. Este tratamiento se puede hacer durante la noche y este ser\u00e1 el papel de un batch JCL.<\/li>\n<\/ul>\n<p>No hay pr\u00e1cticamente ning\u00fan est\u00e1ndar de calidad para las transacciones CICS o los archivos JCL, y no son reglas cr\u00edticas, as\u00ed que evitaremos un esfuerzo con pocos beneficios, de extraer y analizar estos archivos, .<\/p>\n<p>Hay otros tipos de objetos y otros tipos de c\u00f3digo (Assembler, PL1, &#8230;) en el mundo del Mainframe, pero nadie te va a criticar si no sabes lo que es. Todo lo que necesitas recordar para tu reuni\u00f3n es que:<\/p>\n<ul>\n<li>Vamos a analizar los componentes Cobol, programas y Copys.<\/li>\n<li>El JCL y el &#8216;KiKs&#8217; no son interesantes para estimar la calidad de las aplicaciones Mainframe.<\/li>\n<\/ul>\n<h3><strong>Las aplicaciones Cobol<\/strong><\/h3>\n<p>Oye, hablando de aplicaciones Mainframe, otra cosa que saber.<\/p>\n<p>Un banco tiene de promedio aproximadamente 20 millones de l\u00edneas de Cobol. As\u00ed que no se analiza en una sola vez. De repente, lo normal es de empezar con las aplicaciones m\u00e1s cr\u00edticas. El problema: la noci\u00f3n de aplicaci\u00f3n no tiene sentido en Cobol.<\/p>\n<p>Se trata de sistemas Legacy, que existen desde d\u00e9cadas, y est\u00e1n muy imbricados y entrelazados. Por ejemplo, el c\u00f3digo Cobol que te permite realizar tus transacciones bancarias usa probablemente algunos Copy-books que tambi\u00e9n ser\u00e1n necesarios para el sistema de contabilidad y el batch para gravar la escritura contable. En cual sistema pertenecen los Copys? El de movimientos de cuentas o el de contabilidad? En realidad, a los &#8216;cobol-ers&#8217;, no les importa.<\/p>\n<p>Ahora, es obvio que no se pueden agrupar en un solo lugar todos los archivos que constituyen los millones de l\u00edneas de c\u00f3digo del portafolio Cobol de la empresa. Un mainframe es un ordenador con un sistema de archivos y los archivos se organizan en librer\u00edas o bibliotecas, el equivalente de las carpetas en tu propio ordenador personal. Lo que vamos a analizar es el contenido de un directorio, que vamos a extraer y descargar desde el mainframe hasta nuestra plataforma Sonar \/ Jenkins.<\/p>\n<p>As\u00ed que no te sorprendes si en la reuni\u00f3n, algunos hablan de \u00abm\u00f3dulos\u00bb en lugar de aplicaciones. En cualquier caso, lo que te interesa es la forma de organizar los diferentes conjuntos de archivos en los diferentes an\u00e1lisis, que se refiere a aplicaciones, m\u00f3dulos o cualquier otro nombre que se desea darles.<\/p>\n<p>Estos conceptos sencillos son el m\u00ednimo necesario que conocer para saber de que se habla en una reuni\u00f3n como la que te espera.<\/p>\n<p>Ahora se necesita saber qu\u00e9 preguntas hacer para preparar los an\u00e1lisis. En nuestro pr\u00f3ximo post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hice unos cuantos posts hace unos meses (Sonar \u2013 An\u00e1lisis Cobol con Jenkins, Open Source &amp; c\u00f3digo Legacy) con el fin de demostrar que no es necesario ser un gur\u00fa de J2EE o un experto Open Source para analizar aplicaciones Legacy de Cobol (o ABAP) con Sonar y Jenkins. Y veo bastante visitantes llegando a [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-141","post","type-post","status-publish","format-standard","hentry","category-sonar-cobol"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/141"}],"collection":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":142,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/141\/revisions\/142"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}