Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104

Boleto Bancário Java - Como montar o campo livre do código de barras juntamente com o seu dígito verificador (Módulo 11) - Boleto Caixa Econômica

Quantidade de visualizações: 1426 vezes
Em outras dicas dessa seção eu mostrei, passo-a-passo, como calcular o dígito verificador do código do cedente para os boletos da Caixa Econômica Federal (Banco 104). O código do cedente, com o seu dígito verificador, e o nosso número do título são essenciais para a montagem do campo livre, usado tanto no código de barras quanto na linha digitável do boleto. Em caso de dúvidas, revise as demais dicas. Prossiga somente se você estiver bem seguro quanto aos conhecimentos anteriores.

Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), o Campo Livre contém 25 posições dispostas da seguinte forma:

a) Código do Cedente, composto de 6 dígitos;

b) DV do Código do Cedente;

c) Nosso Número ? Seqüência 1: 3ª a 5ª posição do Nosso Número;

d) Constante 1 Posição: 1ª posição do Nosso Numero: Tipo de Cobrança (1-Registrada / 2-Sem Registro);

e) Nosso Número ? Seqüência 2: 6ª a 8ª posição do Nosso Número;

f) Constante 2 Posição: 2ª posição do Nosso Número: Identificador da Emissão do Bloqueto (4-Cedente);

g) Nosso Número ? Seqüência 3: 9ª a 17ª posição do Nosso Número;

h) DV do Campo Livre: Dígito Verificador do Campo Livre, calculado através do Modulo 11, conforme código que mostrarei também nessa dica. Nos boletos e arquivos de remessa da Caixa, o Dígito Verificador do Campo Livre admite 0 (zero), diferentemente do DV Geral do Código de Barras (que também mostro como calcular em dicas dessa seção).

O cálculo que mostrarei a seguir é baseado no Módulo 11 e está de acordo com as instruções do Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro e Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro). Tenha certeza de verificar sua versão do manual antes de usar o código apresentado.

Dito isso, veja o código Java completo para uma função que recebe o Código do Cedente e o Nosso Número e retorna o Campo Livre com 24 posições. Em seguida o código chama outra função para calcular o dígito verificador, totalizando as 25 posições:

package arquivodecodigos;

/*
  A implementação do método dvCodigoCedente() está
  na dica Boleto Bancário Java - Como calcular o
  Dígito Verificador do Código do Cedente 
  (Módulo 11) - Boleto Caixa Econômica  
*/

public class Estudos{
  public static void main(String[] args){
    // ATENÇÃO: Se você ainda não entende os dados abaixo,
    // revise as dicas anteriores antes de continuar
    String carteira = "1"; //  
    String emissao = "4"; // cedente
    String nossoNumero = "222333777777777";
    String nossoNumeroCompleto = carteira + emissao + nossoNumero;
    String cedente = "005507";
    int dvCedente = dvCodigoCedente(cedente);
  
    // agora vamos montar as 24 posições do campo livre
    String campoLivre = montarCampoLivre(cedente, dvCedente,
      nossoNumeroCompleto);

    // vamos mostrar o resultado (25 posições)
    System.out.println("O campo livre completo é: " + campoLivre);
  }

  // função que recebe o campo livre
  // e retorna o seu dígito verificador
  public static int dvCampoLivre(String campoLivre){
    // agora vamos definir os índices de múltiplicação
    String indices = "987654329876543298765432";
    // e aqui a soma da multiplicação coluna por coluna
    int soma = 0;
     
    // fazemos a multiplicação coluna por coluna agora
    for (int i = 0; i < campoLivre.length(); i++){
      soma = soma + Integer.parseInt(String.valueOf(campoLivre.charAt(i))) *
        Integer.parseInt(String.valueOf(indices.charAt(i)));
    }
    
    // obtemos o resto da divisão da soma por onze
    int resto = soma % 11;
     
    // subtraímos onze pelo resto da divisão
    int digito = 11 - resto;  	
	 
    // atenção: Se o resultado da subtração for
    // maior que 9 (nove), o dígito será 0 (zero)
    if(digito > 9){
      digito = 0;    
    }
     
    return digito;
  }
  
  // monta as 25 posições do campo livre
  public static String montarCampoLivre(String cedente, 
    int dvCedente, String nossoNumeroCompleto){
	
    // muita atenção às subtrings. Revise e revise
    String campoLivre = cedente + dvCedente +
      nossoNumeroCompleto.substring(2, 5) +
      nossoNumeroCompleto.substring(0, 1) +


Ao executar este código Java nós teremos o seguinte resultado:

O campo livre completo é: 0055077222133347777777771

Para não deixar o código desta dica muito longo, eu omiti a função dvCodigoCedente() está na dica Boleto Bancário Java - Como calcular o Dígito Verificador do Código do Cedente (Módulo 11) - Boleto Caixa Econômica.

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 25 usuários muito felizes estudando em nosso site.