|
Considerações de portabilidade para programas Natural |
|
|
|
|
| Autora: Maria Alexandra V. C. da Cunha | |
| A CELEPAR avança no conhecimento do universo ADABAS/NATURAL em outras plataformas que não IBM. Estamos testando uma aplicação mainframe em ADABAS/NATURAL sob OS/2 em um PC-486. Na máquina RISC/AIX, o 1º projeto é simularmos o ambiente de desenvolvimento da CELEPAR, tentando que o nosso analista ou programador consiga desenvolver os seus programas neste ambiente via uma estação da Rede Novell, de forma transparente. Em desenvolvimento, uma parceria HP, CONSIST e CELEPAR, cujos objetivos são: - Adquirir conhecimento na migração de aplicações Adabas do mundo IBM para o mundo UNIX; - Avaliação do desempenho da aplicação no novo ambiente; - Transparência de acesso (um terminal 3270 IBM acessar uma aplicação no UNIX de forma transparente, e vice-versa) e - Processamento cooperativo entre aplicações IBM e UNIX. Neste contexto, julgamos oportuno a reprodução do artigo da Trends e News, a publicação técnica da Consist, em janeiro de 1993. "O NATURAL é uma linguagem portável. Essa portabilidade diz respeito a uma variedade de ambientes distintos, como IBM mainframe, VAXes e Pcs com OS/2. Contudo, para obter esta portabilidade de modo total, deve-se ter em
mente alguns detalhes ao projetar e codificar suas aplicações. CONSTANTES EM HEXADECIMAL Esse é o caso mais comum e óbvio. Ao se preencher campos alfanuméricos com constantes em hexa, seu significado será diferente entre máquinas que usem EBCDIC ou ASCII. Por exemplo: um branco é representado por H'20' em ASCII e por H'40' em EBCDIC. O mesmo é válido para leituras seqüenciais. Em máquinas que usam ASCII, números são menores que caracteres, em EBCDIC são maiores. Assim, um comando codificado num IBM do tipo "READ arquivo BY campo = 'AA' THRU '99"' não funcionará adequadamente num VAX ou num PC. REDEFINIÇÃO EM CAMPOS HEXADECIMAIS Existe uma diferença importante na maneira em que são armazenados os campos hexa em EBCDIC e ASCII. Por exemplo: "MOVE 1 TO B-FIELD (B2) REDEFINE B-FIELD (FIRST-BYTE (B1) LAST-BYTE (B1)) DISPLAY FIRST-BYTE LAST-BYTE" Este código vai mostrar '01 00' em máquinas que usam ASCII e '00 01' em máquinas que usam EBCDIC. O que há de errado neste tipo de programação não é usar-se campos binários, mas sim redefini-los! A redefinição sempre depende de como o hardware armazena seus dados. CAMPOS BINÁRIOS EM SUPER-DESCRITORES Se você usa campos alfanuméricos e binários em super-descritores, pode surgir outro problema. O super-descritor terá formato alfanumérico, o que quer dizer que será tratado da esquerda para a direita. Em ASCII, campos binários devem ser tratados da direita para a esquerda. Por exemplo: fontes NATURAL usam superdescritor composto de: LIBRARY (A8) MEMBER (A8) SEQUENCE (B2) onde SEQUENCE varia de H'0000' a H' F F F F ' para programas com mais de um registro no ADABAS. Em máquinas que usam ASCII, se você começa uma seqüência com H'0000' e soma 1 para obter o próximo registro, o resultado será H'0100'. Assim, se você tiver campos binários como parte de super-descritores, deve tomar cuidado com esse detalhe. CAMPOS BINÁRIOS E NET-WORK Ao usar o NETWORK em redes heterogêneas consistidas de máquinas que utilizem ASCII e EBCDIC, o NET-WORK faz a conversão devida para os campos numéricos e alfanuméricos. Até então, tudo certo. Porém, se algum campo alfanumérico contém dados binários, porque foi redefinido, e é usado de modo diferente do declarado na FDT, os resultados serão inesperados. Na versão atual do NET-WORK, os super-descritores alfanuméricos são convertidos como tal. Isso significa que se ele tiver algum componente binário, não poderá ser usado corretamente via NET-WORK (espera-se correção para versão futura). ALGUMAS DICAS ADICIONAIS Procure evitar truques ou recursos de programação não documentados, pois será grande a probabilidade de não funcionarem em outros ambientes. Atenção para o modo como os objetos NATURAL são armazenados. É diferente para cada ambiente. Por exemplo, fontes NATURAL usam dois bytes para número de linha no IBM, um byte no VAX. No UNIX e OS/2 sequer são armazenados no ADABAS. Não use os nomes ADABAS de dois caracteres para programação. Há problemas de interpretações diferentes para os Format Buffers, podendo causar erro. Programe usando o nome de campo que estiver na DDM e não haverá problema." Maria Alexandra da Cunha - GPT - ramal 295 |
| Copyright@2003 / Companhia de Informática do Paraná - CELEPAR | links: |
![]() |
![]() |
![]() |