Dicas de Cobol

45
Para consultar o significado de um código de ABEND do CICS, basta executar no CICST a transação CMAC. Será exibida a tela mostrada em seguida, e o código do ABEND deve ser informado no campo correspondente a "Message Number". Teclando enter, será exibida uma descrição do ABEND. No exemplo abaixo, solicitamos a descrição do ABEND ASRA. A saída da transação é sempre com PF3. Resultado:

description

Dicas cobol

Transcript of Dicas de Cobol

Page 1: Dicas de Cobol

Para consultar o significado de um código de ABEND do CICS, basta executar no CICST a transação CMAC.

Será exibida a tela mostrada em seguida, e o código do ABEND deve ser informado no campo correspondente a "Message Number".

Teclando enter, será exibida uma descrição do ABEND.

No exemplo abaixo, solicitamos a descrição do ABEND ASRA. A saída da transação é sempre com PF3.

Resultado:

Page 2: Dicas de Cobol
Page 3: Dicas de Cobol

Elaborado por: Nei Teixeira

O recurso Temporary Storage (TS) do CICS é extremamente útil para que as aplicações possam guardar dados temporários.

É natural esperar que tais dados, SENDO TEMPORÁRIOS, uma vez criados (WRITEQ TS), sejam posteriormente deletados pelas próprias aplicações que os criaram. Assim, espera-se que estas sejam definidas/codificadas para identificar quando aqueles não mais são necessários e emitam o comando CICS apropriado para liberá-los (DELETEQ TS).

Isto se faz necessário pois O RECURSO TS É FINITO e, quando exaurido, causa um travamento do CICS, prejudicando TODAS as aplicações.

Existem, entretanto, situações de exceção onde a lógica das aplicações é interrompida (abends, queda do terminal) e as filas de TS associadas não são deletadas.

PARA TRATAR AS EXCEÇÕES existe nos nossos CICS's um processo que analisa as filas de TS e deleta as que não são referenciadas a mais do que um intervalo de tempo predefinido (15 minutos no ambiente de teste, 30 minutos no de produção).

APARENTEMENTE, a existência deste processo tem causado uma certa acomodação nos construtores de nossas aplicações CICS, levando-os a não incluir nestas o tratamento de dados temporários obsoletos.

 

Page 4: Dicas de Cobol

Utilização de Current-Date em Cobol for MVS & VM

Os programas codificados em Cobol for MVS & VM que precisam recuperar a data corrente do processamento, podem utilizar a FUNCTION CURRENT-DATE. Trata-se de uma função interna que recupera a data e hora, sendo o ano com 4 posições, sem a necessidade de se fazer janelamento para tratar o ano 2000. Além disso, é possível efetuar cálculo de diferença entre dias corridos entre duas datas e avançar/retroceder dias em uma data (não considera feriados).

000016 01 WS-INICIO-WORKING.000017 03 FILLER PIC X(040) VALUE 000018 '***** INICIO DA WORKING-STORAGE *****'. 000019 01 WS-CURRENT-DATE PIC 9(14). 000020 01 FILLER REDEFINES WS-CURRENT-DATE. 000021 03 WS-DATA PIC 9(08). 000022 03 WS-HORA PIC 9(06). 000023 01 WS-DAY-OF-INTEGER PIC S9(09). 000024 01 WS-INTEGER-OF-DAY PIC S9(09). 000025 01 WS-DT-INT PIC S9(09) VALUE ZEROS. 000026 000027 EJECT 000028 PROCEDURE DIVISION. 000029* 000030 MOVE FUNCTION CURRENT-DATE (1:14) TO WS-CURRENT-DATE.

Recupera as 14 primeiras posições da data corrente (data com 8 e hora com 6).

000031 DISPLAY 'DATA ' WS-DATA. 000032 DISPLAY 'HORA ' WS-HORA. 000033 DISPLAY 'SOMANDO 10 DIAS'. 000034 COMPUTE WS-DT-INT = 000035 FUNCTION INTEGER-OF-DATE (WS-DATA).

Transforma a data em formato interno.

000036 ADD 10 TO WS-DT-INT.

Soma 10 ao formato interno.

000037 COMPUTE WS-DATA = 000038 FUNCTION DATE-OF-INTEGER (WS-DT-INT).

Transforma a data de formato interno para a data correspondente.

000039 DISPLAY 'NOVA DATA ' WS-DATA. 000040* 000041 STOP RUN.

 

O resultado da execução é exibido abaixo:

DATA 20010514HORA 152517SOMANDO 10 DIASNOVA DATA 20010524DATA 20000517

Page 5: Dicas de Cobol

 

COBOL for MVS 

 

Principais Diferenças

 Revisões

Data Versão Autor(es) Descrição

18/06/1997 1.0 Guillermo Gil Carral Versão original

 

 

