P. 1
COBOL

COBOL

|Views: 1,065|Likes:
Published by GilCarral

More info:

Published by: GilCarral on Jan 05, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

08/15/2013

pdf

text

original

Sections

  • INTRODUÇÃO
  • OBJETIVOS
  • REFERÊNCIAS
  • GLOSSÁRIO
  • PRINCIPAIS DIFERENÇAS
  • ELEMENTOS DE LINGUAGEM NÃO MAIS IMPLEMENTADOS
  • REPORT WRITER
  • ARQUIVOS ISAM
  • ARQUIVOS BDAM
  • COMMUNICATION FEATURE
  • EXAMINE
  • EXHIBIT
  • READY TRACE / RESET TRACE
  • TRANSFORM
  • TIME-OF-DAY
  • CURRENT-DATE
  • D I V E R S O S
  • EXTENSÕES DO OS/VS COBOL NÃO SUPORTADAS PELO COBOL FOR MVS & VM
  • INSTRUÇÃO MOVE CORRESPONDING
  • THEN COMO SENTENÇA DE CONEXÃO
  • OPERADORES RELACIONAIS – CODIFICAÇÕES INCORRETAS
  • PONTOS CONSECUTIVOS – EM QUALQUER DIVISÃO DO COBOL
  • AUSÊNCIA DE PONTO NOS PARÁGRAFOS
  • CLÁUSULA REDEFINES EM DESCRIÇÕES DE ARQUIVOS (SD E FD)
  • CLÁUSULA REDEFINES EM TABELAS
  • CLÁUSULA VALUE – VALOR SINALIZADO EM RELAÇÃO A CLÁUSULA PICTURE
  • ELEMENTOS DE LINGUAGEM ALTERADOS
  • FILE STATUS
  • IF ... OTHERWISE
  • JUSTIFIED
  • INSTRUÇÃO MOVE PARA CAMPOS DEFINIDOS COM P NA PICTURE
  • WHEN-COMPILED
  • WRITE AFTER POSITIONING
  • VALUE
  • MERGE
  • OPEN
  • SEARCH
  • SORT
  • SORT-RETURN
  • STRING
  • UNSTRING
  • WRITE
  • INSPECT
  • PERFORM
  • PERFORM - ALTERAÇÕES NA FRASE VARYING/AFTER
  • ELEMENTOS DE LINGUAGEM ADICIONADOS
  • TERMINADOR EXPLÍCITO
  • PADDING CHARACTER
  • RECORD DELIMITER
  • EXTERNAL NO FD
  • EXTERNAL NA WS
  • GLOBAL NA FD
  • GLOBAL NA WS
  • CONTINUE
  • TITLE
  • DAY-OF-WEEK
  • EVALUATE
  • INITIALIZE
  • REGISTRADORES E ENDEREÇAMENTOS
  • LENGTH OF
  • ADDRESS OF
  • POINTER
  • Ex
  • MOVE
  • PROBLEMAS DE ENDEREÇAMENTO
  • OPÇÃO DE COMPILAÇÃO RES/NORES
  • FALHAS NA INSTRUÇÃO OPEN PARA ARQUIVOS QSAM
  • PREVENINDO O FILE STATUS 39 PARA ARQUIVOS QSAM
  • PROCESSANDO ARQUIVOS EXISTENTES
  • DEFININDO REGISTROS DE TAMANHO VARIÁVEL
  • DEFININDO ARQUIVOS DE TAMANHO FIXO
  • PROCESSANDO ARQUIVOS NOVOS
  • PROGRAMAS CICS – CONSIDERAÇÕES SOBRE A CONVERSÃO
  • CHAMADAS DINÂMICAS (DYNAMIC CALL) QUANDO EXECUTANDO SOB O CICS
  • SERVICE RELOAD
  • REGISTRO ESPECIAL LENGTH OF
  • RECEBENDO UMA ÁREA DE COMUNICAÇÃO
  • PROCESSANDO ÁREAS DE MEMÓRIAS COM MAIS DE 4K
  • ACESSANDO ÁREAS DE MEMÓRIA ENCADEADAS
  • USANDO A CLÁUSULA OCCURS DEPENDING ON
  • ANEXOS
  • ANEXO 1 - QSAM - STATUS KEY
  • ANEXO 2 - VSAM - STATUS KEY
  • ANEXO 3 - TABELA DE FUNÇÕES
  • BIBLIOGRAFIA

COBOL for MVS & VM

COBOL FOR MVS & VM
PRINCIPAIS DIFERENÇAS E PROBLEMAS MAIS COMUNS NA CONVIVÊNCIA COM O OS/VS COBOL
TIPO DOCUMENTO - TTAAXXX

Versão 1.0

Data 28/01/1999

Autor Guillermo Gil Carral

1

COBOL for MVS & VM

ÍNDICE

INTRODUÇÃO..............................................................................................................4 OBJETIVOS...................................................................................................................4 REFERÊNCIAS...............................................................................................................5 GLOSSÁRIO...................................................................................................................5 PRINCIPAIS DIFERENÇAS.......................................................................................6 ELEMENTOS DE LINGUAGEM NÃO MAIS IMPLEMENTADOS.......................................................6 Report Writer............................................................................................................6 Arquivos ISAM.........................................................................................................6 Arquivos BDAM.......................................................................................................7 Communication Feature...........................................................................................8 EXAMINE.................................................................................................................8 EXHIBIT...................................................................................................................8 READY TRACE / RESET TRACE..........................................................................10 TRANSFORM..........................................................................................................11 TIME-OF-DAY.......................................................................................................12 CURRENT-DATE...................................................................................................13 D I V E R S O S ......................................................................................................14 EXTENSÕES DO OS/VS COBOL NÃO SUPORTADAS PELO COBOL FOR MVS & VM.........16 Instrução MOVE CORRESPONDING...................................................................16 THEN como sentença de conexão..........................................................................17 Operadores Relacionais – Codificações Incorretas...............................................17 Pontos consecutivos – em qualquer Divisão do COBOL.......................................18 Ausência de ponto nos parágrafos..........................................................................18 Cláusula REDEFINES em descrições de arquivos (SD e FD)...............................18 Cláusula REDEFINES em tabelas..........................................................................19 Cláusula VALUE – Valor sinalizado em relação a cláusula PICTURE................19 Cláusula OCCURS..................................................................................................19 ELEMENTOS DE LINGUAGEM ALTERADOS.........................................................................21 FILE STATUS.........................................................................................................21 IF ... OTHERWISE.................................................................................................21 JUSTIFIED.............................................................................................................21 Instrução MOVE para campos definidos com P na PICTURE.............................22 Sentenças Aritméticas.............................................................................................22 Cláusula ASSIGN....................................................................................................22 Cláusula OCCURS DEPENDING ON com a frase ASCENDING/ DESCENDING KEY.........................................................................................................................23 WHEN-COMPILED................................................................................................23 WRITE AFTER POSITIONING.............................................................................24 VALUE....................................................................................................................25 MERGE...................................................................................................................25 OPEN......................................................................................................................25 SEARCH..................................................................................................................26 SORT.......................................................................................................................26 SORT-RETURN......................................................................................................26

2

COBOL for MVS & VM

STRING...................................................................................................................26 UNSTRING.............................................................................................................26 WRITE.....................................................................................................................27 INSPECT.................................................................................................................27 PERFORM..............................................................................................................27 PERFORM - Alterações na frase VARYING/AFTER.............................................28 ELEMENTOS DE LINGUAGEM ADICIONADOS.......................................................................30 TERMINADOR EXPLÍCITO..................................................................................30 PADDING CHARACTER.......................................................................................30 RECORD DELIMITER...........................................................................................31 EXTERNAL no FD..................................................................................................31 EXTERNAL na WS..................................................................................................31 GLOBAL na FD......................................................................................................31 GLOBAL na WS......................................................................................................31 NOT.........................................................................................................................32 CONTINUE.............................................................................................................32 TITLE......................................................................................................................32 DAY-OF-WEEK......................................................................................................33 EVALUATE.............................................................................................................33 INITIALIZE.............................................................................................................33 Função Intrínseca...................................................................................................34 REGISTRADORES E ENDEREÇAMENTOS .......................................................34
LENGTH OF................................................................................................................................................34 ADDRESS OF.............................................................................................................................................34 POINTER.....................................................................................................................................................35 SET..............................................................................................................................................................35 MOVE..........................................................................................................................................................35

PROBLEMAS MAIS COMUNS NA CONVIVÊNCIA COM O OS/VS COBOL ........................................................................................................................................35 PROBLEMAS DE ENDEREÇAMENTO...................................................................................35 OPÇÃO DE COMPILAÇÃO RES/NORES..........................................................................37 FALHAS NA INSTRUÇÃO OPEN PARA ARQUIVOS QSAM....................................................37 Prevenindo o FILE STATUS 39 para arquivos QSAM..........................................37
Processando Arquivos Existentes................................................................................................................37 Definindo Registros de Tamanho Variável.................................................................................................38 Definindo Arquivos de Tamanho Fixo........................................................................................................38 Processando Arquivos Novos......................................................................................................................39

