Passo 4: Criar a tarefa para compilar programas

O VSCode nos permite trabalhar com compiladores diversos porque oferece recursos para customização das tarefas de compilação, debug e execução. Em linhas gerais, para compilar programas o que temos que fazer é criar tarefas aproveitando os recursos disponíveis nas extensões que instalamos para cada linguagem.

4.1. Crie as tarefas de compilação

Acesse o menu Terminal do VSCode e selecione a opção “Configure Task”. O VSCode abrirá um campo para que você selecione um template para a tarefa quer criar. Digite “gnucobol” nesse campo…

Repare que nessa tela existem vários tipos de tarefa disponíveis na extensão bitlang.gnucobol. A primeira delas é justamente um template para compilação de programas. Selecione esse template.

O VSCode vai abrir um arquivo chamado tasks.json, semelhante ao que aparece na imagem abaixo:

Este template, porém, pretende usar o npm, um gerenciador de pacotes do node.js muito usado pelo VSCode. Nós não precisamos do npm em nosso ambiente e por isso vamos modificar essa tarefa para chamar diretamente o utilitário de compilação do GnuCOBOL (cobc).

Copie o conteúdo abaixo e copie por cima do arquivo tasks.json, que está aberto no VSCode:

{
     // See https://go.microsoft.com/fwlink/?LinkId=733558
     // for the documentation about the tasks.json format
     "version": "2.0.0",
     "tasks": [
         {
             "label": "gnucobol (main)",
             "type": "shell",
             "command": "cobc",
             "group": {
                 "kind": "build",
                 "isDefault": true
             },
             "args": [
                 "${file}",
                 "-x",
                 "-I${workspaceFolder}\cpy",
                 "-o${workspaceFolder}\exe\${fileBasenameNoExtension}"
             ],
             "problemMatcher": [
                 "$gnucobol3-cobc",
                 "$gnucobol3-error-cobc",
                 "$gnucobol3-note-cobc",
                 "$gnucobol3-warning-cobc"
             ],
             "detail": "tsc -p ./"
         },
         {
             "label": "gnucobol (called)",
             "type": "shell",
             "command": "cobc",
             "group": "build",
             "args": [
                 "${file}",
                 "-I${workspaceFolder}\cpy",
                 "-o${workspaceFolder}\exe\${fileBasenameNoExtension}"
             ],
             "problemMatcher": [
                 "$gnucobol3-cobc",
                 "$gnucobol3-error-cobc",
                 "$gnucobol3-note-cobc",
                 "$gnucobol3-warning-cobc"
             ],
             "detail": "tsc -p ./"
         }
     ]
 }

4.2. Entenda por que temos duas tarefas, e como elas estão configuradas:

  • O cobc precisa de um parâmetro específico para gerar programas principais (.exe) e subprogramas (.dll). Programas principais são aqueles que chamamos diretamente na linha de de comando ou de dentro de um arquivo de comandos (script). Subprogramas são aqueles que são chamados por outros programas COBOL, normalmente recebendo parâmetros através da Linkage Section.
  • Por esse motivo estamos criando duas tarefas: “gnucobol (main)” (em amarelo) vai executar o “cobc” com o parâmetro “-x” e isso fará com que ele gere um executável com extensão “.exe”; a segunda, “gnucobol (called)” (em azul) executa o mesmo utilitário mas sem o parâmetro “-x” e isso fará com que ele gere um executável com extensão “.dll”;
  • O nome das tarefas aparecem nos campos “label”;
  • Elas são do tipo “shell”, porque o que elas fazem é executar comandos ou scripts como se os estivéssemos digitando esses comandos no Prompt do Windows;
  • O comando que vai ser executado se chama “cobc“, o utilitário de compilação do GnuCOBOL;
  • Elas são do tipo “build” e a primeira está configurada com o parâmetro “isDefault” igual a “true”. Estamos fazendo isso porque queremos que esta seja a tarefa default de compilação de programas em nosso ambiente. Com isso, para compilar o programa que estamos editando só precisaremos pressionar as teclas control+shift+B.
  • Repare que no campo “argumento” estamos dizendo para o VSCode que ele deve enviar o conteúdo de uma variável do próprio VSCode chamada “${file}“. Essa variável contém o nome completo do programa que está sendo editado (caminho, nome e extensão), que é exatamente o que o cobc espera receber.
  • O VSCode possui recursos muito interessantes para navegar na lista de erros de compilação e localizar rapidamente a linha causadora do erro dentro do programa. Nós veremos um pouco desses recursos mais adiante nesse tutorial. No campo “problemMatcher” estamos informando o nome de três módulos disponíveis na extensão bitlang.gnucobol e que fazem o trabalho de traduzir a lista de erros de compilação do GnuCOBOL para um formato que o VSCode possa usar em suas janelas.

4.3. Próximo passo

Agora vamos criar uma tarefa para executar programas e estaremos chegando ao final da configuração do ambiente.


AnteriorConteúdoPróximo