Hola Carlos,
como dice Carlos Mora el PICTURE "@R 9999-9999-99-9999999999" va perfecto.
Ya puestos, te pego también un par de funciones para validarlo, por si te son de utilidad.
Un saludo,
Manuel
REDEFINE GET oGet[18] VAR cCuenta WHEN nPago=2 VALID ValidaCuenta(cCuenta,nPago) ID 428 OF oFolder:aDialogs[2] PICTURE "@R 9999-9999-99-9999999999" FONT oFont2
*******************************************
FUNCTION VALIDACUENTA(cCuenta,nPago)
*******************************************
Local lValor:=.T.
Local cDigito
//
IF EMPTY(cCuenta) .AND. nPago = 2
MsgSTOP(OemToAnsi("El n£mero de cuenta bancaria debe tener 20 d¡gitos"),OemToAnsi(" Atenci¢n !!!"))
lValor=.F.
ENDIF
//
IF !EMPTY(cCuenta)
//
IF LEN(ALLTRIM(cCuenta)) < 20
MsgSTOP(OemToAnsi("El n£mero de cuenta bancaria debe tener 20 d¡gitos"),OemToAnsi(" Atenci¢n !!!"))
lValor=.F.
ELSE
//
cDigito=DigBanco(SUBSTR(cCuenta,1,8),SUBSTR(cCuenta,11,10))
//
IF cDigito <> SUBSTR(cCuenta,9,2)
MsgSTOP(OemToAnsi("El n£mero de cuenta bancaria es incorrecto"),OemToAnsi(" Atenci¢n !!!"))
lValor=.F.
ENDIF
//
ENDIF
//
ENDIF
//
RETURN lValor
*************************************************************************
FUNCTION Digbanco(cRefer1,cRefer2)
*************************************************************************
LOCAL nDigitos := 10
LOCAL aDigito := ARRAY( nDigitos )
LOCAL aPeso := { 1, 2, 4, 8, 5, 10, 9, 7, 3, 6 }
LOCAL nSuma := 0
LOCAL nCont
LOCAL nModulo
LOCAL nResto
LOCAL cDigito1
LOCAL cDigito2
cRefer1 := STRTRAN(cRefer1,'-')
cRefer1 := STRTRAN(cRefer1,'.')
cRefer1 := STRTRAN(cRefer1,'/')
cRefer1 := STRTRAN(cRefer1,' ')
cRefer1 := RIGHT(cRefer1,nDigitos)
cRefer1 := PADL(cRefer1,nDigitos,'0')
cRefer2 := STRTRAN(cRefer2,'-')
cRefer2 := STRTRAN(cRefer2,'.')
cRefer2 := STRTRAN(cRefer2,'/')
cRefer2 := STRTRAN(cRefer2,' ')
cRefer2 := RIGHT(cRefer2,nDigitos)
cRefer2 := PADL(cRefer2,nDigitos,'0')
FOR nCont := 1 to nDigitos
aDigito[ nCont ] := VAL( SUBSTR( cRefer1, nCont, 1 ) )
nSuma += ( aDigito[ nCont ] * aPeso[ nCont ] )
NEXT
nModulo := 11 - INT( nSuma % 11 )
nResto := IF( nModulo == 10, 1, IF( nModulo == 11, 0, nModulo ) )
cDigito1 := LTRIM(STR(nResto))
nSuma := 0
FOR nCont := 1 to nDigitos
aDigito[ nCont ] := VAL( SUBSTR( cRefer2, nCont, 1 ) )
nSuma += ( aDigito[ nCont ] * aPeso[ nCont ] )
NEXT
nModulo := 11 - INT( nSuma % 11 )
nResto := IF( nModulo == 10, 1, IF( nModulo == 11, 0, nModulo ) )
cDigito2 := LTRIM(STR(nResto))
RETURN(cDigito1+cDigito2)