******************* EIS AQUI O TAL TESTE DE LABORATORIO ****
FUNCTION MAIN()
SET ECHO OFF
SET ALTERNATE OFF
*SET BELL OFF
*SET CARRY OFF
SET CENTURY ON
SET CONFIRM OFF
SET CONSOLE ON
SET DATE FRENCH
SET DECIMALS TO 2
SET DELETE ON
SET DELIMITERS OFF
SET DEVICE TO SCREE
SET ESCAPE ON
SET EXACT ON
SET FIXED OFF
SET HEADING ON
SET INTENSITY ON
SET MENU ON
SET PRINT OFF
SET SAFETY ON
SET SCOREBOARD OFF
SET STATUS OFF
SET TALK OFF
SET UNIQUE OFF
SET WRAP ON
SET CURSOR ON
*
*======================== para o xharbour
set dbflockscheme to 2 // PARA USO JUNTO COM O CLIPPER
*****====
REQUEST HB_NOMOUSE
REQUEST HB_LANG_PT
HB_LANGSELECT("PT")
REQUEST HB_CODEPAGE_PT850
HB_SETCODEPAGE("PT850")
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
DBSETDRIVER("DBFCDX")
*------
COR0:= 'W/W,N/W,W/W' && FUNDO
COR1:= 'N/BG' && QUADROS
COR2:= 'B/BG' && APOS GET'S OU SAY'S
COR3:= 'B/W' && SELECAO
COR4:= 'R/BG' && ATENCAO OU CHAMATIVO
OK_TESTE:= .T.
*-----------------------------
dir_c:= 'c:\Brotoc'
dir_MAE:= 'g:\Brotoc'
arq_prot:= DIR_C+'\ARQ_PROT.RTF'
arq:= dir_MAE+'\mov_2007.dbf'
*---------------
ABRE_WORD(ARQ_PROT)
sele 1
use &arq SHARE
******* SE USAR EXCLUSIVE PASSA NOS 3 (TRES) TESTES
*** NO MODE SHARE NAO PASSA DO 2. (SEGUNDO TESTE)

?
teste(1)
teste(2)
teste(3)
close
QUIT
RETURN(NIL)
*================================= FIM DO TESTE =========
function Abre_word
*************************
LOCAL oWord,oText
PRIVATE oDlgHabla:=NIL
parameters carq
*MsgRun("Aguarde Gerando Documento de Word...")
*RenameFile( cARQ, "TEMP.DOC" )
*cARQ="TEMP.DOC"
TRY
oWord := GetActiveObject( "Word.Application" )
CATCH
TRY
oWord := CreateObject( "Word.Application" )
CATCH
* MsgStop("Não foi Possivel Achar o Word Instalado","Aviso do Sistema")
MOSTRA(LIN+QUANT,COL+1,"Não foi Possivel Achar o Word Instalado ")
IF oDlgHabla#NIL
oDlgHabla:CLOSE()
ENDIF
RETURN
END
END
IF !FILE(cARQ)
* MsgStop("Não Foi Localizar e Abrir o Documento de Word")
MOSTRA(LIN+QUANT,COL+1,"Não Foi Localizar e Abrir o Documento de Word")
IF oDlgHabla#NIL
oDlgHabla:CLOSE()
ENDIF
RETURN
ENDIF
oWord:Documents:Open(cARQ) //ABRE O WORD
oWord:Visible := .T. //PARA VISUALIZAR OU NÃO ANTES
oWord:WindowState := 1
** oWord:PrintOut() //PARA IMPRIMIR DIRETO
IF oDlgHabla#NIL
oDlgHabla:CLOSE()
ENDIF
RETURN(nil)
*------------------
FUNCTION TESTE
PARAMETERS N_TESTE
OK_TESTE:= IF(N_TESTE = 1,.T., OK_TESTE)
* if dir_mae != dir_c .AND. OK_TESTE
*** so quando chama o word acontese isto, no xharbour
*** confronto na gravacao do 2. registro, quando e de dir_mae,
*** perde-se o indexkey(), chave indexadora ou arquivo, motivo

* setcolor(cor1)
clear
? 'TESTE NUM '+STR(N_TESTE,5)
? 'DIR_MAE = '+DIR_MAE
? dbf()
? 'antes do frlock()'
? indexkey()
vprot:= 'teste '+STR(N_TESTE,2)+' '+TIME()
if frlock('I',0)
? 'antes do repl'
? indexkey()
repl protocolo with vprot
? 'apos repl'
funlock()
? 'APOS FUNLOCK()'
* endif
WAIT '-- OK ---'
endif
RETURN(NIL)
*------------------
FUNCTION MOSTRA(LIN_M,COL_M,MSG_M,ok_m)
PRIVATE TELA_M,COR_ANTES,COR4B,POS_M
TELA_M = SAVESCREEN(LIN_M - 1, COL_M - 1, LIN_M + 1, COL_M + LEN(MSG_M) )
ok_m:= if(ok_m = nil, .f., ok_m)
if ok_m
setcolor(cor1)
@ lin_m-1,col_m-1 CLEAR TO lin_m+1,col_m+len(msg_m)
@ lin_m-1,col_m-1 TO lin_m+1,col_m+len(msg_m)
endif
SETCOLOR(COR4+'*')
@ LIN_M,COL_M SAY MSG_M
SET CONSOLE OFF
WAIT ''
SET CONSOLE ON
RESTSCREEN(LIN_M - 1, COL_M - 1, LIN_M + 1, COL_M + LEN(MSG_M), TELA_M )
SETCOLOR(COR2)
RETURN(NIL)
*-------------------------------------
FUNCTION FRLOCK(OPCAO,REG_ALT)
PRIVATE FLAG,TEMPO
FLAG = .F.
TEMPO = 0
OPCAO:= UPPER(OPCAO)
IF OPCAO = 'I' && PARA INCLUSAO
DO WHILE TEMPO <= 10
APPEND BLANK
IF (! NETERR())
if RLOCK()
FLAG = .T.
TEMPO = 100
endif
endif
if ! flag
INKEY(0.5)
TEMPO = TEMPO + 0.5
endif
ENDDO
IF ! FLAG
MOSTRA(23,1,'APPE Blank ao Arquivo '+dbf()+' Nao Disponivel')
FUNLOCK()
ENDIF
ELSE && PARA ALTERACOES E EXCLUSOES
IF RECNO() != REG_ALT
GOTO REG_ALT
ENDIF
DO WHILE TEMPO <= 10
IF (!NETERR())
if RLOCK()
FLAG = .T.
TEMPO = 100
endif
endif
if ! flag
INKEY(0.5)
TEMPO = TEMPO + 0.5
ENDIF
ENDDO
IF ! FLAG
MOSTRA(23,1,'ACESSO ao Registro '+STR(REG_ALT, 5)+' do Arquivo '+DBF()+' NAO Disponivel')
FUNLOCK()
ENDIF
ENDIF
RETURN(FLAG)
*-----------------------------------
FUNCTION FUNLOCK()
COMMIT
UNLOCK
RETURN(NIL)
*-----------------------------------