ERRO: UNDEFINED SYMBOL AFTER LIBRARY SEARCH
Moderador: Moderadores
ERRO: UNDEFINED SYMBOL AFTER LIBRARY SEARCH
SYMBOL: FIRTS REFERENCE
EXTENSO CHEQUE.OBJ
PRT CHEQUE.OBJ
MESEXT CHEQUE.OBJ
O cheque.prg tem uma rotina de imprimir cheque. O funcs.prg tem as function EXTENSO, PRT e MESEXT, que sao usadas para imprimir o cheque.
Acontece que na hora de imprimir aparece um erro na linha que tem o comando EXTENSO.
Qual seria o problema?
Obrigado
Ewerton
EXTENSO CHEQUE.OBJ
PRT CHEQUE.OBJ
MESEXT CHEQUE.OBJ
O cheque.prg tem uma rotina de imprimir cheque. O funcs.prg tem as function EXTENSO, PRT e MESEXT, que sao usadas para imprimir o cheque.
Acontece que na hora de imprimir aparece um erro na linha que tem o comando EXTENSO.
Qual seria o problema?
Obrigado
Ewerton
Código: Selecionar todos
FUNCS.PRG
*---------------------------------------------------------------------
* PROGRAMA_____: PRT()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*---------------------------------------------------------------------
function prt(pflag)
*---------------------------------------------------------------------
static ST_prtativa:=.f.
local Tvolta := ST_prtativa
local TarqSpool := Set( _SET_PRINTFILE )
if ( Pflag != NIL ) // SE FOR PASSADO UM PARAMETRO
ST_Prtativa := ( Pflag )
set print ( Pflag )
set console (.NOT. Pflag )
set cursor (.NOT. Pflag )
Set(_SET_DEVICE, iif( Pflag, "PRINTER", "SCREEN" ) )
if ( len( TarqSpool ) > 0 )
Set( _SET_PRINTFILE, TarqSpool, .T. )
endif
endif
return ( Tvolta )
************************************************
*---------------------------------------------------------------------
* PROGRAMA_____: EXTENSO()
* FUNۂO_______: RETORNA O EXTENSO DE UM VALOR.
*---------------------------------------------------------------------
function extenso(m_val)
*---------------------------------------------------------------------
local Tstr := strzero( abs( m_val ), 18, 2 )
local Acifra := {{'TRILHAO' , 'TRILHOES'},;
{'BILHAO' , 'BILHOES' },;
{'MILHAO' , 'MILHOES' },;
{'MIL' , 'MIL' },;
{' ' , ' ' },;
{'CENTAVO' , 'CENTAVOS'} }
local Tx // Contador temporario
local Textenso := ' ' // String do valor por extenso
local Tsubs := ' ' // Subgrupo tres em tres casas do str
local Tcentavos := val( substr( Tstr, 17 ) )
if (m_val > 0)
if ( Tcentavos > 0 )
Textenso:=ExtCem( strzero( Tcentavos, 3 ) ) + ;
Acifra[ 6 ] [ iif( Tcentavos = 1, 1, 2 ) ]
endif
if ( int( m_val ) > 0 )
Textenso:= iif(int(m_val) = 1,;
'REAL','REAIS') +;
iif(Tcentavos > 0, ' E ','' ) + Textenso
endif
for Tx := 5 to 1 step -1
if ( val(Tsubs := substr(Tstr,(Tx * 3) -2,3)) > 0 )
Textenso:=ExtCem( Tsubs ) + Acifra[ Tx ] ;
[iif(val(Tsubs)= 1, 1 , 2)] + ' ' + Textenso
endif
next Tx
endif
return( StripDouble( Textenso, ' ' ) )
*------------------------------------------------------------------------*
* CHEQUE PARA: BANCO DO B R A S I L
* PROGRAMA_____: PRINTCHE()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*-----------------------------------------------------------------------------*
function Printche( m_val, m_nom, m_cid, m_ven)
*-----------------------------------------------------------------------------*
local Text := extenso(m_val) + space(2)
local Tpos := rat(" ", substr(Text, 1, 72) )
local Aextenso := { substr( Text, 1, Tpos+1)+ repl("*",90 - Tpos),substr(Text,Tpos+1)+ repl("*",97 - (len(Text) - Tpos ))}
local Tx
PRT( .T. )
setprc( 0, 0 )
devpos( 0, 0 )
?? PRINTER_INIT
if ( m_val = 10000000000 )
devout( chr(15) )
@ 2,107 say m_val picture "@e ******,***,***,***,***.**"
devout( "##" )
else
devout( chr(18) )
@ 2,62 say m_val picture "@e **,***,***,***.**"
devout ( "#"+ chr(15))
endif
@ 5,43 say Aextenso[1]
@ 7,35 say Aextenso[2] + chr(18)
if (m_nom != nil)
@ 9,20 say m_nom
endif
@ 11,45 say substr( m_cid, 1, 11)
@ 11,57 say strzero(day(m_ven),2)+space(4)+ mesext2(m_ven)
@ 11,77 say right(str(year(m_ven),4),2)
DevPos(LINES_PER_PAGE, 0)
setprc(0, 0)
?? PRINTER_END
PRT(.F.)
RETURN(NIL)
*------------------------------------------------------------------------*
* CHEQUE PARA: BANCO DO B R A D E S C O
* PROGRAMA_____: PRINTCHEQUE2()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*-----------------------------------------------------------------------------*
#define LINES_PER_PAGE 24 //CHEQUE
#define PRINTER_INIT chr(27)+"C"+chr(LINES_PER_PAGE)+chr(27)+"0" //CHEQUE
#define PRINTER_END chr(27)+"C"+chr(66)+chr(27)+"2" //CHEQUE
*-----------------------------------------------------------------------------*
function Printcheque2( m_val, m_nom, m_cid, m_ven)
*-----------------------------------------------------------------------------*
local Text := extenso(m_val) + space(2)
local Tpos := rat(" ", substr(Text, 1, 90) )
local Aextenso := { substr( Text, 1, Tpos+1)+ repl("*",100 - Tpos),substr(Text,Tpos+1)+ repl("*",103 - (len(Text) - Tpos ))}
local Tx
PRT( .T. )
setprc( 0, 0 )
devpos( 0, 0 )
?? PRINTER_INIT
if ( m_val = 10000000000 )
devout( chr(15) )
@ 2,91 say m_val picture "@e ******,***,***,***,***.**"
devout( "##" )
else
devout( chr(18) )
@ 2,46 say m_val picture "@e **,***,***,***.**"
devout ( "#"+ chr(15))
endif
@ 5,08 say Aextenso[1]
@ 7,08 say Aextenso[2] + chr(18)
if (m_nom != nil)
@ 9,00 say m_nom
endif
@ 11,29 say substr( m_cid, 1, 11)
@ 11,41 say strzero(day(m_ven),2)+space(4)+ mesext2(m_ven)
@ 11,61 say right(str(year(m_ven),4),2)
DevPos(LINES_PER_PAGE, 0)
setprc(0, 0)
?? PRINTER_END
PRT(.F.)
RETURN(NIL)
SET PROCEDURE TO FUNCS
NO CHEQUE.PRG ONDE TEM A ROTINA DE IMPRIMIR O CHEQUE.
Código: Selecionar todos
function prx0318()
sele 1
use bancaria alias ban shar
set index to ind_ch8, ind_ch7
sele 2
use bxconta alias bai shar
set index to ind_ch9, ind_ch6
private m_doc,m_emi,m_nom,m_obs,m_ven,m_val,m_cid
sele 1
te_cli1=savescreen(06,03,18,74)
centra(02,"®¯ EMISSAO DE CHEQUES ®¯")
m_doc:=0
m_emi:=date()
m_nom:=space(40)
m_obs:=space(40)
m_val:=0
m_ven:=date()
m_cid:=space(10)
m_cid:="FRANCA-SP "
m_tip:=space(1)
while .t.
mens("Tecle <ESC> p/ Sair!")
setcursor(2)
cor(4)
@ 05,03 clear to 18,74
@ 05,03 to 18,74
apaga(5,60,5,68,"n/g","n/g")
@ 05,60 say "Inclusao"
cor(4)
@ 05,59 say "["
@ 05,68 say "]"
sombra(06,05,18,74)
@ 06,10 say "Tipo Banco:"
@ 08,10 say "N. Cheque.:"
@ 08,35 say "Emissao:"
@ 10,10 say "Nominal...:"
@ 12,10 say "Vencimento:"
@ 12,35 say "Valor..:"
@ 14,10 say "Cidade....:"
@ 16,10 say "Observacao:"
@ 06,42 say "[1] BRADESCO / [2] BRASIL"
cor(6)
@ 06,22 get m_tip pict "@!" valid m_tip $ "12"
read
if m_tip == "1"
@ 06,25 say "BRADESCO"
else
@ 06,25 say "BRASIL"
endif
@ 08,22 get m_doc pict "@!"
@ 08,44 get m_emi pict "##/##/####"
@ 10,22 get m_nom pict "@!"
@ 12,22 say m_ven pict "##/##/####"
@ 12,44 say m_val pict "@E 99,999,999.99"
@ 14,22 say m_cid pict "@!"
@ 16,22 say m_obs pict "@!"
read
if lastkey()=27
dbcloseall()
return
endif
if empty(m_doc)
mens("Lancamento Invalido ! | <ENTER> Retorna")
tone(900,9)
inkey(0)
loop
endif
mens("Tecle <ESC> p/ Sair!")
sele 2
set order to 2
seek m_doc
if found()
mens("Cheque ja Compensado ! | <ENTER> Retorna")
tone(900,9)
inkey(0)
loop
else
sele 1
set order to 2
seek m_doc
if found()
mens("Cheque ja Cadastrado ! | <ENTER> Retorna")
tone(900,9)
inkey(0)
loop
endif
endif
sele 1
mens("Tecle <ESC> p/ Sair!")
setcursor(2)
cor(6)
@ 12,22 get m_ven pict "##/##/####" valid(m_ven!=ctod(" / / "))
read
if (m_ven<m_emi)
mens("Data do Vencimento menor que a Data de Emissao!")
tone(900,9)
inkey(0)
mens("Tecle <ESC> p/ Voltar!")
loop
endif
mens("Tecle <ESC> p/ Voltar!")
setcursor(2)
cor(6)
@ 12,44 get m_val pict "@E 99,999,999.99" valid(m_val>0)
read
if lastkey()=27
loop
endif
@ 14,22 get m_cid pict "@!"
@ 16,22 get m_obs pict "@!"
read
if lastkey()=27
loop
endif
mens("Tecle <ENTER> p/ Imprimir!")
inkey(0)
impress()
if m_tip == "1"
printcheque2(m_val,m_nom,m_cid,m_ven)
else
printche(m_val,m_nom,m_cid,m_ven)
endif
confirma("Inclusao","Cheque")
Cresp=space(1)
@ 23,78 get Cresp pict "@!" valid Cresp $ "SN"
read
If Cresp ="S"
mens("Gravando...")
appe blan
repl doc with m_doc
repl emi with m_emi
repl nom with m_nom
repl obs with m_obs
repl ven with m_ven
repl val with m_val
repl cid with m_cid
unloc()
m_doc:=0
m_emi:=date()
m_nom:=space(40)
m_obs:=space(40)
m_val:=0
m_ven:=date()
m_cid:=space(10)
m_cid:="FRANCA-SP "
loop
endif
If Cresp ="N"
unloc()
loop
endif
If LastKey() = 27
mens("Tecle <ESC> p/ Sair!")
loop
endif
enddo
dbcloseall()
lib_var()
RestScreen=(05,06,20,75,tecli1)
return
SE EU COMPILO SEPARADAMENTE O CHEQUE.PRG FUNCIONA, MAS QUANDO EU ACRESCENTO ESTA ROTINA NO SISTEMA, DA ERRO NA HORA DE IMPRIMIR ( NA LINHA ONDE TEM A FUNCAO EXTENSO()
Tente copiar a mensagem de erro conforme ela aparece no seu vídeo. Seu problema não parece estar numa função propriamente, mas na identificação de uma biblioteca para o linker. Se ele não encontrar, solta uma mensagem parecida, mas não é bem essa. E a julgar pelo título do tópico é bem isso mesmo.SYMBOL: FIRTS REFERENCE
EXTENSO CHEQUE.OBJ
PRT CHEQUE.OBJ
MESEXT CHEQUE.OBJ
Não precisa postar a função, que não vai refrescar nada. É perda de tempo. Poste o seu script de linkedição ou uma cópia da linha de comando que executa o linker.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Diga como você compila e linka seu programa. O script ou linha de comando, seja lá a forma que você usa.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Código: Selecionar todos
creating temporary work file
creating temporary work file c:\windows\temp\rt0011775.swp
UNDEFINED SYMBOL AFTER LIBRARY SEARCH:
SYMBOL FIRST REFERENCE
EXTENSO FUNCS.OBJ
PRT FUNCS.OBJ
MESEXT2 FUNCS.OBJDepois dê uma olhada no NG do Clipper e veja que SET PROCEDURE é uma coisa do tempo do guaraná com rolha. Ninguém mais usa isso. Há outras formas de agregar objetos ao seu executável que são bem mais eficientes.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Sem ver seu script de linkedição ou linha de comando do linker, não tem como sugerir precisamente um conserto. 
Mas, é provável que haja um erro na identificação de FUNCS.OBJ para o linker. Por isso que eu digo que é melhor ver como você está linkando.
Mas, é provável que haja um erro na identificação de FUNCS.OBJ para o linker. Por isso que eu digo que é melhor ver como você está linkando.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Código: Selecionar todos
@echo off
del *.ovl
cls
@echo Inicio do Processo de COMPILACAO !!!
cls
if not exist cli0001.obj clipper cli0001 -q
if errorlevel 1 goto fim
cls
if not exist for0001.obj clipper for0001 -q
if errorlevel 1 goto fim
cls
if not exist fat0001.obj clipper fat0001 -m -q
if errorlevel 1 goto fim
cls
if not exist uti0001.obj clipper uti0001 -q
if errorlevel 1 goto fim
cls
if not exist fin0001.obj clipper fin0001 -m -q
if errorlevel 1 goto fim
cls
if not exist pro0001.obj clipper pro0001 -m -q
if errorlevel 1 goto fim
cls
if not exist vend001.obj clipper vend001 -m -q
if errorlevel 1 goto fim
cls
if not exist nota001.obj clipper nota001 -q
if errorlevel 1 goto fim
cls
if not exist bole001.obj clipper bole001 -q
if errorlevel 1 goto fim
cls
if not exist funcs.obj clipper funcs -q
if errorlevel 1 goto fim
cls
if not exist esto001.obj clipper esto001 -q
if errorlevel 1 goto fim
cls
if not exist inicio.obj clipper inicio -m -q
if errorlevel 1 goto fim
cls
if not exist ficha01.obj clipper ficha01 -q
if errorlevel 1 goto fim
cls
if not exist rela001.obj clipper rela001 -q
if errorlevel 1 goto fim
cls
if not exist rela002.obj clipper rela002 -q
if errorlevel 1 goto fim
cls
if not exist tela001.obj clipper tela001 -q
if errorlevel 1 goto fim
cls
if not exist cheque01 clipper cheque01 -q
if errorlevel 1 goto fim
cls
rtlink @ercs
cls
inicio
cls
:fim
Código: Selecionar todos
file inicio
lib clbc,clbcmat,relogio,super
beginarea
section into fat_001 file fat0001
section into cli_001 file cli0001
section into for_001 file for0001
section into pro_001 file pro0001
section into fin_001 file fin0001
section into ven_001 file vend001
section into uti_001 file uti0001
section into not_001 file nota001
section into bol_001 file bole001
section into est_001 file esto001
section into fuc_001 file funcs
section into fih_001 file ficha01
section into rel_001 file rela001
section into rel_002 file rela002
section into tel_001 file tela001
section into che_001 file cheque01
endarea
Nao sei se o problema e a compilacao, porque tem varias funcoes no FUNCS.PRG que é usado no sistema. O erro esta apenas nessas 3 funcoes mencionadas anteriormente.
Obs: Compilei o cheque01.PRG separadamente, criei o EXE, e funcionou corretamente, mas quando coloco essa funcoes no meu sistema, no arquivo Funcs.prg, a rotima de imprimir cheque não funciona.
Experimente colocar sua FUNCS.OBJ como primeira da lista do seu script.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
mudei, coloquei o Funcs.obj no inicio da compilacao....deu o mesmo erro, e uma mensagem
warning wrt0022: EXE may not execute properly -- undefined symbols
Estas funcoes, não estaria em conflito com as outras que tenho mno funcs.prg? Talves algum comando, ou nome repetido? Porque quando eu separo apenas as funcoes que uso para imprimir os cheques, e compilo, funciona, e quando eu as coloco no funcs.prg, onde tem muitas funcoes, não da certo.
warning wrt0022: EXE may not execute properly -- undefined symbols
Estas funcoes, não estaria em conflito com as outras que tenho mno funcs.prg? Talves algum comando, ou nome repetido? Porque quando eu separo apenas as funcoes que uso para imprimir os cheques, e compilo, funciona, e quando eu as coloco no funcs.prg, onde tem muitas funcoes, não da certo.
Pensei que poderia estar havendo um conflito de nomes no FUNCS com algum objeto anterior a ele. Às vezes acontece. O arquivo que vem primeiro causa um conflito com o que vem depois.
Você disse que CHEQUE01 funciona e gera um EXE se sozinha. Mas nesse script, do jeito que está, com o FUNCS.OBJ, essa função de CHEQUE01 deixa de funcionar. Não gera o EXE ou o erro é na hora de executar?
Você disse que CHEQUE01 funciona e gera um EXE se sozinha. Mas nesse script, do jeito que está, com o FUNCS.OBJ, essa função de CHEQUE01 deixa de funcionar. Não gera o EXE ou o erro é na hora de executar?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Aquela mensagem de erro que você passou é do linker. Ou seja, é de tempo de linkedição. Se na hora de imprimir, quando vai executar a função EXTENSO, dá erro, é um erro de tempo de execução. E essa mensagem? Qual é?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ERRO BASE/1001 UNDEFINED FUNCTION EXTENSO - ESSE ERRO OCORRE NA HORA DE IMPRIMIR
Código: Selecionar todos
*------------------------------------------------------------------------*
* CHEQUE PARA: BANCO DO B R A D E S C O
* PROGRAMA_____: PRINTCHEQUE2()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*-----------------------------------------------------------------------------*
#define LINES_PER_PAGE 24 //CHEQUE
#define PRINTER_INIT chr(27)+"C"+chr(LINES_PER_PAGE)+chr(27)+"0" //CHEQUE
#define PRINTER_END chr(27)+"C"+chr(66)+chr(27)+"2" //CHEQUE
*-----------------------------------------------------------------------------*
function Printcheque2( m_val, m_nom, m_cid, m_ven)
*-----------------------------------------------------------------------------*
**********************************
**********************************
local Text := extenso(m_val) + space(2) ****ERRO NESSA LINHA
*******************************
*********************************
local Tpos := rat(" ", substr(Text, 1, 90) )
local Aextenso := { substr( Text, 1, Tpos+1)+ repl("*",100 - Tpos),substr(Text,Tpos+1)+ repl("*",103 - (len(Text) - Tpos ))}
local Tx
PRT( .T. )
setprc( 0, 0 )
devpos( 0, 0 )
?? PRINTER_INIT
if ( m_val = 10000000000 )
devout( chr(15) )
@ 2,91 say m_val picture "@e ******,***,***,***,***.**"
devout( "##" )
else
devout( chr(18) )
@ 2,46 say m_val picture "@e **,***,***,***.**"
devout ( "#"+ chr(15))
endif
@ 5,08 say Aextenso[1]
@ 7,08 say Aextenso[2] + chr(18)
if (m_nom != nil)
@ 9,00 say m_nom
endif
@ 11,29 say substr( m_cid, 1, 11)
@ 11,41 say strzero(day(m_ven),2)+space(4)+ mesext2(m_ven)
@ 11,61 say right(str(year(m_ven),4),2)
DevPos(LINES_PER_PAGE, 0)
setprc(0, 0)
?? PRINTER_END
PRT(.F.)
RETURN(NIL)


