Cobol - Paso de occurs a rutina en C

   
Vista:

Paso de occurs a rutina en C

Publicado por Isabel (3 intervenciones) el 01/06/2011 17:17:38
Hola a todos!!. ¿Me podriais ayudar?. Necesito pasar una occurs de 200 posiciones con elementos de tipo S9(07)V9(11) desde un programa en cobol a una rutina escrita en C.
¿Como tengo que declarar esta occurs tanto en la parte de cobol como en la parte de C?

El entorno está en UNIX

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Paso de occurs a rutina en C

Publicado por Superindio (138 intervenciones) el 06/06/2011 20:39:29
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 isma@argentina.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Paso de occurs a rutina en C

Publicado por Superindio (138 intervenciones) el 02/06/2011 16:07:23
No enteindo cual es la rutina ? o que es lo que hace ?,
o si tenes que pasar datos de cobol a un prog en C....
si temes por el tipado de datos eso es lo de menos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Paso de occurs a rutina en C

Publicado por Isabel (3 intervenciones) el 03/06/2011 01:13:01
necesito pasar una occurs desde un programa cobol a un programa escrito en C. Este programa en C, trata la occurs y devuelve un valor.

Mi duda, es que no sé si tengo que hacer algún tipo de conversión o tener algo en cuenta, al ser la occurs realmente una dirección de memoria a otra direccion de memoria:

parte cobol
01 occurs-paso.
03 elemento occurs 200 times. ..... PIC S9(07)V9(06)

parte C
main (double elemento[200])
.......................
.......................

mas o menos.
Hasta ahora solo pasaba valores numericos,pero nunca una occurs(array) de elementos. Por tanto, no se si he de definirlos de distinta manera

espero haber explicado el tema un poco mejor

Gracias y perdonar si es obvio lo que pregunto. Soy nueva en esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar