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 REPRO do IDCAMS executará a conversão dos arquivos. Entretanto. 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. Esses arquivos devem ser convertidos para VSAM/KSDS. O COBOL Report Writer Precompiler tem duas funções. mas isso será uma atividade bastante trabalhosa e que consumirá um tempo significativo. 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. 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.COBOL for MVS & VM PRINCIPAIS DIFERENÇAS ELEMENTOS DE LINGUAGEM NÃO MAIS IMPLEMENTADOS REPORT WRITER Não é suportado pelo COBOL for MVS & VM. 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. 6 . dificultando a identificação quando da necessidade de modificar os programas convertidos. O REPRO do IDCAMS e o CCCA (COBOL and CICS/VS Command Level Conversion Aid). Duas ferramentas podem auxiliar na conversão. É necessário um pré compilador para migrar os programas que o utilizem. esta conversão gera um código de difícil manutenção. Esses nomes não são significativos. Esses nomes podem ser substituídos por outros mais significativos. ou pode converter permanentemente as sentenças do Report Writer para sentenças válidas do COBOL for MVS & VM. dependendo do desenho da aplicação.

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. Esses arquivos devem ser convertidos para VSAM/RRDS. W Declaração de arquivos BDAM 7 . R. 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. Para a conversão dos arquivos existem produtos não IBM disponíveis no mercado.

EXHIBIT O COBOL for MVS & VM não aceita a instrução EXHIBIT. A instrução EXHIBIT NAMED pode ser substituída diretamente pela instrução DISPLAY.COBOL for MVS & VM COMMUNICATION FEATURE A Communication Feature não é suportada pelo COBOL for MVS & VM. Se a instrução no OS/VS COBOL for similar a apresentada abaixo: EXAMINE DATA-LENGTH TALLYING UNTIL FIRST “ “. Entretanto a instrução DISPLAY não cobre todas as funções da instrução EXHIBIT. INSPECT DATA-LENGTH TALLYING FOR CHARACTERS BEFORE “ “. 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. deve ser substituída no COBOL for MVS & VM por: MOVE 0 TO TALLY. devendo ser substituída pela instrução DISPLAY. 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. como se segue: 8 .

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

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

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

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

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

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

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

. O COBOL for MVS & VM não suporta rótulos (labels) não padronizados (standard). por isso deve ser removida. Um programa em OS/VS COBOL que possua a instrução: MOVE CORRESPONDING GROUP-ITEM-A TO GROUP-ITEM-B GROUP-ITEM-C. TO GROUP-ITEM-C. No COBOL for MVS & VM a sentença START deve utilizar a frase KEY IS. . 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. O OS/VS COBOL permite a sentença START com a frase USING KEY.COBOL for MVS & VM USE BEFORE STANDARD LABEL Sentença START . 16 . O COBOL for MVS & VM não suporta essa sentença. 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. USING KEY O OS/VS COBOL aceita a sentença. O USING não é aceito pelo COBOL for MVS & VM. Não é possível processar arquivos com rótulos (label) não padronizados (non-standard) com o COBOL for MVS & VM.

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

. 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. GOBACK.4 do OS/VS COBOL aceitavam a cláusula REDEFINES no nível 01 das descrições dos arquivos (SD ou FD).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. CLÁUSULA REDEFINES EM DESCRIÇÕES DE ARQUIVOS (SD E FD) Releases anteriores ao release 2.. é inválida: SD . PIC 9. 05 SORT-KEY 05 SORT-HEADER-INFO PIC X(20). PIC X(40).. MOVE1 . WORKING-STORAGE SECTION. .4 do OS/VS COBOL aceitavam nomes de parágrafos sem o ponto. 01 SORT-REC-HEADER. 18 . O código apresentado a seguir compila sem erro no OS/VS COBOL. AUSÊNCIA DE PONTO NOS PARÁGRAFOS Releases anteriores ao release 2. O release 2. TO A. 01 A . um parágrafo sem ponto gera uma mensagem de aviso (warning). A seqüência de código a seguir.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).4 do OS/VS COBOL. .. No release 2. mas no COBOL for MVS & VM a compilação terminará com erro Slevel (RC=12).

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

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

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

