Nos posts anteriores desta série, verificamos que o tipo de interface e a versão do Progress e plataforma afetam a portabilidade dos r-codes.
O tipo do banco de dados acessado pelo programa também afeta a portabilidade do r-code.
Esta regra afeta apenas os programas que fazem algum tipo de acesso a banco de dados. Um programa que faça análise de arquivos de log e não utilize banco de dados, por exemplo, não seria influenciado.
Os programas 4GL/ABL podem ser compilados para executação com bancos de dados Progress, ou com DataServer Oracle, SQL Server e ODBC. Quando um r-code é gerado, o compilador inclui no arquivo .r informações de quais bancos de dados o programa faz referência, e qual o tipo de cada um dos bancos de dados. Em tempo de execução, o Progress verifica se o tipo do banco de dados conectado na sessão é o mesmo que foi utilizado na compilação do programa. Se o tipo de algum banco de dados for diferente do utilizado na compilação, serão gerados os error 869 e 916:
c:\PROGRESS\sh\programa.r Database ems5 has type PROGRESS (869)
But connection to type MSS was requested. (916)
O erro 869 indica qual o tipo de banco de dados conectado atualmente na sessão, e o erro 916 indica com qual o tipo de banco de dados o programa foi compilado.
Por conta desta incompatibilidade, não é possível compilar um programa em Progress e e executá-lo em um ambiente com banco Oracle, e vice-versa. Este é o motivo pelo qual a Datasul possui expedições diferentes dos seus produtos, para execução com bancos de dados diferentes.
Os seguintes KBases da Progress possuem informações adicionais:
Can programs compiled with 10.0B be executed in a 10.1A for Dataservers?
Errors 869 and 916 attempting to run r-code compiled against progress database on a foreign database