Programas escritos na linguagem Progress passam por um processo de compilação antes de serem executados. O compilador é um software que converte o código-fonte do programa para uma representação que a máquina virtual do Progress entenda.
O processo de compilação pode ocorrer em tempo de execução, mas é normal que os usuários já recebam os programas pré-compilados. Estes programas compilados e prontos para execução são os r-codes, representados na forma de arquivos com a extensão .r.
As principais vantagens de compilar os programas antes de enviar aos usuários:
- os usuários não precisam de uma licença de desenvolvimento Progress;
- o capital intelectual está protegido, visto que o código do programa não será legível;
- tempo de resposta mais rápido para as operações do usuário, visto que cada programa não precisará ser compilado antes de ser executado.
A principal desvantagem de pré-compilar os programas é que os r-codes gerados não são compatíveis para todos os ambientes, e o objetivo desta série de posts é explicar as regras para portabilidade dos r-codes.
A primeira regra para portabilidade é o tipo de interface: gráfica ou texto. Todos os programas que gerem alguma informação em tela estão sujeitos a esta regra.
Um r-code que tenha sido compilado para o client gráfico (prowin32) não poderá ser executado com o client texto (_progress), e vice-versa. Ao tentar executar um r-code em um client incompatível, o Progress gera o erro:
Program was compiled under another incompatible display environment. Cannot run without recompile. (4438)
Existe uma consideração adicional para os programas web (WebSpeed). Estes programas executam em um client texto, mas o processo de compilação deve ser realizado via web, com a ferramenta WebSpeed Workshop. Caso os programas web sejam compilados com um client texto padrão, poderão ocorrer travamentos e erros Memory Violation (49) durante a execução.
A maior parte dos programas expedidos pela Datasul são compilados para o modo gráfico, ou são programas que não possuem interface. Programas que não possuam interface com o usuário são compatíveis com qualquer client, independente da forma que tenham sido compilados.
Alguns programas, como por exemplo o RPW, precisam executar também em ambientes texto, e outros em ambiente web (WebAcess, por exemplo). Estes programas são compilados com o client texto ou com o Workshop, conforme necessidade.
A necessidade de um r-code diferente para clients texto ou web é o motivo pelo qual alguns programas do produto podem estar duplicados, normalmente nos diretórios tty, unix, hpuxitanium64 e web.
No próximo post veremos mais duas regras para que os r-codes sejam compatíveis com um determinado ambiente: versão do Progress e plataforma (32/64-bit).