Consultor Eletrônico



Kbase 51231: Regras de compatibilidade de R-CODE
Autor   Gionei Mistura - CAT
Acesso   Público
Publicação   02/09/2015
Progress 10:
 
O R-CODE (compilado Progress) somente poderá ser executado na mesma plataforma em que foi compilado (32-bit ou 64-bit), independente do sistema operacional. Se um programa foi compilado em Progress 10.2B 32-bit, ele só poderá ser executado em um ambiente 10.2B 32-bit, e vice-versa.

Programas compilados em Progress 10.1A, 10.1B e 10.1C podem ser executados em Progress 10.2B, mas é recomendável que sejam recompilados.
O Progress 10.2B 64-bit pode executar r-codes gerados em 10.1x 64-bit, mas não gerados em versões anteriores.

Os r-codes 64-bit possuem tamanho maior que r-codes 32-bit. A estimativa é de arquivos de 15% a 35% maiores.

Com relação a interface, se um programa for compilado em Windows utilizando o compilador character (_progres), este mesmo r-code poderá ser executado em ambiente Linux/Unix, desde que ambos sejam 32 bits, ou ambos sejam 64 bits.
 

Progress 11:
 
A partir do Progress 11.0 os R-CODE são portáveis entre plataformas, independente da arquitetura (32-bit ou 64-bit).
Esta regra é válida desde que se utilize a mesma interface (Character ou Gráfico), e que não contenha comandos especificos de determinado sistema operacional (ex: OS-COMMAND).
 
Então é possível compilar um programa em Progress 11 32-bit Windows e executá-lo em um ambiente Progress 64-bit Linux, e vice-versa?
Sim, é possível. É importante lembrar apenas que se o programa possuir interface, ele só poderá ser executado no tipo de ambiente em que foi compilado (Character ou Gráfico). Se um programa com interface for compilado em ambiente Character (por exemplo) e executado em ambiente Gráfico, será exibido o erro abaixo:
 
Program <program-name> was compiled under another incompatible display environment. Cannot run without recompile. (4438)
 
 
Compilados para ambientes Progress, Oracle e SQL Server:
 
No momento da compilação do programa, o compilador inclui no R-CODE os bancos de dados utilizados e qual o tipo de cada um dos bancos de dados. Para o produto Datasul, são gerados R-CODEs para bancos de dados Progress, Oracle e SQL Server.
Na execução dos programas, o Progress verifica se o tipo de banco de dados que está conectado na sessão é o mesmo tipo em que ele foi compilado. Se o tipo de banco de dados no ambiente do cliente for diferente do que o programa foi compilado, a mensagem abaixo será apresentada:
 
<program name> Database <dbname> has type <type> (869)
But connection to type <type> was requested. (916)
 
Exemplo:
Men/men906za.r Database shemsfnd has type Oracle (869)
But connection to type Progress was requested. (916)
  
A mensagem de exemplo indica que o programa "men/men906za.r" foi compilado em um ambiente com banco de dados Progress (916), mas o ambiente sobre o qual o programa está sendo executado é um ambiente Oracle (869).
Para corrigir este erro é necessário substituir o programa "men/men906za.r" deste ambiente para o tipo de banco de dados correto, que no caso do exemplo, é um ambiente Progress.


Informações adicionais:
http://knowledgebase.progress.com/articles/Article/P124103