Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| No puedo crear un archivo indexado | CHITOBLA | GnuCOBOL (OpenCOBOL) | 42 | 7 de diciembre de 2022 10:34 |
| [Sintaxis] Crear archivo indexado desde un XLS | Anthony | AcuCobol | 10 | 6 de agosto de 2019 17:35 |
| [Sintaxis] Lectura archivo secuencial | Gatomalo | PowerCOBOL v3 (V3L10, Win32) | 11 | 28 de agosto de 2018 20:21 |
| [Sintaxis] Error de lectura en archivo | jmeza | PowerCOBOL (ActiveX, v4 - v11) | 2 | 12 de diciembre de 2017 12:13 |
| [Sintaxis] Grabación/Lectura archivo de configuración | Dasije | WinDev | 0 | 8 de septiembre de 2016 01:04 |
![]() |
|
Acabo de llegar...
![]()
|
Buenas noches mis compas:
Estoy aprendiendo cobol, pero requiero abrir un archivo indexado este archivo tiene clave primaria y secundaria, pero hay unos conceptos que no me quedan claros. Ya declare en FILE-CONTROL, con select mi archivo indexado. En DATA DIVISION paso la extructura de mi archivo indexado. En PROCEDURE DIVISION., tengo 2 perform uno READ, para leer el archivo y otro START para aprovechar las claves primarias. Una de mis dudas, es primero start y despues el read??? Yo para leer el archivo utilizo Perform leer until, para leer todo el archivo, pero en que momento voy haciendo mi incremental de mi variable, que utilizo en el perform, porque solo me lee un registro. |
||||||||
|
|
|
|
Moderador Global
![]()
|
Hola @JonathanDemons_123,
A ver, sí, por supuesto que primero un START y después un READ, por lógica, primero posicionas el "puntero" en el lugar que quieres y después haces la lectura. Sin ver el código, te lee un sólo registro, porque haces un READ normal y corriente, y tienes que hacer el READ con un NEXT/PREVIOUS, en los que no hace falta incrementar nada, el propio compilador es el que se encarga de ir hacia adelante o hacia atrás de forma automática, (depende del parámetro usado), la manera más sencilla de hacerlo es: Vamos a suponer que tienes un fichero con 500 registros, numerados del 1 al 500 consecutivos y, que quieres leer a partir del registro 333 hasta el último: Código COBOL:
Si cambias NEXT por PREVIOUS, leerá el fichero al revés y, cuando llegue al principio, (sentencia AT END), terminará la lectura, aunque, no todos los compiladores, soportan la cláusula de lectura inversa Un saludo y, si tienes más dudas, ya sabes por donde andamos. |
||||||||
|
|
|
|
Administrador
![]()
|
@JonathanDemons_123, para la próxima vez publica también tu código, así te podremos ayudar mejor
![]() 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 |
||||||||
|
|
|
|
Acabo de llegar...
![]()
|
> >= < <= = != Que solo hay estas opciones, pero ahi viendo como esta el archivo requiero una clase de Between, algo asi sea >= y <= ha cierto rango, se puede, con el start??? O tendria que hacer doble start, es decir, uno que sea >= este seria el start1 y otro <= seria el start2??? |
|||||||||
|
|
|
|
Moderador Global
![]()
|
No, no existe el BETWEEN como en SQL por ejemplo, y tampoco puedes hacer un "doble START", porque prevalece siempre el último que hagas. La única manera de hacerlo es primero con un START >= y después, en el READ en la parte de NOT AT END, añades al principio el comparar el registro leído con el registro máximo, y si coincide o es superior, mover 1 a EOF, no sé si me explico bien.
Un salu2.- |
||||||||
|
|
|
![]() |
| Herramientas | |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||