Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol COBOL - General
COBOL - General Discusiones de temática general sobre el lenguaje COBOL y todo lo relacionado con él.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Compilador] Drag-and-drop de Objetos Joseg PowerCOBOL (ActiveX, v4 - v11) 1 1 de septiembre de 2023 22:27
[Sintaxis] Borde de celdas de una tabla Begoguay PowerCOBOL (ActiveX, v4 - v11) 1 6 de febrero de 2018 22:04
[Duda] Definir Valores TableControl Recato53 PowerCOBOL (ActiveX, v4 - v11) 1 12 de agosto de 2017 19:04
[Sintaxis] Listar objetos secuencialmente Kuk Object-Oriented COBOL 0 23 de febrero de 2017 09:33
[Sintaxis] Ultimo registro de una tabla Dasije WinDev 0 11 de agosto de 2016 02:32

Respuesta

  #1
Antiguo 5 de febrero de 2023, 02:22
KTSnowy
Representante Oficial
Última Actividad 07.12.2023 17:35
Posts Posts: 16
Likes enviados Enviados: 9
Likes recibidos Recibidos: 26
Predeterminado ¿Definir una tabla de referencias de objetos?
0 Inactivo Inactivo

¿Hay alguna manera de definir una tabla de referencias de objetos?

Estoy tratando de averiguar si es posible definir una tabla donde cada elemento tenga un uso de referencia de objeto.

Recientemente me pidieron que apareciera en una presentación en vivo para mostrar el compilador Otterkit y quería mostrar algo interesante sobre COBOL.

De acuerdo con el último estándar COBOL, la referencia del objeto de uso solo se puede definir en un elemento de datos de nivel 01 y las tablas no se pueden definir en elementos de datos de nivel 01. ¿Quizás un TYPEDEF funcionaría?

Estoy tratando de escribir algo como List<T> usando tablas y genéricos, pero este problema haría imposible hacer una lista genérica de objetos. ¿Me estoy perdiendo de algo? ¿Es posible definir una tabla de objetos?
KTSnowy is offline   Responder Con Cita
  #2
Antiguo 5 de febrero de 2023, 16:59
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

@KTSnowy, no entiendo muy bien tu propuesta.

Te refieres a una tabla con elementos diferentes ?

Algo como esto:

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. YOUR-PROGRAM-NAME.
  3.        DATA DIVISION.
  4.        FILE SECTION.
  5.        WORKING-STORAGE SECTION.
  6.        01 tabla OCCURS 999 times.
  7.          02 tipo pic x.
  8.          02 tipo1.
  9.              03 descripcion1 pic x(100).
  10.          02 tipo2 redefines tipo1.
  11.              03 importe2 pic 9(10).
  12.          02 tipo3 redefines tipo1.
  13.              03 importe3 pic s9(10)v99.    
  14.        01 i pic 9(4).      
  15.        01 tope pic 9(4).      
  16.        PROCEDURE DIVISION.
  17.        MAIN-PROCEDURE.
  18.             move '1' to tipo(1)
  19.             move 'pepe' to descripcion1(1)
  20.             move '2' to tipo(2)
  21.             move 123 to importe2(2)
  22.             move '3' to tipo(3)
  23.             move 3.4 to importe3(3)
  24.             move '1' to tipo(4)
  25.             move 'pepa' to descripcion1(4)
  26.             move 4 to tope
  27.             perform test after varying i from 1 by 1 until i = 999
  28.                                or i = tope
  29.               evaluate tipo(i)
  30.               when '1'
  31.                  display descripcion1(i)
  32.               when '2'
  33.                  display importe2(i)
  34.               when '3'
  35.                  display importe3(i)
  36.             end-perform.                  
  37.             STOP RUN.
  38.        END PROGRAM YOUR-PROGRAM-NAME.

Yo esto lo utilizo bastante y si son muchos elementos utilizo un fichero para simular la tabla
JCantero is offline   Responder Con Cita
  #3
Antiguo 5 de febrero de 2023, 17:19
KTSnowy
Representante Oficial
Última Actividad 07.12.2023 17:35
Posts Posts: 16
Likes enviados Enviados: 9
Likes recibidos Recibidos: 26

@JCantero, Me refiero a una tabla de referencias de objetos usando "USAGE OBJECT REFERENCE".

Algo como esto:

Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.     01 OBJECTS TYPEDEF STRONG.
  3.         02 OBJ USAGE OBJECT REFERENCE OCCURS X TIMES.
  4.    
  5.     01 OBJECT-TABLE TYPE OBJECTS.
  6. ...
  7.  
  8. MOVE ClassName :: "New" TO OBJ OF OBJECT-TABLE (INDEX).

Pero no estoy seguro de si esto es sintácticamente correcto y si es posible definir una tabla de objetos como esta.
KTSnowy is offline   Responder Con Cita
  #4
Antiguo 5 de febrero de 2023, 17:51
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

@KTSnowy, no sabria decirte. Los compiladores de cobol que yo tengo no soportan objetos.
JCantero is offline   Responder Con Cita
  #5
Antiguo 6 de febrero de 2023, 10:07
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@KTSnowy, pues si he entendido bien la pregunta, en Fujitsu COBOL tienes 2 posibilidades, puedes tener arrays de objetos genéricos o específicos:

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01  misTextBox.
  3.      05  miTextBox occurs 3 times OBJECT REFERENCE AMixed-DCmTextbox-Main-with-DCfGroupItem-Main.
  4.  
  5.  01  objetosGenericos.
  6.      05  misObjetos occurs 3 times OBJECT REFERENCE.


Otra cosa, en Cobol de toda la vida los campos "padre" no tienen tipado y son por defecto tomados como alfanuméricos:
Código COBOL:
  1.  01  campoPadre. *>  este es aflanumérico
  2.      05  campoHijo1 PIC 9(9) COMP-5.
  3.      05  campoHijo2 PIC 9(4) COMP-5.

Esta filosofía no permitiría definir el tipado de objetos en el nivel 01 y que los niveles inferiores heredaran dicho tipado.


En cuanto a
Código COBOL:
  1.      MOVE ClassName :: "New" TO OBJ OF OBJECT-TABLE (INDEX).

lo que estamos haciendo es llamar a un método, y siendo estrictos, Cobol para ello tiene el verbo Invoke, o sea que yo lo veo más bien así:

Código COBOL:
  1.      INVOKE ClassName "New" RETURNING OBJ(INDEX) OF OBJECT-TABLE.



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
Kuk is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:37.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.