Você está na página 1de 39

Para consultar o significado de um cdigo de ABEND do CICS, basta executar no CICST a

transao CMAC.
Ser exibida a tela mostrada em seguida, e o cdigo do ABEND deve ser informado no campo
correspondente a "Message Number".
Teclando enter, ser exibida uma descrio do ABEND.
No exemplo abaixo, solicitamos a descrio do ABEND ASRA. A sada da transao sempre com
PF3.

Resultado:

Elaborado por: Nei Teixeira

O recurso Temporary Storage (TS) do CICS extremamente til para que as aplicaes possam
guardar dados temporrios.
natural esperar que tais dados, SENDO TEMPORRIOS, uma vez criados (WRITEQ TS), sejam
posteriormente deletados pelas prprias aplicaes que os criaram. Assim, espera-se que estas
sejam definidas/codificadas para identificar quando aqueles no mais so necessrios e emitam o
comando CICS apropriado para liber-los (DELETEQ TS).
Isto se faz necessrio pois O RECURSO TS FINITO e, quando exaurido, causa um travamento
do CICS, prejudicando TODAS as aplicaes.
Existem, entretanto, situaes de exceo onde a lgica das aplicaes interrompida (abends,
queda do terminal) e as filas de TS associadas no so deletadas.
PARA TRATAR AS EXCEES existe nos nossos CICS's um processo que analisa as filas de TS
e deleta as que no so referenciadas a mais do que um intervalo de tempo predefinido (15
minutos no ambiente de teste, 30 minutos no de produo).
APARENTEMENTE, a existncia deste processo tem causado uma certa acomodao nos
construtores de nossas aplicaes CICS, levando-os a no incluir nestas o tratamento de dados
temporrios obsoletos.

