Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   COBOL - General (https://www.cobolforo.es/forumdisplay.php?f=44)
-   -   [Duda] Leer en forma horizontal (https://www.cobolforo.es/showthread.php?t=1624)

dariodr 17 de marzo de 2023 11:27

Leer en forma horizontal
 
Hola amigos coboleros, otra vez molestando por aca.
Tengo este codigo para leer archivos secuenciales, la pregunta es:
Como hago para que los datos leidos se muestren en forma horizontal.
Ejm:
Nombre del empleado ID del empleado Cantidad de casa vendidas
Pedro Perez 1 3
Juan Lopez 2 2

Código COBOL:
  1.        identification division.
  2.        program-id. venta-casa.
  3.      *
  4.        environment division.
  5.        input-output section.
  6.        file-control.
  7.            select empleados assign to "empleados.txt".
  8.      *
  9.        data division.
  10.        file section.
  11.        fd  empleados.
  12.        01  reg-empleados.
  13.            03 nombre-empleado      pic x(20).
  14.            03 idempleado           pic 999.
  15.            03 casas-vendidas       pic 99.
  16.        working-storage section.
  17.        01  fin-archivo    pic x value 'n'.
  18.      *
  19.        procedure division.
  20.        programa-principal.
  21.            perform abrir-archivo.          
  22.            perform proceso.
  23.            perform cerrar-archivo.
  24.            perform fin-programa.
  25.      *
  26.        abrir-archivo.
  27.            open input empleados.
  28.      *
  29.        cerrar-archivo.
  30.            close empleados.
  31.      *
  32.        proceso.
  33.            perform lee-datos until fin-archivo = 's'.
  34.      *
  35.        lee-datos.
  36.            read empleados
  37.                at end move 's' to fin-archivo
  38.                not at end
  39.                    perform muestra-datos
  40.            end-read.
  41.      *
  42.        fin-programa.
  43.            stop run.
  44.      *
  45.        muestra-datos.
  46.            display "Nombre de empleado: " nombre-empleado.
  47.            display "ID del empleado: " idempleado.
  48.            display "Cantidad de casas vendidas: " casas-vendidas.
  49.            display " ".
  50.  

Kuk 17 de marzo de 2023 11:36

@dariodr,

Código COBOL:
  1.        muestra-datos.
  2.            display "Nombre de empleado: " nombre-empleado " " NO ADVANCING
  3.            display "ID del empleado: " idempleado " " NO ADVANCING
  4.            display "Cantidad de casas vendidas: " casas-vendidas
  5.            display " ".

JCantero 17 de marzo de 2023 13:10

@dariodr, tambien lo puedes hacer así.....

Código COBOL:
  1.  display "Nombre de empleado: " nombre-empleado
  2.          " ID del empleado: " idempleado
  3.          " Cantidad de casas vendidas: " casas-vendidas.

dariodr 18 de marzo de 2023 02:36

Quiero algo un poco mas ordenado, con cabecera y que los datos esten tabulados. Se puede.
Salu2.

JCantero 18 de marzo de 2023 20:17

Haz un display de la cabecera con el formato deseado y despues vas displayando la información.

Josber 19 de marzo de 2023 12:57

@dariodr,

A ver si con esto te vale y, sobre todo, te aclaras y lo entiendes

Código COBOL:
  1.        identification division.
  2.        program-id. venta-casa.
  3.      *
  4.        environment division.
  5.        input-output section.
  6.        file-control.
  7.            select empleados assign to "empleados.txt".
  8.      *
  9.        data division.
  10.        file section.
  11.        fd  empleados.
  12.        01  reg-empleados.
  13.            03 nombre-empleado      pic x(20).
  14.            03 idempleado           pic 999.
  15.            03 casas-vendidas       pic 99.
  16.        working-storage section.
  17.        01  fin-archivo    pic x value 'n'.
  18.      *
  19.        01  L              PIC 99 VALUE 0.
  20.        01  CAB.
  21.            03             PIC XX    VALUE SPACES.
  22.            03             PIC X(20) VALUE "Nombre".
  23.            03             PIC X     VALUE SPACES.
  24.            03             PIC X(03) VALUE "Id.".
  25.            03             PIC X     VALUE SPACES.
  26.            03             PIC X(05) VALUE "Casas".
  27.        01  CUERPO.
  28.            03             PIC XX    VALUE SPACES.
  29.            03  WNOM       PIC X(20).
  30.            03             PIC X     VALUE SPACES.
  31.            03  WID        PIC 999   USAGE IS DISPLAY.
  32.            03             PIC X     VALUE SPACES.
  33.            03  WCAS       PIC 99    USAGE IS DISPLAY.
  34.        01  TECLA          PIC X     VALUE SPACES.
  35.      *
  36.        procedure division.
  37.        programa-principal.
  38.            perform abrir-archivo.          
  39.            perform proceso.
  40.            perform cerrar-archivo.
  41.            perform fin-programa.
  42.      *
  43.        abrir-archivo.
  44.            open input empleados.
  45.      *
  46.        cerrar-archivo.
  47.            close empleados.
  48.      *
  49.        proceso.
  50.            INITIALIZE L CUERPO TECLA fin-archivo.
  51.            PERFORM IMP-CABECERA.
  52.            perform lee-datos until fin-archivo = 's'.
  53.      *
  54.        lee-datos.
  55.            read empleados NEXT RECORD
  56.                 at end
  57.                    move 's' to fin-archivo
  58.                 not at end
  59.                     perform muestra-datos
  60.            end-read.
  61.      *
  62.        fin-programa.
  63.            stop run.
  64.      *
  65.        muestra-datos.
  66.            MOVE nombre-empleado TO WNOM.
  67.            MOVE idempleado TO WID.
  68.            MOVE casas-vendidas TO WCAS.
  69.            DISPLAY CUERPO.
  70.  
  71.       *    display "Nombre de empleado: " nombre-empleado.
  72.      *    display "ID del empleado: " idempleado.
  73.      *    display "Cantidad de casas vendidas: " casas-vendidas.
  74.  
  75.            display " ".
  76.  
  77.            INITIALIZE CUERPO.
  78.            ADD 1 TO L.
  79.            IF L = 0
  80.               OR L > 23
  81.                  DISPLAY "Pulse una tecla para continuar (F para terminar) ..."
  82.                          WITH NO ADVANCING
  83.                  ACCEPT TECLA
  84.                  IF TECLA = "F" OR TECLA = "f"
  85.                     MOVE "s" TO fin-archivo
  86.                  ELSE
  87.                     INITIALIZE fin-archivo TECLA CUERPO
  88.                     PERFORM IMP-CABECERA
  89.                  END-IF
  90.            END-IF.
  91.      *
  92.        IMP-CABECERA.
  93.            DISPLAY " " ERASE.
  94.            DISPLAY CAB.
  95.            MOVE 1 TO L.

Lo que hay escrito en mayúsculas, es lo que he añadido yo, solo tengo una duda y es que ...

Código COBOL:
  1. DISPLAY " " ERASE

igual no te funciona en ese compilador, esa instrucción, lo que hace es borrar la pantalla, pero no es "compatible" con todos los lenguajes COBOL, cada uno tiene su manera :tribu:, igual que no sé cuál es el equivalente a LINE y POSITION en el COBOL que tu usas, si lo supiera, podría hacerse más rápido y claro.
No lo he probado porque, obviamente, no tengo instalado ese compilador, pero supongo que funcionará sin errores, de lo contrario, dínoslo para solucionarlo. :) :)

Un salu2.-

dariodr 20 de marzo de 2023 02:14

Funciono, ahora lo arreglo a mis necesidades


La franja horaria es GMT +2. Ahora son las 14:55.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.