Cobol - error en el tamaño de tabla (occurs)

 
Vista:
sin imagen de perfil
Val: 12
Ha disminuido su posición en 6 puestos en Cobol (en relación al último mes)
Gráfica de Cobol

error en el tamaño de tabla (occurs)

Publicado por hariel (8 intervenciones) el 11/07/2016 16:18:58
Hola, buenos dia. Tengo un problema con las tablas en rmcobol/85.
Me da error:
cobol i/o arror 94,60 on arpor file ...

esta es la estructura

FD ARPOR LABEL RECORD STANDARD.
01 REG-AR.
02 CLAVE.
03 A-CODI PIC X(6).
02 TABL-CA OCCURS 3000 TIMES.
03 A-NUM PIC 9(4) COMP-6.
03 A-ORD1 PIC X.
03 A-ORD PIC 9(8) COMP-6.
03 A-CTA PIC X.

puede ser que sea muy grande la table?
esta bien definida?

desde ya muchas 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
Imágen de perfil de SuperIndio
Val: 32
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

error en el tamaño de tabla (occurs)

Publicado por SuperIndio (35 intervenciones) el 12/08/2016 16:12:34
Primero, quiero mas detalles,
Si el error sale cuando haces el open, read , write o close?
Pone un poco del codigo del lugar donde cancela.
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
sin imagen de perfil

error en el tamaño de tabla (occurs)

Publicado por Giovanny Espinoza (4 intervenciones) el 19/08/2016 23:50:17
Estimado...

si en verdad es una opcion utilizar los occur, al momento de las lecturas se va hara un archivo muy esado. ya que ocupara demasiado espacio en la memoria para mantener la tabla del occurs

define asi ,,,, sera mejor y mas rapido y ocupara unicamente la memoria sgun las lecturas que hagas.

FD ARPOR LABEL RECORD STANDARD.
01 REG-AR.
02 CLAVE.
03 A-CODI PIC X(6).
03 INDICE PIC 9(04).
02 DATOS-TABLA.
03 A-NUM PIC 9(4) COMP-6.
03 A-ORD1 PIC X.
03 A-ORD PIC 9(8) COMP-6.
03 A-CTA PIC X.

El campo indice hara el efecto de occurs yendo a leer el o los registros .

lectura

MOVE "VALOR CODIGO" TO A-CODI
PERFORM VARYING INDICE
FROM 1 BY 1
UNTIL XX = 10

READ XXFILE NOT AT END
MOVE A-NUM TO .....
MOVE A-ORD1..... ETC

END-READ

END-PERFORM.


saludos
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
Imágen de perfil de SuperIndio
Val: 32
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

error en el tamaño de tabla (occurs)

Publicado por SuperIndio (35 intervenciones) el 06/09/2016 16:56:19
El programador que definio este diseño es un animal de cola anillada,
asquerosisimo, una chanchada, no solo lo hace lento sino que no es optimo
porque el archivo puede crecer demasiado con muy poca informacion, es decir
supongamos que los 10 primeros registros tengan datos solamente los 3 elementos del vector(occurs)
el resto debera estar inicializado con un valor por default(zeros o blancos) obligadamente.
Si los dejas low-values tendras muchos dolores de cabeza en las lecturas y/o re-escritura.
Ademas del tiempo. Ademas recomiendo empaquetar COMP-3.

1
2
3
4
5
6
7
8
9
10
FD ARPOR LABEL RECORD IS STANDARD.
01 REG-AR.
   02 CLAVE.
      03 A-CODI       PIC X(06) .
      03 Orden        Pic 9(04).
   02 Datos-de-Tabla.
      03 A-NUM        PIC 9(04) COMP-3.
      03 A-ORD1       PIC X(01).
      03 A-ORD        PIC 9(08) COMP-3.
      03 A-CTA        PIC X(01).
Y Antes de cargar cualquier Nuevo registro inicializar el registro

INITIALIZE REG-AR.

Suponiendo que insistas en ser un cola anillada y quieras definir tu OCCURS, SE DEFINE ASI:
1
2
3
4
5
6
7
8
9
10
FD ARPOR LABEL RECORD IS STANDARD.
01 REG-AR.
   02 CLAVE.
      03 A-CODI          PIC X(06) .
   02 Tablita.
      03 TABL-CA OCCURS 3000 TIMES.
         05 A-NUM        PIC 9(04) COMP-3.
         05 A-ORD1       PIC X(01).
         05 A-ORD        PIC 9(08) COMP-3.
         05 A-CTA        PIC X(01).
Y el INITIALIZE Tablita, ES NECESARIO.
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
sin imagen de perfil
Val: 9
Ha disminuido su posición en 8 puestos en Cobol (en relación al último mes)
Gráfica de Cobol

error en el tamaño de tabla (occurs)

Publicado por Roberto Antonio (4 intervenciones) el 07/09/2016 02:37:45
El Sr. que definió esta tabla es alguien que está aprendiendo todavóía y merece respeto.

Esperamos que cuando ya tenga experienci nunca llegue a ser tan Super Indio como Usted.
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
sin imagen de perfil
Val: 12
Ha disminuido su posición en 6 puestos en Cobol (en relación al último mes)
Gráfica de Cobol

error en el tamaño de tabla (occurs)

Publicado por hariel (8 intervenciones) el 07/09/2016 13:09:33
hola, gracias por responder, esta mal plantear un occurs de (3000)?
el error me da cuando hago OPEN.
Les cuento la idea de plantear una tabla grande fue porque una versión anterior del programa tenia una tabla de 300, y ahora quedo chica, entonces me puse a probar hasta donde se podia cargar y no reventaba y llego hasta 1200 occurs.
Y dije si quiero una mas grande que pasa.
Asi que me puse a trabajar en archivos.

saludos y gracias
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
Imágen de perfil de SuperIndio
Val: 32
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

error en el tamaño de tabla (occurs)

Publicado por SuperIndio (35 intervenciones) el 08/09/2016 18:45:18
No esta mal definir tablas grandes,
no es lo mejor, ni lo mas optimo, ni lo mas comodo para trabajar
de hecho el compilador mas groso que he visto soporta hasta un 999999999 elementos
hasta 4100 occurs de occurs, y hasta 12 claves para trabajar por INDEXED BY...

lo que no se recomienda nunca es poner tablas grandes dentro de la FD porque
como te dije anteriormente, si dentro la tabla se grabo con low-values esto influirá en el length del registro.
Aun mas cuando se empaqueta comp-x
Ademas depende del compilador que este usando ( que tampoco lo has puesto )
peor aun si trabajas en un entorno para window caso RM o Power o Acu o Net-Express


El Open es de Input o de Output? O ambos?
En 2 posting anteriores te pedido codigo y dejaste incompleto,
la delacarion en el FILE CONTROL como es la ORGANIZATION ? pone codigo completo
SEQUENTIAL O LINE SEQUENTIAL
el acceso es dinamico o secuencial o aleatorio?

en ningun lado veo el codigo del OPEN, del READ o del WRITE

respecto

lo del occurs 1200 es por los 32K maximo por cada elemento que puede llegar a tener
es una cuenta que hay que hacer por cada elemento y sumar los definidos en el INDEXED BY mutiplicado por 12
esten o no declarados... no tengo la cuenta excta a mano.
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