Olá amigo,
Hoje estava navegando pelo site e vi sua mensagem. Se vc ainda está precisando, dê uma verificadinha no saite do toledo. Lá tem uma rotian para impressao do Código de Barras. O Helpdesk da CAIXA não funciona. Os caras não sabem nada.
Veja no seguinte endereço a rotina completa:
https://pctoledo.org/download/cop ... t&deonde=2
Minhas boletas foram homologadas sem problemas.
A rotina que uso é a seguinte (extraído do programa acima):
//===========================================================================//
// //
// Retorna D¡gito de Controle M¢dulo 10 //
// //
//===========================================================================//
static function BLQ_DG10(mCDBC,mNMOG)
local mVLDG,mSMMD,mCTDG,mRSDV,mDCMD
mSMMD:=0
for mCTDG:=1 to len(mNMOG)
mVLDG:=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*iif(mod(mCTDG,2)==0,1,2)
mSMMD+=mVLDG-iif(mVLDG>9,9,0)
endfor
mRSDV:=mod(mSMMD,10)
mDCMD:=iif(mRSDV==0,"0",str(10-mRSDV,1))
return mDCMD
//===========================================================================//
// //
// Retorna D¡gito de Controle M¢dulo 11 (p/ Banco) //
// //
//===========================================================================//
static function BLQ_DG11(mCDBC,mBSDG,mFGCB,mNMOG)
local mSMMD,mCTDG,mSQMP,mRSDV,mDCMD
default mFGCB to FALSE
mSMMD:=0
mSQMP:=2
for mCTDG:=1 to len(mNMOG)
mSMMD+=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*(mSQMP)
mSQMP:=iif(mSQMP==mBSDG,2,mSQMP+1)
endfor
mRSDV:= 11 - mod(mSMMD,11)
IF mFGCB
mDCMD:=iif(mRSDV==0 .or. mRSDV==1 .or. mRSDV > 9,"1",str(mRSDV,1))
ELSE
mDCMD:=iif(mRSDV > 9, "0", str(mRSDV,1))
ENDIF
return mDCMD
Tenho essa outra rotina mas ela e feita para o minigui
********************************************************
function modulo11_dvg()
********************************************************
local mSMMD,mCTDG,mSQMP,mRSDV,mDCMD
mNMOG:= (InputBox ('Numero '))
mSMMD:=0
mSQMP:=2
mBSDG:=9
for mCTDG:=1 to len(mNMOG)
mSMMD+=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*(mSQMP)
mSQMP:=iif(mSQMP==mBSDG,2,mSQMP+1)
endfor
mRSDV:= 11 - mod(mSMMD,11)
mDCMD:=iif(mRSDV==0 .or. mRSDV==1 .or. mRSDV > 9,"1",str(mRSDV,1))
msginfo( "Digito verificardor geral " + mDCMD)
mDCMD:=iif(mRSDV > 9, "0", str(mRSDV,1))
msginfo( "Digito cedente ou nosso numero " + mDCMD)
return