Utilizao 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 funo interna
que recupera a data e hora, sendo o ano com 4 posies, sem a necessidade de se fazer
janelamento para tratar o ano 2000. Alm disso, possvel efetuar clculo de diferena entre dias
corridos entre duas datas e avanar/retroceder dias em uma data (no 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 posies da data corrente (data com 8 e hora com 6).
000031
000032
000033
000034
000035

DISPLAY 'DATA ' WS-DATA.


DISPLAY 'HORA ' WS-HORA.
DISPLAY 'SOMANDO 10 DIAS'.
COMPUTE WS-DT-INT =
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 execuo exibido abaixo:


DATA 20010514
HORA 152517
SOMANDO 10 DIAS
NOVA DATA 20010524
DATA 20000517

COBOL for MVS


Principais Diferenas
Revises
Data

Verso

Autor(es)

18/06/1997

1.0

Guillermo Gil Carral

ndice
COBOL for MVS
Principais Diferenas
OBJETIVO
Elementos de Linguagem no mais Implementados
Report Writer
Arquivos ISAM
Arquivos BDAM
Communication Feature
EXAMINE
EXHIBIT
EXHIBIT
READ TRACE / RESET TRACE
TRANSFORM

Descrio
Verso original

TIME-OF-DAY
CURRENT-DATE
DIVERSOS
Elementos de Linguagem alterados
JUSTIFIED
MOVE CORRESPONDING
WHEN-COMPILED
WRITE AFTER POSITIONING
VALUE
SORT-RETURN
INSPECT
PERFORM
Elementos de Linguagem adicionados
TERMINADOR EXPLCITO
NOT
DAY-OF-WEEK
EVALUATE
INITIALIZE
Funo Intrnsica
REGISTRADORES E ENDEREAMENTOS
ANEXOS
Anexo 1 - QSAM - STATUS KEY
Anexo 2 - VSAM - STATUS KEY
Anexo 3 - Tabela de funes
BIBLIOGRAFIA

COBOL for MVS


Principais Diferenas
OBJETIVO
O objetivo deste documento visa apresentar, de forma prtica, as principais diferenas 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 converso dos programas existentes e a confeco de

novos programas. Este documento no , nem pretende ser, um trabalho completo e sim um guia de referncia
para o COBOL. Logo este assunto no se esgota neste documento. Maiores detalhes sobre as diferenas entre
as duas verses do COBOL podem ser encontradas nos manuais especficos do produto, cuja bibliografia dos
manuais utilizados para confeco deste documento encontra-se ao final do mesmo.

Elementos de Linguagem no mais Implementados


Report Writer
No suportado pelo COBOL for MVS. necessrio um pr-compilador para migrar os
programas que o utilizem para o novo COBOL. Os itens da linguagem do Report Writer no
mais aceitos pelo novo COBOL so:
Instruo GENERATE
Instruo INITIATE
Registrador especial LINE-COUNTER
Registrador especial PAGE-COUNTER
Registrador especial PRINT-SWITCH
Clusula REPORT da entrada do FD
REPORT SECTION
Instruo TERMINATE
Declarao USE BEFORE REPORTING
Atribuio de nomes mneumnicos para literais no
numricos

Arquivos ISAM
O COBOL for MVS no suporta o processamento desses arquivos. Esses arquivos devem ser
convertidos para VSAM/KSDS. Os itens da linguagem do ISAM no mais aceitos pelo novo
COBOL so:
APPLY CORE-INDEX
APPLY REORG-CRITERIA
Clusula NOMINAL KEY
Clusula TRACK-AREA

Clusula USING KEY da


instruo START
Declarao de arquivos ISAM

Elementos de Linguagem no mais Implementados


Arquivos BDAM
O COBOL for MVS no suporta o processamento desses arquivos. Esses arquivos devem ser
convertidos para VSAM/RRDS. Os itens da linguagem do BDAM no mais aceitos pelo novo
COBOL so:
Clusula ACTUAL KEY
APPLY RECORD-OVERFLOW
Instruo SEEK
Clusula TRACK-LIMIT
Parmetros de organizao D, R,
W
Declarao de arquivos BDAM

Communication Feature
A Communication Feature no suportada pelo COBOL for MVS. Os programas de
comunicao (TCAM) devero utilizar outro "pacote" para executar as funes de
comunicao. Os itens da linguagem da Communication Feature no mais aceitos pelo
novo COBOL so:
Instruo ACCEPT MESSAGE COUNT [LANGLVL(1) ou
LANGLVL(2)]
COMMUNICATION SECTION
Instruo DISABLE
Instruo ENABLE
Instruo RECEIVE

Instruo SEND

EXAMINE
O COBOL for MVS no aceita a instruo EXAMINE, devendo ser substituda pela instruo
INSPECT. Entretanto, se a instruo no OS/VS COBOL for similar a seguinte:
EXAMINE DATA-LENGTH TALLYING UNTIL FIRST " ".
ela deve ser substituda no COBOL for MVS por:
MOVE 0 TO TALLY.
INSPECT DATA-LENGTH TALLYING FOR CHARACTERS BEFORE " ".

Elementos de Linguagem no mais Implementados


EXHIBIT
O COBOL for MVS no aceita a instruo EXHIBIT, deve ser substituda pela instruo
DISPLAY. Entretanto a instruo DISPLAY no cobre todas as funes da instruo
EXHIBIT.
A instruo EXHIBIT NAMED pode ser substituda diretamente pela instruo DISPLAY,
como se segue.
Cdigo no OS/VS COBOL.
77 DADO1 PIC X(08).
77 DADO2 PIC X(08).
EXHIBIT NAMED DADO1 DADO2.
Cdigo no COBOL for MVS.
DISPLAY "DADO1 = " DADO1 " DADO2 = " DADO2.
A instruo EXHIBIT CHANGED deve ser substituida pelas instrues IF e DISPLAY, como
se segue:
Cdigo no OS/VS COBOL.

77 DADO1 PIC X(08).


77 DADO2 PIC X(08).
EXHIBIT CHANGED DADO1 DADO2.
Cdigo 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 no mais Implementados


EXHIBIT
A instruo EXHIBIT CHANGED NAMED deve ser substituda pelas instrues IF e
DISPLAY, como se segue:
Cdigo no OS/VS COBOL.
77 DADO1 PIC X(08).
77 DADO2 PIC X(08).
EXHIBIT CHANGED NAMED DADO1 DADO2.

Cdigo 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 = " 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 no mais Implementados


READ TRACE / RESET TRACE
O COBOL for MVS no aceita essas instrues. Funes similares podem ser executadas
utilizando a declarao de "debug" USE FOR DEBUGGING ON ALL PROCEDURES, como
exemplificado abaixo:
.
.
ENVIROMENT DIVISION.

CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-390 WITH DEBUGGING MODE.
.
.
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.
.
.
PARAGRAPH-6.
.
.
MOVE 0 TO TRACE-SWITCH.
OU
SET TRACE-OFF TO TRUE.
PARAGRAPH-7.
.
.

Elementos de Linguagem no mais Implementados


TRANSFORM
O OS/VS COBOL suporta as instrues INSPECT e TRANSFORM. O COBOL for MVS
apenas aceita a instruo INSPECT. Qualquer instruo TRANSFORM deve ser substituda pela
instruo 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". Aps a execuo da instruo acima, a varivel TEXTO ficar
com o seguinte contedo: "CATXYZTTT". No COBOL for MVS teremos o mesmo resultado
utilizando a instruo abaixo:
INSPECT TEXTO CONVERTING "ABC" TO "CAT".

TIME-OF-DAY

O OS/VS COBOL aceita o registro especial TIME-OF-DAY. Ele vlido somente quando
utilizado com a instruo MOVE. Possui tamanho de 6 bytes decimais no formato:
HHMMSS (hora, minuto, segundo)
Programas OS/VS COBOL com a estrutura abaixo devem ser alterados como se segue.
Cdigo no OS/VS COBOL.
77 HORA-EXEC PIC X(06).
.
.
MOVE TIME-OF-DAY TO HORA-EXEC.
Cdigo no COBOL for MVS.
77 HORA-EXEC PIC X(06).
.
.
MOVE FUNCTION CURRENT-DATE (9:6) TO HORA-EXEC.

Elementos de Linguagem no mais Implementados


CURRENT-DATE
O OS/VS COBOL aceita o registro especial CURRENT-DATE. Ele vlido somente quando
utilizado com a instruo MOVE. Possui tamanho de 8 bytes alfanumricos no formato:
MM/DD/AA (mes, dia, ano)
O COBOL for MVS aceita o registro especial DATE. Ele vlido apenas quando utilizado com
a instruo ACCEPT (no vlido sob CICS). Tem tamanho de 6 bytes alfanumricos no
formato:
AAMMDD (ano, mes, dia)
Programas OS/VS COBOL com a estrutura abaixo devem ser alterados como se segue.

Cdigo no OS/VS COBOL.

77 DATA-EXEC PIC X(08).


.
.
.
MOVE CURRENT-DATE TO DATA-EXEC.

Cdigo 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 no mais Implementados

DIVERSOS
Elementos
ASSIGN ... OR

ASSIGN TO integer system-name

Observaes
Para utilizar esta cusula no COBOL for MVS o OR deve ser
removido.
Para utilizar esta cusula 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 no aceita esta frase.

Instruo CLOSE - WITH


POSITIONING, DISP

O OS/VS COBOL aceitas as frase WITH POSITIONING e DISP


como extenso da instruo CLOSE. No COBOL for MVS essas
frases no so aceitas.

Clusula FILE-LIMIT do
pargrafo FILE-CONTROL

O OS/VS COBOL aceita a clusula e trata-a como comentrrio. O


COBOL for MVS no aceita, deve ser removida.

REMARKS

Clusula LABEL RECORD em


uma entrada SD

Comentariar, colocando um * (asterisco) na coluna 7, ou ser


interpretado como sendo um comentrio do elemento anterior.
A clusula LABEL RECORD deve ser retirada das entradas de
descrio dos arquivos de SORT/MERGE.

Instruo NOTE

Todas as instrues NOTE devem ser removidas ou comentariadas.

Instruo ON

Funes similares so providas pelas instrues IF e EVALUATE

Clusula RECORD CONTAINS


n CHARACTERS

Clusula LABEL RECORD


com as frases
TOTALING/TOTALED AREA

Numa variao do ANSI COBOL 74, a clusula RECORD


CONTAINS n CHARACTERS seria alterada se a clusula
OCCURS DEPENDING ON fosse especificada no FD, definindo um
arquivo de tamanho varivel. Sob o COBOL for MVS a clusula
RECORD CONTAINS n CHARACTERS sempre define um
arquivo de tamanho FIXO.
No COBOL for MVS essas frases no so aceitas.

Elementos de Linguagem alterados

DIVERSOS
Elementos

Observaes

Clusula FILE STATUS

Os STATUS KEY de retorno do QSAM e do VSAM foram alterados


e esto mais especficos. Vide tabela de STATUS KEY nos anexos 1 e
2.

Instruo IF ... OTHERWISE


Clusula
JUSTIFIED

Substituir o OTHERWISE por ELSE.


Sob o OS/VS COBOL com a opo de compilao LANGLVL(1), se
a clusula JUSTIFIED for utilizada com a clusula VALUE, o dado
inicial alinhado a direita. No COBOL for MVS se as clusulas
VALUE e JUSTIFIED so utilizadas para itens alfabticos ou
alfanumricos, o dado inicial alinhado a esquerda.
Por exemplo no OS/VS COBOL, teramos:
77 TEXTO PIC X(9) JUSTIFIED VALUE "FIRST".
resultando no valor FIRST ocupando as 5 ltimas posies do campo.
bbbbFIRST
No COBOL for MVS, teramos:
77 TEXTO PIC X(9) JUSTIFIED VALUE "FIRST".
resultando no valor FIRST ocupando as primeiras posies do campo.
FIRSTbbbb
Para obter-se o mesmo resultado, teria-se de codificar como se segue.
77 TEXTO PIC X(9) JUSTIFIED VALUE " FIRST".

Instruo

O COBOL for MVS no permite mais do que um campo receptor.


Logo, a instruo

MOVE CORRESPONDING
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.
Instruo MOVE para campos
definidos com P na PICTURE

A movimentao ou comparao do contedo de um campo definido


com P na PICTURE para um campo alfanumrico, no OS/VS
COBOL, tinha os zeros finais suprimidos. No COBOL for MVS os
zeros finais so movidos e includos nas comparaes.
EX:
05 SEND-FIELD PIC 999PPP VALUE 123000.
05 RECV-FIELD PIC XXXXXX.
.
.
MOVE SEND-FIELD TO RECV-FIELD.
No OS/VS COBOL, o cdigo 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

DIVERSOS
Elementos
Registrador especial

Observaes
As regras para utilizao deste registrador especial so as mesmas.
Entretanto, o formato dos dados so diferentes.

WHEN-COMPILED
No OS/VS COBOL o formato :
hh.mm.ssMMM DD, YYYY (hora.minuto.segundoMES DIA,
ANO)
exemplo de utilizao:
01 DATA-COMPL PIC X(20).
.

.
MOVE WHEN-COMPILED TO DATA-COMPL.
DISPLAY PGM COMPILADO EM DATA-COMPL.
No COBOL for MVS o formato :
MM/DD/YYhh.mm.ss (MS/DIA/ANOhora.minuto.segundo)
exemplo de utilizao:
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 funo WHENCOMPILED que fornece a mesma informao no formato
YYYYMMDDhhmmssccdhgmg
Onde:
YYYY = ANO
MM = MS
DD = DIA
hh = hora
mm = minuto
ss = segundo
cc = centsimo de segundo
d = sinal(+ ou -)
gh = diferena em horas ref. horrio de Greenwich
gm = diferena em minutos ref. horrio de Greenwich
exemplo de utilizao:
DISPLAY PGM COMPILADO EM
FUNCTION WHEN-COMPILED.

Elementos de Linguagem alterados

DIVERSOS
Elementos

Observaes

Instruo

O OS/VS COBOL suporta a instruo WRITE com a frase AFTER


POSITIONING. O COBOL for MVS no suporta. No COBOL for
MVS deve ser usado a instruo WRITE ... AFTER ADVANCING.

WRITE AFTER POSITIONING

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 variveis.


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
referncia no SPECIAL-NAMES.
Clusula
VALUE

Sob o COBOL for MVS passa a suportar a inicializao de variveis


com nulo. A clusula passa a aceitar trs formatos, exemplificados
abaixo.
Formato 1 - Literal Value.

VALUE literal.

Formato 2 - Condition-Name Value.


88 Condition-Name VALUE literal.
OU
88 Condition-Name VALUE literal1 THRU literal2.

Formato 3 - NULL Value.


VALUE NULL. OU VALUE NULLS.

Elementos de Linguagem alterados

DIVERSOS
Elementos
Instruo MERGE
Instruo OPEN

Observaes
Permite vrios arquivos no GIVING.
Permite OPEN EXTEND para arquivos indexados e relativos.
No aceita as opes LEAVE, REREAD, DISP nem REVERSED.

Instruo SEARCH

Instruo SORT

O COBOL for MVS no permite que o campo da condio WHEN


seja o campo KEY especificado na tabela.
Permite arquivos indexados e relativos no USING/GIVING.
Permite vrios arquivos no GIVING.

Registrador especial
SORT-RETURN

No OS/VS COBOL os cdigos de retorno do SORT so:


00 - Processamento efetuado com sucesso
de 02 at 12 - Erros de I/O nos arquivos

16 - Erro no processamento.
No COBOL for MVS os cdigos de retorno do SORT so apenas:
00 - Processamento efetuado com sucesso
16 - Erro no processamento.
Instruo START

No suporta a frase USING.

Instruo STRING

O campo receptor pode ser item de grupo.

Instruo UNSTRING
Instruo WRITE
Instruo
INSPECT

No pode ser usado para campo numrico editado.


No pode ser usado para arquivos QSAM abertos como I/O.
A instruo INSPECT especifica que caracteres, ou grupos de
caracteres, em um item de dados devem ser contados (TALLIED),
atualizados (REPLACED) ou ambos.

conta as ocorrncias de um caracter especfico 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 srie de frases ALL.
Ex.
INSPECT ... TALLYING ...
INSPECT ... REPLACING ...
INSPECT ... TALLYING ... REPLACING ...
INSPECT ... CONVERTING ...

Elementos de Linguagem alterados

DIVERSOS
Elementos

Observaes

Instruo

A instruo PERFORM transfere explicitamente o controle para uma


ou mais procedures e implicitamente retorna o controle para a prxima
instruo executvel aps a instruo PERFORM. A instruo
PERFORM pode ser:

PERFORM

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 prpria


instruo PERFORM. Aceita todas as variaes 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.

Elementos de Linguagem adicionados

TERMINADOR EXPLCITO
As instrues abaixo ganharam terminador explcito
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

WRITE

END-WRITE

DIVERSOS
Elementos
Clusula

Observaes
Usado apenas em arquivos sequenciais.

PADDING CHARACTER
Clusula RECORD DELIMITER

Usado apenas em arquivos sequenciais.

Clusula EXTERNAL no FD

Permite o compartilhamento de arquivos entre programas.

Clusula EXTERNAL na WS

Somente nvel 01 na WORKING STORAGE

Clusula GLOBAL na WS

Indica que este conector de arquivo um GLOBAL NAME

DBCS

Double Byte Character String (KANJI)

Frase

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

NOT

NOT ON EXCEPITION, NOT ON OVERFLOW,


NOT END-OF-PAGE

Instruo CONTINUE
Instruo TITLE

Similar ao NEXT SENTENCE


Colocar ttulo no topo da pgina de compilao

Item de dados
DAY-OF-WEEK

Informa o dia da semana de acordo com a tabela abaixo


1 = segunda 2 = tera
3 = quarta 4 = quinta
5 = sexta 6 = sabado
7 = domingo

Elementos de Linguagem Adicionados

DIVERSOS
Elementos

Observaes

Instruo

A instruo EVALUATE fornece uma notao simples para uma srie


de instrues IF.

EVALUATE
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
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.
Instruo
INITIALIZE

Inicializa campo ou cojunto de campos com valores pr-determinados.


Uma tabela inteira pode ser inicializada atravs desta instruo. Esta
instruo funcionalmente equivalente a uma ou mais intrues
MOVE.
Um item de dado tipo ndice no pode ser inicializado atravs desta
instruo.
Ex.
INITIALIZE campo(s).
INITIALIZE campo(s)
REPLACING tipo(s) BY campo ou literal.

Funo Intrnsica

Funo intrnsica uma funo que executa uma operao matemtica,


uma operao com caracter ou uma operao lgica e permite que o
resultado derivado automaticamente da execuo possa ser
referenciado.
A tabela das funes disponveis pode ser vista no anexo 3.

Elementos de Linguagem adicionados

REGISTRADORES E ENDEREAMENTOS
O COBOL for MVS apresenta vrias novidades nesta rea,
algumas delas sero mostradas a seguir
Elementos
LENGTH OF

Observaes
Contm o nmero de bytes utilizados pr um campo
Ex.
MOVE LENGTH OF CAMPO-A TO CAMPO-B.
ADD LENGTH OF CAMPO-A TO CAMPO-C.

ADDRESS OF

Contm o endereo de cada varivel na LINKAGE SECTION.


ex.
SET ADDRESS OF CAMPO-LK TO CAMPO-ADDR.

POINTER

Indica campos definidos para armazenar endereos.


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

SET

Atribui valores a campos. Possui 5 formatos.


Ex.

MOVE

SET ADDRES OF CAMPO-LK TO CAMPO-ADDR.

SET varivel-condicional TO TRUE/FALSE

SET nome-mneumonico TO ON/OFF

Permite enderear uma determinada posio de memria, no definida


explicitamente.
ex.
MOVE varivel (posio-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

00

00

04

(undefined)

COBOL for MVS only: Wrong length record Successful


completion

05

(undefined)

Optional file not present

Successful completion

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

49

92

DELETE or REWRITE attempted when file not in OPEN IO 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)

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

On sequential READ for relative file, size of relative record


number too large for relative key

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

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

Nonoptional file not present

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

Anexo 3 - Tabela de funes


A tabela abaixo apresenta uma viso geral dos tipos de argumentos, tipos de funes e valores retornados por
cada funo intrnsica disponibilizada pelo COBOL for MVS.
Tipos de argumentos e tipos de funes so abreviados como se segue:
_ A = alphabetic
_ I = integer
_ N = numeric
_ X = alphanumeric.

Table of Functions
FUNCTION-NAME

ARGUMENTS

TYPE

VALUE RETURNED

ACOS

N1

Arccosine of N1

ANNUITY

N1, I2

Ratio of annuity paid for I2 periods at interest of N1 to


initial investment of one

ASIN

N1

Arcsine of N1

ATAN

N1

Arctangent of N1

CHAR

I1

Character in position I1 of program collating sequence

COS

N1

Cosine of N1

CURRENT-DATE

None

Current date and time and difference from Greenwich


Mean Time

DATE-OF-INTEGER

I1

Standard date equivalent (YYYYMMDD) of integer


date

DAY-OF-INTEGER

I1

Julian date equivalent (YYYYDDD) of integer date

FACTORIAL

I1

Factorial of I1

INTEGER

N1

The greatest integer not greater than N1

INTEGER-OF-DATE

I1

Integer date equivalent of standard date


(YYYYMMDD)

INTEGER-OF-DAY

I1

Integer date equivalent of Julian date (YYYYDDD)

INTEGER-PART

N1

Integer part of N1

LENGTH

A1 or N1 or
X1

Length of argument

LOG

N1

Natural logarithm of N1

LOG10

N1

Logarithm to base 10 of N1

LOWER-CASE

A1 or X1

All letters in the argument are set to lowercase

MAX

A1... or

Value of maximum argument; note that the type of


function depends on the arguments

I1... or

N1... or

X1...

MEAN

N1...

Arithmetic mean of arguments

MEDIAN

N1...

Median of arguments

MIDRANGE

N1...

Mean of minimum and maximum arguments

MIN

A1... or

Value of minimum argument; note that the type of


function depends on the arguments

I1... or
N1... or
X1...
MOD

I1,I2

I1 modulo I2

NUMVAL

X1

Numeric value of simple numeric string

NUMVAL-C

X1 or

Numeric value of numeric string with optional


commas and currency sign

X1,X2
ORD

A1 or X1

Ordinal position of the argument in collating sequence

ORD-MAX

A1... or

Ordinal position of maximum argument

Ordinal position of minimum argument

Present value of a series of future period-end amounts,


N2, at a discount rate of N1

Random number

I1... or

N1...

Value of maximum argument minus value of


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

N1... or
X1...
ORD-MIN

A1...or
N1... or
X1...

PRESENT-VALUE

N1
N2...

RANDOM

I1 or
none

RANGE

REM

N1,N2

Remainder of N1/N2

REVERSE

A1 or X1

Reverse order of the characters of the argument

SIN

N1

Sine of N1

SQRT

N1

Square root of N1

STANDARDDEVIATION

N1...

Standard deviation of arguments

SUM

I1... or

Sum of arguments; note that the type of function


depends on the arguments.

N1...

TAN

N1

Tangent of N1

UPPER-CASE

A1 or X1

All letters in the argument are set to uppercase

VARIANCE

N1...

Variance of arguments

WHEN-COMPILED

None

Date and time when program was compiled

BIBLIOGRAFIA
CDIGO
GC26-4524

TTULO
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

04

(undefined)

COBOL for MVS only: Wrong length record Successful


completion

05

(undefined)

Optional file not present

Successful completion

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

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
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)

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

On sequential READ for relative file, size of relative record


number too large for relative key

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

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)

Nonoptional file not present

97

97

OPEN statement execution successful; file integrity verified

Você também pode gostar