Jump to content


netmorais

Member Since 18/05/2009
Offline Last Active 01/08/2009, 09:01
-----

#968053 Cobol Chamando Programa Em C

Posted by netmorais on 22/05/2009, 11:55

Ola pessoal.

Trabalho no Linux com MF Cobol V4.1 e no Windows com MF Cobol V4.0 e necessito compilar em ambas plataformas um programa Cobol que "chame" uma função em C utilizando a sintaxe: call funcao using .... Consultando a Internet consegui o modelo seguinte em http://docs.hp.com/c...390049.15066/28

cobprog.cbl:

$set rtncode-size(4)
working-storage section.
01 str.
03 str-text pic x(10).
03 filler pic x value x"00".
* Null terminate string for C function
01 counter pic 9(Legal comp-5 value zero.
procedure division.
call-c section.
call "cfunc" using str, counter
if return-code not = zero
* RETURN-CODE set from return () in C
display "ERROR"
else
display "OK"
end-if
stop run.

cprog.c:

cfunc (st, c)
char *st;
int *c;
{
printf ("Hi\n");
return(0);
}

No Linux, a compilção recomendada apresenta o seguinte erro:

cob -x cobprog.cbl cprog.c
cob: bad magic number: cobprog.o

No Windows, de forma similar:


cob -x cobprog.cbl cprog.c
error (Legal cannot execute program: cl386

E por que estou tentando encontrar uma solução compatível com as duas plataformas para o problema?
Dêm uma olhada em: http://sites.google.com/site/artwebdb/ no link "Acessando Bando de Dados - Mysql e Postgresql". Nele eu tento mostrar que é possível de uma forma "genérica" e de baixo custo ter acesso à maioria dos bancos de dados atuais atraves de "esquemas middleware". Para isto, uso sistemas de arquivo fifo (named pipes) para comunicação entre programas. A coisa funciona muito bem no Linux porque a tecnologia fifo é nativa e este sistema , mas no ambiente Windows é necessário que se faça uma "emulação", o que provoca queda na performance. A solução mais viável por enquanto seria que esta comunicação fosse feita por "chamada direta" ao módulo, tal como no caso do Cobol: call modulo using ...

Alguem pode me ajudar?

Grato.


IPB Skin By Virteq