{"id":389,"date":"2017-11-16T10:24:54","date_gmt":"2017-11-16T12:24:54","guid":{"rendered":"https:\/\/www.escovadordebit.com.br\/?p=389"},"modified":"2022-03-22T10:38:54","modified_gmt":"2022-03-22T13:38:54","slug":"meu-desafio-era-criar-um-particionador-que-vem-dados-do-cobol","status":"publish","type":"post","link":"https:\/\/escovadordebit.com.br\/?p=389","title":{"rendered":"Meu desafio  era, criar um particionador que vem dados do Cobol!"},"content":{"rendered":"\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Java recebe do Cobol<\/h2>\n\n\n\n<p>Come\u00e7ou que o Sistema em Java gravava informa\u00e7\u00f5es vinda do Cobol no log e para entender melhor tive que pensar em um particionador para ler estas informa\u00e7\u00f5es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como funciona?<\/h2>\n\n\n\n<p>Atrav\u00e9s do CTG o Java se comunica com o COBOL\/CICS, assim conseguimos executar programas do Mainframe. O seu retorno nada mais \u00e9 que uma grande string, fazendo com que s\u00f3 quem tem a book do programa sabe qual posi\u00e7\u00e3o de cada campo. Para quem n\u00e3o entendeu vamos para um exemplo bem simples:<\/p>\n\n\n\n<p><em>&#8220;Quando recuperamos, temos que fazer um substring em cada item para saber o valor correto, assim poderemos ler e utilizar a informa\u00e7\u00e3o&#8221;<\/em><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Imagina que chamemos um servi\u00e7o que devolve em uma string o valor &#8220;000ESCOVADOR1TESTE&#8221;;<\/li><li>Se tivermos a Book do programa que informa a posi\u00e7\u00e3o de cada campo, seria mais ou menos desta forma:\n<ol>\n<li>CODIGO 3<\/li>\n<li>NOME 9<\/li>\n<li>TIPO 1<\/li>\n<li>DESCRICAO 5<\/li>\n<\/ol>\n<\/li><li>Ent\u00e3o nosso resultado com Book + valores seria:\n<ol>\n<li>CODIGO : 000<\/li>\n<li>NOME : ESCOVADOR<\/li>\n<li>TIPO : 1<\/li>\n<li>DESCRICAO : TESTE<\/li>\n<\/ol>\n<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Meu desafio<\/h2>\n\n\n\n<p>Na verdade a explica\u00e7\u00e3o acima s\u00f3 foi um exemplo bem simples mas meu desafio seria um pouco diferente, recebia no log do Java uma tripa em forma de texto, mais ou menos 53Kb de tamanho, que seria 53000 caracteres, tive \u00e9 claro que usar a Book do cobol para saber cada campo, sen\u00e3o seria muito dif\u00edcil entender os dados, esta Book tem quase 900 campos. Ent\u00e3o pensei, vou precisar de um arquivo de layout (a minha Book), arquivo de entrada e fazer um arquivo de saida, simples! Coloquei o layout em CSV para facilitar qualquer edi\u00e7\u00e3o no Excel, a entrada com a tripa do cobol deixei em txt e o resultado tamb\u00e9m salvei em CSV para facilitar a leitura do resultado. Como eu n\u00e3o sou uma pessoa muito organizada, tive que reprogramar este c\u00f3digo v\u00e1rias vezes, em outras linguagens (Java e PHP), agora resolvi escreve-lo em Python, doideira!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Agora o c\u00f3digo<\/h2>\n\n\n\n<p>Segue meu c\u00f3digo \ud83d\ude09<\/p>\n\n\n<p>entrada = open(&#8216;entrada.txt&#8217;,&#8217;r&#8217;).read()<br \/>\nfile = open(&#8216;layout.csv&#8217;,&#8217;r&#8217;)<\/p>\n<p>atual = 0<br \/>\ndescricao = &#8220;&#8221;;<br \/>\nfor linha in file.read().splitlines():<br \/>\ncoluna = linha.split(&#8216;;&#8217;)<br \/>\nif coluna != None:<br \/>\nvalor = entrada[atual:atual+int(coluna[1])]<br \/>\natual += int(coluna[1])<br \/>\ndescricao += coluna[0] + &#8220;;&#8221; + str(valor) + &#8220;\\n&#8221;<\/p>\n<p>resultado = open(&#8216;resultado.csv&#8217;,&#8217;w&#8217;)<br \/>\nresultado.write(descricao)<br \/>\nresultado.close()<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java recebe do Cobol Come\u00e7ou que o Sistema em Java gravava informa\u00e7\u00f5es vinda do Cobol no log e para entender melhor tive que pensar em um particionador para ler estas informa\u00e7\u00f5es. Como funciona? Atrav\u00e9s do CTG o Java se comunica com o COBOL\/CICS, assim conseguimos executar programas do Mainframe. O seu retorno nada mais \u00e9 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[22,24,52],"class_list":["post-389","post","type-post","status-publish","format-standard","hentry","category-desafiobit","tag-cobol","tag-desafio","tag-python"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Meu desafio era, criar um particionador que vem dados do Cobol! - Escovador de Bit<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/escovadordebit.com.br\/?p=389\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Meu desafio era, criar um particionador que vem dados do Cobol! - Escovador de Bit\" \/>\n<meta property=\"og:description\" content=\"Java recebe do Cobol Come\u00e7ou que o Sistema em Java gravava informa\u00e7\u00f5es vinda do Cobol no log e para entender melhor tive que pensar em um particionador para ler estas informa\u00e7\u00f5es. Como funciona? Atrav\u00e9s do CTG o Java se comunica com o COBOL\/CICS, assim conseguimos executar programas do Mainframe. O seu retorno nada mais \u00e9 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/escovadordebit.com.br\/?p=389\" \/>\n<meta property=\"og:site_name\" content=\"Escovador de Bit\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-16T12:24:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-22T13:38:54+00:00\" \/>\n<meta name=\"author\" content=\"Martin Muller martin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Martin Muller martin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/escovadordebit.com.br\/?p=389#article\",\"isPartOf\":{\"@id\":\"https:\/\/escovadordebit.com.br\/?p=389\"},\"author\":{\"name\":\"Martin Muller martin\",\"@id\":\"https:\/\/escovadordebit.com.br\/#\/schema\/person\/3a14e341de3660629f9c1e39dfe6d653\"},\"headline\":\"Meu desafio era, criar um particionador que vem dados do Cobol!\",\"datePublished\":\"2017-11-16T12:24:54+00:00\",\"dateModified\":\"2022-03-22T13:38:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/escovadordebit.com.br\/?p=389\"},\"wordCount\":393,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/escovadordebit.com.br\/#organization\"},\"keywords\":[\"cobol\",\"desafio\",\"python\"],\"articleSection\":[\"DesafioBit\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/escovadordebit.com.br\/?p=389#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/escovadordebit.com.br\/?p=389\",\"url\":\"https:\/\/escovadordebit.com.br\/?p=389\",\"name\":\"Meu desafio era, criar um particionador que vem dados do Cobol! - Escovador de Bit\",\"isPartOf\":{\"@id\":\"https:\/\/escovadordebit.com.br\/#website\"},\"datePublished\":\"2017-11-16T12:24:54+00:00\",\"dateModified\":\"2022-03-22T13:38:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/escovadordebit.com.br\/?p=389#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/escovadordebit.com.br\/?p=389\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/escovadordebit.com.br\/?p=389#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/escovadordebit.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Meu desafio era, criar um particionador que vem dados do Cobol!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/escovadordebit.com.br\/#website\",\"url\":\"https:\/\/escovadordebit.com.br\/\",\"name\":\"Escovador de Bit\",\"description\":\"Escove escove at\u00e9 achar o problema\",\"publisher\":{\"@id\":\"https:\/\/escovadordebit.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/escovadordebit.com.br\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/escovadordebit.com.br\/#organization\",\"name\":\"Escovador de Bit\",\"url\":\"https:\/\/escovadordebit.com.br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/escovadordebit.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/escovadordebit.com.br\/wp-content\/uploads\/2017\/11\/cropped-cropped-escovadordebit-2.png\",\"contentUrl\":\"https:\/\/escovadordebit.com.br\/wp-content\/uploads\/2017\/11\/cropped-cropped-escovadordebit-2.png\",\"width\":99,\"height\":75,\"caption\":\"Escovador de Bit\"},\"image\":{\"@id\":\"https:\/\/escovadordebit.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/escovadordebit.com.br\/#\/schema\/person\/3a14e341de3660629f9c1e39dfe6d653\",\"name\":\"Martin Muller martin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/escovadordebit.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"Martin Muller martin\"},\"url\":\"https:\/\/escovadordebit.com.br\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Meu desafio era, criar um particionador que vem dados do Cobol! - Escovador de Bit","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/escovadordebit.com.br\/?p=389","og_locale":"pt_BR","og_type":"article","og_title":"Meu desafio era, criar um particionador que vem dados do Cobol! - Escovador de Bit","og_description":"Java recebe do Cobol Come\u00e7ou que o Sistema em Java gravava informa\u00e7\u00f5es vinda do Cobol no log e para entender melhor tive que pensar em um particionador para ler estas informa\u00e7\u00f5es. Como funciona? Atrav\u00e9s do CTG o Java se comunica com o COBOL\/CICS, assim conseguimos executar programas do Mainframe. O seu retorno nada mais \u00e9 [&hellip;]","og_url":"https:\/\/escovadordebit.com.br\/?p=389","og_site_name":"Escovador de Bit","article_published_time":"2017-11-16T12:24:54+00:00","article_modified_time":"2022-03-22T13:38:54+00:00","author":"Martin Muller martin","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Martin Muller martin","Est. tempo de leitura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/escovadordebit.com.br\/?p=389#article","isPartOf":{"@id":"https:\/\/escovadordebit.com.br\/?p=389"},"author":{"name":"Martin Muller martin","@id":"https:\/\/escovadordebit.com.br\/#\/schema\/person\/3a14e341de3660629f9c1e39dfe6d653"},"headline":"Meu desafio era, criar um particionador que vem dados do Cobol!","datePublished":"2017-11-16T12:24:54+00:00","dateModified":"2022-03-22T13:38:54+00:00","mainEntityOfPage":{"@id":"https:\/\/escovadordebit.com.br\/?p=389"},"wordCount":393,"commentCount":0,"publisher":{"@id":"https:\/\/escovadordebit.com.br\/#organization"},"keywords":["cobol","desafio","python"],"articleSection":["DesafioBit"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/escovadordebit.com.br\/?p=389#respond"]}]},{"@type":"WebPage","@id":"https:\/\/escovadordebit.com.br\/?p=389","url":"https:\/\/escovadordebit.com.br\/?p=389","name":"Meu desafio era, criar um particionador que vem dados do Cobol! - Escovador de Bit","isPartOf":{"@id":"https:\/\/escovadordebit.com.br\/#website"},"datePublished":"2017-11-16T12:24:54+00:00","dateModified":"2022-03-22T13:38:54+00:00","breadcrumb":{"@id":"https:\/\/escovadordebit.com.br\/?p=389#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/escovadordebit.com.br\/?p=389"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/escovadordebit.com.br\/?p=389#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/escovadordebit.com.br\/"},{"@type":"ListItem","position":2,"name":"Meu desafio era, criar um particionador que vem dados do Cobol!"}]},{"@type":"WebSite","@id":"https:\/\/escovadordebit.com.br\/#website","url":"https:\/\/escovadordebit.com.br\/","name":"Escovador de Bit","description":"Escove escove at\u00e9 achar o problema","publisher":{"@id":"https:\/\/escovadordebit.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/escovadordebit.com.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/escovadordebit.com.br\/#organization","name":"Escovador de Bit","url":"https:\/\/escovadordebit.com.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/escovadordebit.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/escovadordebit.com.br\/wp-content\/uploads\/2017\/11\/cropped-cropped-escovadordebit-2.png","contentUrl":"https:\/\/escovadordebit.com.br\/wp-content\/uploads\/2017\/11\/cropped-cropped-escovadordebit-2.png","width":99,"height":75,"caption":"Escovador de Bit"},"image":{"@id":"https:\/\/escovadordebit.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/escovadordebit.com.br\/#\/schema\/person\/3a14e341de3660629f9c1e39dfe6d653","name":"Martin Muller martin","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/escovadordebit.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"Martin Muller martin"},"url":"https:\/\/escovadordebit.com.br\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=\/wp\/v2\/posts\/389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=389"}],"version-history":[{"count":2,"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=\/wp\/v2\/posts\/389\/revisions"}],"predecessor-version":[{"id":575,"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=\/wp\/v2\/posts\/389\/revisions\/575"}],"wp:attachment":[{"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/escovadordebit.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}