Muitas vezes é necessário utilizar variáveis adicionais que serão utilizadas somente na sub-rotina. Tais variáveis são denominadas locais  (ou locais) e só podem ser manipuladas dentro da sub-rotina em que são criadas.
 
Escopo de variável local é a função ou procedimento dentro do qual ela é declarada em >
Assim, é possível limitar o escopo (scope) de uma variável apenas à sub-rotina onde ela é realmente necessária. Na programação, essa técnica é chamada de 
encapsulamento  - ocultar uma variável de ser alterada de fora.
Se for necessário declarar uma variável que seria visível em qualquer lugar do programa (em qualquer sub-rotina), então tais variáveis são declaradas fora de todas as sub-rotinas (ver programa 3 da tabela abaixo)
Essas variáveis são chamadas 
globais.
Analise três programas:
| 1) Neste programa, a variável i é local. Uma variável local é declarada dentro de uma sub-rotina | 
2) Aqui, mesmo que exista uma variável i no programa principal (com valor 7), uma nova variável local i com valor 5 será criada.  
Ao executar este programa, a tela exibirá o valor 75 | 
3) Este programa possui uma variável global i. Seu valor pode ser alterado dentro de uma sub-rotina, e dentro do programa principal 
O procedimento funcionará com a variável global i e será atribuído a ela um novo valor igual a 2. O valor 2 |  é exibido na tela
procedimento teste(); 
var i: inteiro; 
começar 
    i := 5; 
    writeln(i); 
fim; | 
var i: inteiro; 
 
procedimento teste(); 
var i: inteiro; 
começar 
    i := 5; 
    writeln(i); 
fim; 
 
começar 
    i := 7; 
    escreva(i); 
    teste(); 
fim. | 
var i: inteiro; 
 
procedimento teste(); 
começar 
    i := 2; 
fim; 
 
começar 
    teste(); 
    writeln(i); 
fim. |