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:
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.
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
000032
000033
000034
000035
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 20010514
HORA 152517
SOMANDO 10 DIAS
NOVA DATA 20010524
DATA 20000517
COBOL for MVS
Principais Diferenças
Revisões
Data
Versão
Autor(es)
18/06/1997
1.0
Guillermo Gil Carral
Índice
COBOL 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
Descrição
Versão 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 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
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
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
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.
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.
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.
.
.
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 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:
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 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
DIVERSOS
Elementos
ASSIGN ... OR
ASSIGN TO integer system-name
Observações
Para utilizar esta cáusula no COBOL for MVS o OR deve ser
removido.
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
Cláusula LABEL RECORD em
uma entrada SD
Comentariar, colocando um * (asterisco) na coluna 7, ou será
interpretado como sendo um comentário do elemento anterior.
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
Cláusula LABEL RECORD
com as frases
TOTALING/TOTALED AREA
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.
No COBOL for MVS essas frases não são aceitas.
Elementos de Linguagem alterados
DIVERSOS
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
Cláusula
JUSTIFIED
Substituir o OTHERWISE por ELSE.
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
O COBOL for MVS não permite mais do que um campo receptor.
Logo, a instrução
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.
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
DIVERSOS
Elementos
Registrador especial
Observações
As regras para utilização deste registrador especial são as mesmas.
Entretanto, o formato dos dados são diferentes.
WHEN-COMPILED
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 é:
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 WHENCOMPILED 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
DIVERSOS
Elementos
Observações
Instrução
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.
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 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.
OU
88 Condition-Name VALUE literal1 THRU literal2.
Formato 3 - NULL Value.
VALUE NULL. OU VALUE NULLS.
Elementos de Linguagem alterados
DIVERSOS
Elementos
Instrução MERGE
Instrução OPEN
Observações
Permite vários arquivos no GIVING.
Permite OPEN EXTEND para arquivos indexados e relativos.
Não aceita as opções LEAVE, REREAD, DISP nem REVERSED.
Instrução SEARCH
Instrução SORT
O COBOL for MVS não permite que o campo da condição WHEN
seja o campo KEY especificado na tabela.
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.
Instrução START
Não pode ser usado para campo numérico editado.
Não pode ser usado para arquivos QSAM abertos como I/O.
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
DIVERSOS
Elementos
Observações
Instrução
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
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 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.
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
WRITE
END-WRITE
DIVERSOS
Elementos
Cláusula
Observações
Usado apenas em arquivos sequenciais.
PADDING CHARACTER
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 AT END, NOT ON SIZE ERROR, NOT INVALID KEY, ....
NOT
NOT ON EXCEPITION, NOT ON OVERFLOW,
NOT END-OF-PAGE
Instrução CONTINUE
Instrução TITLE
Similar ao NEXT SENTENCE
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
Elementos de Linguagem Adicionados
DIVERSOS
Elementos
Observações
Instrução
A instrução EVALUATE fornece uma notação simples para uma série
de instruções 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.
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
LENGTH OF
Observações
Contém o número de bytes utilizados pôr um campo
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.
MOVE
SET ADDRES OF CAMPO-LK TO CAMPO-ADDR.
SET variável-condicional TO TRUE/FALSE
SET nome-mneumonico TO ON/OFF
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
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 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
(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
X
Value of maximum argument; note that the type of
function depends on the arguments
I1... or
I
N1... or
N
X1...
X
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
X
Value of minimum argument; note that the type of
function depends on the arguments
I1... or
N1... or
X1...
MOD
I1,I2
I
I1 modulo I2
NUMVAL
X1
N
Numeric value of simple numeric string
NUMVAL-C
X1 or
N
Numeric value of numeric string with optional
commas and currency sign
X1,X2
ORD
A1 or X1
I
Ordinal position of the argument in collating sequence
ORD-MAX
A1... or
I
Ordinal position of maximum argument
I
Ordinal position of minimum argument
N
Present value of a series of future period-end amounts,
N2, at a discount rate of N1
N
Random number
I1... or
I
N1...
N
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
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
STANDARDDEVIATION
N1...
N
Standard deviation of arguments
SUM
I1... or
I
Sum of arguments; note that the type of function
depends on the arguments.
N1...
N
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
WHEN-COMPILED
None
X
Date and time when program was compiled
BIBLIOGRAFIA
CÓDIGO
GC26-4524
TÍTULO
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