COBOL Standard features implemented in Enterprise COBOL Version 3 or later versions



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Recursos do COBOL Standard implementados no Enterprise COBOL Versão 3 ou versões posteriores - 2002/2014
Enterprise COBOL for z/OS 6.3.0

A partir do Enterprise COBOL Versão 3, mudanças substanciais são implementadas de acordo com o Padrão COBOL 2002 e o Padrão COBOL 2014.
Este tópico lista as alterações que afetarão potencialmente os programas COBOL existentes e as alterações que não afetarão os programas COBOL existentes.

Tabela 1. Recursos do COBOL Standard 2002/2014 implementados em V3 ou versões posteriores que afetarão potencialmente os programas existentes

Recursos Notas
Parágrafo SPECIAL-NAMES,
cláusula CURRENCY SIGN
As letras 'N', 'n', 'E' e 'e' agora são usadas como símbolos de imagem.
A letra 'N' ou 'E' não pode mais ser especificada como um sinal de moeda na cláusula CURRENCY SIGN.
Cláusula SAME Nomes de arquivos referenciados em uma cláusula SAME devem ser descritos no parágrafo FILE-CONTROL do elemento de origem que contém a cláusula SAME.
Produção de código executável O implementador não é obrigado a produzir um programa de objeto executável se uma condição de exceção fatal para a qual a verificação não está habilitada for detectada pelo compilador.
Exponenciação Se o valor de uma expressão a ser elevada a uma potência for menor que zero, a seguinte condição deve ser verdadeira para o expoente: (FUNCTION FRACTION-PART (expoent) = 0).
Caso contrário, a exceção EC-SIZE-EXPONENTIATION existe e a condição de erro de tamanho é levantada.
CORRESPONDING A ordem de execução das instruções implícitas criadas para operandos correspondentes para ADD, MOVE e SUBTRACT com a frase CORRESPONDING é definida como a ordem da especificação dos operandos no grupo após a palavra CORRESPONDING.
O padrão COBOL anterior não especificava um pedido.
Além disso, a avaliação dos subscritos para as instruções implícitas é feita apenas uma vez, no início da execução da atual instrução ADD, MOVE ou SUBTRACT.
Operandos de envio e recebimento Os termos operando de envio e operando de recebimento foram definidos.
Esclarecimento de dados incompatíveis As condições que causam a condição de dados incompatíveis são especificadas explicitamente.
Eles são limitados a operandos de envio booleanos, numéricos e numéricos editados.
Instrução EVALUATE,
sequência de execução
A sequência de avaliação de assuntos e objetos de seleção agora está definida para ser da esquerda para a direita e os objetos de seleção são avaliados conforme cada frase WHEN é processada.
Quando uma frase WHEN é selecionada, nenhum outro objeto de seleção é avaliado.
Frase de SIZE ERROR
para resultados intermediários
Se a frase SIZE ERROR for especificada para uma instrução que contém uma expressão aritmética e um erro de tamanho for detectado durante a avaliação de um resultado intermediário dessa expressão aritmética, a condição de erro de tamanho será definida como existente.

Tabela 2. Recursos do COBOL Standard 2002/2014 implementados em V3 ou versões posteriores que não afetarão os programas existentes