Onde assignment-name pode ter os seguintes formatos: Arquivo QSAM Arquivo VSAM [comentário-][S-]nome [comentário-]AS-]nome 22 . 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. com a opção de compilação LANGLVL(1). CLÁUSULA ASSIGN O COBOL for MVS & VM somente aceita o seguinte formato para a cláusula ASSIGN: ASSIGN TO assignment-name. 05 RECV-FIELD PIC XXXXXX. o código acima resultará no valor 123bbb para o campo RECV-FIELD. tinha os zeros finais suprimidos. . MOVE SEND-FIELD TO RECV-FIELD. EX: 05 SEND-FIELD PIC 999PPP VALUE 123000. No COBOL for MVS & VM os zeros finais são movidos e incluídos nas comparações.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. No OS/VS COBOL. No COBOL for MVS & VM o campo RECVFIELD conterá o valor 123000. no OS/VS COBOL. .

MOVE WHEN-COMPILED TO DATA-COMPL. . Entretanto. . WHEN-COMPILED As regras para utilização deste registrador especial são as mesmas. o mesmo deve ser alterado para o formato aceito pelo COBOL for MVS & VM.segundoMês Dia. YYYY exemplo de utilização: 01 DATA-COMPL PIC X(20).minuto. No OS/VS COBOL o formato é: hh. os formatos dos dados são diferentes.segundo) exemplo de utilização: 01 DATA-COMPL PIC X(16).ss (Mês/Dia/Anohora. 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. (hora.ssMMM DD. No COBOL for MVS & VM o formato é: MM/DD/YYhh. MOVE WHEN-COMPILED TO DATA-COMPL. .minuto.mm.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. 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. . DISPLAY ‘PGM COMPILADO EM ’ DATA-COMPL. Ano) 23 .mm.

. Usando WRITE..COBOL for MVS & VM DISPLAY ‘PGM COMPILADO EM ’ DATA-COMPL.AFTER ADVANCING com literais.. Os exemplos abaixo apresentam as frase POSITIONING do OS/VS COBOL e as frases equivalentes no COBOL for MVS & VM. 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. O OS/VS COBOL suporta a instrução WRITE com a frase AFTER POSITIONING.. horário de Greenwich = diferença em minutos ref. 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. AFTER ADVANCING. horário de Greenwich exemplo de utilização: DISPLAY ‘PGM COMPILADO EM ’ FUNCTION WHEN-COMPILED.. O COBOL for MVS & VM não suporta.. No COBOL for MVS & VM deve ser usado a instrução WRITE . OS/VS COBOL SK-CC COBOL for MVS & VM 1 AFTER ADVANCING PAGE AFTER POSITIONING SK-CC 24 .AFTER ADVANCING com variáveis. WRITE OUTPUT-REC AFTER POSITIONING SK-CC.

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

entretanto itens editados não são permitidos.: UNSTRING AREA-A DELEMITED BY ‘-‘ OR ‘.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.’ INTO AREA-B. O campo receptor pode ser um item de dados alfabético. Não pode ser usado para campo numérico editado. No COBOL for MVS & VM os códigos de retorno do SORT são apenas: 00 – Processamento efetuado com sucesso 16 – Erro no processamento. Permite vários arquivos no GIVING. No COBOL for MVS & VM campos de origem definidos como numéricos tem de ser inteiros. 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. 26 . STRING O OS/VS COBOL permite campos de origem definidos como numéricos não inteiros. SORT Permite arquivos indexados e relativos no USING/GIVING. UNSTRING A palavra “OR” tem de ser codificada entre identificadores: Ex.

. em um item de dados devem ser contados (TALLIED). REPLACING . n TIMES PERFORM . INSPECT INSPECT INSPECT INSPECT .. TALLYING .. ou grupos de caracteres.. 27 .. THRU .Quando o nome de uma procedure for fornecido ... .. 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. PERFORM .Quando o nome de uma procedure for omitido O PERFORM (IN LINE) permite codificar comando(s) na própria instrução PERFORM.. THRU ...COBOL for MVS & VM WRITE Não pode ser usado para arquivos QSAM abertos como I/O.. INSPECT A instrução INSPECT especifica que caracteres. REPLACING . .. Ex.. Aceita todas as variações de testes. A instrução PERFORM pode ser: • Fora de linha • Em linha . • 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.: PERFORM . TALLYING .... CONVERTING .... atualizados (REPLACED) ou ambos...... PERFORM .... THRU . ... Ex...

Exemplo PERFORM (IN-LINE). Z. o código do programa no COBOL for MVS & VM deve ser alterado como se segue: MOVE 1 TO X. PERFORM ... BY ... PERFORM ROT-1 VARYING X FROM 1 BY 1 UNTIL X > 3 28 . 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... No OS/VS COBOL... PERFORM .. THRU ..ALTERAÇÕES NA FRASE VARYING/AFTER O exemplo abaixo ilustra a diferença na execução: Ex.COBOL for MVS & VM [with test after/before] UNTIL . 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... [with test after/before] VARYING . UNTIL . GOBACK.. FROM .: PERFORM ROT-A VARYING X FROM 1 BY 1 UNTIL X > 3 AFTER Y FROM X BY 1 UNTIL Y > 3.. 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. Y.

ROT-1. . OU (utilizando o PERFORM in line) MOVE 1 TO X. 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. . . .COBOL for MVS & VM . . . . . PERFORM ROT-A VARYING Y FROM Z BY 1 UNTIL Y > 3 MOVE X TO Z. ROT-A. 29 .

30 .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. Usado apenas em arquivos seqüenciais.

dentro da mesma unidade de execução descrevem o mesmo registro de dados externo.COBOL for MVS & VM RECORD DELIMITER Indica o método para determinar o tamanho de um registro de tamanho variável. Indica que este conector de memória é um GLOBAL NAME. EXTERNAL NO FD A cláusula EXTERNAL especifica que um conector de arquivo é externo e permite o compartilhamento do arquivo entre programas. É de uso exclusivo de arquivos seqüenciais de tamanho variável. Indica que este conector de arquivo é um GLOBAL NAME. Se dois ou mais programas. 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. Somente pode ser especificado no nível 01 na WORKING STORAGE. 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. 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. O uso da cláusula EXTERNAL não implica que o nome do conector da memória associada seja um nome global. 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 . O uso da cláusula EXTERNAL não implica que o nome do conector do arquivo associado seja um nome global.

Entretanto. NOT ON EXCEPITION.. NOT NOT AT END.. NOT ON SIZE ERROR. NOT END-OF-PAGE CONTINUE Similar ao NEXT SENTENCE TITLE Colocar título no topo da página de compilação 32 . 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.COBOL for MVS & VM formato dos dados. . NOT INVALID KEY.. NOT ON OVERFLOW.

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.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. INITIALIZE Inicializa campo ou conjunto de campos com valores pré determinados.

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

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

Para evitar erros (data exception). dos mesmos. 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. Todos os CALLs da figura executarão com sucesso exceto para o programa PGM3 chamado pelo programa PGM5. Nota: CALLs estáticos de programas com AMODE=31 para programas OS/VS COBOL sempre falharão. possuem os itens de dados da WORKING STORAGE separados do módulo. A figura abaixo mostra as diferentes combinações em função das opções de compilação utilizadas.COBOL for MVS & VM Todos os programas OS/VS COBOL são AMODE(24) e RMODE(24). desde que ambos os programas acessem dados abaixo da linha de 16 Mb. RENT e RMODE. 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. 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 . a localização é definida pela opção de compilação DATA (PGM2 e PGM3). 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. Isto significa que a lista de parâmetros não pode ser acessada pelo programa PGM5 e o CALL irá falhar. 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. Programas compilados com a opção RENT. Todas as chamadas são dinâmicas e representadas pelas setas. estão incluídos no módulo objeto e estão abaixo da linha de 16 MB. deve-se garantir que todos os dados e lista de parâmetros estão abaixo da linha de 16 Mb. 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). Como o programa PGM3 foi compilado com DATA(31).