ÍndiceCOBOL for MVS

Principais Diferenças

OBJETIVO

Elementos de Linguagem não mais Implementados

Report Writer

Arquivos ISAM

Arquivos BDAM

Communication Feature

EXAMINE

EXHIBIT

EXHIBIT

READ TRACE / RESET TRACE

TRANSFORM

Page 6: Dicas de Cobol

TIME-OF-DAY

CURRENT-DATE

D I V E R S O S

Elementos de Linguagem alterados

JUSTIFIED

MOVE CORRESPONDING

WHEN-COMPILED

WRITE AFTER POSITIONING

VALUE

SORT-RETURN

INSPECT

PERFORM

Elementos de Linguagem adicionados

TERMINADOR EXPLÍCITO

NOT

DAY-OF-WEEK

EVALUATE

INITIALIZE

Função Intrínsica

REGISTRADORES E ENDEREÇAMENTOS

ANEXOS

Anexo 1 - QSAM - STATUS KEY

Anexo 2 - VSAM - STATUS KEY

Anexo 3 - Tabela de funções

BIBLIOGRAFIA

COBOL for MVS

Principais Diferenças

OBJETIVO

O objetivo deste documento visa apresentar, de forma prática, as principais diferenças entre o COBOL utilizado hoje na FININVEST (OS/VS COBOL) e o COBOL que virá a ser utilizado na empresa (COBOL for MVS), de modo a facilitar e agilizar o processo de conversão dos programas existentes e a confecção de

Page 7: Dicas de Cobol

novos programas. Este documento não é, nem pretende ser, um trabalho completo e sim um guia de referência para o COBOL. Logo este assunto não se esgota neste documento. Maiores detalhes sobre as diferenças entre as duas versões do COBOL podem ser encontradas nos manuais específicos do produto, cuja bibliografia dos manuais utilizados para confecção deste documento encontra-se ao final do mesmo.

 

Elementos de Linguagem não mais Implementados

Report Writer

Não é suportado pelo COBOL for MVS. É necessário um pré-compilador para migrar os programas que o utilizem para o novo COBOL. Os itens da linguagem do Report Writer não mais aceitos pelo novo COBOL 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 mneumônicos para literais não numéricos

 

 

 

Arquivos ISAM

O COBOL for MVS não suporta o processamento desses arquivos. Esses arquivos devem ser convertidos para VSAM/KSDS. Os itens da linguagem do ISAM não mais aceitos pelo novo COBOL são:

APPLY CORE-INDEX

APPLY REORG-CRITERIA

Cláusula NOMINAL KEY

Cláusula TRACK-AREA

Page 8: Dicas de Cobol

Cláusula USING KEY da instrução START

Declaração de arquivos ISAM

 

 

Elementos de Linguagem não mais Implementados

Arquivos BDAM

O COBOL for MVS não suporta o processamento desses arquivos. Esses arquivos devem ser convertidos para VSAM/RRDS. Os itens da linguagem do BDAM não mais aceitos pelo novo COBOL são:

Cláusula ACTUAL KEY

APPLY RECORD-OVERFLOW

Instrução SEEK

Cláusula TRACK-LIMIT

Parâmetros de organização D, R, W

Declaração de arquivos BDAM

 

 

 

Communication Feature

A Communication Feature não é suportada pelo COBOL for MVS. Os programas de comunicação (TCAM) deverão utilizar outro "pacote" para executar as funções de comunicação. Os itens da linguagem da Communication Feature não mais aceitos pelo novo COBOL são:

Instrução ACCEPT MESSAGE COUNT [LANGLVL(1) ou LANGLVL(2)]

COMMUNICATION SECTION

Instrução DISABLE

Instrução ENABLE

Instrução RECEIVE

Instrução SEND

Page 9: Dicas de Cobol

 

 

 

EXAMINE

O COBOL for MVS não aceita a instrução EXAMINE, devendo ser substituída pela instrução INSPECT. Entretanto, se a instrução no OS/VS COBOL for similar a seguinte:

EXAMINE DATA-LENGTH TALLYING UNTIL FIRST " ".

ela deve ser substituída no COBOL for MVS por:

MOVE 0 TO TALLY.

INSPECT DATA-LENGTH TALLYING FOR CHARACTERS BEFORE " ".

 

 

 

Elementos de Linguagem não mais Implementados

EXHIBIT

O COBOL for MVS não aceita a instrução EXHIBIT, deve ser substituída pela instrução DISPLAY. Entretanto a instrução DISPLAY não cobre todas as funções da instrução EXHIBIT.

A instrução EXHIBIT NAMED pode ser substituída diretamente pela instrução DISPLAY, como se segue.

Código no OS/VS COBOL.

77 DADO1 PIC X(08).

77 DADO2 PIC X(08).

