Spesso è necessario utilizzare variabili aggiuntive che verranno utilizzate solo nella subroutine. Tali variabili sono chiamate local  (o local) e possono essere manipolate solo all'interno della subroutine in cui sono create.
 
L'ambito della variabile locale è la funzione o procedura all'interno della quale è dichiarata em >
Pertanto, è possibile limitare l'ambito (ambito) di una variabile solo alla subroutine in cui è realmente necessario. In programmazione, questa tecnica è chiamata 
incapsulamento  - nascondere una variabile dall'essere modificata dall'esterno.
Se è necessario dichiarare una variabile che sarebbe visibile in qualsiasi punto del programma (in qualsiasi subroutine), tali variabili vengono dichiarate al di fuori di tutte le subroutine (vedere il programma 3 dalla tabella sottostante)
Tali variabili sono chiamate 
global.
Analizza tre programmi:
| 1) In questo programma, la variabile i è locale. Una variabile locale è dichiarata all'interno di una subroutine | 
2) Qui, anche se c'è una variabile i nel programma principale (con valore 7), verrà creata una nuova variabile locale i con valore 5.  
Quando esegui questo programma, lo schermo visualizzerà il valore 75 | 
3) Questo programma ha una variabile globale i. Il suo valore può essere modificato all'interno di una subroutine e all'interno del programma principale 
La procedura funzionerà con la variabile globale i e le verrà assegnato un nuovo valore pari a 2. Il valore 2 |  viene visualizzato sullo schermo
procedura test(); 
var i: intero; 
iniziare 
    io := 5; 
    writeln(i); 
fine; | 
var i: numero intero; 
 
procedura test(); 
var i: intero; 
iniziare 
    io := 5; 
    writeln(i); 
fine; 
 
iniziare 
    i := 7; 
    scrivi(i); 
    prova(); 
fine. | 
var i: numero intero; 
 
procedura test(); 
iniziare 
    io := 2; 
fine; 
 
iniziare 
    prova(); 
    writeln(i); 
fine. |