Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Sintaxis] Mostrar Nombre del Formulario | Hrmcobol | PowerFORM | 2 | 30 de mayo de 2021 20:40 |
| [Sintaxis] Búsqueda nombre en ComboBox | jmeza | Fujitsu COBOL | 1 | 10 de septiembre de 2020 19:22 |
| [Herramienta] Nombre de Ordenador | Recato53 | PowerCOBOL (ActiveX, v4 - v11) | 3 | 9 de octubre de 2019 11:28 |
| [Sintaxis] Nombre de proyecto o Dll | Recato53 | PowerCOBOL (ActiveX, v4 - v11) | 1 | 9 de diciembre de 2017 11:23 |
| [Duda] Tamaño de campo | Josber | PowerFORM | 2 | 16 de diciembre de 2015 19:47 |
![]() |
|
Forero Junior
![]()
|
Hola, necesito ayuda con algo un tanto complejo, por lo menos para mi.
Imaginemos que tenemos una copy, que es una copy de una tabla db2 y tiene campos de todo tipo. Código COBOL:
Ahora imaginemos que tenemos una variable auxiliar, W-AUX PIC X(20), en dicha variable voy a almacenar el nombre de un campo de la copy. Es decir, el valor de W-AUX, sera (por ejemplo) 'CAMPO1-COPY-TABLA' Me gustaria saber si de alguna manera es posible hacer dos cosas: 1) Saber el tamaño (longitud) del campo que contiene la variable W-AUX. En nuestro ejemplo la respuesta tendria que ser 10, pues la variable W-AUX contiene el nombre del campo CAMPO1-COPY-TABLA. No pregunto por el tamaño de la variable W-AUX!! sino del campo cuyo nombre esta dentro de la variable W-AUX. 2) Si puedo asignar valor al campo CAMPO1-COPY-TABLA a partir de la varible W-AUX. Es decir: MOVE '123' TO 'contenido de W-AUX', se mueve '123' realmente al campo CAMPO1-COPY-TABLA, no a W-AUX. Muchas gracias Quizas no me halla expresado bien, si no se entiende, me decis y lo pongo de otra manera. |
||||||||
|
|
|
|
Administrador
![]()
|
@Alberto, tal cual tú lo imaginas, no se puede hacer. Aunque se puede apañar con unos campos de tamaño variable y unos punteros.
![]() NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
Para poder ayudarte debes indicar para que cobol necesitas ese requerimiento.
Y también que problema intentas solucionar de esa manera para poder abordarlo de otra forma. Con lo que cuentas, Si no entiendo mal quieres asignar "123" de la variable W-AUX a CAMPO1-COPY-TABLA. Al menos en RM/COBOL se puede saber el tipo y la longitud de un parámetro (o argumento). Sabiendo que buscas un parámetro de longitud 10, se puede ver el tipo de cada uno de los parámetros y mover el contenido al parámetro (argumento, variable) seleccionado. Creo que de ninguna forma podrás ver el nombre de la variable sin tener el fuente para poder analizarlo ya que al compilar todas las variables se codifican con una dirección de memoria. A no se que esa información forme parte implicita ("informativa") de la propia variable. Dime sobre que quieres que incida más e intenta explicar el problema que intentas solucionar para poder ayudarte entre todos. |
||||||||
|
|
|
|
Forero Junior
![]()
|
Código:
TABLA_CAMPO1 TABLA_CAMPO2 TABLA_CAMPO3 TABLA.... ABCDEFGHIJ 123456789 123456789 ... )Son datos provenientes de tablas, no son unload propiamente dichas. Tengo que realizar un programa que lea UN fichero de estos (para ejecutarlo luego para cada fichero...) y deje los datos en otro fichero con el formato de la copy correspondiente, las copys las meto todas dentro del código del programa, y ya tengo como hacer que dicho programa identifique por la cabecera que fichero es y que copy le corresponde. Mi idea es leer la cabecera, guardar el nombre del campo TBL1_CAMPO1 en la variable W-AUX y como ya se que copy es, al leer los datos,mover el valor 'ABCDEFGHIJ' al campo CAMPO1-COPY-TABLA de la copy. Solo necesito esto último, el tema de leer la cabecera, guardar los nombre y leer los datos y demas lo tengo claro. Muchas gracias. |
|||||||||||
|
|
|
|
Administrador
![]()
|
@Alberto, según entiendo, el nombre del campo en la cabecera no corresponde con el nombre del campo de la COPY. Sea así o no, se necesitaría una referencia de relación nombre_cabecera-campo_copy.
Las COPYs también son de formato distinto, los ficheros desde luego también... Lo veo realmente complicado de hacer como tú lo quieres. Encima siendo IBM Enterprise Cobol, que no se enfoca en mecanismos milagrosos tanto como Micro Focus por ejemplo... Habría que decirnos con más detalles, no sé, nos puedes pasar un par de COPY-s para que las veamos? NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
Por eso se que copy corresponde con cada fichero con solo leer la cabecera.
Gracias por vuestro tiempo |
||||||||||
|
|
|
|
El Foro es mi casa
![]()
|
He utilizado algo parecido para algunas cosas.
A ver si te cuadra esto...... Suponiendo que lo leido de la tabla está en campo-tabla, para cada copy debes de hacer lo siguiente: Código COBOL:
|
||||||||
|
|
|
|
Administrador
![]()
|
@Alberto, estoy totalmente de acuerdo con @JCantero.
Por lo pronto, una variable consiste en dos cosas:
Además, al compilar un programa, los nombres de las variables se convierten por el compilador también en unas direcciones (offsets) dentro del binario generado. Lo cual quiere decir, que el nombre de una variable se pierde en cuanto el fuente se convierte en binario. Lo que sí es posible hacer, técnicamente, es obtener la dirección de una variable en un campo de tipo puntero y luego hacer referencia al espacio de dicha variable sin su nombre. Pero aun montando el chiringuito con los punteros, igualmente necesitarías los mismos IF-s que muestra @JCantero, porque necesitas evaluar el valor del nombre del campo Cobol que viene en el fichero. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
5 o 5'30 minutos. ![]() Yo empleo tiempo en pensar como no mover una tecla evitando tiempo y errores que se generan al teclear. |
|||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||