PROGRAMAS CICS – CONSIDERAÇÕES SOBRE A CONVERSÃO...............40 CHAMADAS DINÂMICAS (DYNAMIC CALL) QUANDO EXECUTANDO SOB O CICS.....................40 SERVICE RELOAD...............................................................................................40 REGISTRO ESPECIAL LENGTH OF.............................................................................40 RECEBENDO UMA ÁREA DE COMUNICAÇÃO......................................................................41 PROCESSANDO ÁREAS DE MEMÓRIAS COM MAIS DE 4K......................................................41 ACESSANDO ÁREAS DE MEMÓRIA ENCADEADAS...............................................................42 USANDO A CLÁUSULA OCCURS DEPENDING ON....................................................43 ANEXOS.......................................................................................................................44 ANEXO 1 - QSAM - STATUS KEY..........................................................................44 ANEXO 2 - VSAM - STATUS KEY..........................................................................45 ANEXO 3 - TABELA DE FUNÇÕES....................................................................................46 BIBLIOGRAFIA..........................................................................................................49

3

COBOL for MVS & VM

INTRODUÇÃO OBJETIVOS
Este documento visa apresentar, de forma prática, as principais diferenças entre o OS/VS COBOL e o COBOL for MVS & VM, de modo a facilitar e agilizar o processo de conversão dos programas existentes e a confecção de novos programas, bem como apresentar os problemas mais comuns encontrados na convivência entre ambos. Este documento não é, nem pretende ser, um trabalho completo e sim um guia de referência para utilização do COBOL for MVS & VM. Logo este assunto não se esgota neste documento. Maiores detalhes sobre as diferenças entre os dois produtos COBOL (Common Business Oriented Language) podem ser encontradas nos manuais específicos dos produtos. A bibliografia dos manuais utilizados para confecção deste documento encontra-se ao final do mesmo.

4

COBOL for MVS & VM REFERÊNCIAS Normas e Padrões correlatos Nome do Arquivo GLOSSÁRIO Termo Significado 5 .

O CCCA converte automaticamente a definição do arquivo e as sentenças de acesso (I/O) de ISAM para VSAM/KSDS. salvo se existir alguma restrição de hardware. Esses nomes podem ser substituídos por outros mais significativos. Duas ferramentas podem auxiliar na conversão. esta conversão gera um código de difícil manutenção. dificultando a identificação quando da necessidade de modificar os programas convertidos. Quando convertendo um código Report Writer para um código não Report Writer o pré compilador gera nome de variáveis e de parágrafos.COBOL for MVS & VM PRINCIPAIS DIFERENÇAS ELEMENTOS DE LINGUAGEM NÃO MAIS IMPLEMENTADOS REPORT WRITER Não é suportado pelo COBOL for MVS & VM. Esses arquivos devem ser convertidos para VSAM/KSDS. dependendo do desenho da aplicação. ou pode converter permanentemente as sentenças do Report Writer para sentenças válidas do COBOL for MVS & VM. 6 . Esses nomes não são significativos. É necessário um pré compilador para migrar os programas que o utilizem. Entretanto. O REPRO do IDCAMS e o CCCA (COBOL and CICS/VS Command Level Conversion Aid). O COBOL Report Writer Precompiler tem duas funções. Pode ser usado para pré compilar aplicações que utilizem o Report Writer para gerar um código que será aceito pelo compilador do COBOL for MVS & VM. O REPRO do IDCAMS executará a conversão dos arquivos. Os itens da linguagem do Report Writer não mais aceitos pelo COBOL for MVS & VM são: Instrução GENERATE Instrução INITIATE Registrador especial LINE-COUNTER Registrador especial PAGE-COUNTER Registrador especial PRINT-SWITCH Cláusula REPORT da entrada do FD REPORT SECTION Instrução TERMINATE Declaração USE BEFORE REPORTING Atribuição de nomes mnemônicos para literais não numéricos ARQUIVOS ISAM O COBOL for MVS & VM não suporta o processamento desses arquivos. mas isso será uma atividade bastante trabalhosa e que consumirá um tempo significativo.

Para a conversão dos arquivos existem produtos não IBM disponíveis no mercado. Esses arquivos devem ser convertidos para VSAM/RRDS. desde que seja fornecido o algoritmo da chave. O CCCA também pode ser utilizado para converter o fonte dos programas que utilizam arquivos BDAM. W Declaração de arquivos BDAM 7 . Os itens de linguagem do BDAM não mais aceitos pelo COBOL for MVS & VM são: Cláusula ACTUAL KEY APPLY RECORD-OVERFLOW Instrução SEEK Cláusula TRACK-LIMIT Parâmetros de organização D.COBOL for MVS & VM Os itens de linguagem do ISAM não mais aceitos pelo COBOL for MVS & VM são: APPLY CORE-INDEX APPLY REORG-CRITERIA Cláusula NOMINAL KEY Cláusula TRACK-AREA Cláusula USING KEY da instrução START Declaração de arquivos ISAM Parâmetro de organização I ARQUIVOS BDAM O COBOL for MVS & VM não suporta o processamento desses arquivos. R.

Entretanto a instrução DISPLAY não cobre todas as funções da instrução EXHIBIT. Se a instrução no OS/VS COBOL for similar a apresentada abaixo: EXAMINE DATA-LENGTH TALLYING UNTIL FIRST “ “. Os itens de linguagem da Communication Feature não mais aceitos pelo COBOL for MVS & VM são: Instrução ACCEPT MESSAGE COUNT COMMUNICATION SECTION Instrução DISABLE Instrução ENABLE Instrução RECEIVE Instrução SEND EXAMINE O COBOL for MVS & VM não aceita a instrução EXAMINE. A instrução EXHIBIT NAMED pode ser substituída diretamente pela instrução DISPLAY. INSPECT DATA-LENGTH TALLYING FOR CHARACTERS BEFORE “ “.COBOL for MVS & VM COMMUNICATION FEATURE A Communication Feature não é suportada pelo COBOL for MVS & VM. deve ser substituída no COBOL for MVS & VM por: MOVE 0 TO TALLY. devendo ser substituída pela instrução INSPECT. Os programas de comunicação (TCAM) deverão utilizar outro produto para executar as funções de comunicação. EXHIBIT O COBOL for MVS & VM não aceita a instrução EXHIBIT. devendo ser substituída pela instrução DISPLAY. como se segue: 8 .

77 77 77 77 DADO1 DADO2 DADO1-ANT DADO2-ANT PIC PIC PIC PIC X(08). X(08). X(08). IF DADO2 NOT EQUAL DADO2-ANT DISPLAY DADO2 END-IF. EXHIBIT Código no COBOL for MVS & VM. TO DADO2-ANT. MOVE DADO1 MOVE DADO2 TO DADO1-ANT. como se segue: Código no OS/VS COBOL. X(08). 77 77 DADO1 DADO2 NAMED PIC PIC X(08). IF DADO1 NOT EQUAL DADO1-ANT DISPLAY DADO1 END-IF. EXHIBIT Código no COBOL for MVS & VM. X(08). X(08). A instrução EXHIBIT CHANGED deve ser substituída pelas instruções IF e DISPLAY. 77 77 DADO1 DADO2 PIC PIC CHANGED X(08).COBOL for MVS & VM Código no OS/VS COBOL. 77 77 DADO1 DADO2 PIC PIC X(08). DADO1 DADO2. A instrução EXHIBIT CHANGED NAMED deve ser substituída pelas instruções IF e DISPLAY. DISPLAY “DADO1 = “ DADO1 “ DADO2 = “ DADO2. 9 . como se segue: Código no OS/VS COBOL. X(08). DADO1 DADO2.

Funções similares podem ser executadas utilizando a declaração de “debug” USE FOR DEBUGGING ON ALL PROCEDURES. . DECLARATIVES. 01 TRACE-SWITCH PIC 9 VALUE ZERO. 88 TRACE-ON VALUE 1. . 88 TRACE-OFF VALUE 0. PROCEDURE DIVISION. X(08). TO DADO2-ANT.COBOL for MVS & VM EXHIBIT CHANGED NAMED DADO1 DADO2. DATA DIVISION. READY TRACE / RESET TRACE O COBOL for MVS & VM não aceita essas instruções. Código no COBOL for MVS & VM. como exemplificado abaixo: . . . 10 . X(08). USE FOR DEBUGGING ON ALL PROCEDURES. 77 77 77 77 DADO1 DADO2 DADO1-ANT DADO2-ANT PIC PIC PIC PIC X(08). COBOL-DEBUG SECTION. SOURCE-COMPUTER. IF DADO2 NOT EQUAL DADO2-ANT DISPLAY “DADO2 = “ DADO2 END-IF. X(08). WORKING-STORAGE SECTION. . IF DADO1 NOT EQUAL DADO1-ANT DISPLAY “DADO1 = “ DADO1 END-IF. . CONFIGURATION SECTION. IBM-390 WITH DEBUGGING MODE. MOVE DADO1 MOVE DADO2 TO DADO1-ANT. . ENVIROMENT DIVISION.