EXHIBIT NAMED DADO1 DADO2.

Código no COBOL for MVS.

DISPLAY "DADO1 = " DADO1 " DADO2 = " DADO2.

A instrução EXHIBIT CHANGED deve ser substituida pelas instruções IF e DISPLAY, como se segue:

Código no OS/VS COBOL.

77 DADO1 PIC X(08).

77 DADO2 PIC X(08).

Page 10: Dicas de Cobol

EXHIBIT CHANGED DADO1 DADO2.

Código no COBOL for MVS.

77 DADO1 PIC X(08).

77 DADO2 PIC X(08).

77 DADO1-ANT PIC X(08).

77 DADO2-ANT PIC X(08).

 

IF DADO1 NOT EQUAL DADO1-ANT

DISPLAY DADO1

END-IF.

IF DADO2 NOT EQUAL DADO2-ANT

DISPLAY DADO2

END-IF.

MOVE DADO1 TO DADO1-ANT.

MOVE DADO2 TO DADO2-ANT.

 

 

 

 

Elementos de Linguagem não mais Implementados

EXHIBIT

A instrução EXHIBIT CHANGED NAMED deve ser substituída pelas instruções IF e DISPLAY, como se segue:

Código no OS/VS COBOL.

77 DADO1 PIC X(08).

77 DADO2 PIC X(08).

EXHIBIT CHANGED NAMED DADO1 DADO2.

 

Código no COBOL for MVS.

Page 11: Dicas de Cobol

77 DADO1 PIC X(08).

77 DADO2 PIC X(08).

77 DADO1-ANT PIC X(08).

77 DADO2-ANT PIC X(08).

 

IF DADO1 NOT EQUAL DADO1-ANT

DISPLAY "DADO1 = " DADO1

END-IF.

IF DADO2 NOT EQUAL DADO2-ANT

DISPLAY "DADO2 = " DADO2

END-IF.

MOVE DADO1 TO DADO1-ANT.

MOVE DADO2 TO DADO2-ANT.

 

 

 

 

 

 

Elementos de Linguagem não mais Implementados

READ TRACE / RESET TRACE

O COBOL for MVS não aceita essas instruções. Funções similares podem ser executadas utilizando a declaração de "debug" USE FOR DEBUGGING ON ALL PROCEDURES, como exemplificado abaixo:

.

.

ENVIROMENT DIVISION.

CONFIGURATION SECTION.

SOURCE-COMPUTER. IBM-390 WITH DEBUGGING MODE.

Page 12: Dicas de Cobol

.

.

DATA DIVISION.

.

.

WORKING-STORAGE SECTION.

01 TRACE-SWITCH PIC 9 VALUE ZERO.

88 TRACE-OFF VALUE 0.

88 TRACE-ON VALUE 1.

.

.

PROCEDURE DIVISION.

DECLARATIVES.

COBOL-DEBUG SECTION.

USE FOR DEBUGGING ON ALL PROCEDURES.

COBOL-DEBUG-PARA.

IF TRACE-ON

DISPLAY DEBUG-NAME

END-IF.

END DECLARATIVES.

.

.

PARAGRAPH-3.

.

.

MOVE 1 TO TRACE-SWITCH.

OU

SET TRACE-ON TO TRUE.

PARAGRAPH-4.

Page 13: Dicas de Cobol

.

.

PARAGRAPH-6.

.

.

MOVE 0 TO TRACE-SWITCH.

OU

SET TRACE-OFF TO TRUE.

PARAGRAPH-7.

.

.

 

 

Elementos de Linguagem não mais Implementados

TRANSFORM

O OS/VS COBOL suporta as instruções INSPECT e TRANSFORM. O COBOL for MVS apenas aceita a instrução INSPECT. Qualquer instrução TRANSFORM deve ser substituída pela instrução INSPECT CONVERTING:

77 TEXTO PIC X(9) VALUE "ABCXYZCCC".

TRANSFORM TEXTO FROM "ABC" TO "CAT".

O TRANSFORM verifica cada caracter , alterando cada caracter "A" para o caracter "C", cada "B" para "A" e cada "C" para "T". Após a execução da instrução acima, a variável TEXTO ficará com o seguinte conteúdo: "CATXYZTTT". No COBOL for MVS teremos o mesmo resultado utilizando a instrução abaixo:

INSPECT TEXTO CONVERTING "ABC" TO "CAT".

 

 

TIME-OF-DAY

O OS/VS COBOL aceita o registro especial TIME-OF-DAY. Ele é válido somente quando utilizado com a instrução MOVE. Possui tamanho de 6 bytes decimais no formato:

Page 14: Dicas de Cobol

HHMMSS (hora, minuto, segundo)

Programas OS/VS COBOL com a estrutura abaixo devem ser alterados como se segue.

Código no OS/VS COBOL.

