FOCAL é uma linguagem de programação criada no início da década de 1970 por John G. Kemeny e Thomas E. Kurtz. É uma linguagem estruturada, imperativa, com uma sintaxe simples. Foi concebida para ser fácil de aprender e usar, e para ser adequada à escrita de programas curtos.
Os programas FOCAL são escritos num editor de texto, e são executados por um intérprete FOCAL. O intérprete pode ser executado em modo interactivo, onde lê e executa comandos à medida que são digitados, ou em modo batch, onde lê e executa uma lista de comandos a partir de um ficheiro.
FOCAL é uma linguagem pouco sensível a casos. Ou seja, nomes e palavras-chave variáveis podem ser escritos em maiúsculas, minúsculas, ou mistas, e o intérprete tratá-los-á a todos da mesma forma.
FOCAL tem um pequeno conjunto de tipos de dados incorporados: inteiros, números reais, cordas, e Booleanos. Tem também um conjunto de funções incorporadas para operar nestes tipos de dados.
As variáveis em FOCAL não são tipografadas. Ou seja, uma variável pode conter qualquer tipo de dados. Isto faz de FOCAL uma linguagem dinamicamente tipada.
FOCAL tem um modelo simples de controlo de fluxo. Os programas são constituídos por uma sequência de comandos, que são executados um após o outro. Se um comando é seguido por uma declaração IF, então o comando só é executado se a condição na declaração IF for verdadeira. Se um comando for seguido por uma instrução ELSE, então o comando só é executado se a condição na instrução IF for falsa.
FOCAL tem um pequeno conjunto de comandos incorporados para entrada e saída. Tem também um conjunto de funções incorporadas para operações matemáticas e de cordas.
FOCAL é uma linguagem interpretada, o que significa que os programas escritos em FOCAL não são compilados em código de máquina. Em vez disso, eles são interpretados pelo intérprete FOCAL. Isto faz de FOCAL uma língua portátil, uma vez que os programas podem ser executados em qualquer computador com um intérprete FOCAL.
FOCAL é uma linguagem simples que é fácil de aprender e usar. É adequada para escrever pequenos programas.