dicas de cobol

39
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:

Upload: betomineiro

Post on 06-Sep-2015

325 views

Category:

Documents


5 download

DESCRIPTION

Curso de Cobol Mainframe.

TRANSCRIPT

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

    18/06/1997 1.0 Guillermo Gil Carral Verso original

    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

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

  • D I V E R S O S

    Elementos Observaes

    ASSIGN ... OR Para utilizar esta cusula no COBOL for MVS o OR deve ser removido.

    ASSIGN TO integer system-name 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 Comentariar, colocando um * (asterisco) na coluna 7, ou ser interpretado como sendo um comentrio do elemento anterior.

    Clusula LABEL RECORD em

    uma entrada SD 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 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.

    Clusula LABEL RECORD

    com as frases

    TOTALING/TOTALED AREA

    No COBOL for MVS essas frases no so aceitas.

  • Elementos de Linguagem alterados

    D I V E R S O S

    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 Substituir o OTHERWISE por ELSE.

    Clusula

    JUSTIFIED

    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

    MOVE CORRESPONDING

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

    Logo, a instruo

    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

    D I V E R S O S

    Elementos Observaes

    Registrador especial

    WHEN-COMPILED

    As regras para utilizao deste registrador especial so as mesmas.

    Entretanto, o formato dos dados so diferentes.

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

    COMPILED 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

    D I V E R S O S

    Elementos Observaes

    Instruo

    WRITE AFTER POSITIONING

    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.

    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

    D I V E R S O S

    Elementos Observaes

    Instruo MERGE Permite vrios arquivos no GIVING.

    Instruo OPEN Permite OPEN EXTEND para arquivos indexados e relativos.

    No aceita as opes LEAVE, REREAD, DISP nem REVERSED.

    Instruo SEARCH O COBOL for MVS no permite que o campo da condio WHEN seja o campo KEY especificado na tabela.

    Instruo SORT 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 No pode ser usado para campo numrico editado.

    Instruo WRITE No pode ser usado para arquivos QSAM abertos como I/O.

    Instruo

    INSPECT

    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

  • D I V E R S O S

    Elementos Observaes

    Instruo

    PERFORM

    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:

    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

    D I V E R S O S

    Elementos Observaes

    Clusula

    PADDING CHARACTER

    Usado apenas em arquivos sequenciais.

    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

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

    NOT ON EXCEPITION, NOT ON OVERFLOW,

    NOT END-OF-PAGE

    Instruo CONTINUE Similar ao NEXT SENTENCE

    Instruo TITLE 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

    D I V E R S O S

    Elementos Observaes

    Instruo

    EVALUATE

    A instruo EVALUATE fornece uma notao simples para uma srie

    de instrues 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

    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 Observaes

    LENGTH OF 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.

    SET ADDRES OF CAMPO-LK TO CAMPO-ADDR.

    SET varivel-condicional TO TRUE/FALSE

    SET nome-mneumonico TO ON/OFF

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

    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

    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

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

    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

    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

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

    BIBLIOGRAFIA

    CDIGO TTULO

    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

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

    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