cuando decis "Este programa en C, trata la occurs y devuelve un valor."
que tipo de valor int float double string char.... sos muy poco clara....
desde cobol a C se puede pasar lo que quieras, el tema es que desde el otro lado lo interprete
y Comento:
como es un Occurs y de los mas dificiles de manipular en una conversacion cobol/C, es decir:
en cobol podemos manipular no solo por tipos de datos( numericos alfa binary... pointer etc etc)
sino que ademas podemos manipular su longitud.... cosa que en C no se puede, en C es solo por tipo aunque en C
el tipado es mucho mas extendido.... porque podemos definir tipos, entonces para poder poder hacer una
conversacion entre cobol y C conservando el tipado va a ser muy complejo y complicado... pero ademas
existe otra cuestion a resolver cuando se trata de devolver resultados de varios bytes
desde C a Cobol... (por eso la pregunta)
yo en cobol redefiniria:
01 Mdeclare.
03 MOccurs Occurs 200 Times.
05 Welemen PIC S9(07)V9(06).
01 Rdeclare REDEFINES Mdeclare PIC X(2600).
01 WS-PROGRAMA-CC.
03 FILLER PIC X(06) VALUE "ccmau".
03 FILLER PIC X(01) VALUE SPACE.
03 FILLER PIC X(01) VALUE '"'.
03 Udeclare PIC X(2600). *> estos son los 2000 occurs
03 FILLER PIC X(01) VALUE '"'.
move Rdeclare to Udeclare
call "system" using WS-PROGRAMA-CC.
Y queda por resolver el retorno desde C (YO LO HARIA EN UN ARCHIVO: grabar en C y leer desde cobol)
y te explico algo mas
No se CUAL COBOL ESTAS USANDO (COMPILER) PERO EN LOS COMPILADORES COMERCIALES
ninguno puede INTERPRETAR la sentencia RETURNING esta solo se usa para hacer CALL entre programas COBOL
para llamar un programa en C se usa
01 WS-PROGRAMA-CC.
03 FILLER PIC X(06) VALUE "ccmau".
03 FILLER PIC X(01) VALUE SPACE.
03 FILLER PIC X(01) VALUE '"'.
03 Udeclare PIC X(2600). *> estos son los 2000 occurs
03 FILLER PIC X(01) VALUE '"'.
move Rdeclare to
call "system" usung W-Comando
Mi mail es
[email protected]