10 ' ============ ::::::::   ANMARG :::::::: ==============================
   '
   ' :::::::  ESTADISTICA DE VENTAS
   '
   ' SISTEMAS SIERRA SA DE CV                    ACTUALIZA NOMBRES DE NUMEROS
   ' 09-Sep-2003 1250  creaci˘n inicial del programa
   ' ======================================================================
   
   ' $INCLUDE: 'EDITAL.BAS'
     DIM SHARED V1%(2000),V2%(2000),V3%(2000)
     ON ERROR GOTO ErrorHandler
     WIDTH LPRINT 150                                      ' asigna impresor

     GOSUB 9802                                            ' carga parametros
      CVEACC=58:GOSUB 6897:IF VCVE=1 THEN CLOSE:END
    ' $INCLUDE: 'AUTARG.BAS'

     IF LEN(ANO$)=2 THEN XANO$=ANO$:IF ANO$<"80" THEN ANO$="20"+ANO$ ELSE ANO$="19"+ANO$

    ' $INCLUDE: 'OPNTEM.BAS'
    ' $INCLUDE: 'OPNXME.BAS'
     GET#5,1
     UP=CVS(UM5$)                                          ' ultimo mesero

     GOSUB 350                                             ' VENTAS POR DIA
     CLOSE                                                 ' cierra archivos
     END

350                                                        ' ACUMULA DIAS ANTERIORES
     GOSUB 10016                                           ' cuadro pantalla
     SISTEMA$="ANALISIS DE VENTAS":LG=79                   ' titulo
     MENU$="Nombres de n£meros"                             
     GOSUB 8300                                            ' encabezado

     IE=0                                                  ' valida pos-b
     OPEN "I",30,"POS-B"
     IF IE=1 THEN
        GOSUB 2220                                         ' no existe pos-b
        CLOSE#30
        RETURN
     ENDIF
     CLOSE#30

     COLOR 7,0                                             ' intensidad media
     PR=07:PC=20:NR=04:NC=34:GOSUB 9981

     COLOR 15,7
        LOCATE 08,21:PRINT " El sistema actualizar  el nombre "
        LOCATE 09,21:PRINT " largo de todos los n£meros que   "
        LOCATE 10,21:PRINT " han vendido.  Si no tiene nombre "
        LOCATE 11,21:PRINT " largo, grabar  el nombre corto.  "

1100 GOSUB 7500                                            ' GRABAR
     IF KEYPRESSED=ESCAPE OR KEYPRESSED=UPARROW THEN RETURN
     IF KEYPRESSED=FF1 OR S$="1" THEN 1200
     IF KEYPRESSED=FF2 OR S$="C" OR S$="c" THEN RETURN
        GOSUB 7600:GOTO 1100

1200  COLOR 15,7:LOCATE 24,1:PRINT SPACE$(80);:LOCATE 23,2:PRINT ""

      LOCATE 24,57:PRINT "Actualizando";
      LOCATE 23,2:PRINT ""

      FOR I=1 TO UP
          GET#2,I
          COLOR 15,7:LOCATE 24,70:PRINT USING "###.#%";(I/UP)*100;
                     LOCATE 23,2:PRINT ""
          IF ASC(F2$)=0 THEN
             IE=0
             NU$=NU2$
             NU=VAL(NU$)
             GOSUB 2200                                    ' busca nombre
             IF ST=1 THEN                                  ' si lo encontr˘
                LSET NL2$=NL$
                LSET SN2$=NC$
             ENDIF
             IF NL2$=SPACE$(24) THEN
                LSET NL2$=SN2$+SPACE$(16)
             ENDIF
             IF SN2$=SPACE$(8) THEN
                LSET SN2$=MID$(NL2$,1,8)
             ENDIF
             PUT#2,I                                       ' GRABA
          ENDIF
      NEXT I
      BEEP
      RETURN

2200 ST=0                                                  ' BUSCA NOMBRE
     OPEN "POS-B" FOR RANDOM ACCESS READ WRITE SHARED AS #30 LEN=512
     FIELD#30,512AS X30$
     XRC=19                                                ' registro empleado
     REG=0
     NC$=SPACE$(8)
     NL$=SPACE$(24)                                        ' nombre largo
2210 IF EOF(30) THEN                                       ' fin de archivo
        CLOSE#30                                           ' cierra
        RETURN                                             ' fin
     ENDIF
     REG=REG+1                                             ' incrementa reg
     GET#30,REG                                            ' accesa
     NU=VAL(MID$(X30$,1,2))                                ' numero de emp
     IF NU<>XRC THEN                                       ' son diferentes
        REG=REG+1                                          ' incrementa
        GOTO 2210                                          ' regresa
     ENDIF
     IF MID$(X30$,3,4)=NU$ THEN 
        NL$=MID$(X30$,23,24)                               ' nombre largo
        NC$=MID$(X30$,47, 8)                               ' nombre corto
        ST=1
        CLOSE#30
        RETURN
     ELSE
        REG=REG+1                                          ' incrementa
        GOTO 2210                                          ' regresa
     ENDIF

2220 SHELL "\SIEARG2\MPBARG"
     RETURN

6999 ' $INCLUDE: 'R50GRL.BAS'
     ' $INCLUDE: 'LEFARG.BAS'
     ' $INCLUDE: 'KEYARG.BAS'
     ' $INCLUDE: 'VERSFT.BAS'

ErrorHandler:
      IF ERR=70 THEN LOCATE 24,01:COLOR 16,15:PRINT "pd...";:LOCATE 23,2:PRINT "":RESUME
      IF ERR=24 OR ERR=25 OR ERR=27 THEN GOSUB 7510:RESUME
      IF ERR=53 THEN IE=1:RESUME NEXT
      COLOR 16,15:LOCATE 24,01:PRINT "Error en los datos ";ERR;" Linea ";ERL;". Llame a SIERRA.";:LOCATE 23,2:PRINT "":W$=INPUT$(1):CLOSE:END