do Language Environment. tamanho do registro.). estão relacionados com a mistura na definição dos atributos de organização dos arquivos. A opção de compilação NORES do OS/VS COBOL carrega os módulos executáveis (ILBO. 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. normalmente.. devem ter a descrição do arquivo consistente com os atributos do Data Set. diversos problemas de compatibilidade poderão ocorrer. etc. ou vice versa.. 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. 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. Caso contrário.. Arquivos com formato O maior tamanho de registro especificado indefinido no programa tem de ser exatamente igual 37 .) no módulo de carga do programa. 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. FALHAS NA INSTRUÇÃO OPEN PARA ARQUIVOS QSAM PREVENINDO O FILE STATUS 39 PARA ARQUIVOS QSAM... 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. Esses problemas. PROCESSANDO ARQUIVOS EXISTENTES Programas que acessem arquivos existentes. formato do registro (fixo ou variável).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.

É importante lembrar que as informações especificadas no JCL se sobrepõem às informações do rótulo (label) do Data Set. pode-se definir o arquivo como mostrado a seguir: FILE SECTION. DEFININDO ARQUIVOS DE TAMANHO FIXO Para definir registros de tamanho fixo. 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. Assumindo que o arquivo existente no exemplo anterior tenha um formato indefinido (Format-U) ao invés de um formato variável. 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. Em qualquer das duas opções o tamanho do registro tem de ser igual ao atributo de tamanho (LRECL) do Data 38 . RECORDING MODE IS U RECORD IS VARYING FROM 6 TO 104 CHARACTERS. 01 REGISTRO-A PIC X(06). FD MOVIMENTO. pode-se definir um arquivo de formato variável (Format-V) como mostrado abaixo: FILE SECTION. 01 REGISTRO-A PIC X(06). 01 REGISTRO-B PIC X(80). Por exemplo. 01 REGISTRO-B PIC X(80). RECORDING MODE IS V RECORD IS VARYING FROM 6 TO 104 CHARACTERS.COBOL for MVS & VM Format-U Nota: ao atributo de tamanho (BLKSIZE) do Data Set. 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.

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

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. a instrução SERVICE RELOAD não mais é necessária e se existir será tratada como comentário. REGISTRO ESPECIAL LENGTH OF Através do registro especial LENGTH OF. para executar programas sob o CICS. Um programa OS/VS COBOL executando no CICS sob o Language Environment terminará anormalmente com o código de abend U3504. não é mais necessário passar explicitamente o tamanho dos argumentos para alguns dos comandos CICS. A informação é obtida através do número de caracteres que o item de dados ocupa no programa. 40 . Com o COBOL for MVS & VM. • No CICS não se deve misturar programas OS/VS COBOL com programas COBOL for MVS & VM na mesma unidade de execução. a instrução SERVICE RELOAD é requerida para viabilizar o endereçamento dos itens definidos na LINKAGE SECTION. SERVICE RELOAD No OS/VS COBOL. O Language Environment não permite.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.

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

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

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

