Ver Mensaje Individual
  #4
Antiguo 15 de abril de 2024, 05:01
JonathanDemons_123
Acabo de llegar...
Última Actividad 08.10.2024 05:12
Posts Posts: 4
Likes enviados Enviados: 1
Likes recibidos Recibidos: 0

Citación del post de Josber Ver Mensaje
❞
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:
  1. WORKING-STORAGE SECTION.
  2. 01  EOF                    PIC 9.
  3. 01  STFILE                PIC XX.      *> FILE-STATUS del fichero
  4. .
  5. .
  6. .
  7. PROCEDURE DIVISION.
  8. INICIO.
  9.      MOVE 333 TO NUMKEY.
  10.      INITIALIZE EOF.
  11.      OPEN INPUT FICHERO.
  12.      PERFORM POSICIONAR.
  13.      PERFORM LEER UNTIL EOF = 1.
  14.      CLOSE FICHERO.
  15.      STOP RUN.
  16. POSICIONAR.
  17.      START FICHERO
  18.                KEY NOT LESS NUMKEY
  19.                      INVALID KEY DISPLAY "Error de posicionamiento... " STFILE
  20.                                   CLOSE FICHERO
  21.                                   STOP RUN
  22.      END-START.
  23. LEER.
  24.      READ FICHERO
  25.               NEXT RECORD
  26.                       AT END
  27.                           MOVE 1 TO EOF
  28.                           DISPLAY "Fin fichero ..."
  29.                       NOT AT END
  30.                              PERFORM HACER-COSAS THRU FIN-HACER
  31.      END-READ.
  32. HACER-COSAS.
  33. .
  34. .
  35. .
  36. .
  37. .
  38. HACER-MAS-COSAS.
  39. .
  40. .
  41. .
  42. .
  43. FIN-HACER.
  44.     EXIT.

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.
Gracias hoy estuve practicando, estuve leyendo de la setencia de start y en la documentacion encontre que
>
>=
<
<=
=
!=
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???
JonathanDemons_123 is offline   Responder Con Cita