4.1 - Introdução
Introdução e Fundamentos de PL/I
Boas-vindas e Contextualização
Eu sinceramente só tinha escutado falar, o Naffer chegou a trabalhar com ela em alguma siderúrgica 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/I. Isso mudou quando tive uma experiência na IBM e pude ver o PL/I em ação! Ah, PL/I é o acrônimo de Programming Language One. Sendo apenas cinco anos mais nova que o COBOL, ela reúne inúmeros recursos, funções e comandos que oferecem liberdade de programar em situações das mais diversas — desde cálculos científicos complexos até processamento de grandes volumes de dados comerciais.
Se você nunca programou antes — ou nunca sequer viu um programa rodando em mainframe — não se preocupe: ao final deste capítulo você já terá escrito, compilado e executado seu primeiro código em PL/I. Basta seguir passo a passo, experimentar e se divertir descobrindo como essa linguagem, muitas vezes considerada “antiga”, ainda mantém um lugar de destaque em sistemas críticos ao redor do mundo.
História do PL/I
Nos anos 1960, a IBM enfrentava um dilema: sua família de mainframes System/360 atendia setores científicos com FORTRAN e setores comerciais com COBOL, mas manter duas bases de código e equipes separadas era caro e trabalhoso. Em 1964, iniciou-se o projeto de uma linguagem unificada que pudesse abranger ambas as necessidades. Em 1967, nasceu oficialmente o PL/I.
1964–1966: definição de requisitos, debates sobre sintaxe livre versus formatos restritos.
1967: lançamento do primeiro compilador PL/I, com suporte a multiparadigma (procedural e modular).
Décadas seguintes: evolução contínua, incluindo suporte a tratamento de exceções (ON-units), gerenciamento dinâmico de memória e concorrência.
Junho de 2025: versão mais recente é o IBM Enterprise PL/I for z/OS 6.2, com documentação disponível nos guias Language Reference (SC31-5716-00) e Programming Guide (GI13-5620-00).
Hoje, PL/I ainda é amplamente usado em bancos, seguradoras e órgãos governamentais, onde confiabilidade e desempenho em mainframe continuam sendo imprescindíveis, mas se no seu 'shop' nao usam, deixa pra lá e leia esse capitulo como mera curiosidade.
2. Características Únicas da Linguagem
PL/I combina flexibilidade e poder expressivo de uma forma rara em linguagens de época similar. Veja por quê:
Formato livre
O código pode ocupar livremente as colunas 2–72 (ou até a 200 com a opção
MARGINS).Sem divisão rígida em “áreas” de identificação e código como no COBOL.
Ausência de palavras-reservadas fixas
Você pode nomear variáveis e rótulos quase como quiser, sem medo de colidir com uma futura palavra-chave da linguagem.
Multiparadigma
Suporta programação procedural, modular e mesmo técnicas avançadas de tratamento de exceções (ON-units).
Declarações simplificadas
DECLAREouDCLdão conta de todos os tipos: números binários (FIXED BIN), decimais (FIXED DECIMAL), ponto-flutuante, caracteres e até tipos bit e unicode.
Esses aspectos tornam o PL/I um canivete suíço para aplicações mainframe, mas a contrapartida é que cada time ou projeto pode adotar padrões próprios — daí a importância de escolher um guia de estilo e segui-lo consistentemente.
Preparando o Ambiente
Antes de escrever seu primeiro programa, prepare:
Um editor de texto com suporte a VSCode, Notepad++ ou qualquer outro que destaque sintaxe PL/I.
Conexão a um mainframe z/OS via 3270 (TSO/ISPF) ou um ambiente emulado (Hercules + z/OS) ou ainda um compilador desktop (Enterprise PL/I for Academic).
Documentação oficial: os PDFs Language Reference (SC31-5716-00) e Programming Guide (GI13-5620-00), baixáveis do site da IBM.
Você deve saber onde salvar seu código, como submeter um job JCL simples para compilar com PL1 e como visualizar a saída do SYSOUT. Se já estiver familiarizado com mainframe, ótimo; caso não, basta seguir o tutorial de JCL básico e usar o TSO SUBMIT para mandar seu job.
Seu Primeiro Programa: “Hello, World!” em PL/I
4.1 Exemplo completo e comentado
HELLO:é o rótulo que dá nome ao procedimento principal.PROCEDURE OPTIONS(MAIN)indica ao compilador que esta é a rotina de entrada do programa executável.DECLARE MENSAGEM CHARACTER(30) VARYING;cria uma string de até 30 caracteres, variável em tempo de execução.PUT SKIP LIST(MENSAGEM);imprime o texto na saída padrão, seguido de newline.
Passo a passo para compilar e executar
Salvar o arquivo
Em VSCode ou no emulador, crie um arquivo chamado
hello.pl1.
Submeter para compilação
//PL1JOB JOB …
Verificar a saída
Olá mundo em PL/I!
Editar e experimentar
Altere o texto dentro de aspas, por exemplo
'Bem-vindo ao PL/I!', recompile e observe as diferenças.
Estrutura Básica de um Programa PL/I
Mesmo em programas mais complexos, alguns elementos são imprescindíveis:
PACKAGE / END PACKAGE: define o escopo de declarações compartilhadas em múltiplos procedimentos.
PROCEDURE / END: agrupa código executável, como funções em C.
Ponto e vírgula (
;) encerra cada instrução.Identação: use 2 espaços por nível para facilitar a leitura.
Nomes em maiúsculas para variáveis e procedimentos — ainda que PL/I seja case-insensitive, isso melhora a consistência visual.
Elementos Essenciais da Sintaxe
Declaração de variável
DECLARE IDADE FIXED DECIMAL(3);
Cria um inteiro decimal de até 3 dígitos
Entrada/Saída
PUT SKIP LIST('texto');
Escreve texto e pula linha
Atribuição
SALARIO = 1200.50;
Atribui valor fixo decimal
Condicional
IF IDADE >= 18 THEN … ELSE … END;
Estrutura if-then-else
Loop
DO I = 1 TO 10 BY 2; … END;
Loop com passo (por padrão passo 1)
Exceções
ON ZERODIVIDE …
Bloco para tratamento de divisão por zero
Este capítulo é sua porta de entrada no universo PL/I: agora você conhece a trajetória histórica, as peculiaridades da linguagem e já pôde colocar a mão na massa com um “Hello, World!”. Nos próximos capítulos, aprofundaremos em tipos de dados, estruturas de controle, manipulação de arquivos e, finalmente, tópicos avançados como ponteiros e alocação dinâmica.
Se em algum momento você se sentir perdido, volte aqui, releia cada seção com calma e, sobretudo, experimente editar seu código — é assim que se aprende de verdade!
Last updated