I-O.QSAM .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 .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 -. Successful completion 10 At END (no next logical record) Successful completion 30 Permanent error 34 Permanent error File boundary violation. 90 Nonoptional file not present 90 Device type conflict 92 OPEN attempted for file closed WITH LOCK 90 Conflict of fixed file attributes. but file not on a reel/unit medium. 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.COBOL for MVS & VM ANEXOS ANEXO 1 .

VSAM Files COBOL for OS/VS Meaning MVS & VM COBOL 00 00 Successful completion 02 02 Duplicate key. attempt to write beyond file boundaries COBOL for MVS & VM only: for a WRITE to a relative file. 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. sequence error 22 22 Invalid key for a VSAM indexed or relative file. duplicate key and duplicates not allowed 23 23 Invalid key for a VSAM indexed or relative file.STATUS KEY Status Key Values -. and DUPLICATES specified. Successful completion 04 00 Wrong length record. IO. Successful completion 05 00 Optional file not present. 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 . no record found 24 24 Invalid key for a VSAM indexed or relative file. file integrity verified 45 .VSAM . Successful completion 10 10 At END (no next logical record) Successful completion 14 (undefined) On sequential READ for relative file. 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.

Table of Functions FUNCTION-NAME ARGUMENTS N1 ACOS N1. or X1.COBOL for MVS & VM ANEXO 3 .. tipos de funções e valores retornados por cada função intrínseca disponibilizada pelo COBOL for MVS & VM.. 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. (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..TABELA DE FUNÇÕES A tabela abaixo apresenta uma visão geral dos tipos de argumentos.. or I1... Tipos de argumentos e tipos de funções são abreviados como se segue: _ _ _ _ A I N X = = = = alphabetic integer numeric alphanumeric. note that the type of function depends on the arguments 46 ... or N1. 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. or X1. N2... or X1.. A1........ N1. or N1.... 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 .. or X1. 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.I2 X1 X1 or X1.... N1.....or N1. note that the type of function depends on the arguments. N N N X Arithmetic mean of arguments Median of arguments Mean of minimum and maximum arguments Value of minimum argument....COBOL for MVS & VM MEAN MEDIAN MIDRANGE MIN N1...... I1 or none I1. N1. or I1..N2 A1 or X1 N1 N1 N1. or N1. at a discount rate of N1 Random number Value of maximum argument minus value of minimum argument.. N1 N2. I1.

. Tangent of N1 All letters in the argument are set to uppercase Variance of arguments Date and time when program was compiled 48 .. None I N N X N X Sum of arguments.. N1 A1 or X1 N1.. note that the type of function depends on the arguments.. 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.

Sign up to vote on this title
UsefulNot useful