Prezados Leitores,Hoje vamos compreender o funcionamento das mascaras de edicao. Na maioria das vezes os dados numericos, quando exibidos, nao refletem o que realmente sao. Para isso e que servem as mascaras de edicao. Para tornar um numero compreensivel ao olho do ser humano. Deixemos de bla bla bla e vamos logo ao que interessa:Imagine que uma variavel numerica foi declarada da seguinte forma:77 WS-VL-SDO PIC S9(015)V9(02) VALUE ZEROS.A esta variavel foi atribuido o seguinte valor -549,54.Se nos dermos um display dessa variavel, o conteudo exibido em tela seria: -00000000000054954Onde esta a virgula que separa a parte inteira da decimal? Pra que tanto zeros a esquerda? Essas e outras perguntas podem ser evitadas usando-se uma mascara de edicao adequada.Para exibir o numero acima, mos podemos utilizar a seguinte declaracao:77 MASC-VL-SDO PIC -ZZZ.ZZZ.ZZZ.ZZZ.ZZ9,99.O caractere Z tem a funcao de suprimir os zeros a esquerda. O caractere .(ponto) tem a funcao de incluir os pontos separadores de milhar. O caractere , (virgula) tem a funcao de exibir a virgula que separa a parte inteira da decimal.Para exibir o conteudo no novo formato, basta mover o conteudo da variavel WS-VL-SDO para MASC-VL-SDO e dar um DISPLAY nela.O Resultado obtido sera: - 549,54Notem que o sinal ficou distante do nome. Para corrigir este problema, basta, ao inves de utilizar o caractere Z, utilizar o caractere -(hifem):77 MASC-VL-SDO PIC ----.---.---.---.--9,99.O resultado sera: -549,54Alem dos Caracteres Z, (hifem) e (virgula), tambem podemos utilizar os seguintes caracteres:Z: Caractere para suprimir os zeros a esquerda.+(mais): Sinal positivo.-(menos): Sinal negativo;$(Cifrao): Utilizado para campo numerico que indica valor financeiro.,(virgula): utilizada para separar parte inteira de decimal.CR: Ulitizado para indicar credito;DB: Utilizado para indicar debigo;*(asterisco): E utilizado para esconder numeros confidenciais, como por exemplo uma senha ou salario de um diretor da empresa.B: Inclui um caractere em branco (espaco) entre um numero e outro./(barra): Inclui uma barra entre um numero e outro.0(zero): Inclui zero entre um numero e outro.Agora e so usar a sua CRIATIVIDADE e brincar a vontade com as MASCARAS DE EDICAO.Espero ter contribuido mais uma vez.Ate a proxima! Prezados Leitores,Abaixo, segue um Programa COBOL que faz a leitura de um arquivo contendo os dados de alunos de uma determinada escola (Matricula, Nome, Disciplina, Notas 1, 2, 3 e 4) e gera os Boletins de Notas. Os Books contendo os layouts dos arquivos estao abaixo do Codigo Fonte do Programa e no final deste Post tem um exemplo dos Boletins gerados apos a execucao do Programa.Espero que sirva de modelo para os aprendizes Coboleiros.Eis o Programa: *----------------------------------------------------------------------* * SISTEMA..: CFP - CURSO DE FORMACAO DE PROGRAMADORES. * * INSTRUTOR: LUIZ PREZA. * * OBJETIVO.: GERAR BOLETIM DE NOTAS. * *----------------------------------------------------------------------* * CONTROLE DE VERSAO: * *----------------------------------------------------------------------* * VERSAO | DATA | AUTOR | DESCRICAO * *----------------------------------------------------------------------* * VRS001 | 16/02/2009 | LUIZ PREZA | IMPLANTACAO. * *----------------------------------------------------------------------* ************************************************************************ IDENTIFICATION DIVISION. ************************************************************************ PROGRAM-ID. CFPP0005. DATE-COMPILED. ************************************************************************ ENVIRONMENT DIVISION. ************************************************************************ *----------------------------------------------------------------------* CONFIGURATION SECTION. *----------------------------------------------------------------------* SPECIAL-NAMES. DECIMAL-POINT IS COMMA. *----------------------------------------------------------------------* INPUT-OUTPUT SECTION. *----------------------------------------------------------------------* FILE-CONTROL. SELECT ARQALUNO ASSIGN TO DISK 'ARQALUNO.DAT' ORGANIZATION IS LINE SEQUENTIAL. SELECT RELALUNO ASSIGN TO DISK 'RELALUNO.DAT' ORGANIZATION IS LINE SEQUENTIAL.