Recursos Notas
Declaração de ACCEPT
ano de quatro dígitos
A capacidade de acessar o ano de quatro dígitos do calendário gregoriano é adicionada à instrução ACCEPT.
Apóstrofo como aspa O caractere apóstrofo e as aspas podem ser usados nos delimitadores de abertura e fechamento de literais alfanuméricos, booleanos e nacionais.
Um determinado literal pode usar o apóstrofo ou as aspas, mas os caracteres inicial e final devem ser iguais.
Qualquer que seja o caractere usado, é necessário dobrar esse caractere para representar uma ocorrência do caractere dentro do literal.
Ambos os formatos podem ser usados em um único elemento de origem.
Operadores aritméticos Nenhum espaço é necessário entre um parêntese esquerdo e um operador unário ou entre um operador unário e um parêntese esquerdo.
Frase AT END A frase AT END da instrução READ não precisa ser especificada se não houver uma instrução USE aplicável.
Dados BINARY
e de ponto flutuante
Duas novas representações de tipo de dados numéricos são introduzidas, uma representação binária que mantém os dados de uma maneira específica da máquina e não está restrita a intervalos decimais de valores e uma representação de ponto flutuante.
O tipo de ponto flutuante existe tanto na forma numérica, com uma representação específica da máquina, quanto na forma numérica editada.
Números de nível de argumento CALL (qualquer) Os argumentos CALL podem ser elementares ou grupos com qualquer número de nível.
Anteriormente, eles tinham que ser elementares ou ter um número de nível 1 ou 77.
Diferença do parâmetro
CALL BY CONTENT
Um parâmetro passado por conteúdo não precisa ter a mesma descrição que o parâmetro correspondente no programa chamado.
Diferença de comprimento
do parâmetro CALL
O tamanho de um argumento na frase USING da instrução CALL pode ser maior que o tamanho do parâmetro formal correspondente se o argumento ou o parâmetro formal for um item de grupo.
Anteriormente, os tamanhos deviam ser os mesmos.
CALL recursivamente A capacidade de chamar um programa COBOL ativo foi adicionada ao COBOL.
Palavras COBOL
reservadas no contexto
Certas palavras adicionadas ao padrão COBOL são reservadas apenas nos contextos em que são especificadas e não foram adicionadas à lista de palavras reservadas.
Consulte Context-sensitive words - Palavras sensíveis ao contexto para obter detalhes.
Cláusula CODE
(Report Writer)
A frase identificadora é fornecida na cláusula CODE na entrada da descrição do relatório.
Cláusula COLUMN Uma forma relativa é fornecida usando o inteiro PLUS, por analogia com LINE; COLUMN RIGHT e COLUMN CENTER são fornecidos, permitindo o alinhamento de um item imprimível à direita ou ao centro; e COL, COLS e COLUMNS são permitidos como sinônimos para COLUMN.
Cláusulas COLUMN, LINE,
SOURCE e VALUE
Essas cláusulas podem ter mais de um operando em uma entrada de descrição do grupo de relatórios.
Linhas de comentário em qualquer lugar de um grupo de compilação As linhas de comentário podem ser escritas como qualquer linha em um grupo de compilação, inclusive antes do cabeçalho da divisão de identificação.
Diretivas do compilador
  • A diretiva do compilador CALLINTERFACE especifica a convenção de interface para as instruções CALL e SET.
  • A diretiva DEFINE define ou anula uma variável de compilação.
  • A diretiva EVALUATE fornece um método de ramificação múltipla para escolher as linhas de origem a serem incluídas em um grupo de compilação.
  • A diretiva IF fornece uma compilação condicional unilateral ou bidirecional.
Nome dos dados de controle Isso pode ser omitido em TYPE CH/CF se apenas um controle for definido.
Conversão do ano de dois dígitos para o ano de quatro dígitos Existem três funções para converter de um ano de dois dígitos para um ano de quatro dígitos.
DATE-TO-YYYYMMDD, DAY-TO-YYYYDDD e YEAR-TO-YYYY convertem de YYnnnn para YYYYnnnn, YYnnn para YYYYnnn e YY para YYYY, respectivamente.
Declaração COPY

Um literal alfanumérico pode ser especificado no lugar de text-name-1 ou library-name-1.

Quando mais de uma biblioteca COBOL é referenciada, o nome do texto não precisa ser qualificado quando o texto da biblioteca reside na biblioteca padrão.

A capacidade de aninhar instruções COPY é fornecida.
O texto da biblioteca incorporado como resultado do processamento de uma instrução COPY sem uma frase REPLACING pode conter uma instrução COPY sem uma frase REPLACING.

Uma frase SUPPRESS PRINTING é adicionada à instrução COPY para suprimir a listagem do texto da biblioteca incorporado como resultado do processamento da instrução COPY.

Substituição parcial de
palavras das instruções
COPY e REPLACE
As frases LEADING e TRAILING da instrução REPLACE e a frase REPLACING da instrução COPY permitem a substituição de palavras parciais no texto fonte e no texto da biblioteca.
Isso é útil para prefixar e pós-fixar nomes.
Extensões de sinal de moeda A cláusula CURRENCY SIGN foi estendida para permitir caracteres nacionais e vários sinais de moeda distintos, que podem ter qualquer comprimento.
Declaração DISPLAY Se o literal em uma instrução DISPLAY for numérico, ele pode ser assinado.
Divida por zero DIVIDE BY zero está em conformidade com o 2002 COBOL Standard.
Nada mudou no IBM® COBOL, mas o Padrão foi alterado de forma que agora o Enterprise COBOL está em conformidade.
(Enterprise COBOL não estava em conformidade com o padrão 85 COBOL para DIVIDE BY zero.)
Itens elementares de comprimento dinâmico A adição da cláusula DYNAMIC LENGTH fornece a capacidade de descrever um item de dados de tamanho variável.
Alocação dinâmica de armazenamento As instruções ALLOCATE e FREE são fornecidas para obter armazenamento dinamicamente.
Este armazenamento é endereçado por itens de dados de ponteiro.
Declaração EXIT A capacidade de sair imediatamente de uma instrução PERFORM embutida, um parágrafo ou uma seção foi adicionada.
EXIT PROGRAM
permitido como outra declaração diferente
É permitido que EXIT PROGRAM apareça diferente da última instrução em uma seqüência consecutiva de instruções imperativas.
FILLER FILLER é permitido na seção de relatório (report section).
Delimitadores de comentários flutuantes
  • O indicador de comentário flutuante (*>) indica uma linha de comentário se for a primeira cadeia de caracteres na área de texto do programa (Área A mais Área B), ou indica um comentário embutido se estiver após uma ou mais cadeias de caracteres no programa área de texto.
  • O indicador de diretiva do compilador (>>) indica uma linha de diretiva do compilador quando seguida por uma palavra de diretiva do compilador - com ou sem um espaço intermediário.