. a variável TEXTO ficará com o seguinte conteúdo: “CATXYZTTT”. TRANSFORM O OS/VS COBOL suporta a instrução TRANSFORM. Após a execução da instrução acima. Qualquer instrução TRANSFORM deve ser substituída pela instrução INSPECT CONVERTING: Código no OS/VS COBOL. . cada “B” para “A” e cada “C” para “T”. IF TRACE-ON DISPLAY DEBUG-NAME END-IF. . OU SET TRACE-ON TO TRUE. MOVE 1 TO TRACE-SWITCH. END DECLARATIVES. O TRANSFORM verifica cada caracter . PARAGRAPH-6. 77 TEXTO PIC X(9) VALUE “ABCXYZCCC”. . . . 11 . PARAGRAPH-4.COBOL for MVS & VM COBOL-DEBUG-PARA. . . OU SET TRACE-OFF TO TRUE. alterando cada caracter “A” para o caracter “C”. TRANSFORM TEXTO FROM “ABC” TO “CAT”. PARAGRAPH-3. O COBOL for MVS & VM não suporta essa instrução. MOVE 0 TO TRACE-SWITCH. mas suporta a instrução INSPECT. . . PARAGRAPH-7. No COBOL for M & VM teremos o mesmo resultado utilizando a instrução abaixo: Código no COBOL for MVS & VM. .

Ele é válido somente quando utilizado com a instrução MOVE. MOVE TIME-OF-DAY TO HORA-EXEC.COBOL for MVS & VM 77 TEXTO PIC X(9) VALUE “ABCXYZCCC”. Possui tamanho de 6 bytes decimais no formato: HHMMSS (hora. TIME-OF-DAY O OS/VS COBOL aceita o registro especial TIME-OF-DAY. HORA-EXEC PIC X(06). . segundo) Programas OS/VS COBOL com a estrutura abaixo devem ser alterados como se segue. minuto. 77 . Código no OS/VS COBOL. . 12 . INSPECT TEXTO CONVERTING “ABC” TO “CAT”.

