# Capitulo 4 - PL/1

Eu sinceramento só tinha escutado falar, o Naffer chegou a trabalhar com ela em alguma siderurgica lá de Minas Gerais nos anos 80 mas sempre falou que era tranquilo, eu nunca tinha tido acesso a nenhuma aplicação rodando que fosse feita em PL/1, isso mudou quando tive uma experiência na IBM e pude ver o PL/1 em ação! Ah, PL/1 é o acronimo de Programming Language One. Sendo apenas 5 anos mais nova que o COBOL ela tem inumeros recursos, funções, comandos e liberdade de programar que fariam com que ela fosse a linguagem mais utilizada nos mainframes mas não sei o porque por aqui isso nunca aconteceu, no Brasil o Cobol sempre dominou a cena.

Bom, como esse texto é pra brasileiros não acho sensato escrever muito sobre a linguaguem em si, vou deixar minhas impressões e se um dia você precisar mexer com PL/1 fique tranquilo que não é nenhum bixo de 7 cabeças, a IBM continua evoluindo a linguagem e o compilador, tem manual de usuario e de programação no proprio site da IBM. Com tempo e disposição você aprende rapidinho.

A estruturacao do programa é bem diferente do que se espera no Cobol, caso você nunca tenha visto um programa Cobol, todos eles tem o mesmo jeitao, você bate a cara e sabe que é Cobol e onde ficam as coisas dentro do código. No PL/1 é uma zona, sério! No Cobol, pode ser um código de 1970 ou um programa de 2017, você ve um padrão, nem que seja o obrigatorio da linguagem, mas no PL/1 você olha e olha e um programa vai ser sempre estruturalmente bem diferente do outro!

Isso se deve principalmente ao fato de que (na minha visão, tem outros fatores que podem ser tao importantes quanto, dependendo de quem esta avaliando a situação) a linguagem é “free format” e sem uma padronização de como se deve escrever o código, a zona é inevitável! Linguagens procedurais devem ter uma padronização! Facilita o entendimento do código antigo em casos de manutenção, resolucao de problemas ou mesmo para uso como modelo (esqueleto) para novos programas.

Atualmente (2018) tanto o IDZ como o MicroFocus fazem um trabalho excepcional para limpeza de código, mas são ferramentas muito pouco difundidas, se tiver oportunidade, encha o saco da galera e peça pra você usar!

Os formatos de variáveis são bem interessantes e existe uma gama variada que vai com certeza atender ao que você precisa, tem até variavel para Bit! Por ser free format, caso esqueça uma variavel e lembre que vai precisar dela é só declarar ali mesmo onde você vai usa-la e boa! Por favor não faça isso! Deixa de ser preguiçoso e volta lá pra cima do programa e coloca todas as variáveis juntas!

Os abends e erros são bem mais fáceis de localizar quando comparado com o Cobol, existe um tal de ON CODE que tem um vasta gama de erros possiveis e com explicações bem detalhadas do que ocorreu. Os códigos do language environment tambem são bem assertivos.

Existem funções “Bult-in” que quebram o maior galho (funcoes matematicas, de manipulacao de strings, data e hora) e que devem ser informadas no programa num “paragrafo” especifico quais você vai usar, fica um código bem legal!

O ponto e virgula de final de linha é algo que as vezes esquecemos mas que na compilação aparece certinho onde foi que ficou sem ele. Os comandos de If/Else, display de mensagens (no caso chama PUT), estruturas de repetição, os operadores de comparação, On, Begin, End, Move, Go to (sim, afinal é uma linguagem estruturada!), comandos CICS, SQL, chamadas de outros programas e de procedimentos, leitura e gravação de arquivos, enfim, tudo segue mais ou menos o padrão que você encontra na grande maioria das linguagens de programação.
