Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   COBOL - General (https://www.cobolforo.es/forumdisplay.php?f=44)
-   -   [Duda] Obtener el monto menor (https://www.cobolforo.es/showthread.php?t=1632)

dariodr 12 de abril de 2023 06:11

Obtener el monto menor
 
Hola amigos coboleros, tengo este codigo.
Pregunta: como obtengo el monto de venta menor.

Código COBOL:
  1.        identification division.
  2.        program-id. ventas1.
  3.  
  4.        environment division.
  5.        input-output section.
  6.        file-control.
  7.            select ventas assign to "ventas.txt".
  8.  
  9.        data division.
  10.        file section.
  11.        fd  ventas recording mode f.
  12.        01 reg-ventas.
  13.          03 num-vendedor pic 999.
  14.          03 cod-articulo pic x(5).
  15.          03 des-articulo pic x(30).
  16.          03 unid-vendidas pic 9(4).
  17.          03 monto-venta pic 9(6)V99.
  18.      *Variables
  19.        working-storage section.
  20.        01 cabecera.
  21.          03 filler pic x(15) value "Nro de Vendedor".
  22.          03 filler pic x(2) value spaces.
  23.          03 filler pic x(19) value "Codigo del Articulo".
  24.          03 filler pic x(2) value spaces.
  25.          03 filler pic x(11) value "Descripcion".
  26.          03 filler pic x(10) value spaces.
  27.          03 filler pic x(14) value "Unid. Vendidas".
  28.          03 filler pic x(2) value spaces.
  29.          03 filler pic x(14) value "Monto de Venta".
  30.        01  linea-p.
  31.          03 filler pic x(90) value all "-".
  32.  
  33.        01 fin-archivo pic xx value "no".
  34.        01 linea       pic 99 value 3.
  35.        01 tecla       pic x.
  36.        01 suma        pic 9(6)v99.
  37.        01  menor      pic 9(6)v99.
  38.        01 promedio    pic 9(6)v99.
  39.        01  con-formato.
  40.          03 promedio-f pic zzzzz9.99.
  41.  
  42.        procedure division.
  43.        proceso-apertura.
  44.            open output ventas.
  45.            perform ingreso-datos 3 times.
  46.            close ventas.
  47.            open input ventas.
  48.            display erase.
  49.            display cabecera.
  50.            display linea-p.
  51.            perform proceso-lectura until fin-archivo = "si".
  52.            close ventas.
  53.            perform mostrar-promedio.
  54.            accept tecla.
  55.            goback.
  56.  
  57.        proceso-lectura.          
  58.            read ventas
  59.                at end
  60.                    move "si" to fin-archivo
  61.                not at end
  62.                    move monto-venta to menor (hice esto pero no funciono).
  63.                    perform listar
  64.                    perform calcular-promedio
  65.            end-read.
  66.  
  67.        ingreso-datos.
  68.            display "Numero de vendedor: " no advancing.
  69.            accept num-vendedor.
  70.            display "Codigo del articulo: " no advancing.
  71.            accept cod-articulo.
  72.            display "Descripcion: " no advancing.
  73.            accept des-articulo.
  74.            display "Unidades vendidas: " no advancing.
  75.            accept unid-vendidas.
  76.            display "Monto de venta: " no advancing.
  77.            accept monto-venta.
  78.            write reg-ventas.
  79.  
  80.        listar.
  81.            display num-vendedor  line linea col 1.
  82.            display cod-articulo  line linea col 18.
  83.            display des-articulo  line linea col 39.
  84.            display unid-vendidas line linea col 60.
  85.            display monto-venta   line linea col 76.
  86.            add 1 to linea.
  87.  
  88.        calcular-promedio.
  89.            compute suma = suma + monto-venta.
  90.  
  91.        mostrar-promedio.
  92.            compute promedio = suma / 3.
  93.            display "Promedio: " line 10 col 30.
  94.            move promedio to promedio-f.
  95.            display promedio-f line 10 col 43.

Salu2

Josber 12 de abril de 2023 12:30

Sí claro, una de las soluciones es, a la vez que lees el fichero, vas metiendo los datos que necesites, por ejemplo la clave principal y el total de venta en una tabla y, al finalizar, con un SORT, la ordenas por la columna de ventas.

Un salu2.-

JCantero 12 de abril de 2023 23:05

@dariodr, define una variable en working

Código COBOL:
  1.        01 venta-menor    pic 9(6)v99 value 0.


y a la vez que calculas suma vas metiendo la venta menor y luego la displayas


Código COBOL:
  1.        calcular-promedio.
  2.            compute suma = suma + monto-venta.
  3.            if venta-menor = 0 then
  4.                  move monto-venta to venta-menor
  5.            end-if.
  6.            if venta-menor > monto-venta then
  7.                  move monto-venta to venta-menor
  8.            end-if.
  9.  
  10.  
  11.        mostrar-promedio.
  12.            compute promedio = suma / 3.
  13.            display "Promedio: " line 10 col 30.
  14.            move promedio to promedio-f.
  15.            display promedio-f line 10 col 43.
  16.  
  17.            display "Venta menor: " line 11 col 30.
  18.            move venta-menor to promedio-f.
  19.            display promedio-f line 11 col 43.


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

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