77 HORA-EXEC PIC X(06).

.

.

MOVE TIME-OF-DAY TO HORA-EXEC.

Código no COBOL for MVS.

77 HORA-EXEC PIC X(06).

.

.

MOVE FUNCTION CURRENT-DATE (9:6) TO HORA-EXEC.

 

 

 

 

Elementos de Linguagem não mais Implementados

CURRENT-DATE

O OS/VS COBOL aceita o registro especial CURRENT-DATE. Ele é válido somente quando utilizado com a instrução MOVE. Possui tamanho de 8 bytes alfanuméricos no formato:

MM/DD/AA (mes, dia, ano)

O COBOL for MVS aceita o registro especial DATE. Ele é válido apenas quando utilizado com a instrução ACCEPT (não é válido sob CICS). Tem tamanho de 6 bytes alfanuméricos no formato:

AAMMDD (ano, mes, dia)

Programas OS/VS COBOL com a estrutura abaixo devem ser alterados como se segue.

 

Código no OS/VS COBOL.

77 DATA-EXEC PIC X(08).

.

Page 15: Dicas de Cobol

.

.

MOVE CURRENT-DATE TO DATA-EXEC.

 

Código no COBOL for MVS.

01 DATA-EXEC.

03 MES PIC X(02).

03 FILLER PIC X(01) VALUE "/".

03 DIA PIC X(02).

03 FILLER PIC X(01) VALUE "/".

03 ANO PIC X(02).

01 DATA-ACCEPT.

03 ANO PIC X(02).

03 MES PIC X(02).

03 DIA PIC X(02).

.

.

.

ACCEPT DATA-ACCEPT FROM DATE.

MOVE CORRESPONDING DATA-ACCEPT TO DATA-EXEC.

 

 

 

 

 

Elementos de Linguagem não mais Implementados

 

D I V E R S O S

Page 16: Dicas de Cobol

Elementos Observações

ASSIGN ... OR Para utilizar esta cáusula no COBOL for MVS o OR deve ser removido.

ASSIGN TO integer system-name Para utilizar esta cáusula no COBOL for MVS o integer deve ser removido.

ASSIGN ... FOR MULTIPLE REEL/UNIT

O OS/VS COBOL aceita a frase e trata-a como documentacional. O COBOL for MVS não aceita esta frase.

Instrução CLOSE - WITH POSITIONING, DISP

O OS/VS COBOL aceitas as frase WITH POSITIONING e DISP como extensão da instrução CLOSE. No COBOL for MVS essas frases não são aceitas.

Cláusula FILE-LIMIT do parágrafo FILE-CONTROL

O OS/VS COBOL aceita a cláusula e trata-a como comentrário. O COBOL for MVS não aceita, deve ser removida.

REMARKS Comentariar, colocando um * (asterisco) na coluna 7, ou será interpretado como sendo um comentário do elemento anterior.

Cláusula LABEL RECORD em uma entrada SD

A cláusula LABEL RECORD deve ser retirada das entradas de descrição dos arquivos de SORT/MERGE.

Instrução NOTE Todas as instruções NOTE devem ser removidas ou comentariadas.

Instrução ON Funções similares são providas pelas instruções IF e EVALUATE

Cláusula RECORD CONTAINS n CHARACTERS

Numa variação do ANSI COBOL 74, a cláusula RECORD CONTAINS n CHARACTERS seria alterada se a cláusula OCCURS DEPENDING ON fosse especificada no FD, definindo um arquivo de tamanho variável. Sob o COBOL for MVS a cláusula RECORD CONTAINS n CHARACTERS sempre define um arquivo de tamanho FIXO.

Cláusula LABEL RECORD

com as frases TOTALING/TOTALED AREA

No COBOL for MVS essas frases não são aceitas.

 

 

 

 

Page 17: Dicas de Cobol

Elementos de Linguagem alterados

 

D I V E R S O S

Elementos Observações

Cláusula 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.

Instrução IF ... OTHERWISE Substituir o OTHERWISE por ELSE.

Cláusula

JUSTIFIED

Sob o OS/VS COBOL com a opção de compilação LANGLVL(1), se a cláusula JUSTIFIED for utilizada com a cláusula VALUE, o dado inicial é alinhado a direita. No COBOL for MVS se as cláusulas VALUE e JUSTIFIED são utilizadas para itens alfabéticos ou alfanuméricos, o dado inicial é alinhado a esquerda.

Por exemplo no OS/VS COBOL, teríamos:

77 TEXTO PIC X(9) JUSTIFIED VALUE "FIRST".

resultando no valor FIRST ocupando as 5 últimas posições do campo.

bbbbFIRST

No COBOL for MVS, teríamos:

77 TEXTO PIC X(9) JUSTIFIED VALUE "FIRST".

