Ver Mensaje Individual
  #6
Antiguo 19 de marzo de 2023, 12:57
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

@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 , 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.-
Josber is offline   Responder Con Cita