(Advanced Protheus Language) é uma linguagem de programação padrão xBase (Clipper, Visual Objects e depois Fivewin) com comandos, funções, operadores, estruturas de controle de fluxo e palavras reservadas que permite o desenvolvimento de programas seguidos do paradigma de orientação a objetos ou procedural.

O é uma linguagem de programação criada em 1994 para o desenvolvimento de sistemas ERP do grupo TOTVS.

Quando compilados, todos os arquivos de código fonte tornam-se unidades de inteligência básicas, chamadas de APO´s (Advanced Protheus Objects). Esses APO´s são mantidos em um repositório e carregados dinamicamente pelo servidor de aplicação () para a execução. No entanto, não existe linkedição ou união física do código compilado a um determinado ambiente ou aplicação, o que permite executar funções criadas em  em qualquer ponto do ambiente ERP.

O compilador e o interpretador da linguagem  é o próprio servidor de aplicação (Application Server), e existe um ambiente visual para desenvolvimento integrado (Development Studio) onde o código-fonte pode ser criado, compilado e depurado.

Os programas desenvolvidos na linguagem , podem conter comandos ou funções de interface com o usuário com as seguintes características:

  • Programação com interface própria com o usuário

    Os programas com interface própria com o usuário são desenvolvidos para serem executados através do terminal remoto, o . O  é a aplicação, desenvolvida pela TOTVS, encarregada da interface e da interação com usuário, ou seja, todo o processamento do código fonte em  e o acesso ao banco de dados. Já o gerenciamento das conexões é efetuado pelo o .

     é o principal meio de acesso a execução de rotinas desenvolvidas em  no sistema de gestão . Através desta aplicação os códigos fontes, com ou sem interface com o usuário, são executados. No entanto, nesse tipo de desenvolvimento, são considerados apenas os programas que realizam algum tipo de interface remota utilizando um protocolo de comunicação do sistema.

  • Programação sem interface própria com o usuário
    A rotinas criadas sem interface, tem uma utilização mais específica do que um processo adicional ou relatório. Essas rotinas não tem interface com usuário através do  e qualquer tentativa (como a criação de uma janela padrão) ocasionará uma exceção em tempo de execução. Desta forma, essas rotinas são apenas processos ou Jobs executados no . No entanto, a interface fica a cargo das aplicações externas, desenvolvidas em outras linguagens, responsáveis por iniciar os processos no servidor através dos meios disponíveis de integração e conectividade no sistema.

Ao utilizar um meio de conectividade, as rotinas desenvolvidas são subcategorizadas da seguinte forma:

  • Programação por processos
    As rotinas desenvolvidas em  podem ser iniciadas como processos individuais (sem interface), no , por outra rotina através de funções ou automaticamente na inicialização do  (quando configurado).
  • Programação de RPC
    A programação de RPC – Remote Procedure Call (Chamada de Procedimentos Remota) é realizada por bibliotecas de funções disponíveis no sistema (uma API de comunicação), que permite executar rotinas escritas em  diretamente no  em modo blind (sem interface). Com isso, o  pode executar rotinas em  em outros servidores através da conexão TCP/IP direta utilizando o conceito de RPC.
  • Programação Web
     pode ser executado como servidor Web respondendo as requisições HTTP. No momento dessas requisições, é possível executar rotinas escritas em  como processos individuais, enviando o resultado das funções como retorno das requisições para o cliente HTTP (como, por exemplo, uma browser de internet). No entanto, qualquer rotina escrita em  que não contenha comandos de interface pode ser executada através de requisições HTTP. Pois, o  permite compilar arquivos HTML que contenham código  embutido. Os chamados arquivos  ASP, para criação de páginas dinâmicas.
  • Programação TelNet
    Programação TelNet faz parta da gama de protocolos TCP/IP que permite a conexão a um computador remoto através de uma aplicação cliente desse protocolo. O  emula um terminal TelNet, através da execução de rotinas escritas em , ou seja, rotinas  cuja interface final será um terminal TelNet ou coletor de dados móvel.