resultando no valor FIRST ocupando as primeiras posições do campo.

FIRSTbbbb

Para obter-se o mesmo resultado, teria-se de codificar como se segue.

77 TEXTO PIC X(9) JUSTIFIED VALUE " FIRST".

Instrução

MOVE CORRESPONDING

O COBOL for MVS não permite mais do que um campo receptor. Logo, a instrução

MOVE CORR GROUP-ITEM-A TO GROUP-ITEM-B

GROUP-ITEM-C.

terá de ser desmembrada em

MOVE CORR GROUP-ITEM-A TO GROUP-ITEM-B.

MOVE CORR GROUP-ITEM-A TO GROUP-ITEM-C.

Page 18: Dicas de Cobol

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, tinha os zeros finais suprimidos. No COBOL for MVS os zeros finais são movidos e incluídos nas comparações.

EX:

05 SEND-FIELD PIC 999PPP VALUE 123000.

05 RECV-FIELD PIC XXXXXX.

.

.

MOVE SEND-FIELD TO RECV-FIELD.

No OS/VS COBOL, o código acima resultará no valor 123bbb para o campo RECV-FIELD. No COBOL for MVS o campo RECV-FIELD conterá o valor 123000.

 

 

Elementos de Linguagem alterados

 

D I V E R S O S

Elementos Observações

Registrador especial

WHEN-COMPILED

As regras para utilização deste registrador especial são as mesmas. Entretanto, o formato dos dados são diferentes.

No OS/VS COBOL o formato é:

hh.mm.ssMMM DD, YYYY (hora.minuto.segundoMES DIA, ANO)

exemplo de utilização:

01 DATA-COMPL PIC X(20).

.

.

MOVE WHEN-COMPILED TO DATA-COMPL.

DISPLAY ‘PGM COMPILADO EM ’ DATA-COMPL.

No COBOL for MVS o formato é:

Page 19: Dicas de Cobol

MM/DD/YYhh.mm.ss (MÊS/DIA/ANOhora.minuto.segundo)

exemplo de utilização:

01 DATA-COMPL PIC X(16).

.

.

MOVE WHEN-COMPILED TO DATA-COMPL.

DISPLAY ‘PGM COMPILADO EM ’ DATA-COMPL.

NOTA:

No COBOL for MVS foi disponibilizado a função WHEN-COMPILED que fornece a mesma informação no formato

YYYYMMDDhhmmssccdhgmg

Onde:

YYYY = ANO

MM = MÊS

DD = DIA

hh = hora

mm = minuto

ss = segundo

cc = centésimo de segundo

d = sinal(+ ou -)

gh = diferença em horas ref. horário de Greenwich

gm = diferença em minutos ref. horário de Greenwich

exemplo de utilização:

DISPLAY ‘PGM COMPILADO EM ’

FUNCTION WHEN-COMPILED.

 

 

 

Elementos de Linguagem alterados

Page 20: Dicas de Cobol

 

D I V E R S O S

Elementos Observações

Instrução

WRITE AFTER POSITIONING

O OS/VS COBOL suporta a instrução WRITE com a frase AFTER POSITIONING. O COBOL for MVS não suporta. No COBOL for MVS deve ser usado a instrução WRITE ... AFTER ADVANCING.

Os exemplos abaixo apresentam as frase POSITIONING do OS/VS COBOL e as frases equivalentes no COBOL for MVS.

Usando WRITE...AFTER ADVANCING com literais.

OS/VS COBOL COBOL for MVS

AFTER POSITIONING 0 AFTER ADVANCING PAGE

AFTER POSITIONING 1 AFTER ADVANCING 1 LINE

AFTER POSITIONING 2 AFTER ADVANCING 2 LINES

AFTER POSITIONING 3 AFTER ADVANCING 3 LINES

Usando WRITE...AFTER ADVANCING com variáveis.

WRITE OUTPUT-REC AFTER POSITIONING SK-CC.

OS/VS COBOL SK-CC COBOL for MVS

AFTER POSITIONING SK-CC 1 AFTER ADVANCING PAGE

AFTER POSITIONING SK-CC ‘ ‘ AFTER ADVANCING 1 LINE

AFTER POSITIONING SK-CC 0 AFTER ADVANCING 2 LINES

AFTER POSITIONING SK-CC - AFTER ADVANCING 3 LINES

NOTA:

Com o COBOL for MVS, channel skipping somente é suportado com referência no SPECIAL-NAMES.

Cláusula

VALUE

Sob o COBOL for MVS passa a suportar a inicialização de variáveis com nulo. A cláusula passa a aceitar três formatos, exemplificados abaixo.

Formato 1 - Literal Value.

VALUE literal.

 

Formato 2 - Condition-Name Value.

88 Condition-Name VALUE literal.

Page 21: Dicas de Cobol

OU

