Página 1 de 1

somando horas tipo Ex: HH:MM:SSSS

Enviado: 19 Dez 2009 22:38
por Gilberto M Silva
Gente, estou desenvolvendo um sistema de cronometragem do Jeep Clube da seguinte forma: eu tenho que pegar as 4 casas do segundo. Nas competições de Jeep cada competidor dar 2 voltas, somando os 2 tempos, tempo1: 00:01:5341 e tempo2: 00:01:5721, tempo total: 00:03:5062 esse seria o tempo do competidor. Existe uma função que faça essa soma ou tenho que programar???

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 20 Dez 2009 15:22
por gvc
Em xHarbour tem a funcão ElapTime e não sei se ela funciona com fração de segundo.
Em Clipper eu não conheço nenhuma. Acredito que vc terá que desenvolver.
Acho que vai ter que desenvolver função para isso.
Só dê uma olhada na CA-Tools e na página de downloads do forum, por via das dúvidas.

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 21 Dez 2009 08:11
por SandroBelarmino
Eu tenho essas funcoes que precisei fazer para controlar a produção de funcionários, tempo trabalhado, tempo parado, etc.
Talvez te ajude, basta voce implementar a questão da fração dos segundos.

Código: Selecionar todos

FUNCTION DifTempo( tempoi, tempof )  // tempoi = tempo maior
wdif:=(minutos(tempoi)-minutos(tempof))/60
return (strzero(abs(val(subs(trans(wdif,'99.99'),1,2))),2,0)+':'+strzero(round((val(subs(trans(wdif,'99.99'),4,2))/100)*60,0),2,0))

FUNCTION MINUTOS( tempo )   // mandar no formato 99:99
RETURN (val(subs(tempo,1,2))*60)+val(subs(tempo,4,2))

FUNCTION SomaTempo( tempoi, tempof )
wsoma:=(minuto2(tempoi)+minutos(tempof))/60
return (strzero(abs(val(subs(trans(wsoma,'999.99'),1,3))),3,0)+':'+strzero(round((val(subs(trans(wsoma,'999.99'),5,2))/100)*60,0),2,0))

FUNCTION MINUTO2( tempo )   // mandar no formato 999:99
RETURN (val(subs(tempo,1,3))*60)+val(subs(tempo,5,2))
Exemplos de uso:

Código: Selecionar todos

wtrabalhou := diftempo(hr_trab,hr_parada)   && mandar os parametros no formato hh:mm 
wsoma := somatempo(wtempo1,wtempo2)
Eu fiz a funcoes minutos2 pois am alguns relatórios preciso somar o tempo de trabalho de todos os funcionarios de 1 turno inteiro, entao o total de horas passava de 99.

Espero ter ajudado

Sandro.

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 21 Dez 2009 22:30
por billy1943
No Clipper/Dbase diretamente não dá para fazer, visto que a função TIME() retorna uma "string" na forma: HH:MM:SS;

Se os seus tempos são registrados na forma: HH:MM:SSSS então entre-os numa variável alfanumérica (CTempo), então:

nhoras := val(substr(ctempo,1,2))
nminutos := val(substr(ctempo,4,2))
nsegundos := val(substr(ctempo,7,4))

Inicie variáveis para cada elemento, e venha de segundos para horas, no seguinte raciocínio:
1. se o resultado de segundos passar de 60, adicione 1 minuto aos minutos anteriores e deixe em segundos o resultado de (segundos - 60)
2. se o resultado de minutos ultrapassar de 60, acrescentar 1 hora às horas anteriores, e deixe em minutos o resultado de (minutos - 60)

Voilá, c´est fini !

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 21 Dez 2009 23:26
por Maligno
nsegundos := val(substr(ctempo,7,4))
Não está certo. Se você tiver 00:00:9999, sua formula resultará um valor numérico de 9999 segundos, que equivale a quase 3 horas. O OP, ao que me parece, precisa primeiro dividir esses segundos adicionando as frações necessárias. Uma parte para os centésimos ou milésimos de segundo. Senão não dará certo.

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 22 Dez 2009 08:47
por asimoes
Olá,

Na CA-Tools temos as funções SecToTime e TimeToSec:

Código: Selecionar todos

 SECTOTIME()
 Converts seconds into a time string
─────────────────────────────────────────────────────────────────────────────
 Syntax

     SECTOTIME(<nSeconds>, [<lHundredth>]) --> cTime

 Arguments

     <nSeconds>  Designates the number of seconds since midnight to
     convert into a character string in time format.

     <lHundredth>  If this optional parameter is designated as .T., the
     resulting time string contains hundredths of seconds.  The default is no
     hundredths (.F.).

 Returns

     SECTOTIME() returns a time string that corresponds to <nSeconds> in the
     "HH:MM:SS" or "HH:MM:SS:hh" format.

 Description

     This function can be applied in two areas -- to convert numeric time
     spans in seconds, and to convert a point in time into the "HH:MM:SS" or
     "HH:MM:SS:hh" format.

     If hundredths of seconds are also desired in the time string result,
     then designate the second parameter as .T..  The portion of the value
     for <nSeconds> to the right of the decimal is also converted.

 Notes

     ■  Seconds since midnight are in the range of 0 to 86400.  With
        larger values, the function internally executes the operation
        <nSeconds>
        % 86400 and then uses the result value.  86400 seconds corresponds to
        an entire day.

     ■  There is no rounding when values like 45366.98 are converted
        without hundredths.

 Examples

     ■  Calculate the span between two times.  The result is displayed
        in the "HH:MM:SS" format:

        nBeginning  :=  170
        nEnd         :=  3656
        ? SECTOTIME(nEnd - nBeginning)     // "00:58:06"

     ■  With hundredth seconds:

       ? SECTOTIME(45873.22, .T.)         // "12:44:33:22"

Código: Selecionar todos

 TIMETOSEC()
 Calculates the seconds since midnight