DATA-EXEC PIC X(08). 13 . MOVE CURRENT-DATE TO DATA-EXEC. CURRENT-DATE O OS/VS COBOL suporta o registro especial CURRENT-DATE. MOVE FUNCTION CURRENT-DATE (9:6) TO HORA-EXEC. Nota: Os registros especiais TIME-OF-DAY e TIME não são válidos sob o CICS. ano) O COBOL for MVS & VM não suporta esse registro especial. Código no OS/VS COBOL. 77 . dia) Programas OS/VS COBOL com a estrutura abaixo devem ser alterados como se segue. . Possui tamanho de 8 bytes alfanuméricos no formato: MM/DD/AA (mês. mês. mas suporta o registro especial DATE. . Ele é válido somente quando utilizado com a instrução MOVE. dia. Ele é válido apenas quando utilizado com a instrução ACCEPT (não é válido sob CICS).COBOL for MVS & VM Código no COBOL for MVS & VM. HORA-EXEC PIC X(06). Tem tamanho de 6 bytes alfanuméricos no formato: AAMMDD (ano. . . 77 .

X(02). portanto deve ser removida. portanto deve ser removida. Elementos ASSIGN . 03 MES 03 FILLER 03 DIA 03 FILLER 03 ANO PIC PIC PIC PIC PIC X(02).COBOL for MVS & VM Código no COBOL for MVS & VM. 01 DATA-EXEC. No COBOL for MVS & VM essas frases não são aceitas. O COBOL for MVS & CONTROL VM não aceita. O COBOL for MVS & VM não aceita esta frase. 01 DATA-ACCEPT. ASSIGN . X(02). 03 ANO PIC X(02). O integer era tratado como comentário no OS/VS COBOL. X(01) VALUE “/”. OR 14 . 03 DIA PIC X(02). .. DIVERSOS Observações Para utilizar esta cláusula no COBOL for MVS & VM o OR deve ser removido.. ASSIGN TO integer Para utilizar esta cláusula no COBOL for system-name MVS & VM o integer deve ser removido. X(01) VALUE “/”.. . Instrução CLOSE – O OS/VS COBOL aceita as frases WITH com as frases WITH POSITIONING e DISP como extensões da POSITIONING e DISP instrução CLOSE. MOVE CORRESPONDING DATA-ACCEPT TO DATA-EXEC.. devendo ser removidas. Cláusula FILE-LIMIT do O OS/VS COBOL aceita a cláusula e trataparágrafo FILEa como comentário. FOR O OS/VS COBOL aceita a frase e trata-a MULTIPLE REEL/UNIT como documentacional. . ACCEPT DATA-ACCEPT FROM DATE. 03 MES PIC X(02).

A cláusula FILE STATUS fornece informações após cada operação de acesso aos arquivos. Cláusula LABEL No COBOL for MVS & VM essas frases RECORD não são aceitas. apesar de todos os registros terem o mesmo tamanho (tamanho fixo). Instrução OPEN com Essas opções não são aceitas pelo LEAVE. a CONTAINS n cláusula RECORD CONTAINS n CHARACTERS CHARACTERS era alterada implicitamente quando a cláusula OCCURS DEPENDING ON fosse especificada no FD. ou será interpretado como sendo um comentário do elemento anterior. Instrução ON Funções similares são providas pelas instruções IF e EVALUATE. A AFTER STANDARD cláusula FILE STATUS do parágrafo FILE ERROR CONTROL deve ser utilizada para substituir a frase GIVING. REREAD e COBOL for MVS & VM e devem ser DISP. removidas. Cláusula RECORD Numa variação do ANSI COBOL 74. colocando um * (asterisco) na coluna 7. devendo ser removidas.COBOL for MVS & VM Comentariar. Sob o COBOL for MVS & VM a cláusula RECORD CONTAINS n CHARACTERS sempre produz um arquivo de tamanho FIXO. Instrução NOTE Todas as instruções NOTE devem ser removidas ou comentariadas. com as frases Não esquecer de verificar as variáveis TOTALING/TOTALED associadas com essas frases. REMARKS 15 . produzindo um arquivo de tamanho variável. Cláusula LABEL A cláusula LABEL RECORD deve ser RECORD em uma retirada das entradas de descrição dos entrada SD arquivos de SORT/MERGE. portanto deve ser removida. AREA Frase GIVING da O COBOL for MVS & VM não suporta essa declaração USE frase.

Ao ser convertido para o COBOL for MVS & VM deverá ter a instrução acima modificada para: MOVE CORRESPONDING GROUP-ITEM-A MOVE CORRESPONDING GROUP-ITEM-A TO GROUP-ITEM-B. O COBOL for MVS & VM não suporta rótulos (labels) não padronizados (standard). TO GROUP-ITEM-C. O USING não é aceito pelo COBOL for MVS & VM.COBOL for MVS & VM USE BEFORE STANDARD LABEL Sentença START . por isso deve ser removida. EXTENSÕES DO OS/VS COBOL MVS & VM NÃO SUPORTADAS PELO COBOL FOR INSTRUÇÃO MOVE CORRESPONDING O COBOL for MVS & VM não permite especificar mais do que um campo receptor. . Um programa em OS/VS COBOL que possua a instrução: MOVE CORRESPONDING GROUP-ITEM-A TO GROUP-ITEM-B GROUP-ITEM-C. O COBOL for MVS & VM não suporta essa sentença. No COBOL for MVS & VM a sentença START deve utilizar a frase KEY IS. . Não é possível processar arquivos com rótulos (label) não padronizados (non-standard) com o COBOL for MVS & VM. USING KEY O OS/VS COBOL aceita a sentença. O OS/VS COBOL permite a sentença START com a frase USING KEY. 16 .

MOVE A TO B THEN ADD C TO D. OPERADORES RELACIONAIS – CODIFICAÇÕES INCORRETAS • Alguns usos incorretos de parênteses em condições relacionais são aceitas pelo OS/VS COBOL. de modo que as instruções acima deverão ser alteradas para: MOVE ADD A C TO TO B. D. O COBOL for MVS & VM não aceita. como exemplificado a seguir:.4 do OS/VS COBOL aceitavam operadores inválidos nas condições da relação. com os respectivos códigos válidos.3 = TO > THAN < THAN COBOL for MVS & VM = ou EQUAL TO > ou GREATHER THAN < ou LESS THAN 17 . Ex. Na tabela abaixo estão listados os operadores que não mais são aceitos. mas são tratadas como erro pelo COBOL for MVS & VM.COBOL for MVS & VM THEN COMO SENTENÇA DE CONEXÃO O OS/VS COBOL aceita o uso da sentença de conexão THEN.: (A = 0 A = B AND AND B) (< = C 0 OR D) • Releases anteriores ao release 2. OS/VS COBOL 2.

No release 2. 05 SORT-KEY 05 SORT-HEADER-INFO PIC X(20). . PIC X(40)..4 do OS/VS COBOL. . MOVE1 . 01 A . 01 SORT-REC-HEADER. AUSÊNCIA DE PONTO NOS PARÁGRAFOS Releases anteriores ao release 2. TO A. GOBACK. WORKING-STORAGE SECTION. mas no COBOL for MVS & VM a compilação terminará com erro Slevel (RC=12).4 do OS/VS COBOL e o COBOL for MVS & VM não aceitam. No COBOL for MVS & VM é gerado uma mensagem de erro (E-level). A seqüência de código a seguir.4 do OS/VS COBOL aceitavam a cláusula REDEFINES no nível 01 das descrições dos arquivos (SD ou FD).4 do OS/VS COBOL aceitavam nomes de parágrafos sem o ponto. CLÁUSULA REDEFINES EM DESCRIÇÕES DE ARQUIVOS (SD E FD) Releases anteriores ao release 2.. . um parágrafo sem ponto gera uma mensagem de aviso (warning). 18 . PIC 9. O COBOL for MVS & VM emite uma mensagem de aviso (W-level) se existirem dois pontos consecutivos em uma linha da PROCEDURE DIVISION e uma mensagem de erro (S-level) se existirem dois pontos consecutivos na ENVIRONMENT DIVISION ou na DATA DIVISION. O código apresentado a seguir compila sem erro no OS/VS COBOL.COBOL for MVS & VM PONTOS CONSECUTIVOS – EM QUALQUER DIVISÃO DO COBOL O OS/VS COBOL permite que se codifique dois pontos consecutivos em qualquer de suas divisões. O release 2.. é inválida: SD .

o literal da cláusula VALUE tem de ser compatível com o definido na cláusula PICTURE. CLÁUSULA VALUE – VALOR SINALIZADO EM RELAÇÃO A CLÁUSULA PICTURE No OS/VS COBOL. 01 A. O COBOL for MVS & VM não permite. o literal da cláusula VALUE pode ser sinalizado mesmo que a cláusula PICTURE não seja sinalizada.: 01 TAB. 05 FILLER PIC X(20). No COBOL for MVS & VM. CLÁUSULA REDEFINES EM TABELAS O OS/VS COBOL permite a especificação de tabelas dentro do escopo da cláusula REDEFINES. o código abaixo é permitido no OS/VS COBOL. 01 SORT-REC-DETAIL REDEFINES SORT-REC-HEADER. Por exemplo. mas no COBOL for MVS & VM irá gerar mensagens de erro (E-level e Slevel): WORKING-STORAGE SECTION. no COBOL for MVS & VM. 03 CAMPO-RED REDEFINES CAMPO-TAB PIC X. o sinal deve ser removido do literal da cláusula VALUE. Se a definição da cláusula PICTURE for não sinalizada. 01 D PIC 9(03). 05 SORT-DETAIL-INFO PIC X(60). 05 CAMPO PIC X. no COBOL for MVS & VM gera uma mensagem de erro (S-level) e a compilação termina com RC=12. 03 CAMPO-TAB OCCURS 10. O exemplo abaixo gera uma mensagem de aviso (W-level) no OS/VS COBOL (RC=4). Ex. Para obter-se uma função similar. CLÁUSULA OCCURS O OS/VS COBOL permite que após a cláusula OCCURS sejam codificadas frases fora da ordenação padrão.COBOL for MVS & VM 05 FILLER PIC X(20). a cláusula REDEFINES deve ser removida. 19 .

aceita pelo COBOL for MVS & VM: WORKING-STORAGE SECTION. C PIC 9(02). 01 A. Reordenando as frase após a cláusula OCCURS ter-se-á uma codificação similar. 03 C PIC 9(02).COBOL for MVS & VM 02 B 03 OCCURS 1 TO 200 TIMES ASCENDING KEY C DEPENDING ON D INDEXED BY H. 02 B OCCURS 1 TO 200 TIMES DEPENDING ON D ASCENDING KEY C INDEXED BY H. 20 . 01 D PIC 9(03).

teria-se de codificar como se segue. se a cláusula JUSTIFIED for utilizada com a cláusula VALUE. IF .. 21 . JUSTIFIED Sob o OS/VS COBOL com a opção de compilação LANGLVL(1). Resultando no valor FIRST ocupando as 5 últimas posições do campo. bbbbFIRST No COBOL for MVS & VM. FIRSTbbbb Para obter-se o mesmo resultado.. No COBOL for MVS & VM se as cláusulas VALUE e JUSTIFIED são utilizadas para itens alfabéticos ou alfanuméricos. o dado inicial é alinhado a direita. resultando no valor FIRST ocupando as primeiras posições do campo. 77 TEXTO PIC X(9) JUSTIFIED VALUE “ FIRST”. teríamos: 77 TEXTO PIC X(9) JUSTIFIED VALUE “FIRST”.COBOL for MVS & VM ELEMENTOS DE LINGUAGEM ALTERADOS FILE STATUS Os STATUS KEY de retorno do QSAM e do VSAM foram alterados e estão mais específicos. Vide tabela de STATUS KEY nos anexos 1 e 2. Por exemplo no OS/VS COBOL. OTHERWISE Substituir o OTHERWISE por ELSE. teríamos: 77 TEXTO PIC X(9) JUSTIFIED VALUE “FIRST”. o dado inicial é alinhado a esquerda.

No COBOL for MVS & VM o campo RECVFIELD conterá o valor 123000. tinha os zeros finais suprimidos. No COBOL for MVS & VM os zeros finais são movidos e incluídos nas comparações. com a opção de compilação LANGLVL(1). . EX: 05 SEND-FIELD PIC 999PPP VALUE 123000.COBOL for MVS & VM INSTRUÇÃO MOVE PARA CAMPOS DEFINIDOS COM P NA PICTURE A movimentação ou comparação do conteúdo de um campo definido com P na PICTURE para um campo alfanumérico. 05 RECV-FIELD PIC XXXXXX. No OS/VS COBOL. MOVE SEND-FIELD TO RECV-FIELD. CLÁUSULA ASSIGN O COBOL for MVS & VM somente aceita o seguinte formato para a cláusula ASSIGN: ASSIGN TO assignment-name. Onde assignment-name pode ter os seguintes formatos: Arquivo QSAM Arquivo VSAM [comentário-][S-]nome [comentário-]AS-]nome 22 . o código acima resultará no valor 123bbb para o campo RECV-FIELD. . SENTENÇAS ARITMÉTICAS O COVOL for MVS & VM suporta os seguintes itens aritméticos com maior precisão: • Usando itens de dados com ponto flutuante • Usando literais com ponto flutuante • Usando exponenciação Programas que utilizem sentenças aritméticas que contenham os itens acima deverão ser testados para garantir que a maior precisão não trará impactos negativos na execução dos mesmos. no OS/VS COBOL.

segundoMês Dia. DISPLAY ‘PGM COMPILADO EM ’ DATA-COMPL. WHEN-COMPILED As regras para utilização deste registrador especial são as mesmas.mm. . No COBOL for MVS & VM o formato é: MM/DD/YYhh.minuto.ssMMM DD. Ano) 23 . MOVE WHEN-COMPILED TO DATA-COMPL. MOVE WHEN-COMPILED TO DATA-COMPL. o mesmo deve ser alterado para o formato aceito pelo COBOL for MVS & VM. os formatos dos dados são diferentes. . CLÁUSULA OCCURS DEPENDING ON COM A FRASE ASCENDING/ DESCENDING KEY O OS/VS COBOL aceita a chave com tamanho variável na frase ASCENDING/DESCENDING KEY da cláusula OCCURS DEPENDING ON como uma extensão da IBM.COBOL for MVS & VM Arquivo VSAM Indexado ou Relativo [comentário-]nome Se o programa em OS/VS COBOL usa outro formato na cláusula ASSIGN. YYYY exemplo de utilização: 01 DATA-COMPL PIC X(20). No OS/VS COBOL o formato é: hh. (hora. . .ss (Mês/Dia/Anohora.minuto.segundo) exemplo de utilização: 01 DATA-COMPL PIC X(16).mm. No COBOL for MVS & VM a frase ASCENDING/DESCENDING KEY da cláusula OCCURS DEPENDING ON não pode especificar a chave com tamanho variável. Entretanto.

horário de Greenwich = diferença em minutos ref. WRITE OUTPUT-REC AFTER POSITIONING SK-CC. horário de Greenwich exemplo de utilização: DISPLAY ‘PGM COMPILADO EM ’ FUNCTION WHEN-COMPILED.COBOL for MVS & VM DISPLAY ‘PGM COMPILADO EM ’ DATA-COMPL. AFTER ADVANCING. OS/VS COBOL SK-CC COBOL for MVS & VM 1 AFTER ADVANCING PAGE AFTER POSITIONING SK-CC 24 ..AFTER ADVANCING com variáveis.. Usando WRITE.. No COBOL for MVS & VM deve ser usado a instrução WRITE .. Os exemplos abaixo apresentam as frase POSITIONING do OS/VS COBOL e as frases equivalentes no COBOL for MVS & VM..AFTER ADVANCING com literais. O COBOL for MVS & VM não suporta.. NOTA: No COBOL for MVS & VM foi disponibilizado a função WHENCOMPILED que fornece a mesma informação no formato: YYYYMMDDhhmmssccdhgmg Onde: YYYY MM DD hh mm ss cc d gh gm = Ano = Mês = Dia = hora = minuto = segundo = centésimo de segundo = sinal(+ ou -) = diferença em horas ref. O OS/VS COBOL suporta a instrução WRITE com a frase AFTER POSITIONING. OS/VS COBOL AFTER AFTER AFTER AFTER POSITIONING POSITIONING POSITIONING POSITIONING 0 1 2 3 COBOL for MVS & VM AFTER AFTER AFTER AFTER ADVANCING ADVANCING ADVANCING ADVANCING PAGE 1 LINE 2 LINES 3 LINES WRITE AFTER POSITIONING Usando WRITE.

A cláusula passa a aceitar três formatos. VALUE Sob o COBOL for MVS & VM passa a suportar a inicialização de variáveis com nulo.Condition-Name Value.COBOL for MVS & VM AFTER POSITIONING SK-CC ‘ ‘ AFTER POSITIONING SK-CC 0 AFTER POSITIONING SK-CC NOTA: AFTER ADVANCING 1 LINE AFTER ADVANCING 2 LINES AFTER ADVANCING 3 LINES Com o COBOL for MVS & VM. exemplificados abaixo.NULL Value. OU Condition-Name VALUE literal1 THRU literal2. channel skipping somente é suportado com referência no SPECIAL-NAMES. Obs. VALUE literal. OPEN Permite OPEN EXTEND para arquivos indexados e relativos. VALUE IS NULL somente pode ser especificado para itens elementares descritos implicitamente ou explicitamente com USAGE IS POINTER. MERGE Permite vários arquivos no GIVING. 88 88 Condition-Name VALUE literal. DISP nem REVERSED. VALUE NULL.Literal Value. Não aceita as opções LEAVE. Formato 3 . 25 .: OU VALUE NULLS. Formato 1 . REREAD. Formato 2 .

: UNSTRING AREA-A DELEMITED BY ‘-‘ OR ‘. No COBOL for MVS & VM os códigos de retorno do SORT são apenas: 00 – Processamento efetuado com sucesso 16 – Erro no processamento.COBOL for MVS & VM SEARCH O COBOL for MVS & VM não permite que o campo da condição WHEN seja o campo KEY especificado na tabela. SORT Permite arquivos indexados e relativos no USING/GIVING. STRING O OS/VS COBOL permite campos de origem definidos como numéricos não inteiros. Não pode ser usado para campo numérico editado.’ INTO AREA-B. O campo receptor pode ser um item de dados alfabético. No COBOL for MVS & VM campos de origem definidos como numéricos tem de ser inteiros. Permite vários arquivos no GIVING. 26 . entretanto itens editados não são permitidos. SORT-RETURN No OS/VS COBOL os códigos de retorno do SORT são: 00 – Processamento efetuado com sucesso de 02 até 12 – Erros de I/O nos arquivos 16 – Erro no processamento. UNSTRING A palavra “OR” tem de ser codificada entre identificadores: Ex.

.. CONVERTING ... .. .. A instrução PERFORM pode ser: • Fora de linha • Em linha .. 27 ... REPLACING ... TALLYING ..... THRU . Ex. PERFORM A instrução PERFORM transfere explicitamente o controle para uma ou mais procedures e implicitamente retorna o controle para a próxima instrução executável após a instrução PERFORM.. THRU . PERFORM . atualizados (REPLACED) ou ambos... n TIMES PERFORM .COBOL for MVS & VM WRITE Não pode ser usado para arquivos QSAM abertos como I/O.. Ex.Quando o nome de uma procedure for omitido O PERFORM (IN LINE) permite codificar comando(s) na própria instrução PERFORM...... INSPECT INSPECT INSPECT INSPECT . ou grupos de caracteres. TALLYING .. Aceita todas as variações de testes... em um item de dados devem ser contados (TALLIED). .. • conta as ocorrências de um caracter específico em um item de dados • preenche todo ou parte de um item de dados com brancos ou zeros O CONVERTING funciona como se tivesse sido emitido um REPLACING com uma série de frases ALL.. REPLACING . THRU .Quando o nome de uma procedure for fornecido ....: PERFORM . PERFORM . INSPECT A instrução INSPECT especifica que caracteres.

Y. THRU ..... PERFORM UNTIL IO-STATUS EQUAL 'QC' PERFORM R050-OBTER-MSG-FILA-IMS THRU R050-OBTER-MSG-FILA-IMS-FIM IF IO-STATUS EQUAL ' ' PERFORM R100-TRATAR-EMISSAO-CMD THRU R100-TRATAR-EMISSAO-CMD-FIM END-IF END-PERFORM. BY .ALTERAÇÕES NA FRASE VARYING/AFTER O exemplo abaixo ilustra a diferença na execução: Ex. UNTIL . PERFORM ROT-1 VARYING X FROM 1 BY 1 UNTIL X > 3 28 . PERFORM .. [with test after/before] VARYING . o parágrafo ROT-A é executado 8 vezes com os seguintes valores: X: Y: 1 1 1 2 1 3 2 1 2 2 2 3 3 2 3 3 No COBOL for MVS & VM.: PERFORM ROT-A VARYING X FROM 1 BY 1 UNTIL X > 3 AFTER Y FROM X BY 1 UNTIL Y > 3.COBOL for MVS & VM [with test after/before] UNTIL ... FROM . PERFORM ..... Z. GOBACK.. o código do programa no COBOL for MVS & VM deve ser alterado como se segue: MOVE 1 TO X... No OS/VS COBOL. Exemplo PERFORM (IN-LINE). o parágrafo ROT-A é executado 6 vezes com os seguintes valores: X: Y: 1 1 1 2 1 3 2 2 2 3 3 3 Para atingir o mesmo resultado obtido no OS/VS COBOL.

.COBOL for MVS & VM . . . PERFORM UNTIL X > 3 MOVE 1 TO Y PERFORM UNTIL Y > 3 PERFORM ROT-A ADD 1 TO Y END-PERFORM ADD 1 TO X END-PERFORM. . PERFORM ROT-A VARYING Y FROM Z BY 1 UNTIL Y > 3 MOVE X TO Z. . ROT-1. . 29 . OU (utilizando o PERFORM in line) MOVE 1 TO X. . ROT-A. .

COBOL for MVS & VM ELEMENTOS DE LINGUAGEM ADICIONADOS TERMINADOR EXPLÍCITO As instruções abaixo ganharam terminador explícito ADD END-ADD CALL END-CALL COMPUTE DELETE DIVIDE EVALUATE IF MULTIPLY PERFORM READ RETURN REWRITE SEARCH START STRING SUBTRACT UNSTRING WRITE END-COMPUTE END-DELETE END-DIVIDE END-EVALUATE END-IF END-MULTIPLY END-PERFORM END-READ END-RETURN END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING END-WRITE PADDING CHARACTER Especifica o caracter que será utilizado para preencher o bloco. 30 . Usado apenas em arquivos seqüenciais.

EXTERNAL NA WS A cláusula EXTERNAL especifica que a memória associada com o item de dados pode ser acessada por qualquer programa dentro da unidade de execução. O uso da cláusula EXTERNAL não implica que o nome do conector do arquivo associado seja um nome global. Indica que este conector de memória é um GLOBAL NAME. GLOBAL NA FD A cláusula GLOBAL especifica que o nome do conector do arquivo está disponível para todos os programas contidos no programa que a declarou. É de uso exclusivo de arquivos seqüenciais de tamanho variável. EXTERNAL NO FD A cláusula EXTERNAL especifica que um conector de arquivo é externo e permite o compartilhamento do arquivo entre programas. cada nome de registro associado com a descrição do registro tem de ter o mesmo nome e o registro tem de ter o mesmo número de caracteres e 31 . Se dois ou mais programas. Somente pode ser especificado no nível 01 na WORKING STORAGE. Indica que este conector de arquivo é um GLOBAL NAME. dentro da mesma unidade de execução descrevem o mesmo registro de dados externo. O uso da cláusula EXTERNAL não implica que o nome do conector da memória associada seja um nome global.COBOL for MVS & VM RECORD DELIMITER Indica o método para determinar o tamanho de um registro de tamanho variável. GLOBAL NA WS A cláusula GLOBAL especifica que o nome do conector de memória está disponível para todos os programas contidos no programa que a declarou.

NOT ON OVERFLOW... NOT NOT AT END. . NOT END-OF-PAGE CONTINUE Similar ao NEXT SENTENCE TITLE Colocar título no topo da página de compilação 32 .COBOL for MVS & VM formato dos dados. um programa que descreve um registro externo pode conter a cláusula REDEFINES que redefina completamente o registro externo e esta completa redefinição não pode ocorrer em outro programa da mesma unidade de execução. NOT INVALID KEY. Entretanto. NOT ON SIZE ERROR.. NOT ON EXCEPITION.

COBOL for MVS & VM DAY-OF-WEEK Informa o dia da semana de acordo com a tabela abaixo 1 = segunda 2 = terça 3 = quarta 4 = quinta 5 = sexta 6 = sábado 7 = domingo EVALUATE A instrução EVALUATE fornece uma notação simples para uma série de instruções IF. Uma tabela inteira pode ser inicializada através desta 33 . Ex. EVALUATE WHEN TI-CMD 'BMP ' PERFORM 2550-TRATAR-REGIOES THRU 2550-TRATAR-REGIOES-FIM WHEN 'DMPQ' PERFORM 7000-TRATAR-DMPQ THRU 7000-TRATAR-DMPQ-FIM WHEN 'IMSC' PERFORM 5000-TRATAR-IMSC THRU 5000-TRATAR-IMSC-FIM WHEN 'LINE' PERFORM 3700-TRATAR-LINE THRU 3700-TRATAR-LINE-FIM WHEN 'MNUC' PERFORM 4500-TRATAR-MNUC THRU 4500-TRATAR-MNUC-FIM WHEN 'MPP ' PERFORM 2550-TRATAR-REGIOES THRU 2550-TRATAR-REGIOES-FIM WHEN 'PSTO' PERFORM 2500-TRATAR-PSTOP THRU 2500-TRATAR-PSTOP-FIM WHEN OTHER MOVE '001E' TO NU-VAR-MSG MOVE WK-AUX-HORA TO CA-VAR-MSG PERFORM 9200-INSERIR-RESPOSTA THRU 9200-INSERIR-RESPOSTA-FIM END-EVALUATE. INITIALIZE Inicializa campo ou conjunto de campos com valores pré determinados.

Um item de dado tipo índice não pode ser inicializado através desta instrução. TO CAMPO-C. TO CAMPO-B. INITIALIZE campo(s) REPLACING tipo(s) BY campo ou literal. Ex. INITIALIZE campo(s). Esta instrução é funcionalmente equivalente a uma ou mais intrusões MOVE. A tabela das funções disponíveis pode ser vista no anexo 3. REGISTRADORES E ENDEREÇAMENTOS O COBOL for MVS & VM apresenta várias novidades nesta área. Ex. algumas delas serão mostradas a seguir LENGTH OF Contém o número de bytes utilizados por um campo Ex. uma operação com caracter ou uma operação lógica e permite que o resultado derivado automaticamente da execução possa ser referenciado.COBOL for MVS & VM instrução. MOVE LENGTH OF CAMPO-A ADD LENGTH OF CAMPO-A ADDRESS OF Contém o endereço de cada variável na LINKAGE SECTION. 34 . FUNÇÃO INTRÍNSECA Função intrínseca é uma função que executa uma operação matemática. SET ADDRESS OF CAMPO-LK TO CAMPO-ADDR-WK.

MOVE CAMPO-A (ADDR-INI:TAM) TO CAMPO-B. (Formato 5) • SET variável-condicional TO TRUE. Ex. MOVE variável (posição-inicial:tamanho) TO CAMPO MOVE CAMPO-A (5:8) TO CAMPO-B.COBOL for MVS & VM POINTER Indica campos definidos para armazenar endereços. SET Atribui valores a campos. 1. Possui 5 formatos. 05 CAMPO-ADDR-WK PIC X(04) POINTER VALUE NULLS. 3. (Formato 1) MOVE 1. PROBLEMAS MAIS COMUNS NA CONVIVÊNCIA COM O OS/VS COBOL PROBLEMAS DE ENDEREÇAMENTO 35 . (Formato 4) • SET nome-mneumonico TO ON/OFF.: • SET ADDRESS OF identifier TO NULLS. 4. Permite endereçar uma determinada posição de memória. (Formato 3) • SET index-name UP/DOWN BY (Formato2) • SET index-name TO 1. não definida explicitamente. 2. 5. Ex. SET básico SET para ajustar índices SET para switches externos SET para nomes condicionais SET para itens de dados USAGE IS POINTER Ex.

RENT RMODE(ANY) DATA(24) COBOL for MVS & VM PGM2 RENT RMODE(ANY) DATA(31) COBOL for MVS & VM PGM3 Dados D3 Linha de 16 Mb OS/VS COBOL PGM1 OS/VS COBOL PGM5 Dados D2 COBOL for MVS & VM PGM4 DADOS D1 DADOS D4 NORENT RMODE(24) DATA(24/31) DADOS D5 36 . Todas as chamadas são dinâmicas e representadas pelas setas. deve-se garantir que todos os dados e lista de parâmetros estão abaixo da linha de 16 Mb. Programas OS/VS COBOL podem chamar programas COBOL for MVS sem problemas. Os itens de dados da WORKING STORAGE podem estar acima ou abaixo da linha de 16 Mb dependendo das opções de compilação DATA. A figura abaixo mostra as diferentes combinações em função das opções de compilação utilizadas. Todos os CALLs da figura executarão com sucesso exceto para o programa PGM3 chamado pelo programa PGM5. Para evitar erros (data exception). a localização é definida pela opção de compilação DATA (PGM2 e PGM3). Como o programa PGM3 foi compilado com DATA(31). Programas compilados com a opção RENT. compilando os programas COBOL for MVS & VM com as opções de compilação DATA(24) para programas RENT ou com RMODE(24) para programas NORENT. Nos programas compilados com a opção NORENT os itens de dados da WORKING STORAGE são incluídos no módulo objeto e a localização depende da opção RMODE (PGM4). RENT e RMODE. desde que ambos os programas acessem dados abaixo da linha de 16 Mb. estão incluídos no módulo objeto e estão abaixo da linha de 16 MB. Quando um programa COBOL for MVS & VM chama um programa OS/VS COBOL podem ocorrer erros (data exception) se os dados ou a lista de parâmetros estiver acima da linha de 16 Mb. possuem os itens de dados da WORKING STORAGE separados do módulo. Nota: CALLs estáticos de programas com AMODE=31 para programas OS/VS COBOL sempre falharão. Isto significa que a lista de parâmetros não pode ser acessada pelo programa PGM5 e o CALL irá falhar. O PGM1 e o PGM5 são programas OS/VS COBOL os itens de dados da WORKING STORAGE. os dados e a lista de parâmetros estão localizados acima da linha de 16 Mb.COBOL for MVS & VM Todos os programas OS/VS COBOL são AMODE(24) e RMODE(24). dos mesmos.

. por exemplo: Arquivos com formato O maior tamanho de registro especificado variável no programa tem que ser 4 bytes menor Format-V ou Format-S que o atributo de tamanho (LRECL) do Data Set. Este tópico provê um guia para ajudar a prevenir os problemas mais comuns que resultam no FILE STATUS 39 quando do acesso a arquivos QSAM. tamanho do registro. Esses problemas. FALHAS NA INSTRUÇÃO OPEN PARA ARQUIVOS QSAM PREVENINDO O FILE STATUS 39 PARA ARQUIVOS QSAM. do Language Environment. formato do registro (fixo ou variável). diversos problemas de compatibilidade poderão ocorrer. PROCESSANDO ARQUIVOS EXISTENTES Programas que acessem arquivos existentes. os programas OS/VS COBOL devem ser regerados com a opção RES ou relinkeditados com o Language Environment de modo que todos os programas envolvidos na unidade de execução utilizem os mesmos módulos (ILBO. devem ter a descrição do arquivo consistente com os atributos do Data Set.. Arquivos com formato O maior tamanho de registro especificado indefinido no programa tem de ser exatamente igual 37 . normalmente.) no módulo de carga do programa.... etc. Caso contrário. Arquivos com formato fixo O tamanho do registro especificado no Format-F programa tem de ser exatamente igual ao atributo de tamanho (LRECL) do Data Set. estão relacionados com a mistura na definição dos atributos de organização dos arquivos.COBOL for MVS & VM OPÇÃO DE COMPILAÇÃO RES/NORES Todos os programas COBOL for MVS & VM são RES e somente executam sob o Language Environment. ou vice versa. Se em uma unidade de execução existirem programas COBOL for MVS & VM chamando de forma estática programas OS/VS COBOL com a opção NORES.). A opção de compilação NORES do OS/VS COBOL carrega os módulos executáveis (ILBO.

01 REGISTRO-A PIC X(06). Assumindo que o arquivo existente no exemplo anterior tenha um formato indefinido (Format-U) ao invés de um formato variável. É importante lembrar que as informações especificadas no JCL se sobrepõem às informações do rótulo (label) do Data Set. 01 REGISTRO-B PIC X(80). pode-se definir um arquivo de formato variável (Format-V) como mostrado abaixo: FILE SECTION.COBOL for MVS & VM Format-U Nota: ao atributo de tamanho (BLKSIZE) do Data Set. DEFININDO ARQUIVOS DE TAMANHO FIXO Para definir registros de tamanho fixo. Em qualquer das duas opções o tamanho do registro tem de ser igual ao atributo de tamanho (LRECL) do Data 38 . DEFININDO REGISTROS DE TAMANHO VARIÁVEL A maneira mais fácil de definir registros de tamanho variável nos programas é usar a cláusula RECORD IS VARYING FROM inteiro1 TO inteiro-2 na descrição do arquivo (FD) e especificar um valor apropriado para o inteiro-2. RECORDING MODE IS V RECORD IS VARYING FROM 6 TO 104 CHARACTERS. deve-se usar a cláusula RECORD CONTAINS inteiro ou omitindo esta cláusula e especificando todos os níveis 01 da descrição do registro com o mesmo tamanho. FD MOVIMENTO. 01 REGISTRO-B PIC X(80). 01 REGISTRO-A PIC X(06). Por exemplo. RECORDING MODE IS U RECORD IS VARYING FROM 6 TO 104 CHARACTERS. pode-se definir o arquivo como mostrado a seguir: FILE SECTION. assumindo que um determinado atributo de tamanho de um Data Set seja 104 (LRECL=104) e tendo em mente que o maior tamanho de registro é determinado pela cláusula RECORD IS VARYING e não pela descrição do nível 01 do registro. FD MOVIMENTO.

processar arquivos que possuam tamanhos de registros diferentes... quando pré definindo os arquivos. Quando o mesmo programa é utilizado para.. tem de existir uma FD correspondente na FILE SECTION. INPUT-OUTPUT SECTION. 2 FILE-CONTROL. Código do programa COBOL for MVS & VM: ENVIRONMENT DIVISION. Na ilustração abaixo é mostrado o relacionamento entre o cartão DD.15). Quando um arquivo é especificado na entrada FILECONTROL..PACE=(TRK. certifique-se que os atributos especificados no cartão DD não estão em conflito com os atributos especificados no programa..COBOL for MVS & VM Set. Se o arquivo existente é um Data Set em ASCII (DCB=(OPTCD=Q)). o descrito no FILE-CONTROL e as entradas (FD) no FILE SECTION: Cartão DD do JCL: 1 //OUTFILE DD DSN=.. Onde: (1) (2) O ddname no cartão DD corresponde ao assignmentname da cláusula ASSIGN..DCB=(BLKSIZE=6160). PROCESSANDO ARQUIVOS NOVOS Antes de executar programas que irão gravar registros novos. somente é necessário especificar um mínimo de parâmetros. para evitar conflitos.. SELECT CARPOOL ASSIGN TO OUTFILE ORGANIZATION IS SEQUENTIAL ACCESS IS SEQUENTIAL.. // UNIT=SYSDA. o programa deve ter especificado a cláusula CODE-SET na descrição do arquivo (FD). em diferentes execuções.RLSE).. FILE SECTION. 1 39 .(45... Na maioria dos casos. 2 FD CARPOOL LABEL RECORD STANDARD BLOCK CONTAINS 0 CARACTERS RECORD CONTAINS 80 CHARACTERS. DATA DIVISION. recomenda-se que seja codificada a cláusula RECORD CONTAINS 0. .

para executar programas sob o CICS. Com o COBOL for MVS & VM. a instrução SERVICE RELOAD é requerida para viabilizar o endereçamento dos itens definidos na LINKAGE SECTION.COBOL for MVS & VM PROGRAMAS CICS – CONSIDERAÇÕES SOBRE A CONVERSÃO CHAMADAS DINÂMICAS (DYNAMIC CALL) QUANDO EXECUTANDO SOB O CICS • O OS/VS COBOL permite que programas emitam chamadas dinâmicas (DYNAMIC CALL) quando executados no CICS. não é mais necessário passar explicitamente o tamanho dos argumentos para alguns dos comandos CICS. O Language Environment não permite. Pode-se usar o registro especial LENGTH OF nas instruções do COBOL for MVS & VM em que os itens numéricos de dados estejam explicitamente definidos. REGISTRO ESPECIAL LENGTH OF Através do registro especial LENGTH OF. Um programa OS/VS COBOL executando no CICS sob o Language Environment terminará anormalmente com o código de abend U3504. A informação é obtida através do número de caracteres que o item de dados ocupa no programa. a instrução SERVICE RELOAD não mais é necessária e se existir será tratada como comentário. SERVICE RELOAD No OS/VS COBOL. • No CICS não se deve misturar programas OS/VS COBOL com programas COBOL for MVS & VM na mesma unidade de execução. 40 .

. . 05 PARM-FILLER PIC S9(8) COMP. . 01 AREA2. . 01 AREA1. 05 REC-DATA1 PIC X(2500). . COBOL for MVS & VM LINKAGE SECTION. . 05 REC-AREA2 PIC X(2500). . . PROCEDURE DIVISION. 01 PARAMETER-LIST. 05 AREA2-DATA PIC X(100). PROCEDURE DIVISION. 01 AREA2. . 01 FILE-RECORD. 05 AREA1-DATA PIC X(100). COBOL for MVS & VM LINKAGE SECTION. 05 REC-AREA1 PIC X(2500). SERVICE RELOAD PARM-AREA1-POINTER. . . . . EXEC CICS READ DATASET("INFILE") RIDFLD(INFILE-KEY) SET(PARM-AREA1-POINTER) LENGTH(RECORD-LEN) END-EXEC. EXEC CICS READ DATASET("INFILE") RIDFLD(INFILE-KEY) SET(ADDRESS OF AREA1) LENGTH(RECORD-LEN) END-EXEC. 41 . 05 AREA1-DATA PIC X(100). PROCEDURE DIVISION. EXEC CICS READ DATASET("INFILE") RIDFLD(INFILE-KEY) SET(ADDRESS OF FILE-RECORD) LENGTH(RECORD-LEN) END-EXEC. .COBOL for MVS & VM RECEBENDO UMA ÁREA DE COMUNICAÇÃO OS/VS COBOL LINKAGE SECTION. 05 PARM-AREA1-POINTER PIC S9(8) COMP. . 05 PARM-AREA2-POINTER PIC S9(8) COMP. 05 RECORD-POINTERB PIC S9(8) COMP. PROCEDURE DIVISION. . PROCESSANDO ÁREAS DE MEMÓRIAS COM MAIS DE 4K OS/VS COBOL LINKAGE SECTION. 05 AREA2-DATA PIC X(100). 01 PARMLIST. SERVICE RELOAD RECORD-POINTERA ADD +4096 TO RECORD-POINTERA GIVING RECORD-POINTERB SERVICE RELOAD RECORD-POINTERB. EXEC CICS READ DATASET("INFILE") RIDFLD(INFILE-KEY) SET(RECORD-POINTERA) LENGTH(RECORD-LEN) END-EXEC. . 05 RECORD-POINTERA PIC S9(8) COMP. . 01 FILE-RECORD. . 01 AREA1. . 05 REC-DATA2 PIC X(2500).

42 . ANY-PARAGRAPH-NAME. LINKAGE SECTION. . 01 WS-DATA-HOLD PIC X(100). . 01 PARAMETER-LIST. PIC S9(8) COMP. . PIC S9(8) COMP. . 01 CHAINED-STORAGE. . . . . . . MOVE CHS-NEXT-AREA TO COBOL for MVS & VM WORKING-STORAGE SECTION. . . 05 CHS-NEXT-AREA USAGE IS POINTER. . 01 WS-DATA-HOLD . SET ADDRESS OF CHAINED-STORAGE TO CHS-NEXT-AREA. PROCEDURE DIVISION. 05 CHS-DATA PIC X(100) . . . . MOVE CHS-DATA TO WS-DATA-HOLD.COBOL for MVS & VM ACESSANDO ÁREAS DE MEMÓRIA ENCADEADAS OS/VS COBOL WORKING-STORAGE SECTION. . . . 05 CHS-NEXT-AREA 05 CHS-DATA . MOVE CHS-DATA TO WS-DATA-HOLD. 01 CHAINED-STORAGE. LINKAGE SECTION. . CHAINED-POINTER. . PIC X(100). PIC X(100). PROCEDURE DIVISION. 05 CHAINED-POINTER . . .

05 REC-OTHER-DATA PIC X(30). . 05 REC-AMT-CNT PIC 9(4). EXEC CICS READ DATASET("INFILE") RIDFLD(INFILE-KEY) SET(ADDRESS OF VAR-RECORD) LENGTH(RECORD-LEN) END-EXEC. 05 FILLER PIC S9(8). 05 RECORD-POINTER PIC S9(8). . . 05 REC-AMT PIC 9(5) OCCURS 1 TO 100 TIMES DEPENDING ON REC-AMT-CNT. 01 VAR-RECORD. 05 REC-AMT-CNT PIC 9(4). . . . . .COBOL for MVS & VM USANDO A CLÁUSULA OCCURS DEPENDING ON OS/VS COBOL LINKAGE SECTION. . 01 PARMLIST. 01 VAR-RECORD. MOVE REC-AMT-CNT TO REC-AMT-CNT. 43 . . . . PROCEDURE DIVISION. PROCEDURE DIVISION. . MOVE REC-OTHER-DATA TO WS-DATA. EXEC CICS READ DATASET("INFILE") RIDFLD(INFILE-KEY) SET(RECORD-POINTER) LENGTH(RECORD-LEN) END-EXEC. MOVE VAR-RECORD TO WS-RECORD-HOLD. 05 REC-OTHER-DATA PIC X(30). 05 REC-AMT PIC 9(5) OCCURS 1 TO 100 TIMES DEPENDING ON REC-AMT-CNT. . MOVE VAR-RECORD TO WS-RECORD-HOLD. . COBOL for MVS & VM LINKAGE SECTION. .

Successful completion 10 At END (no next logical record) Successful completion 30 Permanent error 34 Permanent error File boundary violation.STATUS KEY COBOL for MVS & VM 00 04 05 07 10 30 34 35 37 38 39 41 42 43 44 46 47 48 49 90 92 96 Status Key Values -.COBOL for MVS & VM ANEXOS ANEXO 1 . but file not on a reel/unit medium. I-O.QSAM files OS/VS Meaning COBOL 00 Successful completion (undefined) COBOL for MVS & VM only: Wrong length record Successful completion (undefined) Optional file not present Successful completion NO REWIND/REEL/UNIT/FOR REMOVAL (undefined) specified for OPEN or CLOSE. or EXTEND mode 92 DELETE or REWRITE attempted when file not in OPEN I-O mode 90 Other errors with no further information 92 Logic error 90 No file identification (No DD statement for this file) 44 .QSAM . 90 Nonoptional file not present 90 Device type conflict 92 OPEN attempted for file closed WITH LOCK 90 Conflict of fixed file attributes. OPEN fails 92 OPEN attempted for a file in OPEN mode 92 CLOSE attempted for a file not in Open mode 92 REWRITE attempted when last I/O statement was not READ 92 Attempt to rewrite a sequential file record with a record of a different size 92 Sequential READ attempted with no valid next record 92 READ attempted when file not in OPEN INPUT or I-O mode 92 WRITE attempted when file not in OPEN OUTPUT.

Successful completion 10 10 At END (no next logical record) Successful completion 14 (undefined) On sequential READ for relative file. and DUPLICATES specified. duplicate key and duplicates not allowed 23 23 Invalid key for a VSAM indexed or relative file. Successful completion 04 00 Wrong length record.VSAM . size of relative record number too large for relative key 20 20 Invalid key for a VSAM indexed or relative file 21 21 Invalid key for a VSAM indexed or relative file.COBOL for MVS & VM ANEXO 2 . or EXTEND mode 49 92 DELETE or REWRITE attempted when file not in OPEN I-O mode 90 90 Other errors with no further information 91 91 VSAM password failure 93 93 VSAM resource not available 95 95 Invalid or incomplete VSAM file information 96 96 No file identification (no DD statement for this VSAM file) 97 97 OPEN statement execution successful. size of relative record number to large for relative key 30 30 Permanent error 35 93 96 Nonoptional file not present 37 90 Attempt to open a file not on a mass storage device 39 95 Conflict of fixed file attributes. attempt to write beyond file boundaries COBOL for MVS & VM only: for a WRITE to a relative file.VSAM Files COBOL for OS/VS Meaning MVS & VM COBOL 00 00 Successful completion 02 02 Duplicate key.STATUS KEY Status Key Values -. OPEN fails 41 92 OPEN attempted for a file in OPEN mode 42 92 CLOSE attempted for a file not in OPEN mode 43 92 REWRITE attempted when last I/O statement was not READ or DELETE 46 94 Sequential READ attempted with no valid next record 47 92 READ attempted when file not in OPEN INPUT or I-O mode 48 92 WRITE attempted when file not in OPEN OUTPUT. file integrity verified 45 . Successful completion 05 00 Optional file not present. sequence error 22 22 Invalid key for a VSAM indexed or relative file. no record found 24 24 Invalid key for a VSAM indexed or relative file. IO.

. (YYYYMMDDhhmmssccdhgmg) I Standard date equivalent (YYYYMMDD) of integer date I Julian date equivalent (YYYYDDD) of integer date I Factorial of I1 I The greatest integer not greater than N1 I Integer date equivalent of standard date (YYYYMMDD) I Integer date equivalent of Julian date (YYYYDDD) I Integer part of N1 I Length of argument N N X X I N X Natural logarithm of N1 Logarithm to base 10 of N1 All letters in the argument are set to lowercase Value of maximum argument.. Tipos de argumentos e tipos de funções são abreviados como se segue: _ _ _ _ A I N X = = = = alphabetic integer numeric alphanumeric... Table of Functions FUNCTION-NAME ARGUMENTS N1 ACOS N1.. or N1. or I1. or X1.. note that the type of function depends on the arguments 46 . tipos de funções e valores retornados por cada função intrínseca disponibilizada pelo COBOL for MVS & VM..COBOL for MVS & VM ANEXO 3 .TABELA DE FUNÇÕES A tabela abaixo apresenta uma visão geral dos tipos de argumentos.. TYPE VALUE RETURNED N Arccosine of N1 N Ratio of annuity paid for I2 periods at interest of N1 to initial investment of one N Arcsine of N1 N Arctangent of N1 X Character in position I1 of program collating sequence N Cosine of N1 X Current date and time and difference from Greenwich Mean Time. I2 ANNUITY ASIN ATAN CHAR COS CURRENT-DATE DATE-OFINTEGER DAY-OFINTEGER FACTORIAL INTEGER INTEGER-OFDATE INTEGER-OFDAY INTEGER-PART LENGTH LOG LOG10 LOWER-CASE MAX N1 N1 I1 N1 None I1 I1 I1 N1 I1 I1 N1 A1 or N1 or X1 N1 N1 A1 or X1 A1.

..or N1. A1.... N1.... or I1.. note that the type of function depends on the arguments. at a discount rate of N1 Random number Value of maximum argument minus value of minimum argument. Remainder of N1/N2 Reverse order of the characters of the argument Sine of N1 Square root of N1 Standard deviation of arguments MOD NUMVAL NUMVAL-C ORD ORD-MAX ORD-MIN PRESENTVALUE RANDOM RANGE I N N I I I N N I N N X N N N REM REVERSE SIN SQRT STANDARDDEVIATION 47 ...I2 X1 X1 or X1. N N N X Arithmetic mean of arguments Median of arguments Mean of minimum and maximum arguments Value of minimum argument.. N1... or X1. N1... or X1.. or N1... I1.COBOL for MVS & VM MEAN MEDIAN MIDRANGE MIN N1....... N1 N2. or N1... or N1. note that the type of function depends on the arguments I1 modulo I2 Numeric value of simple numeric string Numeric value of numeric string with optional commas and currency sign Ordinal position of the argument in collating sequence Ordinal position of maximum argument Ordinal position of minimum argument Present value of a series of future period-end amounts.X2 A1 or X1 A1. or X1.. I1 or none I1.N2 A1 or X1 N1 N1 N1... A1.... N2..

note that the type of function depends on the arguments.... N1 A1 or X1 N1. None I N N X N X Sum of arguments. Tangent of N1 All letters in the argument are set to uppercase Variance of arguments Date and time when program was compiled 48 .... or N1.COBOL for MVS & VM SUM TAN UPPER-CASE VARIANCE WHENCOMPILED I1.

COBOL for MVS & VM BIBLIOGRAFIA CÓDIGO GC26-4524 GC26-4764 SC26-4769 SC28-6456 GC28-6396 GC26-4047 TÍTULO IBM OS/VS COBOL TO VS COBOL II Migration Guide COBOL/370 and COBOL for MVS & VM Compiler and Run-Time Migration Guide IBM SAA AD/Cycle COBOL/370 Language Reference IBM OS Full American Compiler and Library. Programmer´s Guide IBM OS Full American National Standard COBOL System Reference Library VS COBOL II Application Programming Language Reference 49 . Version 4.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->