88 Condition-Name VALUE literal1 THRU literal2.

 

Formato 3 - NULL Value.

VALUE NULL. OU VALUE NULLS.

 

 

 

Elementos de Linguagem alterados

 

D I V E R S O S

Elementos Observações

Instrução MERGE Permite vários arquivos no GIVING.

Instrução OPEN Permite OPEN EXTEND para arquivos indexados e relativos.

Não aceita as opções LEAVE, REREAD, DISP nem REVERSED.

Instrução SEARCH O COBOL for MVS não permite que o campo da condição WHEN seja o campo KEY especificado na tabela.

Instrução SORT Permite arquivos indexados e relativos no USING/GIVING.

Permite vários arquivos no GIVING.

Registrador especial

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.

No COBOL for MVS os códigos de retorno do SORT são apenas:

00 - Processamento efetuado com sucesso

16 - Erro no processamento.

Page 22: Dicas de Cobol

Instrução START Não suporta a frase USING.

Instrução STRING O campo receptor pode ser item de grupo.

Instrução UNSTRING Não pode ser usado para campo numérico editado.

Instrução WRITE Não pode ser usado para arquivos QSAM abertos como I/O.

Instrução

INSPECT

A instrução INSPECT especifica que caracteres, ou grupos de caracteres, em um item de dados devem ser contados (TALLIED), atualizados (REPLACED) ou ambos.

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.

Ex.

INSPECT ... TALLYING ...

INSPECT ... REPLACING ...

INSPECT ... TALLYING ... REPLACING ...

INSPECT ... CONVERTING ...

 

 

 

 

Elementos de Linguagem alterados

 

D I V E R S O S

Elementos Observações

Instrução

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. A instrução

Page 23: Dicas de Cobol

PERFORM pode ser:

Fora de linha - Quando o nome de uma procedure for fornecido

Em linha - Quando o nome de uma procedure for omitido

O PERFOM (IN LINE) permite codificar comando(s) na própria instrução PERFORM. Aceita todas as variações de testes.

Ex.

PERFORM ...

PERFORM ... THRU ...

PERFORM ... THRU ... n TIMES

PERFORM ... THRU ...

[with test after/before]

UNTIL ...

PERFORM ... THRU ...

[with test after/before]

VARYING ... FROM ... BY ...

UNTIL ...

Exemplo PERFORM (IN-LINE).

PERFORM

UNTIL IO-STATUS EQUAL 'QC'

PERFORM 0050-OBTER-MSG-FILA-IMS

THRU 0050-OBTER-MSG-FILA-IMS-FIM

IF IO-STATUS EQUAL ' '

PERFORM 0100-TRATAR-EMISSAO-CMD

THRU 0100-TRATAR-EMISSAO-CMD-FIM

END-IF

END-PERFORM.

GOBACK.

 

 

Page 24: Dicas de Cobol

Elementos de Linguagem adicionados

 

TERMINADOR EXPLÍCITO

As instruções abaixo ganharam terminador explícito

ADD END-ADD

CALL END-CALL

COMPUTE ND-COMPUTE

DELETE END-DELETE

DIVIDE END-DIVIDE

EVALUATE END-EVALUATE

IF END-IF

MULTIPLY END-MULTIPLY

PERFORM END-PERFORM

READ END-READ

RETURN END-RETURN

REWRITE END-REWRITE

SEARCH END-SEARCH

START END-START

STRING END-STRING

SUBTRACT END-SUBTRACT

UNSTRING END-UNSTRING

Page 25: Dicas de Cobol

WRITE END-WRITE

 

 

D I V E R S O S

Elementos Observações

Cláusula

PADDING CHARACTER

Usado apenas em arquivos sequenciais.

Cláusula RECORD DELIMITER Usado apenas em arquivos sequenciais.

Cláusula EXTERNAL no FD Permite o compartilhamento de arquivos entre programas.

Cláusula EXTERNAL na WS Somente nível 01 na WORKING STORAGE

Cláusula GLOBAL na WS Indica que este conector de arquivo é um GLOBAL NAME

DBCS Double Byte Character String (KANJI)

Frase

NOT

NOT AT END, NOT ON SIZE ERROR, NOT INVALID KEY, ....

NOT ON EXCEPITION, NOT ON OVERFLOW,

NOT END-OF-PAGE

Instrução CONTINUE Similar ao NEXT SENTENCE

Instrução TITLE Colocar título no topo da página de compilação

Item de dados

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 = sabado

7 = domingo

 

 

Page 26: Dicas de Cobol

Elementos de Linguagem Adicionados

 

D I V E R S O S

Elementos Observações

Instrução

EVALUATE

A instrução EVALUATE fornece uma notação simples para uma série de instruções IF.

Ex.

EVALUATE TI-CMD

WHEN '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

