Cobol - Occurs de Occurs

 
Vista:
sin imagen de perfil

Occurs de Occurs

Publicado por Jose Roberto (1 intervención) el 07/08/2019 18:40:54
Tengo una estructura complicada de recorrer:

01 CLIENTE.
05 DOMICILIO OCCURS 6 TIMES.
10 CALLE PIC X(20).
10 NUMERO PIC X(4).
15 DEPTOS OCCURS 10 TIMES.
20 DEPTO PIC X(3).

Necesito checkear si el nivel DEPTO tiene espacios. Intente utilizar la expresion INSPECT y tambien trate de recorrer la estructura con un PERFORM UNTIL, pero no puedo acceder a los occurs de ese nivel.

Alguien puede darme una mano?

Pedi una mano pero revisando info y trabajos hechos recorde como acceder a una tabla vidimensional. Yo trataba de acceder mediante indices como (1.1) o (1)(1). Pero despues checkee la sintaxis y vi mi error (1,1). Espero que les haya servido la experiencia!!!
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 Alejandro

Verificar si un campo DEPTO contiene espacios en una estructura complicada

Publicado por Alejandro (300 intervenciones) el 12/09/2023 17:01:29
Gracias por compartir tu solución, José. En efecto, en COBOL, para acceder a elementos de una tabla multidimensional, se utilizan comas (,) para separar los índices en lugar de puntos (.) o paréntesis ().

Si necesitas verificar si un campo `DEPTO` contiene espacios en blanco en tu estructura de datos, puedes hacerlo recorriendo adecuadamente la estructura utilizando los índices adecuados. Aquí tienes un ejemplo de cómo podrías hacerlo en COBOL:

1
2
3
4
5
PERFORM VARYING X FROM 1 BY 1 UNTIL X > 6
   IF DOMICILIO(X).DEPTOS(1).DEPTO = SPACES
      DISPLAY "El campo DEPTO en DOMICILIO(" X ") está vacío."
   END-IF
END-PERFORM

En este ejemplo, estamos utilizando un bucle `PERFORM` para recorrer los seis elementos de la tabla `DOMICILIO`, y luego comprobamos si el campo `DEPTO` en el primer elemento de la tabla `DEPTOS` en cada `DOMICILIO` contiene espacios en blanco utilizando la función `SPACES`. Puedes adaptar este código según tus necesidades específicas.

Espero que esta información te sea útil.
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