─────────────────────────────────────────────────────────────────────────────
 Syntax

     TIMETOSEC(<cTime>) --> nSeconds

 Argument

     <cTime>  Designates a character string that contains the time in the
     format "HH:MM:SS:hh".  The default is the system time.

 Returns

     The returned value designates how many seconds have elapsed between
     midnight and <cTime>.  Hundredths of seconds are contained as a decimal
     value.

 Description

     When computing time periods, or when adding times, it is simpler to deal
     with seconds since midnight instead of time designations.  These
     calculations are simplified significantly.  The SECTOTIME() function
     converts the result into a time designation again.  Starting from back
     to front, you can omit the hundredths, seconds, and minutes from the
     time string that is passed as a parameter.  These values are then
     assumed to be "00".

     If you do not specify a parameter, the function uses the current time on
     the system clock.

 Examples

     ■  A simple conversion:

        ? TIMETOSEC("12:44:33:22")                 // Result:  45873.22

     ■  The period between two times is calculated. The result is
        displayed in seconds:
        cBegin      :=  "12:55:44:33"
        cEnd         :=  "14:56:12:22"
        ? TIMETOSEC(cEnd) - TIMETOSEC(cBegin)      // Period in seconds

     ■  Possible formats:

        ? TIMETOSEC("12")
        ? TIMETOSEC("12:44)
        ? TIMETOSEC("12:44:33)
        ? TIMETOSEC("12:44:33:22")

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 27 Dez 2009 21:28
por Gilberto M Silva
Desenvolvi ficou da seguinte forma e funciona:

Código: Selecionar todos

FUNC MARCATEM
SELE A
SET ORDER TO 2
SEEK SFIR
COMP1:=COMP2:="SIM"
DO WHILE .T.
IF EOF()
   @ 14,02 GET TINI PICT "@R 99:99:999"
   @ 14,31 GET TFIN PICT "@R 99:99:999"
   READ
   IF TINI="0000000"
      COMP1:="NAO"
   ENDIF
   IF TFIN="0000000"
      COMP2:="NAO"
   ENDIF
   IF COMP1="SIM"
      SET COLO TO W+/B
      @ 14,20 SAY COMP1
   ELSE
      SET COLO TO R+/B
      @ 14,20 SAY COMP1
   ENDIF
   IF COMP2="SIM"
      SET COLO TO W+/B
      @ 14,48 SAY COMP2
   ELSE
      SET COLO TO R+/B
      @ 14,48 SAY COMP2
   ENDIF
   TTOT:=HORA
   TTOT:= VAL(TINI)+VAL(TFIN)
   TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
   IF VAL(TTO1)=6
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=7
     TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=8
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=9
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=0
      TTO2:=SUBSTR(TINI,5,1)
      TTO3:=SUBSTR(TFIN,5,1)
      IF TTO2="0" .AND. TTO3="0"
      ELSE
         TTOT:=TTOT+0000400
      ENDIF
   ENDIF
   TTO2:=SUBSTR(TINI,5,2)
   TTO3:=SUBSTR(TFIN,5,2)
   TTO4:=VAL(TTO2)+VAL(TTO3)
   IF TTO4>=100
      TTOT:=TTOT+0000400
   ENDIF
   TTOT:= STRZERO(TTOT,7)
   @ 14,59 SAY TTOT  PICT "@R 99:99:999"
   TTTOT:=TTOT
   @ 18,11 SAY TBAND PICT "@R 99"
   @ 18,27 SAY TINVP PICT "@R 99"
   @ 18,47 SAY TAJTE PICT "@R 99"
   @ 18,68 SAY TVIRA PICT "@R 99"
   SET COLO TO GR+/B
   @ 19,05 GET SBAN  PICT "@E 99"
   @ 19,13 GET SBAN1 PICT "@E 99"
   @ 19,22 GET SPIS  PICT "@E 99"
   @ 19,32 GET SPIS1 PICT "@E 99"
   @ 19,42 GET SAJU  PICT "@E 99"
   @ 19,53 GET SAJU1 PICT "@E 99"
   @ 19,63 GET SVIR  PICT "@E 99"
   @ 19,70 GET SVIR1 PICT "@E 99"
   READ
   TBANDD:=((SBAN+SBAN1)*(TBAND*10))+((SPIS+SPIS1)*(TINVP*10))
   TBANDD:=STRZERO(TBANDD,7)
   TTOT:= VAL(TTTOT)+VAL(TBANDD)
   TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
   IF VAL(TTO1)=6
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=7
     TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=8
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=9
      TTOT:=TTOT+0000400
   ENDIF
   DO WHILE .T.
      IF VAL(TTO1)=0
         TTO2:=SUBSTR(TINI,5,1)
         TTO3:=SUBSTR(TFIN,5,1)
         IF TTO2="0" .AND. TTO3="0"
         ELSE
            TTOT:=TTOT+0000400
         ENDIF
         EXIT
      ENDIF
      TTO2:=SUBSTR(TINI,5,2)
      TTO3:=SUBSTR(TFIN,5,2)
      TTO4:=VAL(TTO2)+VAL(TTO3)
      IF TTO4>=100
         IF TTO4<200
            TTOT:=TTOT+0000400
         ENDIF
      ENDIF
      EXIT
   ENDDO
   TTOT:= STRZERO(TTOT,7)
   @ 14,58 GET TTOT  PICT "@R 99:99:999"
   READ


---
Nota da Moderação (Maligno):
A presente mensagem foi editada para a remoção da cor diferenciada no código e inserção das tags de indentação. Destacar código com cores não faz tanta diferença quanto a indentação. Indentar torna o código muito mais fácil de seguir e entender, como pode-se perceber. Aliás, no fórum só toleramos a falta de indentação quando forem pouquíssimas linhas de código. Sempre que o código estiver sem as tags de indentação, seremos forçados a colocá-las. Portanto, por favor, faça isso você mesmo, a fim de tornar nossa vida um pouco mais fácil. :)

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 29 Dez 2009 18:50
por billy1943
Pelo que eu havia entendido o valor dos segundos seria sempre fornecido num máximo de 59:99 segundos, ou seja, 59 segundos e 99 centésimos;

assim, a minha proposição foi mal interpretada e agora a refaço:

Entre com os tempos em uma variável alfanumérica (CTempo), então:

nhoras := val(substr(ctempo,1,2))
nminutos := val(substr(ctempo,4,2))
nsegundos := val(substr(ctempo,7,4))

Inicie variáveis para cada elemento, e venha de segundos para horas, no seguinte raciocínio:

1. se o resultado de segundos passar de 6000, adicione 1 minuto aos minutos anteriores e deixe em segundos o resultado de (segundos - 6000)

2. se o resultado de minutos ultrapassar de 60, acrescentar 1 hora às horas anteriores, e deixe em minutos o resultado de (minutos - 60)

Re: somando horas tipo Ex: HH:MM:SSSS

Enviado: 29 Dez 2009 20:37
por Maligno
Veja bem. O formato 99:99:99 diz o que? Normalmente significa HH:MM:SS (segundos sempre com duas casas). E o formato 99:99 sugere MM:SS, e não segundos e centésimos. Se você usar o format 99h99'99,99''. Aí sim, você tem a fração dos segundos (centésimos, milésimos (3 casas, claro), etc). É preciso usar um formato reconhecido. Senão, quem ver, não entenderá. Aliás, o título do tópico já está errado: tem segundos com 4 casas, o que não existe. Por isso a minha correção anterior.

somando horas tipo Ex: HH:MM:SS.sss

Enviado: 30 Dez 2009 09:42
por Pablo César
Com certeza que o formato está totalmente fora do padrão, assim como falou o Maligno, você Gilberto deveria separar o tempo de fração de segundos e estes valores somar aos do campo "segundo" (caso forem superiores a 1000), porque um milissegundo é o equivalente a um segundo. E para somar corretamente hh:mm:ss eu transformaria tudo em segundos como o colega asimoes ja disse com a função TIMETOSEC() e depois transformar para o formato hora como todos conhecem através do SECTOTIME() da CT.LIB

O seu código Gilberto, está um pouco confuso, fora que faltaram algumas variáveis a serem definidas, acho que isso foi por conta do bd que nãofoi diponibilizado. E ainda faltou ENDDO e ENDIF no seu código exemplo. Para comentar eu sempre testo os códigos fontes disponibilizados, mas desta vez eu não conseguí ao certo reproduzir sua situação.

Re: somando horas tipo Ex: HH:MM:SS'ss

Enviado: 30 Dez 2009 20:09
por Gilberto M Silva
desculpem pessoal na integra todo o codigo, da forma que está testei e está funcionando:

Código: Selecionar todos

*****************************************************************************
*****************************************************************************
FUNC CCLASSIF &Classificar por ordem de classificação
*****************************************************************************
SAVE SCREEN TO PRODENT
LIMPA22()
GO TOP
DO WHILE !EOF()
   CATEG:=CATEGO
   SELE B
   APPEND BLANK
   REPLACE APELID WITH CATEG+"  "+CATEG
   SELE A
   DO WHILE CATEG = CATEGO
      SAPEL:=APELID
      SHOR :=HORA
      TPIS1:=TPISTA1
      TPIS2:=TPISTA2
      TIVPI:=(TIVPIS+TIVPIS1)
      CDVEI:=CDVEIC
      SNOM :=NOME
      SBAN :=TOTBAN
      COD  :=CODCLI
      IF COMPLE1="SIM" .AND. COMPLE2="SIM"
         SELE B
         GO BOTTOM
         SEQ:=SEQUEN+1
         APPEND BLANK
         REPLACE SEQUEN  WITH SEQ
         REPLACE APELID  WITH SAPEL
         REPLACE CODCLI  WITH COD
         REPLACE HORA    WITH SHOR
         REPLACE TPISTA1 WITH TPIS1
         REPLACE TPISTA2 WITH TPIS2
         REPLACE TIVPIS  WITH TIVPI
         REPLACE CATEGO  WITH CATEG
         REPLACE CDVEIC  WITH CDVEI
         REPLACE NOME    WITH SNOM
         REPLACE TOTBAN  WITH SBAN
         SELE A
      ENDIF
      SKIP
   ENDDO
   SEEK CATEG
   DO WHILE CATEG = CATEGO
      SAPEL:=APELID
      SHOR :=HORA
      TPIS1:=TPISTA1
      TPIS2:=TPISTA2
      TIVPI:=(TIVPIS+TIVPIS1)
      CDVEI:=CDVEIC
      SNOM :=NOME
      SBAN :=TOTBAN
      IF COMPLE1="NAO" .OR. COMPLE2="NAO"
         IF COMPLE1="NAO" .AND. COMPLE2="NAO"
            SKIP
            LOOP
         ENDIF
         SELE B
         GO BOTTOM
         SEQ:=SEQUEN+1
         APPEND BLANK
         REPLACE SEQUEN  WITH SEQ
         REPLACE APELID  WITH SAPEL
         REPLACE CODCLI  WITH COD
         REPLACE HORA    WITH SHOR
         REPLACE TPISTA1 WITH TPIS1
         REPLACE TPISTA2 WITH TPIS2
         REPLACE TIVPIS  WITH TIVPI
         REPLACE CATEGO  WITH CATEG
         REPLACE CDVEIC  WITH CDVEI
         REPLACE NOME    WITH SNOM
         REPLACE TOTBAN  WITH SBAN
         SELE A
      ENDIF
      SKIP
   ENDDO
   SEEK CATEG
   DO WHILE CATEG = CATEGO
      SAPEL:=APELID
      SHOR :=HORA
      TPIS1:=TPISTA1
      TPIS2:=TPISTA2
      TIVPI:=(TIVPIS+TIVPIS1)
      CDVEI:=CDVEIC
      SNOM :=NOME
      SBAN :=TOTBAN
      IF COMPLE1="NAO" .AND. COMPLE2="NAO"
         SELE B
         GO BOTTOM
         SEQ:=SEQUEN+1
         APPEND BLANK
         REPLACE SEQUEN  WITH SEQ
         REPLACE APELID  WITH SAPEL
         REPLACE CODCLI  WITH COD
         REPLACE HORA    WITH SHOR
         REPLACE TPISTA1 WITH TPIS1
         REPLACE TPISTA2 WITH TPIS2
         REPLACE TIVPIS  WITH TIVPI
         REPLACE CATEGO  WITH CATEG
         REPLACE CDVEIC  WITH CDVEI
         REPLACE NOME    WITH SNOM
         REPLACE TOTBAN  WITH SBAN
         SELE A
      ENDIF
      SKIP
   ENDDO
ENDDO
SELE B
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[11]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "CODCLI"
CAMPO[3] = "APELID"
CAMPO[4] = "HORA"
CAMPO[5] = "TPISTA1"
CAMPO[6] = "TPISTA2"
CAMPO[7] = "CATEGO"
CAMPO[8] = "CDVEIC"
CAMPO[9] = "TOTBAN"
CAMPO[10]= "TIVPIS"
CAMPO[11]= "NOME"
DECLARE MASC[11]
MASC[1] = "@E 99"
MASC[2] = "@!"
MASC[3] = "@!"
MASC[4] = "@R 99:99:999"
MASC[5] = "@R 99:99:999"
MASC[6] = "@R 99:99:999"
MASC[7] = "@!"
MASC[8] = "@E 9999"
MASC[9] = "@E 99"
MASC[10]= "@E 99"
MASC[11]= "@!"
DECLARE CAB[11]
CAB[1] = "CLA"
CAB[2] = "Cod"
CAB[3] = "Apelido"
CAB[4] = "Tempo Total"
CAB[5] = "tempo Pista 1"
CAB[6] = "Tempo Pista 2"
CAB[7] = "Categoria"
CAB[8] = "Carro"
CAB[9] = "Bandeiras"
CAB[10]= "Iv.Pista"
CAB[11]= "Nome"
SET COLOR TO W+/R
@ 22,02 SAY "PgUp  PgDn  "+CHR(24)+"  "+CHR(25)+"  [ESC]Retorna "
SET COLO TO W+/B+*
@ 24,02 SAY " <Enter> para Imprimir "
SET COLOR TO GR/BR+
@ 24,02 SAY " <Enter> "
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
LIMPA22()
SET COLOR TO W+/R
IF LASTKEY() <> 27
   IMPCLIE()
   SET DEVICE TO SCREEN
   @ PROW()+22,25 SAY "FIM DA LISTAGEM"
ENDIF
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
USE TELASAI EXCLUSIVE
ZAP
SELE A
RETURN
************************************
FUNCTION IMPCLIE
IMPRIME()
IF LASTKEY() = 27
   RETURN .T.
ENDIF
LIMPA22()
@ 22,15 SAY "AGUARDE A IMPRESSAO !!!!!!"
PAGINA:= 1
KITIMPRI()
CABSIST()
CABCLI()
DO WHILE !EOF() .AND. INKEY() <> 27
   IF PROW() < 51
      @ PROW()+01,00  SAY SEQUEN  PICT "@E 99"
      @ PROW()+00,04  SAY "|"
      @ PROW()+00,05  SAY ALLTRIM(APELID)
      @ PROW()+00,28  SAY "|"
      @ PROW()+00,29  SAY TPISTA1 PICT "@R 99:99:999"
      @ PROW()+00,39  SAY "|"
      @ PROW()+00,40  SAY TPISTA2 PICT "@R 99:99:999"
      @ PROW()+00,50  SAY "|"
      @ PROW()+00,51  SAY HORA    PICT "@R 99:99:999"
      @ PROW()+00,62  SAY "|"
      @ PROW()+00,63  SAY TOTBAN  PICT "@E 99"
      @ PROW()+00,72  SAY "|"
      @ PROW()+00,73  SAY TIVPIS  PICT "@E 99"
      @ PROW()+00,76  SAY CATEGO
      @ PROW()+01,00  SAY "----|-----------------------|----------|----------|-----------|---------|-------------"
   ELSE
      PAGINA:= PAGINA + 1
      EJECT
      CABSIST()
      CABCLI()
      LOOP
   ENDIF
   SKIP
ENDDO
@ PROW()+01,00 SAY REPLICATE ("-",86)
SET COLO TO GR+/R+
EJECT
KITPRINT()
RETURN .T.
****************************
FUNC CABCLI 
@ PROW()+01,00  SAY "RELATORIO FINAL POR CATEGORIA E CLASSIFICAۂO"
@ PROW()+01,00  SAY REPLICATE ("-",86)
@ PROW()+01,00  SAY "CLA"
@ PROW()+00,04  SAY "|"
@ PROW()+00,05  SAY "COMPETIDOR"
@ PROW()+00,28  SAY "|"
@ PROW()+00,29  SAY "PISTA 1"
@ PROW()+00,39  SAY "|"
@ PROW()+00,40  SAY "PISTA 2"
@ PROW()+00,50  SAY "|"
@ PROW()+00,51  SAY "TEMPO TOTAL"
@ PROW()+00,62  SAY "|"
@ PROW()+00,63  SAY "BANDEIRAS"
@ PROW()+00,72  SAY "|IV"
@ PROW()+01,00  SAY "----|-----------------------|----------|----------|-----------|---------|-------------"

RETURN .T.
********************************************
FUNC CCLASSP1
SAVE SCREEN TO PRODENT
LIMPA22()
SET ORDER TO 3
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[9]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "APELID"
CAMPO[3] = "TPISTA1"
CAMPO[4] = "HORA"
CAMPO[5] = "CATEGO"
CAMPO[6] = "CDVEIC"
CAMPO[7] = "NOME"
DECLARE MASC[9]
MASC[1] = "@E 99"
MASC[2] = "@!"
MASC[3] = "@R 99:99:999"
MASC[4] = "@R 99:99:999"
MASC[5] = "@!"
MASC[6] = "@E 9999"
MASC[7] = "@!"
DECLARE CAB[9]
CAB[1] = "CLA"
CAB[2] = "Apelido"
CAB[3] = "tempo Pista 1"
CAB[4] = "Tempo Total"
CAB[5] = "Categoria"
CAB[6] = "Carro"
CAB[7] = "Nome"
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
RETURN
********************************************
FUNC CCLASSP2 &listar por pista
SAVE SCREEN TO PRODENT
LIMPA22()
SET ORDER TO 4
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[9]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "APELID"
CAMPO[3] = "TPISTA2"
CAMPO[4] = "HORA"
CAMPO[5] = "CATEGO"
CAMPO[6] = "CDVEIC"
CAMPO[7] = "NOME"
DECLARE MASC[9]
MASC[1] = "@E 99"
MASC[2] = "@!"
MASC[3] = "@R 99:99:999"
MASC[4] = "@R 99:99:999"
MASC[5] = "@!"
MASC[6] = "@E 9999"
MASC[7] = "@!"
DECLARE CAB[9]
CAB[1] = "CLA"
CAB[2] = "Apelido"
CAB[3] = "tempo Pista 2"
CAB[4] = "Tempo Total"
CAB[5] = "Categoria"
CAB[6] = "Carro"
CAB[7] = "Nome"
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
RETURN
********************************************
FUNC CCLASSP3
*FINALIDADE: CLASSIFICAÇÃO GERAL
********************************************
SAVE SCREEN TO PRODENT
LIMPA22()
SET ORDER TO 5
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[9]
CAMPO[1] = "APELID"
CAMPO[2] = "TPISTA1"
CAMPO[3] = "TPISTA2"
CAMPO[4] = "TOTBAN"
CAMPO[5] = "HORA"
CAMPO[6] = "CATEGO"
CAMPO[7] = "CDVEIC"
CAMPO[8] = "NOME"
DECLARE MASC[9]
MASC[1] = "@!"
MASC[2] = "@R 99:99:999"
MASC[3] = "@R 99:99:999"
MASC[4] = "@E 99"
MASC[5] = "@R 99:99:999"
MASC[6] = "@!"
MASC[7] = "@E 9999"
MASC[8] = "@!"
DECLARE CAB[9]
CAB[1] = "Apelido"
CAB[2] = "tempo Pista 1"
CAB[3] = "tempo Pista 2"
CAB[4] = "Band"
CAB[5] = "Tempo Total"
CAB[6] = "Categoria"
CAB[7] = "Carro"
CAB[8] = "Nome"
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
RETURN
****************************************************************************
****************************************************************************
FUNC ACRROM
* PROGRAMA:    ACRROM.PRG
* FINALIDADE:  fazer lan‡amento de tomada de tempo dos competidores
****************************************************************************
SELE A
USE ROMANE alias ROMANE1 shared
IF !NETERR()
   SET INDEX TO ROMANE1
ELSE
   MOTIVO()
   RETURN
ENDIF
SELE B
USE TELASAI
SELE C
USE DEVEDOR alias DEVEDOR1 shared
IF !NETERR()
   SET INDEX TO DEVEDOR1
ELSE
   MOTIVO()
   RETURN
ENDIF
SELE D
USE PUNICAO
TBAND:=BANDEIRA
TINVP:=INVPISTA
TAJTE:=AJTERCEI
TVIRA:=VIRADA
LIMPA22()
SET CURSOR ON
ALTETEMP:="N"
@22,02 SAY "Deseja Alterar Arquivo de Tempo?? <S>im ou <N>Æo:" GET ALTETEMP VALID(ALTETEMP$"SN")
READ
IF ALTETEMP = "S"
   ALTTEMPO()
   SET CURSOR OFF
   CLOSE ALL
   SET COLO TO GR+/R+
   REST SCREEN FROM MENUU
   RETURN
ENDIF
SELE A
*************************
CONTROLE:= 3
DATX  := DATE()
SFIR  := SPACE(04)
SMATE := SPACE(15)
SOBS  := SPACE(23)
RHORA := TIME()
RPLACA:= SPACE(07)
RLOCAL:= SPACE(23)
RPRECO:= 0
SNOMCLI:= SPACE(40)
SAPELI1:= SPACE(25)
SCARRO := SPACE(12)
SNUMERO:= 0
SCDCATE:= SPACE(01)
SCATEGO:= SPACE(20)
SCLUBE := "JEEP CLUBE DE PARELHAS-RN     "
SFABANO:= SPACE(11)
SEVENTO:= SPACE(21)
TINI := "0000000"
TFIN := "0000000"
SBAN := 0
SBAN1:= 0
SPIS := 0
SPIS1:= 0
SAJU := 0
SAJU1:= 0
SVIR := 0
SVIR1:= 0
STOM := 0
DO WHILE .T.
   SELE A
   LIMPA22()
   TELATEMP()
   SET CURSOR ON
   @ 08,02 GET DATX
   SET COLO TO W+/B+
   @ 24,02 SAY " <Esc>=Retorna; F4=Classifica‡Æo; F5=Pista 1; F6=Pista 2; F7=Tempo Geral "
   SET ORDER TO 6
   GO TOP
   SET KEY -3 TO CCLASSIF
   SET KEY -4 TO CCLASSP1
   SET KEY -5 TO CCLASSP2
   SET KEY -6 TO CCLASSP3
   READ
   SET KEY -3 TO
   SET KEY -4 TO
   SET KEY -5 TO
   SET ORDER TO 1
   LIMPA22()
   SET COLO TO GR+/B+
   IF LASTKEY() = 27
      SET CURSOR OFF
      CLOSE ALL
      SET COLO TO GR+/R+
      REST SCREEN FROM MENUU
      RETURN
   ENDIF
   DO WHILE .T.
      SFIR := 0
      VALO := 0
      SELE C
      GO BOTTOM
      @ 24,02 SAY "éltimo C¢digo Cadastrado:"
      @ 24,28 SAY CODCLI PICT "@R 9999"
      GO TOP
      SET COLO TO W+/B+
      @ 22,02 SAY "Digite o C¢digo do Competidor ou <Enter> para Consultar, <Esc> Retorna"
      @ 08,15 GET SFIR PICT "@E 9999"
      SET COLO TO GR+/B+
      @ 22,35 SAY "<Enter>"
      @ 22,59 SAY "<Esc>"
      READ
      SFIR :=STRZERO(SFIR,4)
      SNOME:=SPACE(40)
      LIMPA22()
      SET COLO TO GR+/B+
      IF LASTKEY() = 27
         EXIT
      ENDIF
      IF SFIR = "0000"
         SET ORDER TO 2
         PRODCLI()
         SET ORDER TO 1
      ENDIF
      SFIR := ALLTRIM(SFIR)
      SFIR := REPL("0",2-LEN(SFIR)) + SFIR
      LIMPA22()
      SEEK SFIR
      IF !EOF()
         SNOM := NOMCLI
         RQUANT:= 0
         RVALO := 0
         RLOCAL:= APELI1
         SET CURSOR ON
         DO WHILE .T.
            SET COLO TO W+/B
            @ 08,16 SAY SFIR
            @ 08,24 SAY NOMCLI
            @ 10,03 SAY APELI1
            RLOCK()
            @ 10,30 GET CARRO
            @ 10,45 GET NUMERO PICT "@E 9999"
            @ 10,55 SAY "("+CDCATE+")"+" "+CATEGO
            @ 12,03 SAY CLUBE
            @ 12,34 SAY "³"
            @ 12,36 SAY FABANO
            @ 12,48 GET EVENTO
            READ
            CLIE:=NOMCLI
            SNUM:=NUMERO
            SCAT:=CATEGO
            MARCATEM()
            LIMPA22()
            SET COLO TO GR+/B+
            EXIT
         ENDDO
         EXIT
      ENDIF
      SET CURSOR ON
      @ 08,16 SAY SFIR
      @ 08,23 GET SNOMCLI
      READ
      SAPELI1:= SNOMCLI
      @ 10,02 GET SAPELI1
      @ 10,30 GET SCARRO
      @ 10,45 GET SNUMERO PICT "@E 9999"
      READ
      SAVE SCREEN TO XUXA
      SET COLO TO W+/G+
      @ 10,54 GET SCDCATE VALID(SCDCATE$"MGFDE")
      @ 08,29 SAY " M = ORIGINAL    "
      @ 09,29 SAY " G = GAIOLA 4x2  "
      @ 10,29 SAY " F = FOR€A LIVRE "
      @ 11,29 SAY " D = DIESEL      "
      @ 12,29 SAY " E = ESPECIAL    "
      READ
      SCATE:=SPACE(01)
      REST SCREEN FROM XUXA
      IF SCDCATE = "M"
         SCATE:="ORIGINAL"
      ELSEIF SCDCATE = "G"
         SCATE:="GAIOLA 4x2"
      ELSEIF SCDCATE = "F"
         SCATE:="FOR€A LIVRE"
      ELSEIF SCDCATE = "D"
         SCATE:="DIESEL"
      ELSEIF SCDCATE = "E"
         SCATE:="ESPECIAL"
      ENDIF
      SET COLO TO W+/B+
      @ 10,55 SAY SCATE
      READ
      @ 12,02 GET SCLUBE
      @ 12,34 SAY "³"
      @ 12,35 GET SFABANO
      @ 12,48 GET SEVENTO
      READ
      APPEND BLANK
      REPLACE CODCLI   WITH SFIR
      REPLACE NOMCLI   WITH SNOMCLI
      REPLACE APELI1   WITH SAPELI1
      REPLACE CLUBE    WITH SCLUBE
      REPLACE CARRO    WITH SCARRO
      REPLACE NUMERO   WITH SNUMERO
      REPLACE CATEGO   WITH SCATE
      REPLACE CDCATE   WITH SCDCATE
      REPLACE FABANO   WITH SFABANO
      REPLACE EVENTO   WITH SEVENTO
      SLOCAL:=SAPELI1
      RLOCAL:=SAPELI1
      SNOM:=SNOMCLI
      SNUM:=NUMERO
      SCAT:=CATEGO
      MARCATEM()
      SET COLO TO GR/B+
      EXIT
   ENDDO
ENDDO
RETURN
********************************************************************
********************************************************************
FUNC MARCATEM
SELE A
SET ORDER TO 2
SEEK SFIR
COMP1:=COMP2:="SIM"
DO WHILE .T.
IF EOF()
   @ 14,02 GET TINI PICT "@R 99:99:999"
   @ 14,31 GET TFIN PICT "@R 99:99:999"
   READ
   IF TINI="0000000"
      COMP1:="NAO"
   ENDIF
   IF TFIN="0000000"
      COMP2:="NAO"
   ENDIF
   IF COMP1="SIM"
      SET COLO TO W+/B
      @ 14,20 SAY COMP1
   ELSE
      SET COLO TO R+/B
      @ 14,20 SAY COMP1
   ENDIF
   IF COMP2="SIM"
      SET COLO TO W+/B
      @ 14,48 SAY COMP2
   ELSE
      SET COLO TO R+/B
      @ 14,48 SAY COMP2
   ENDIF
   TTOT:=HORA
   TTOT:= VAL(TINI)+VAL(TFIN)
   TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
   IF VAL(TTO1)=6
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=7
     TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=8
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=9
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=0
      TTO2:=SUBSTR(TINI,5,1)
      TTO3:=SUBSTR(TFIN,5,1)
      IF TTO2="0" .AND. TTO3="0"
      ELSE
         TTOT:=TTOT+0000400
      ENDIF
   ENDIF
   TTO2:=SUBSTR(TINI,5,2)
   TTO3:=SUBSTR(TFIN,5,2)
   TTO4:=VAL(TTO2)+VAL(TTO3)
   IF TTO4>=100
      TTOT:=TTOT+0000400
   ENDIF
   TTOT:= STRZERO(TTOT,7)
   @ 14,59 SAY TTOT  PICT "@R 99:99:999"
   TTTOT:=TTOT
   @ 18,11 SAY TBAND PICT "@R 99"
   @ 18,27 SAY TINVP PICT "@R 99"
   @ 18,47 SAY TAJTE PICT "@R 99"
   @ 18,68 SAY TVIRA PICT "@R 99"
   SET COLO TO GR+/B
   @ 19,05 GET SBAN  PICT "@E 99"
   @ 19,13 GET SBAN1 PICT "@E 99"
   @ 19,22 GET SPIS  PICT "@E 99"
   @ 19,32 GET SPIS1 PICT "@E 99"
   @ 19,42 GET SAJU  PICT "@E 99"
   @ 19,53 GET SAJU1 PICT "@E 99"
   @ 19,63 GET SVIR  PICT "@E 99"
   @ 19,70 GET SVIR1 PICT "@E 99"
   READ
   TBANDD:=((SBAN+SBAN1)*(TBAND*10))+((SPIS+SPIS1)*(TINVP*10))
   TBANDD:=STRZERO(TBANDD,7)
   TTOT:= VAL(TTTOT)+VAL(TBANDD)
   TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
   IF VAL(TTO1)=6
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=7
     TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=8
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=9
      TTOT:=TTOT+0000400
   ENDIF
   DO WHILE .T.
      IF VAL(TTO1)=0
         TTO2:=SUBSTR(TINI,5,1)
         TTO3:=SUBSTR(TFIN,5,1)
         IF TTO2="0" .AND. TTO3="0"
         ELSE
            TTOT:=TTOT+0000400
         ENDIF
         EXIT
      ENDIF
      TTO2:=SUBSTR(TINI,5,2)
      TTO3:=SUBSTR(TFIN,5,2)
      TTO4:=VAL(TTO2)+VAL(TTO3)
      IF TTO4>=100
         IF TTO4<200
            TTOT:=TTOT+0000400
         ENDIF
      ENDIF
      EXIT
   ENDDO
   TTOT:= STRZERO(TTOT,7)
   @ 14,58 GET TTOT  PICT "@R 99:99:999"
   READ
   C:= "S"
   @ 22,02 SAY "Confirma este lan‡amento? (S/N)" GET C PICT "@! A" VALID(C $ "SN")
   READ
   IF C = "N" .OR. LASTKEY() = 27
      LIMPA22()
      SET COLO TO GR+/B+
      EXIT
   ENDIF
   SELE A
   GO BOTTOM
   CTDOR:=0
   DO WHILE SEQUEN = 0
      SKIP -1
      CTDOR:=CTDOR+1
      IF CTDOR >= 20
         EXIT
      ENDIF
   ENDDO
   SEQ:= SEQUEN+1
   APPEND BLANK
   REPLACE SEQUEN  WITH SEQ
   REPLACE DATA    WITH DATX
   REPLACE APELID  WITH RLOCAL
   REPLACE CODCLI  WITH SFIR
   REPLACE NOME    WITH SNOM
   REPLACE CATEGO  WITH SCAT
   REPLACE CDVEIC  WITH SNUM
   REPLACE TPISTA1 WITH TINI
   REPLACE TPISTA2 WITH TFIN
   REPLACE HORA    WITH TTOT
   REPLACE TIVPIS  WITH SPIS
   REPLACE AJTERC  WITH SAJU
   REPLACE TVIRAD  WITH SVIR
   REPLACE BANDEI  WITH SBAN
   REPLACE BANDEI1 WITH SBAN1
   REPLACE TOTBAN  WITH SBAN+SBAN1
   REPLACE TIVPIS1 WITH SPIS1
   REPLACE AJTERC1 WITH SAJU1
   REPLACE TVIRAD1 WITH SVIR1
   REPLACE COMPLE1 WITH COMP1
   REPLACE COMPLE2 WITH COMP2
   REPLACE OBSERVA WITH SOBS
ELSE
   RLOCK()
   SET COLO TO GR+/B
   @ 14,02 GET TPISTA1 PICT "@R 99:99:999"
   @ 14,31 GET TPISTA2 PICT "@R 99:99:999"
   READ
   IF TPISTA1="0000000"
      COMP1:="NAO"
   ENDIF
   IF TPISTA2="0000000"
      COMP2:="NAO"
   ENDIF
   IF COMP1="SIM"
      SET COLO TO W+/B
      @ 14,20 SAY COMP1
   ELSE
      SET COLO TO R+/B
      @ 14,20 SAY COMP1
   ENDIF
   IF COMP2="SIM"
      SET COLO TO W+/B
      @ 14,48 SAY COMP2
   ELSE
      SET COLO TO R+/B
      @ 14,48 SAY COMP2
   ENDIF
   TTOT:= VAL(TPISTA1)+VAL(TPISTA2)
   TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
   IF VAL(TTO1)=6
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=7
     TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=8
      TTOT:=TTOT+0000400
   ENDIF
   IF VAL(TTO1)=9
      TTOT:=TTOT+0000400
   ENDIF
   DO WHILE .T.
      IF VAL(TTO1)=0
         TTO2:=SUBSTR(TPISTA1,5,1)
         TTO3:=SUBSTR(TPISTA2,5,1)
         IF TTO2="0" .AND. TTO3="0"
         ELSE
            TTOT:=TTOT+0000400
         ENDIF
         EXIT
      ENDIF
      TTO2:=SUBSTR(TPISTA1,5,2)
      TTO3:=SUBSTR(TPISTA2,5,2)
      TTO4:=VAL(TTO2)+VAL(TTO3)
      IF TTO4>=100
         IF TTO4<200
            TTOT:=TTOT+0000400
         ENDIF
      ENDIF
      EXIT
   ENDDO
   TTOT:= STRZERO(TTOT,7)
   @ 14,59 SAY TTOT  PICT "@R 99:99:999"
   TTTOT:= TTOT
   @ 18,11 SAY TBAND PICT "@R 99"
   @ 18,27 SAY TINVP PICT "@R 99"
   @ 18,47 SAY TAJTE PICT "@R 99"
   @ 18,68 SAY TVIRA PICT "@R 99"
   SET COLO TO GR+/B
   @ 19,05 GET BANDEI  PICT "@E 99"
   @ 19,13 GET BANDEI1 PICT "@E 99"
   @ 19,22 GET TIVPIS  PICT "@E 99"
   @ 19,32 GET TIVPIS1 PICT "@E 99"
   @ 19,42 GET AJTERC  PICT "@E 99"
   @ 19,53 GET AJTERC1 PICT "@E 99"
   @ 19,63 GET TVIRAD  PICT "@E 99"
   @ 19,70 GET TVIRAD1 PICT "@E 99"
   READ
   TBANDD:=((BANDEI+BANDEI1)*(TBAND*10))+((TIVPIS+TIVPIS1)*(TINVP*10))
   TBANDD:=STRZERO(TBANDD,7)
   TTOT:= VAL(TTTOT)+VAL(TBANDD)
   TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
   DO WHILE .T.
      IF VAL(TTO1)=6
         TTOT:=TTOT+0000400
         EXIT
      ENDIF
      IF VAL(TTO1)=7
         TTOT:=TTOT+0000400
         EXIT
      ENDIF
      IF VAL(TTO1)=8
         TTOT:=TTOT+0000400
         EXIT
      ENDIF
      IF VAL(TTO1)=9
         TTOT:=TTOT+0000400
         EXIT
      ENDIF
      * IF VAL(TTO1)=0
      *    TTO2:=SUBSTR(TPISTA1,5,1)
      *    TTO3:=SUBSTR(TPISTA2,5,1)
      *    IF TTO2="0" .AND. TTO3="0"
      *    ELSE
      *       TTOT:=TTOT+0000400
      *       EXIT
      *    ENDIF
      * ENDIF
      *  TTO2:=SUBSTR(TPISTA1,5,2)
      *  TTO3:=SUBSTR(TPISTA2,5,2)
      *  TTO4:=VAL(TTO2)+VAL(TTO3)
      *  IF TTO4>=110
      *     TTOT:=TTOT+0000400
      *  ENDIF
      EXIT
   ENDDO
   TTOT:= STRZERO(TTOT,7)
   @ 14,58 GET TTOT  PICT "@R 99:99:999"
   READ
   TBAN:=BANDEI+BANDEI1
   REPLACE HORA    WITH TTOT
   REPLACE COMPLE1 WITH COMP1
   REPLACE COMPLE2 WITH COMP2
   REPLACE CATEGO  WITH SCAT
   REPLACE CDVEIC  WITH SNUM
   REPLACE TOTBAN  WITH TBAN
   UNLOCK
ENDIF
   EXIT
ENDDO
RETURN
********************************************************
FUNC TELATEMP
SET COLO TO GR/B+
@ 05,01 SAY "---------------------------------------------------------------------------------------------------------------------"
@ 06,01 SAY "³                                                                        ³"
SET COLO TO W+/GB+
@ 06,02 SAY "     T O M A D A   D E   T E M P O   D O S   C O M P E T I D O R E S    "
SET COLO TO GR/B+
@ 07,01 SAY "ÃÄDATAÄÄÄÄÄÄÄÂÄCODIGOÂÄNOME DO COMPETIDORÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 08,01 SAY "³            ³       ³                                                   ³"
@ 09,01 SAY "ÃÄAPELIDOÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÂÄCARRO MODELOÄÂÄNéMEROÄÂÄCATEGORIAÄÄÄÄÄÄÄÄÄÄ´"
@ 10,01 SAY "³                           ³              ³        ³                    ³"
@ 11,01 SAY "ÃÄCLUBE FILIADOÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÂÄFABRIC/ANOÄÂÄEVENTOÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 12,01 SAY "³                                ³            ³                          ³"
@ 13,01 SAY "ÃÄTEMPO PISTA 1ÄÂÄCOMPLETOUÄÂÄTEMPO PISTA 2ÄÂÄCOMPLETOUÄÂÄTEMPO TOTALÄÄÄÄ´"
@ 14,01 SAY "³               ³           ³               ³           ³                ³"
@ 15,01 SAY "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 16,01 SAY "³                                                                        ³"
SET COLO TO W+/GB+
@ 16,02 SAY "              P   E   N   A   L   I   D   A   D   E   S                 "
SET COLO TO GR/B+
@ 17,01 SAY "ÃÄBANDEIRASÄÄÄÄÄÂÄINVASÇO DE PISTAÄÄÂÄAJUDA DE TERCEIROSÄÂÄVIRADAÄÄÄÄÄÄÄÄ´"
@ 18,01 SAY "³Puni‡Æo:    Seg³Puni‡Æo:    Seg    ³Puni‡Æo:    Seg     ³Puni‡Æo:    Seg³"
@ 19,01 SAY "³P1:     P2:    ³ P1:       P2:     ³ P1:        P2:     ³ P1:    P2:    ³"
@ 20,01 SAY "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
*************************************************
PROCEDURE PRODUT2
SET KEY -1 TO
SAVE SCREEN TO PRODUT1
DO WHILE .T.
   @ 11,07 SAY "NOME DO CLIENT:"
   @ 11,22 GET SNOM
   @ 24,02 SAY "Digite um nome para pesquisa..."
   READ
   LIMPA22()
   SNOM := ALLTRIM(SNOM)
   SEEK SNOM
   IF EOF()
      LIMPA22()
      SET COLOR TO R/W
      MENSAGE("Nome n„o cadastrado........!!!!")
      LIMPA22()
      SNOM := SPACE(40)
      LOOP
   ENDIF
   EXIT
ENDDO
DECLARE CAMPO[6]
CAMPO[1] = "CODCLI"
CAMPO[2] = "NOMCLI"
CAMPO[3] = "APELI1"
CAMPO[4] = "CIDADE"
CAMPO[5] = "SALDOATU"

DECLARE MASC[6]
MASC[1] = "@R 9999"
MASC[2] = "@!"
MASC[3] = "@!"
MASC[4] = "@!"
MASC[5] = "@E 99,999,999.99"

DECLARE CAB[6]
CAB[1] = "C¢digo"
CAB[2] = "Nome do Cliente"
CAB[3] = "Apelido"
CAB[4] = "Cidade"
CAB[5] = "Saldo devedor"

SET COLOR TO W+/R
@ 22,02 SAY " PgUp  PgDn  "+CHR(24)+"  "+CHR(25)+"  Selecione o Cliente e Tecle[ENTER] "
SET COLOR TO GR/BR+
DBEDIT(12,20,21,76,CAMPO,"",MASC,CAB)
LIMPA22()
SNOM := NOMCLI
RESTORE SCREEN FROM PRODUT1
SET KEY -1 TO PRODUT2
SET ORDER TO 1
SET COLO TO GR/B+
RETURN
*******************************
PROCEDURE ORCAM
SAVE SCREEN TO XUXA
SELE C
GO BOTTOM
SKIP -12
SET KEY -1 TO
LIMPA22()
SET COLOR TO W/GB+
DECLARE CAMPO[6]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "PRODUT"
CAMPO[3] = "QUANTI"
CAMPO[4] = "PUNIT"
CAMPO[5] = "VLTOT"
CAMPO[6] = "CODIGO"
DECLARE MASC[6]
MASC[1] = "@E 999"
MASC[2] = "@R !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
MASC[3] = "@E 9,999.999"
MASC[4] = "@E 9,999.99"
MASC[5] = "@E 99,999.99"
MASC[6] = "@!"
DECLARE CAB[6]
CAB[1] = "Item"
CAB[2] = "Nome do Produto"
CAB[3] = "Quant"
CAB[4] = "P.Unit"
CAB[5] = "Total"
CAB[6] = "Codigo"
SET COLOR TO W+/R
@ 22,02 SAY " PgUp  PgDn  "+CHR(24)+"  "+CHR(25)+"  <Enter>=Sai "
SET COLOR TO W/GB+
DBEDIT(04,01,18,78,CAMPO,"",MASC,CAB)
SET KEY -1 TO ORCAM
SET COLO TO GR/B+
REST SCREEN FROM XUXA
RETURN
:))