Tá aí, Leandro,

 

Para transformar um campo Comp3 do COBOL em Integer do Pascal:

 

Neste exemplo o campo hexa 09 17 20 14 0C foi convertido para 091720140



var

  Registro, CodigoCobol, CodigoDelphi: string;

  I, J, K, L: integer;

  F: file;

  Buf: array[0..79] of char;

begin

  AssignFile(F,'C:\ArquivoCobol.arq');

  Reset(F,1);

  BlockRead(F,Buf,SizeOf(Buf),NumRead);

  Registro := StrPas(Buf);

  while NumRead > 0 do

    begin

      CodigoDelphi := '';

      for I := 0 to 4 do   // Neste caso estou convertendo 5 caracteres

        begin

          CodigoCobol := Copy(Registro,1 + I,1);   // Pega 1 byte de cada vez

          if CodigoCobol = '' then   // É o caso do código $00

            CodigoDelphi := CodigoDelphi + '00'

          Else

            Begin

              J := Ord(CodigoCobol[1]);   // Acha o valor decimal do caracter 
correspondente

              K := Trunc(J / 16);

              L := J mod 16;

              if (L = 12) or

                 (L = 13) or

                 (L = 15) then   // É o caso do código $0C (Sinal Positivo), 
$0D (Sinal Negativo) ou $0F (Sem Sinal)

                CodigoDelphi := CodigoDelphi + IntToStr(K)

              Else

                CodigoDelphi := CodigoDelphi + Format('%2.2d',[(K * 10) + L]);

            end;

        end;

      BlockRead(F,Buf,SizeOf(Buf),NumRead);

      Registro := StrPas(Buf);

    end;

  CloseFile(F);

Abraços
Mario Hardt

Blumenau-SC

----- Original Message ----- 
From: Leandro 
To: delphi-br@yahoogrupos.com.br 
Sent: Tuesday, June 19, 2007 2:24 PM
Subject: [delphi-br] Comp3 do Cobol para Numero

Bom dia,

Alguem tem alguma função Delphi que converte valor compactado do Cobol para 
valor numerico?

Gerei txt´s das tabelas para importar no meu sistema, mas alguns campos estao 
compactados.

Obrigado,

Leandro



[As partes desta mensagem que não continham texto foram removidas]

Responder a