FUNCTION All INTRINSIC O parágrafo REPOSITORY oferece suporte a um especificador de função e, para algumas funções intrínsecas, a palavra-chave FUNCTION é opcional quando uma função é incluída no parágrafo REPOSITORY.
Declaração GOBACK Foi adicionada uma instrução GOBACK que sempre retorna o controle, seja para o sistema operacional ou para o elemento de tempo de execução de chamada.
Literais hexadecimais A capacidade foi adicionada para especificar literais alfanuméricos, booleanos e nacionais usando notação hexadecimal (raiz 16).
Comentário inline Um comentário pode ser escrito em uma linha após qualquer sequência de caracteres do texto de origem ou do texto da biblioteca que esteja escrito nessa linha.
Um comentário embutido é introduzido pelos dois caracteres contíguos '*>'.
Item de dados do índice A definição de um item de dados de índice pode incluir a cláusula SYNCHRONIZED.
Instrução INITIALIZE,
frase FILLER
Os itens de dados FILLER podem ser inicializados com a instrução INITIALIZE.
Instrução INITIALIZE,
frase VALUE
Uma frase VALUE pode ser especificada na instrução INITIALIZE para causar a inicialização de itens de dados elementares para o literal especificado na cláusula VALUE da entrada de descrição de dados associada.
Facilidade de função intrínseca Anteriormente, o recurso de função intrínseca era um módulo separado e sua implementação era opcional.
A facilidade de função intrínseca é integrada na especificação e deve ser implementada por uma implementação conforme
Novas funções intrínsecas Novas funções intrínsecas são adicionadas:
  • ABS
  • BYTE-LENGTH
  • E
  • EXP
  • EXP10
  • DATE-TO-YYYYMMDD
  • DAY-TO-YYYYDDD
  • DISPLAY-OF
  • NATIONAL-OF
  • NUMVAL-F
  • PI
  • SIGN
  • TEST-NUMVAL
  • TEST-NUMVAL-C
  • TEST-NUMVAL-F
  • TRIM
  • YEAR-TO-YYYY
Frase INVALID KEY A frase INVALID KEY não precisa ser especificada se não houver uma instrução USE aplicável.
LOCAL-STORAGE SECTION Um recurso foi adicionado para definir os dados que são configurados com seus valores iniciais cada vez que uma função, método ou programa é ativado.
Cada instância deste elemento de origem tem sua própria cópia desses dados.
Tratamento de caráter nacional A capacidade é adicionada para o uso de grandes conjuntos de caracteres, como ISO/IEC 10646-1, no texto fonte e no texto da biblioteca e nos dados em tempo de execução.
A classe nacional e as categorias nacional e nacional editadas são especificadas por cadeias de caracteres de imagem contendo o símbolo 'N'; literais nacionais são identificados por um separador N", N', NX" ou NX'.
O uso nacional especifica a representação de dados em um conjunto de caracteres nacional.
Palavras definidas pelo usuário podem conter letras estendidas. O processamento de dados de classe nacional é comparável ao processamento de dados de classe alfanumérica, embora haja algumas pequenas diferenças.
As conversões entre os dados das classes alfanuméricas e nacionais são fornecidas por funções intrínsecas.
Orientação do objeto Suporte para programação orientada a objetos foi adicionado.
Cláusula OCCURS Repetição vertical ou horizontal e uma frase STEP são adicionadas ao Report Writer.
Palavra opcional OF Permitido após SUM.
Palavra opcional FOR e ON Permitido após TYPE CH ou CF.
Frase OR PAGE da frase CONTROL HEADING Isso permite que o grupo de título de controle seja impresso na parte superior de cada página e após uma quebra de controle.
Grupo de relatórios
PAGE FOOTING
Esse grupo pode ter todas as cláusulas LINE relativas.
Cláusula PAGE LIMIT Uma nova frase COLUMNS é fornecida para definir o número máximo de posições de impressão horizontal em cada linha do relatório e uma frase LAST CONTROL HEADING foi adicionada.
Nome do parágrafo Não é necessário um nome de parágrafo no início da divisão ou seção do procedimento.
Declaração PERFORM Uma saída comum para várias instruções PERFORM ativas é permitida.
Cláusula PICTURE