Page 27: Dicas de Cobol

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.

Instrução

INITIALIZE

Inicializa campo ou cojunto de campos com valores pré-determinados. Uma tabela inteira pode ser inicializada através desta instrução. Esta instrução é funcionalmente equivalente a uma ou mais intruções MOVE.

Um item de dado tipo índice não pode ser inicializado através desta instrução.

Ex.

INITIALIZE campo(s).

INITIALIZE campo(s)

REPLACING tipo(s) BY campo ou literal.

Função Intrínsica Função intrínsica é uma função que executa uma operação matemática, uma operação com caracter ou uma operação lógica e permite que o resultado derivado automaticamente da execução possa ser referenciado.

A tabela das funções disponíveis pode ser vista no anexo 3.

 

 

 

Elementos de Linguagem adicionados

 

REGISTRADORES E ENDEREÇAMENTOS

O COBOL for MVS apresenta várias novidades nesta área, algumas delas serão mostradas a seguir

Elementos Observações

LENGTH OF Contém o número de bytes utilizados pôr um campo

Page 28: Dicas de Cobol

Ex.

MOVE LENGTH OF CAMPO-A TO CAMPO-B.

ADD LENGTH OF CAMPO-A TO CAMPO-C.

ADDRESS OF Contém o endereço de cada variável na LINKAGE SECTION.

ex.

SET ADDRESS OF CAMPO-LK TO CAMPO-ADDR.

POINTER Indica campos definidos para armazenar endereços.

ex.

05 CAMPO-ADDR PIC X(04) POINTER VALUE NULLS.

SET Atribui valores a campos. Possui 5 formatos.

Ex.

SET ADDRES OF CAMPO-LK TO CAMPO-ADDR.

SET variável-condicional TO TRUE/FALSE

SET nome-mneumonico TO ON/OFF

MOVE Permite endereçar uma determinada posição de memória, não definida explicitamente.

ex.

MOVE variável (posição-inicial:tamanho) TO CAMPO

MOVE CAMPO-A (5:8) TO CAMPO-B.

MOVE CAMPO-A (ADDR-INI:TAM) TO CAMPO-B.

 

 

ANEXOS

Anexo 1 - QSAM - STATUS KEY

Status Key Values -- QSAM files

COBOL for MVS OS/VS COBOL Meaning

Page 29: Dicas de Cobol

00 00 Successful completion

04 (undefined) COBOL for MVS only: Wrong length record Successful completion

05 (undefined) Optional file not present

Successful completion

07 (undefined) NO REWIND/REEL/UNIT/FOR REMOVAL specified for OPEN or CLOSE, but file not on a reel/unit medium. Successful completion

10 10 At END (no next logical record) Successful completion

30 30 Permanent error

34 34 Permanent error File boundary violation.

35 90 Nonoptional file not present

37 90 Device type conflict

38 92 OPEN attempted for file closed WITH LOCK

39 90 Conflict of fixed file attributes; 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

44 92 Attempt to rewrite a sequential file record with a record of a different size

46 92 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, I-O, or EXTEND mode

Page 30: Dicas de Cobol

49 92 DELETE or REWRITE attempted when file not in OPEN I-O mode

90 90 Other errors with no further information

92 92 Logic error

96 90 No file identification (No DD statement for this file)

 

 

Anexo 2 - VSAM - STATUS KEY

Status Key Values -- VSAM Files

COBOL for MVS OS/VS COBOL Meaning

00 00 Successful completion

02 02 Duplicate key, and DUPLICATES specified.

Successful completion

04 00 Wrong length record. Successful completion

05 00 Optional file not present. Successful completion

10 10 At END (no next logical record) Successful completion

14 (undefined) On sequential READ for relative file, 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; 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; no record found

Page 31: Dicas de Cobol

24 24 Invalid key for a VSAM indexed or relative file; attempt to write beyond file boundaries

COBOL for MVS only: for a WRITE to a relative file, 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; 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, I-O, 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; file integrity verified

 

Page 32: Dicas de Cobol

 

Anexo 3 - Tabela de funções

A tabela abaixo apresenta uma visão geral dos tipos de argumentos, tipos de funções e valores retornados por cada função intrínsica disponibilizada pelo COBOL for MVS.

Tipos de argumentos e tipos de funções são abreviados como se segue:

_ A = alphabetic

_ I = integer

_ N = numeric

_ X = alphanumeric.

Table of Functions

FUNCTION-NAME ARGUMENTS TYPE VALUE RETURNED

ACOS N1 N Arccosine of N1

ANNUITY N1, I2 N Ratio of annuity paid for I2 periods at interest of N1 to initial investment of one

ASIN N1 N Arcsine of N1

ATAN N1 N Arctangent of N1

CHAR I1 X Character in position I1 of program collating sequence

COS N1 N Cosine of N1

