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.