O número máximo de caracteres que podem ser especificados em uma sequência de caracteres de imagem aumentou de 30 para 50.

O símbolo 'E' pode ser usado em uma seqüência de caracteres PICTURE para especificar um item de dados editado numérico de ponto flutuante.

O símbolo 'N' pode ser usado em uma sequência de caracteres PICTURE para especificar um item de dados nacional ou editado por país.

Quando o último símbolo de uma sequência de caracteres PICTURE é um ponto ou vírgula, um ou mais espaços podem preceder o ponto separador seguinte.
Não estava claro no padrão anterior se um espaço poderia preceder o período separador neste contexto.

PLUS e MINUS O símbolo + ou - é sinônimo de MAIS ou MENOS, respectivamente, nas cláusulas COLUMN e LINE.
Dados de ponteiro Uma nova classe de dados é introduzida, um tipo de ponteiro que contém dados e endereços de programa de uma maneira específica da máquina ou do sistema.
Cláusula PRESENT WHEN As cláusulas PRESENT WHEN permitem que linhas e itens imprimíveis, ou grupos deles, sejam impressos ou não, dependendo do valor de verdade de uma condição.
Nomes de programas como literais A opção de especificar um literal como o nome do programa a ser externalizado foi adicionada para nomes que não são palavras COBOL válidas ou precisam fazer distinção entre maiúsculas e minúsculas.
RECORD KEY e
ALTERNATE RECORD KEY
As chaves para arquivos indexados podem ser compostas por mais de um componente.
Report Writer Anteriormente, o Report Writer era um módulo separado e sua implementação era opcional.
O recurso Report Writer está integrado na especificação e deve ser implementado por uma implementação conforme.
Suporte ao caráter nacional do Report Writer A capacidade de imprimir caracteres nacionais e caracteres alfanuméricos em um relatório é fornecida.
Especificador de função O parágrafo REPOSITORY oferece suporte ao especificador de função e, para algumas funções intrínsecas, a palavra-chave FUNÇÃO é opcional quando uma função está incluída no parágrafo REPOSITORY.
Cláusula SIGN
em uma entrada de descrição de relatório
A frase SEPARATE não é mais necessária em uma entrada de descrição do relatório e a cláusula SIGN pode ser especificada no nível do grupo.
Declaração SORT

Uma instrução SORT pode ser usada para classificar uma tabela.
Essa classificação pode ser feita usando os campos especificados na frase-chave que define a tabela, usando todo o elemento da tabela como chave ou usando itens de dados chave especificados.

Os arquivos GIVING em uma instrução SORT agora podem ser especificados na mesma cláusula SAME RECORD AREA.

Cláusula SOURCE
em uma entrada de descrição de relatório

O operando de envio pode ser um identificador de função.

Uma expressão aritmética é permitida como um operando e uma frase ROUNDED foi adicionada.

Cláusula SUM
em uma entrada de descrição de relatório
A cláusula SUM foi estendida das seguintes maneiras:
  • Extensão para totalizar uma entrada repetida.
  • Agora permitido em qualquer TIPO de grupo de relatórios, não apenas em pé de controle.
  • SUM do formato de expressão aritmética.
  • Verifica o estouro de um contador de soma durante a totalização.
  • Qualquer item de seção de relatório numérico pode ser totalizado, não apenas outro contador de soma.
  • Frase ROUNDED.
Caráter sublinhado (_) (Underscore) Os caracteres especiais básicos do repertório de caracteres COBOL foram expandidos para incluir o caractere sublinhado (_), que pode ser usado na formação de palavras COBOL.
Declaração UNSTRING O operando de envio pode ser modificado por referência.
USE BEFORE REPORTING O efeito de GLOBAL em uma descrição de relatório e em uma declarativa de USE é mais elucidado.
Cláusula VALUE, frase
WHEN SET TO FALSE
na DATA DIVISION
A frase WHEN SET TO FALSE permite a especificação de um valor de condição FALSE.
Este valor é movido para a variável condicional associada quando a instrução SET TO FALSE é executada para o nome da condição associada.
Cláusula VARYING Uma cláusula VARYING é fornecida nos recursos validate e Report Writer para ser usada com uma cláusula OCCURS.
frase WITH RESET Isso foi adicionado à frase NEXT PAGE da cláusula NEXT GROUP para redefinir PAGE-COUNTER de volta para 1.

Nota: Os recursos REPORT WRITER, como cláusula CODE, cláusula COLUMN, nome de dados de controle, CONTROL HEADING, PAGE FOOTING, PAGE LIMIT, cláusula SUM e entradas de descrição de relatório são suportados por meio do Pré-compilador do Report Writer opcional.



© Copyright IBM Corp. - Published: 2020-07-31