CURRENT-DATE None X Current date and time and difference from Greenwich Mean Time

DATE-OF-INTEGER I1 I Standard date equivalent (YYYYMMDD) of integer date

DAY-OF-INTEGER I1 I Julian date equivalent (YYYYDDD) of integer date

FACTORIAL I1 I Factorial of I1

INTEGER N1 I The greatest integer not greater than N1

INTEGER-OF-DATE I1 I Integer date equivalent of standard date

Page 33: Dicas de Cobol

(YYYYMMDD)

INTEGER-OF-DAY I1 I Integer date equivalent of Julian date (YYYYDDD)

INTEGER-PART N1 I Integer part of N1

LENGTH A1 or N1 or X1

I Length of argument

LOG N1 N Natural logarithm of N1

LOG10 N1 N Logarithm to base 10 of N1

LOWER-CASE A1 or X1 X All letters in the argument are set to lowercase

MAX A1... or

I1... or

N1... or

X1...

X

I

N

X

Value of maximum argument; note that the type of function depends on the arguments

MEAN N1... N Arithmetic mean of arguments

MEDIAN N1... N Median of arguments

MIDRANGE N1... N Mean of minimum and maximum arguments

MIN A1... or

I1... or

N1... or

X1...

X Value of minimum argument; note that the type of function depends on the arguments

MOD I1,I2 I I1 modulo I2

NUMVAL X1 N Numeric value of simple numeric string

NUMVAL-C X1 or

X1,X2

N Numeric value of numeric string with optional commas and currency sign

ORD A1 or X1 I Ordinal position of the argument in collating sequence

Page 34: Dicas de Cobol

ORD-MAX A1... or

N1... or

X1...

I Ordinal position of maximum argument

ORD-MIN A1...or

N1... or

X1...

I Ordinal position of minimum argument

PRESENT-VALUE N1

N2...

N Present value of a series of future period-end amounts, N2, at a discount rate of N1

RANDOM I1 or

none

N Random number

RANGE I1... or

N1...

I

N

Value of maximum argument minus value of minimum argument; note that the type of function depends on the arguments.

REM N1,N2 N Remainder of N1/N2

REVERSE A1 or X1 X Reverse order of the characters of the argument

SIN N1 N Sine of N1

SQRT N1 N Square root of N1

STANDARD-DEVIATION

N1... N Standard deviation of arguments

SUM I1... or

N1...

I

N

Sum of arguments; note that the type of function depends on the arguments.

TAN N1 N Tangent of N1

UPPER-CASE A1 or X1 X All letters in the argument are set to uppercase

VARIANCE N1... N Variance of arguments

Page 35: Dicas de Cobol

WHEN-COMPILED None X Date and time when program was compiled

 

BIBLIOGRAFIA

CÓDIGO TÍTULO

GC26-4524 IBM OS/VS COBOL TO VS COBOL II

Migration Guide

GC26-4764 COBOL/370 and COBOL for MVS & VM

Compiler and Run-Time Migration Guide

SC26-4769 IBM SAA AD/Cycle COBOL/370

Language Reference

 

 

QSAM - STATUS KEY

Status Key Values -- QSAM files

COBOL for MVS OS/VS COBOL Meaning

00 00 Successful completion

04 (undefined) COBOL for MVS only: Wrong length record Successful completion

05 (undefined) Optional file not present

Successful completion

07 (undefined) NO REWIND/REEL/UNIT/FOR REMOVAL specified for OPEN or CLOSE, but file not on a reel/unit medium. Successful completion

10 10 At END (no next logical record) Successful completion

Page 36: Dicas de Cobol

30 30 Permanent error

34 34 Permanent error File boundary violation.

35 90 Nonoptional file not present

37 90 Device type conflict

38 92 OPEN attempted for file closed WITH LOCK

39 90 Conflict of fixed file attributes; 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

44 92 Attempt to rewrite a sequential file record with a record of a different size

46 92 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, I-O, 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

92 92 Logic error

96 90 No file identification (No DD statement for this file)

 

VSAM - STATUS KEY

Status Key Values -- VSAM Files

Page 37: Dicas de Cobol

COBOL for MVS OS/VS COBOL Meaning

00 00 Successful completion

02 02 Duplicate key, and DUPLICATES specified.

Successful completion

04 00 Wrong length record. Successful completion

05 00 Optional file not present. Successful completion

10 10 At END (no next logical record) Successful completion

14 (undefined) On sequential READ for relative file, 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; 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; no record found

24 24 Invalid key for a VSAM indexed or relative file; attempt to write beyond file boundaries

COBOL for MVS only: for a WRITE to a relative file, 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; OPEN fails

41 92 OPEN attempted for a file in OPEN mode

Page 38: Dicas de Cobol

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, I-O, 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; file integrity verified