Professional Documents
Culture Documents
N D I C E -----------
1 2 3 4 5 6
O que a linguagem COBOL .......................... Estrutura bsica de um programa COBOL .............. 2.1 - Exemplo de programas COBOL ................... Statements COBOL ................................... Conjuntos de caracteres ............................ Palavras ........................................... Variveis e constantes ............................. 6.1 Declarao ..................................... 6.2 Tipos .......................................... 6.3 Referncias .................................... IDENTIFICATION DIVISION ............................ ENVIRONMENT DIVISION ............................... DATA DIVISION ...................................... PROCEDURE DIVISION ................................. 10.1 Observaes gerais ........................... 10.1.1 Continuao de comandos .............. 10.1.2 Expresses ........................... 10.1.3 Referncia explcita a sub-strings ... 10.1.4 Referncia a variveis com OCCURS .... 10.1.5 Referncia a sub-strings e ndices ... 10.1.6 Acesso ao PARM ....................... 10.1.7 Referncia ao tamanho de uma varivel 10.1.8 Data e hora de execuo .............. 10.2 Comandos ao compilador ....................... 10.3 Comandos executveis ......................... 10.3.1 Comandos Gerais ..................... 10.3.2 Comandos de I/O ..................... 10.4 Exemplos de Embedded commands ...............
7 8 9 10
Nasceu no fim da dcada de 50 Orientada para aplicaes comerciais (ao contrario do FORTRAN, nascido mais ou menos na mesma poca, para aplicaes cientificas) COmmon Business Oriented Language Tentou ser padro; apesar disso, evoluiu apresentando diferenas entre as diversas implementaes dos compiladores Tipos de COBOL: COBOL ANSI-74, COBOL 68, COBOL 74, COBOL 80, COBOL ANSI 85, COBOL CODASYL, VISUAL COBOL
bsica do programa
******************************************************* ENVIRONMENT DIVISION. *------------------------------------------------CONFIGURATION SECTION. *-------------------------------------------------Informaes sobre o equipamento INPUT-OUTPUT SECTION. e sobre os arquivos utilizados *-----------------------------------FILE-CONTROL. *-----------------------------------I-O-CONTROL. ******************************************************** DATA DIVISION. *------------------------------------------------FILE SECTION. *------------------------------------------------Declarao das variveis WORKING-STORAGE SECTION. *------------------------------------------------LINKAGE SECTION. *------------------------------------------------COMMUNICATION SECTION. *------------------------------------------------REPORT SECTION. ******************************************************* PROCEDURE DIVISION. Declarao dos procedimentos *******************************************************
1. .1E01. .1E01. 1. 1.
3 Statements
72 Posies :
= Margem A Obrigatrio colocar na margem A: - nvel 01 - FD - nvel 77 = Margem B Colocar da margem B em diante: - tudo exceto o obrigatrio na margem A
Posio 12
4 Conjunto de caracteres
A ate Z 0 ate 9 espao + (mais; adio) (hfen; subtrao) * (asterisco; multiplicao) / (barra; diviso) > (maior que) < (menor que) = (igual a) . (ponto) , (vrgula) ; (ponto e virgula) $ (cifro) " (aspas) ' (apostrofe) ( (abre parnteses) ) (fecha parnteses)
5 Palavras
5.1) RESERVADAS ou PRE-DEFINIDAS 5.1.1 CONECTORES (opcionais)
, ; (virgula) (ponto e virgula)
5.1.5 - PALAVRAS-CHAVE e PALAVRAS OPCIONAIS PALAVRAS-CHAVE so verbos e outras palavras cujo significado fundamental para o entendimento da ao pelo compilador. Por exemplo, no comando IF VAR1 GREATER THAN VAR2 as palavras IF e GREATER so palavras-chave. As PALAVRAS OPCIONAIS aso aquelas que podem ser colocadas, mas no exercem funo a no ser melhorar a "leitura" do programador. Para o compilador elas so dispensveis e no alteram o comportamento do programa. Por exemplo, no comando IF VAR1 GREATER THAN VAR2 a palavra THAN opcional. 5.2) DEFINIDAS PELO PROGRAMADOR
6
5.2.1) TIPOS DATA NAMES = nomes de campos de memria (variveis) PROCEDURE NAMES = nomes de procedimentos (instrues) A instruo anterior a um procedure name deve terminar com um ponto. Um procedure name deve sempre ser seguido de um ponto. Quando for nome de uma SECTION (section name), deve ter o procedure name , a palavra SECTION e o ponto. 5.2.2) REGRAS DE FORMACAO Caracteres vlidos : letras (A a Z) algarismos (0 a 9) hfen No pode comear nem terminar com hfen Pode ter no mximo 30 caracteres Obs.: data names de colunas de tabelas DB2 podem ter Underscore (_) : na realidade tais referncias so resolvidas pelo pr-compilador e no pelo COBOL TELEF_CLI ENDER_CLI 5.2.3) QUALIFICAO DE DATA NAMES DEFINIDOS MAIS DE UMA VEZ CODCLI CODCLI CODCLI CODCLI OF OF IN IN REG-CADCLI REG-ARQMOV REG-CADCLI REG-ARQMOV
6 - VARIAVEIS E CONSTANTES
6.1) DECLARACAO SINTAXE para declarao de variveis: nmero_de_nvel nome [picture] [usage] [ocorrncias] [value].
Nmero de nvel : Permite a declarao de uma estrutura de variveis. Identifica se a varivel subconjunto de outra varivel ou no e/ou se ela tem ou no outras variveis que sejam seus subconjuntos. importante a ordem com que as variveis so declaradas, para, em conjunto com o nmero de nvel, identificar se elas so parte de outra varivel ou no.
Registro Nvel 01
Cod Cliente
Nome
Data Nascimento
Local Nasc.
Nvel 02
Dia
Mes
Ano
UF
Cidade
Nvel 03
Declarao : Nvel Varivel 01 Registro 02 Cod.Cliente 02 Nome Cliente 02 Data Nascimento 03 Dia 03 Ms 03 Ano 02 Local Nascimento 03 UF 03 Cidade Utiliza-se tambm a numerao dos nveis com intervalo entre um nmero e outro, para que se possa inserir alguma estrutura / nome em nveis intermedirios, aps a declarao inicial, sem a necessidade de alterar todos os nveis :
Registro Nvel 01
Cod Cliente
Nome
Data Nascimento
Local Nasc.
Nvel 05
Dia
Mes
Ano
UF
Cidade
Nvel 10
Declarao :
Nvel 01 05 05 05 10 10 10 05 10 10 Varivel Registro Cod.Cliente Nome Cliente Data Nascimento Dia Ms Ano Local Nascimento UF Cidade
Normalmente utiliza-se algum tipo de indentao para facilitar a visualizao da estrutura e da hierarquia das variveis :
9
01
Registro Cod.Cliente Nome Cliente Data Nascimento 10 Dia 10 Ms 10 Ano 05 Local Nascimento 10 UF 10 Cidade 05 05 05
Voltando sintaxe para declarao de variveis: Nmeros de nveis especiais : 77 = variveis independentes (no so sub-diviso de outras nem tampouco tem subdivises) 88 = atribuies de nomes de condies (variveis que apresentem determinados contedos), para que possam ser referenciadas na parte de procedimentos. Ex.:
. . 10 88 88 88 88 . . . UF PAULISTA BAIANO MINEIRO PARANAENSE PIC X(02). VALUE SP. VALUE BA. VALUE MG. VALUE PR.
Equivale a
IF UF = SP MOVE 15 TO ALIQUOTA . . .
10
Picture : tipo de dados na varivel Se omitido, assume que o formato alfanumrico (PIC X) e a varivel deve ter obrigatoriamente subdiviso; o tamanho a somatria de todas as subdivises declaradas em seguida. PIC X = alfanumrico PIC A = alfabtico PIC 9 = numrico Obs.: sempre que estiver especificado (n) indicando quantidade de bytes ou algarismos, pode-se tambm especificar o tipo repetidamente, tantas vezes quantos forem os bytes ou algarismos.
Sintaxe : PIC X = se a varivel tiver um nico byte PIC X(n) = se a varivel tiver n bytes Exemplo : PIC XXXXX ou PIC X(5) PIC A = se a varivel tiver um nico byte PIC A(n) = se a varivel tiver n bytes Exemplo : PIC AAAAA ou PIC A(5) PIC 9 = se o nmero (em decimal) contido na varivel tiver um nico algarismo inteiro PIC 9(i) = se o nmero (em decimal) contido na varivel tiver algarismos inteiros i i
PIC 9(i)V9(d) = se o nmero (em decimal) contido na varivel tiver algarismos inteiros e d algarismos decimais Exemplos : PIC 99999 PIC 99999V99 ou ou PIC 9(5) PIC 9(5)V99
11
dados alfanumricos em EBCDIC, ou dados numricos em zonado. Cada caracter ocupa um byte. Mximo de 256 caracteres.
[USAGE] COMP-3
= dados numricos no formato decimal compactado. Neste caso a quantidade de noves especificada no PIC indica a quantidade de algarismos do maior nmero que poder estar contido nesta varivel; cada algarismo ocupa meio byte. Para determinar o tamanho total do campo, acrescentar mais meio byte para o sinal (ltimo meio byte direita; independentemente de o campo ter sido definido com S ou no). Exemplos: PIC 9(01) COMP-3 mximo 1 algarismo (de +9 a 9); campo com 1 byte PIC 9(02) COMP-3 mximo 2 algarismos (de +99 a 99); campo com 2 bytes PIC 9(03) COMP-3 mximo 3 algarismos (de +999 a 999); campo com 2 bytes PIC 9(04) COMP-3 mximo 4 algarismos (de +9999 a 9999); campo com 3 bytes PIC 9(05) COMP-3 mximo 5 algarismos (de +99999 a 99999); campo com 3 bytes PIC 9(06) COMP-3 mximo 6 algarismos (de +999999 a 999999); campo com 4 bytes PIC 9(07) COMP-3 mximo 7 algarismos (de +9999999 a 9999999); campo com 4 bytes IMPORTANTE : Para campos numricos (PIC 9) DISPLAY ou COMP-3 ou COMP-4 pode-se opcionalmente colocar a indicao de sinal : PIC 9(03) ou PIC S9(03).
Se no for especificado sinal, o campo ser SEMPRE tratado como se tivesse nmero positivo. Exemplo : se a varivel WCALC for definida com PIC 9(03) e contiver zero, se subtrairmos 1, ela passar a ter o nmero 1 positivo ( sempre forado sinal positivo aps uma operao aritmtica) Se for especificado sinal, o campo ser SEMPRE tratado conforme os nmeros relativos. Exemplo : se a varivel WCALC for definida com PIC S9(03) e contiver zero, se subtrairmos 1, ela passar a ter o nmero 1 negativo
Mximo de 18 algarismos num campo numrico, incluindo parte inteira e decimal, para usage DISPLAY, COMP-3 [USAGE] COMP = dados numricos no formato binrio ponto fixo. Valor expresso em decimal.
12
[USAGE] COMP-4
em decimal.
[USAGE] COMP-1 = dados numricos no formato binrio ponto flutuante curto. No colocar PIC (ele estabelecido automaticamente pelo compilador). Valor expresso em notao cientfica (mantissa e expoente). = dados numricos no formato binrio ponto flutuante longo. No colocar PIC (ele estabelecido automaticamente pelo compilador). Valor expresso em notao cientfica (mantissa e expoente).
[USAGE] COMP-2
ocorrncias : indica a quantidade de vezes que a varivel ocorre (usado para declarao de vetores).
Sintaxe : OCCURS n TIMES [DEPENDING ON varivel] Exemplo : 10 VALOR OCCURS 100 TIMES.
Variveis declaradas com OCCURS , ao serem referenciadas na PROCEDURE DIVISION, devem obrigatoriamente ter a indicao do ndice (atravs de literal ou outra varivel com contedo inteiro e positivo):
VALOR (01) VALOR (98) VALOR (WIDX)
VALUE : indica o contedo inicial que deve ser atribudo varivel (em tempo de compilao). Especificado atravs de literal ou constante figurativa.
Sintaxe : VALUE literal Exemplo : VALUE VALUE VALUE VALUE VALUE VALUE 100 ZERO .123E12 RELATORIO ALL * ALL *-
13
7 - IDENTIFICATION DIVISION
PROGRAM-ID. AUTHOR. DATE-WRITTEN. DATE-COMPILED. SECURITY. REMARKS. nome do programa. nome do programador. data de codificao. data de compilao. comentrios. comentrios.
14
8 - ENVIRONMENT DIVISION
8.1) CONFIGURATION SECTION. SOURCE-COMPUTER. OBJECT-COMPUTER. SPECIAL-NAMES. ... ... DECIMAL-POINT IS COMMA. Indica que a notao de nmeros utilizada : Pontos separando visualmente grupos de algarismos Vrgula separando parte inteira da parte decimal Se no especificado vale a notao americana (Vrgulas separando visualmente grupos de algarismos e ponto separando parte inteira da parte decimal) 8.2) INPUT-OUTPUT SECTION. FILE-CONTROL.
Para arquivos SEQUENCIAIS
I-O-CONTROL.
15
9 - DATA DIVISION
FILE SECTION. Para declarao das variveis com os registros dos arquivos. WORKING-STORAGE SECTION. Para declarao das variveis de trabalho, no vinculadas diretamente aos registros dos arquivos. LINKAGE SECTION. Para indicar as variveis usadas no programa, mas declaradas externamente.
16
10 - PROCEDURE DIVISION
10-1) OBSERVACOES GERAIS 10-1-1) Continuao de comandos Uma instruo pode ser continuada por quantas linhas forem necessrias :
.........1.........2.........3.........4.........5.........6.........7.. DISPLAY 'CONTEUDO DA VARIAVEL W-COMP = ' W-COMP ' CONTEUDO DA VARIAVEL W-DATA = ' W-DATA
Uma literal que no caiba numa linha, para que seja continuada na prxima linha, precisa ter na prxima linha a indicao da continuao (hfen na coluna 7) e, em qualquer coluna a partir da 12, um apstrofe indicando o incio da continuao.
-
15 PARTCAB PIC X(88) VALUE 'RELATORIO MENSAL DAS VENDAS EFETUA 'DAS AOS DOMINGOS'. DISPLAY 'Rua Antonio Jose Pereira de Almeida Junior Graziano d 'as Neves nro 1'
.........1.........2.........3.........4.........5.........6.........7..
10-1-2) Expresses Uma expresso indica uma srie de operaes aritmticas que devem ser efetuadas. A hierarquia para sua resoluo a normal (multiplicao e diviso, soma e subtrao), sendo os componentes de dentro dos parnteses sendo resolvidos primeiro. Pode-se colocar quantos nveis de parnteses forem necessrios, observando-se que sempre eles devem estar em pares. Exemplo :
COMPUTE RESULT = ((AA * 2) + BB) / (((CC + 1.7) * (DD 3.14)) / 1952)
17
10-1-4) Referncia a variveis com OCCURS Devem indicar um ndice, que pode ser uma literal numrica (nmero inteiro positivo) ou uma outra varivel com um nmero inteiro positivo:
Vetores (1 dimenso) 10 VALOR PIC 9(9)V99 OCCURS 50. MOVE VALOR (01) TO WS-WORK MOVE VALOR (IND) TO WS-WORK Matrizes (mais de 1 dimenso) 10 VALORES-REF-1ANO OCCURS 10. 15 VALOR-REF-1MES PIC 9(9)V99 OCCURS 12. MOVE VALOR (WANO WMES) ndice de 1 nvel : indica qual varivel VALORES-REF-1ANO das 10 existentes TO WS-WORK
ndice de 2 nvel : indica qual varivel VALOR-REF-1MS das 12 (na realidade 120) existentes
18
10-1-6) Acesso ao PARM Para acessar dados informados atravs do PARM, declarar na LINKAGE SECTION uma estrutura com: Uma varivel PIC 9(02) COMP que recebe o tamanho dos dados Em continuao, outra varivel que ir conter, em tempo de execuo, os dados informados atravs do PARM; ela deve ter tamanho suficiente para receber todos os dados.
LINKAGE SECTION. 01 W-DATA-VIA-PARM. 03 W-DATA-PARM-TAM PIC 9(02) COMP. 03 W-DATA-1 PIC X(10). 03 W-DATA-2 PIC X(08). *===============================================================* PROCEDURE DIVISION USING W-DATA-VIA-PARM. DISPLAY W-DATA-PARM-TAM. DISPLAY W-DATA-1 ' ' W-DATA-2.
Note que o tamanho da varivel colocado em W-DATA-PARM-TAM inclui somente o tamanho dos dados em si, sem incluir os 2 bytes de W-DATA-PARM-TAM. 10-1-7) Referncia ao tamanho de uma varivel A funo LENGTH OF retorna o tamanho de uma varivel. As instrues
01 W-DATA-VIA-PARM. 03 W-DATA-PARM-TAM 03 W-DATA-1 03 W-DATA-2 PIC 9(02) COMP. PIC X(10). PIC X(08).
PROCEDURE DIVISION USING W-DATA-VIA-PARM. DISPLAY 'VOU EXIBIR TAMANHO DE W-DATA-VIA-PARM' DISPLAY LENGTH OF W-DATA-VIA-PARM
exibem o seguinte :
VOU EXIBIR 000000020 TAMANHO DE W-DATA-VIA-PARM
19
10-1-8) Data e hora de execuo A funo CURRENT-DATE retorna a data e a hora atuais. As instrues
DISPLAY 'VOU EXIBIR FUNCTION CURRENT-DATE : ' DISPLAY '01 A 08 = ' FUNCTION CURRENT-DATE(01:08). DISPLAY '09 A 14 = ' FUNCTION CURRENT-DATE(09:06).
20
COMPUTE
21
Efetua o clculo da expresso indicada e coloca o resultado na varivel especificada logo aps o COMPUTE.
Sintaxe : COMPUTE varivel = expresso
OBS. - O sinal de = pode ser substitudo pela palavra EQUAL COMPUTE COMPUTE COMPUTE COMPUTE COMPUTE COMPUTE COMPUTE COMPUTE Sintaxe : Exemplo : Sintaxe : Exemplo : Sintaxe : Exemplo : Sintaxe : Exemplo : CAMPO1 = 1 + 1 CAMPO1 EQUAL 1 + 1 CAMPOXX EQUAL CAMPOYY - CAMPOZZ ALFA = ALFA - ALFA BETA = BETA * BETA GAMA = DIVIDENDO / DIVISOR RESULT = (AA + BB) / CC RESULT = ((AA + BB) / CC) / DD
COMPUTE varivel = expresso ON SIZE ERROR comando imperativo COMPUTE XXX = YYY * 9 ON SIZE ERROR GO TO ESTOUROU COMPUTE varivel = expresso NOT ON SIZE ERROR COMPUTE XXX = YYY * 2 NOT ON SIZE ERROR PERFORM DEU COMPUTE varivel ROUNDED = expresso COMPUTE RESULT ROUNDED = ALFA + 8,5 COMPUTE varivel ROUNDED = expresso ON SIZE ERROR comando imperativo COMPUTE RESULT ROUNDED = AA * BB ON SIZE ERROR GO TO NAODEU
Sintaxe : COMPUTE varivel ROUNDED = expresso NOT ON SIZE ERROR comando imperativo Exemplo : COMPUTE XXX ROUNDED = AA + BB NOT ON SIZE ERROR GO TO DEU
CONTINUE No efetua processamento, servindo somente para contexto; usado em geral quando o teste sendo efetuado no tem processamento especfico para a condio satisfeita.
Exemplos : MOVE SPACES TO TEXTO. IF TEXTO EQUAL SPACES CONTINUE ELSE DISPLAY "NAO PASSA POR AQUI". IF CAMPOA GREATER THAN CAMPOB 22
CONTINUE ELSE COMPUTE CAMPOC = CAMPOA - CAMPOB. TESTA-SIGLA-REGIAO-SUL. IF SIGLA = "SP" CONTINUE ELSE IF SIGLA = "PR" CONTINUE ELSE IF SIGLA = "SC" CONTINUE ELSE IF SIGLA = "RS" CONTINUE ELSE PERFORM ERRO1 THRU SAI-ERRO1. SIGLA-OK.
Sintaxe : DIVIDE divisor INTO dividendo/cociente ON SIZE ERROR imperativo Exemplos : DIVIDE QUEREM-PAGAR INTO TOTAL-CONTA ON SIZE ERROR DISPLAY "NINGUEM QUER PAGAR" Sintaxe : DIVIDE divisor INTO dividendo/cociente NOT ON SIZE ERROR imperativo Exemplos : DIVIDE QUEREM-PAGAR INTO TOTAL-CONTA NOT ON SIZE ERROR DISPLAY TOTAL-CONTA, " CADA UM" Sintaxe : DIVIDE divisor INTO dividendo ROUNDED ON SIZE ERROR imperativo Exemplos : DIVIDE QUEREM-PAGAR INTO TOTAL-CONTA ROUNDED ON SIZE ERROR DISPLAY "NINGUEM QUER PAGAR" Sintaxe : DIVIDE divisor INTO dividendo ROUNDED NOT ON SIZE ERROR imperativo Exemplos : DIVIDE QUEREM-PAGAR INTO TOTAL-CONTA ROUNDED NOT ON SIZE ERROR DISPLAY TOTAL-CONTA, " CADA UM" Sintaxe : DIVIDE dividendo/cociente BY divisor Exemplos : DIVIDE NUMERO BY 2 DIVIDE VALOR BY 100 Sintaxe : DIVIDE dividendo/cociente BY divisor ROUNDED Exemplos : DIVIDE NUMERO BY 2 ROUNDED DIVIDE VALOR BY 100 ROUNDED Sintaxe : DIVIDE dividendo BY divisor GIVING cociente Exemplos : DIVIDE QUANTIDAE BY GIVING METADE DIVIDE TOT-CRUZEIROS BY CRUZEIROS-POR-DOLAR GIVING DOLARES Sintaxe : DIVIDE dividendo BY divisor GIVING cociente ROUNDED Exemplos : DIVIDE QUANTIDADE BY 2 GIVING METADE ROUNDED DIVIDE TOT-CRUZEIROS BY CRUZEIROS-POR-DOLAR GIVING DOLARES ROUNDED Sintaxe : DIVIDE dividendo/cociente BY divisor REMAINDER resto Exemplos : DIVIDE NUMERO BY 2 REMAINDER PAR-IMPAR DIVIDE VALOR BY PESSOAS REMAINDER VAI-SOBRAR Sintaxe : DIVIDE dividendo BY divisor GIVING cociente REMAINDER resto Exemplos : DIVIDE QUANTIA BY 5 GIVING CADA-UM-RECEBE REMAINDER PARA-O-SANTO Sintaxe : Exemplos : DIVIDE dividendo/cociente BY divisor ON SIZE ERROR imperativo 24
DIVIDE TOTAL-CONTA BY QUEREM-PAGAR ON SIZE ERROR DISPLAY "NINGUEM QUER PAGAR" Sintaxe : DIVIDE dividendo/cociente BY divisor NOT ON SIZE ERROR imperativo Exemplos : DIVIDE TOTAL-CONTA BY QUEREM-PAGAR NOT ON SIZE ERROR DISPLAY TOTAL-CONTA, " CADA UM" Sintaxe : DIVIDE dividendo/cociente ROUNDED BY divisor ON SIZE ERROR imperativo Exemplos : DIVIDE TOTAL-CONTA ROUNDED BY QUEREM-PAGAR ON SIZE ERROR DISPLAY "NINGUEM QUER PAGAR" Sintaxe : DIVIDE dividendo/coc ROUNDED BY divisor NOT ON SIZE ERROR imperativo Exemplos : DIVIDE TOTAL-CONTA ROUNDED BY QUEREM-PAGAR NOT ON SIZE ERROR DISPLAY TOTAL-CONTA, " CADA UM"
Sintaxe : EXAMINE campo TALLYING ALL literal Exemplos : EXAMINE TEXTO TALLYING ALL "VIDA" EXAMINE TEXTO TALLYING ALL "ARA" Sintaxe : Exemplo : EXAMINE campo TALLYING LEADING literal EXAMINE TEXTO TALLYNG LEADING 0
Sintaxe : Exemplo :
EXAMINE campo TALLYING UNTIL FIRST literal REPLACING BY literal EXAMINE NOME TALLYING UNTIL FIRST "JR." REPLACING BY "JUNIOR"
Sintaxe : EXAMINE campo TALLYING ALL literal REPLACING BY literal EXAMINE CAMPO TALLYING ALL "." REPLACING BY "*" EXAMINE CAMPO TALLYING ALL "," REPLACING BY "." EXAMINE CAMPO TALLYING ALL "*" REPLACING BY "," Sintaxe : Exemplo : Sintaxe : Exemplo : EXAMINE campo TALLYING LEADING literal REPLACING BY literal EXAMINE CAMPO TALLYING LEADING " " REPLACING BY "*" EXAMINE campo REPLACING ALL literal BY literal EXAMINE CAMPO REPLACING ALL "ALBERTO" BY "ROBERTO"
Sintaxe : EXAMINE campo REPLACING LEADING literal BY literal Exemplos : EXAMINE CAMPO REPLACING ALL "." BY "*" 25
EXAMINE CAMPO REPLACING ALL "," BY "." EXAMINE CAMPO REPLACING ALL "*" BY "," Sintaxe : Exemplo : Sintaxe : Exemplo : EXAMINE campo REPLACING UNTIL FIRST literal BY literal EXAMINE CAMPO REPLACING UNTIL FIRST " " BY "*" EXAMINE campo REPLACING FIRST literal BY literal EXAMINE CAMPO REPLACING FIRST "Q" BY "q"
EXIT
Ver PERFORM
GO TO Efetua desvio para a instruo identificada (CUIDADO : veja o comando ALTER !).
Sintaxe : Exemplo : Sintaxe : Exemplo : GO TO nome-da-instrucao GO TO CANCELAR GO TO nome-da-instrucao-1 .... nome-da-instrucao-n DEPENDING ON varivel GO TO CASO1 CASO2 CASO3 CASO4 DEPENDING ON CODIGO.
IF Efetua teste da(s) condio(es) especificada, e efetua os desvios necessrios de acordo com o resultado. A base para identificar os pontos de desvio o PONTO ou o ELSE ou o END-IF. O PONTO e o END-IF indicam o fim da especificao da instruo; as instrues que esto aps o PONTO e o END-IF, portanto, so executadas tanto para os casos de condio satisfeita quanto para os casos de condio no satisfeita.
26
IF simples (especificao de instrues somente para o caso de condio satisfeita) : com o ponto delimitando abrangncia de instrues a executar:
Sintaxe : IF condio instrues para condio satisfeita instrues para condio satisfeita ou no satisfeita Exemplo : IF V1 LESS THAN V2 DISPLAY "V1 MENOR QUE V2" DISPLAY "VEM PRA CA DE QUALQUER JEITO"
27
IF composto (especificao de instrues tanto para o caso de condio satisfeita quanto para o caso de condio no satisfeita) : com o ponto delimitando abrangncia de instrues a executar:
Sintaxe : IF condio instrues para condio satisfeita ELSE instrues para condio no satisfeita instrues para condio satisfeita ou no satisfeita Exemplo : IF V1 LESS THAN V2 DISPLAY "V1 MENOR QUE V2" ELSE DISPLAY "V1 MAIOR OU IGUAL A V2" DISPLAY "VEM PRA CA DE QUALQUER JEITO"
IF composto (caso se queira especificar instrues somente para o caso de condio no satisfeita) :
IF V1 LESS THAN V2 CONTINUE ELSE DISPLAY "V1 MAIOR OU IGUAL A V2" DISPLAY "VEM PRA CA DE QUALQUER JEITO" ou 28
IF V1 LESS THAN V2 CONTINUE ELSE DISPLAY "V1 MAIOR OU IGUAL A V2" END-IF DISPLAY "VEM PRA CA DE QUALQUER JEITO"
Exemplos de estruturas de instrues com IF's aninhados ("nested" IF's), ou seja, quando entre as instrues para condio satisfeita ou no, existem outros testes (IF's) a efetuar: Exemplo 1 : testes quando for a condio satisfeita. IF condicao-1 IF condicao-1a instrues para condicao-1a satisfeita ELSE instrues para condicao-1a no satisfeita ELSE instrues para condicao-1 no satisfeita instrues para condio satisfeita ou no satisfeita IF V1 LESS THAN V2 DISPLAY "V1 MENOR QUE V2" IF V3 LESS THAN V4 DISPLAY "V3 MENOR QUE V4" ELSE DISPLAY "V3 MAIOR OU IGUAL A V4" ELSE DISPLAY "V1 MAIOR OU IGUAL A V2" DISPLAY "VEM PRA CA DE QUALQUER JEITO" Exemplo 2 : testes quando for a condio no satisfeita. IF condicao-1 instrues para condicao-1 satisfeita ELSE IF condicao-1b instrues para condicao-1b satisfeita ELSE instrues para condicao-1b no satisfeita instrues para condicao1 satisfeita ou no IF V1 LESS THAN V2 DISPLAY "V1 MENOR QUE V2" ELSE DISPLAY "V1 MAIOR OU IGUAL A V2" IF V3 LESS THAN V4 DISPLAY "V3 MENOR QUE V4" ELSE 29
DISPLAY "V3 MAIOR OU IGUAL A V4" DISPLAY "VEM PRA CA DE QUALQUER JEITO". Exemplo 3 : testes quando for a condio satisfeita e tambm quando for a condio no satisfeita. IF condicao-1 IF condicao-1a instrues para condicao-1a satisfeita ELSE instrues para condicao-1a no satisfeita ELSE IF condicao-1b instrues para condicao-1b satisfeita ELSE instrues para condicao-1b no satisfeita instrues para condicao-1 satisfeita ou no IF V1 LESS THAN V2 DISPLAY "V1 MENOR QUE V2" IF V3 LESS THAN V4 DISPLAY "V3 MENOR QUE V4" ELSE DISPLAY "V3 MAIOR OU IGUAL A V4" ELSE DISPLAY "V1 MAIOR OU IGUAL A V2" IF V5 LESS THAN V6 DISPLAY "V5 MENOR QUE V6" ELSE DISPLAY "V6 MAIOR OU IGUAL A V6" DISPLAY "VEM PRA CA DE QUALQUER JEITO".
30
INITIALIZE Efetua a atribuio de zeros para variveis numricas e brancos para variveis alfanumricas (como default), ou do contedo especificado. A atribuio feita para todas as variveis que ocorrem repetidamente caso ela seja definida com OCCURS.
Sintaxe : Exemplo : INITIALIZE varivel [REPLACING tipo DATA BY literal/varivel] INITIALIZE TABELA INITIALIZE TABELA REPLACING NUMERIC DATA BY ZERO INITIALIZE TABELA REPLACING ALPHABETIC DATA BY SPACES
MOVE Efetua a atribuio (cpia) do contedo do campo emissor para o(s) campo(s) receptor(es).
Sintaxe : MOVE campo-emissor TO cpo-receptor-1 [cpo-receptor-2 ... cpo-receptor-n] Exemplos : MOVE EMISSOR TO RECEPTOR MOVE "XXXXX" TO RECEPTOR MOVE 0 TO CONTADOR LINHAS FOLHAS TOTAL-GASTO MOVE FUNCTION CURRENT-DATE (01:04) MOVE FUNCTION CURRENT-DATE (05:02) MOVE FUNCTION CURRENT-DATE (07:02) MOVE FUNCTION CURRENT-DATE (09:02) MOVE FUNCTION CURRENT-DATE (11:02) MOVE FUNCTION CURRENT-DATE (13:02) Posio (byte) inicial TO WS-ANO TO WS-MES TO WS-DIA TO WS-HORA TO WS-MIN TO WS-SEG Tamanho (qtdd bytes)
Sintaxe : Exemplo :
MULTIPLY multiplicador BY multiplicando/produto NOT ON SIZE ERROR imperativo MULTIPLY 2 BY VALOR NOT ON SIZE ERROR DISPLAY "NAO ESTOUROU".
Sintaxe : MULTIPLY multiplicador BY multiplicando GIVING produto Exemplos : MULTIPLY VALOR BY 2 GIVING DOBRO MULTIPLY 2 BY VALOR GIVING DOBRO Sintaxe : Exemplo : Sintaxe : MULTIPLY multiplicador BY multiplicando GIVING produto ROUNDED MULTIPLY VALOR BY 2.88 GIVING DOBRO ROUNDED
MULTIPLY multiplicador BY multiplicando GIVING produto ROUNDED ON SIZE ERROR imperativa Exemplo : MULTIPLY VALOR BY 2.88 GIVING DOBRO ROUNDED ON SIZE ERROR DISPLAY "ESTOUROU" Sintaxe : MULTIPLY multiplicador BY multiplicando GIVING produto ROUNDED NOT ON SIZE ERROR imperativa Exemplo : MULTIPLY VALOR BY 2.88 GIVING DOBRO ROUNDED NOT ON SIZE ERROR DISPLAY "NAO ESTOUROU"
PERFORM Efetua a execuo de um conjunto de instrues que no estejam em linha (sub-rotina), isto , desvia para a instruo indicada (que deve ser o incio da sub-rotina), e executa a partir desse ponto at encontrar indicao de retorno, quando ento desvia para a instruo subsequente ao PERFORM.
Sintaxe 1: PERFORM procname Executa o bloco de instrues que se inicia em procname e termina em : Se procname for um nome de SECTION, executa a SECTION inteira. Se procname for o nome de uma instruo comum, executa at a instruo que antecede o procedure-name seguinte. 32
Exemplo :
Sintaxe 2:
Exemplo :
PERFORM procname UNTIL condio Executa o bloco de instrues que se inicia em procname e termina em : Se procname for um nome de SECTION, executa a SECTION inteira. Se procname for o nome de uma instruo comum, executa at a instruo que antecede o procedure-name seguinte. At que a condio especificada seja satisfeita. A responsabilidade de inicializar uma varivel de controle (relacionada condio) e de alter-la do programador. PERFORM IMPDET UNTIL LINHAS > 59
Sintaxe 3:
PERFORM UNTIL condio . Bloco de instrues a executar . . . END-PERFORM Executa o bloco de instrues especificado entre o PERFORM e o END-PERFORM at que a condio seja satisfeita. A responsabilidade de inicializar uma varivel de controle (relacionada condio) e de alter-la do programador. PERFORM UNTIL LINHAS > 59 PERFORM IMP-LINDET END-PERFORM PERFORM procname n TIMES Executa o bloco de instrues que se inicia em procname e termina em : Se procname for um nome de SECTION, executa a SECTION inteira. Se procname for o nome de uma instruo comum, executa at a instruo que antecede o procedure-name seguinte. Tantas vezes quantas n indicar (n pode ser uma literal ou uma varivel). PERFORM IMPDET 60 TIMES PERFORM IMPDET VEZES TIMES
Exemplo :
Sintaxe 4:
Exemplos :
Sintaxe 5:
PERFORM procname-x THRU procname-y Procname-x e procname-y no podem ser nomes de SECTION. Executa o bloco de instrues que se inicia em procname-x e termina em: Procname-y se esse procedure name tiver uma instruo EXIT (recomendado) 33
Na instruo imediatamente anterior ao procedure name seguinte a procname-y se esse procname-y tiver outra instruo que no seja EXIT Tantas vezes quantas n indicar (n pode ser uma literal ou uma varivel) A responsabilidade de inicializar uma varivel de controle (relacionada condio) e de alter-la do programador. PERFORM XXX THRU YYY ... ... . . . . . . . .
Executa desde XXX at a instruo anterior ZZZ. OUTRO Exemplo : XXX. YYY. PERFORM XXX THRU YYY ... ... . . . EXIT.
34
Sintaxe 6:
PERFORM procname-x THRU procname-y n TIMES Executa o bloco de instrues conforme sintaxe 5, n Exemplos : PERFORM XXX THRU YYY 12 TIMES ... ... XXX. . . . YYY. EXIT. Executa desde XXX at YYY (volta quando encontra o EXIT) 12 vezes Sintaxe 7:
vezes
PERFORM procname-x VARYING campo FROM n BY m UNTIL condico Executa o bloco de instrues conforme sintaxe 1, at que a condio especificada seja satisfeita. Antes de executar o bloco de instrues pela primeira vez, atribui o valor n varivel campo. Aps cada execuo do bloco, antes de voltar a execut-lo, incrementa m varivel campo. PERFORM IMPDET VARYING LINHAS FROM 1 BY 1 UNTIL LINHAS EQUAL 60
PERFORM procname-x THRU procname-y VARYING campo FROM n BY m UNTIL condico
Exemplo
Sintaxe 8:
Executa o bloco de instrues conforme sintaxe 5, at que a condio especificada seja satisfeita. Antes de executar o bloco de instrues pela primeira vez, atribui o valor n varivel campo. Aps cada execuo do bloco, antes de voltar a execut-lo, incrementa m varivel campo. Exemplo
60
PERFORM IMPDET THRU SAI-IMPDET VARYING LINHAS FROM 1 BY 1 UNTIL LINHAS EQUAL
35
SUBTRACT subtraendo FROM minuendo GIVING resto ROUNDED ON SIZE ERROR imperativo SUBTRACT REDUZIR FROM TOTAL GIVING SOBROU ROUNDED ON SIZE ERROR DISPLAY "ESTOUROU". SUBTRACT subtraendo FROM minuendo GIVING resto ROUNDED NOT ON SIZE ERROR imperativo SUBTRACT REDUZIR FROM TOTAL GIVING SOBROU ROUNDED NOT ON SIZE ERROR DISPLAY "DEU".
37
DISPLAY "BOM DIA" Sintaxe : DISPLAY (linha, coluna) varivel/literal Exemplos : DISPLAY (1, 1) "BOM DIA" DISPLAY (20, 50) 2 DISPLAY (15, 30) "BOM DIA"
Exemplos : OPEN OPEN OPEN OPEN OPEN OPEN OPEN OPEN OPEN INPUT ARQENTRA OUTPUT ARQSAI ARQENTRA I-O ARQENTSAI INPUT ARQENT1, ARQENT2, ARQENT3 OUTPUT ARQSAI1, ARQSAI2, ARQSAI3 I-O ARQES1, ARQES2, ARQES3 INPUT ARQENT1, OUTPUT ARQSAI1, I-O ARQES1 INPUT ARQENT1 ARQENT2 OUTPUT ARQSAI1 ARQSAI2 I-O ARQES1
READ Efetua a leitura de um registro lgico, colocando-o em uma (ou duas) varivel (eis). Caso seja detectado fim de arquivo, o processamento desviado para a(s) instruo(es) imperativas indicadas na clusula AT END.
LEITURA SEQUENCIAL Sintaxe : READ nome-arquivo [INTO nome-area-working] AT END comando-imperativo Se no for especificada a rea da Working-Storage Section, o registro ser disponibilizado na rea declarada em nvel 01 na DATA DIVISION / FILE SECTION / FD do arquivo
39
Se for especificada a rea da Working-Storage Section, o registro ser disponibilizado tanto na rea da DATA DIVISION / FILE SECTION / FD do arquivo quanto na rea da Working-Storage Section.
Exemplos : READ ARQUIVO-ENTRADA-SEQUENCIAL AT END GO TO TERMINOU. NAO-TERMINOU. READ ARQ-ENTRA-SEQ AT END MOVE "SIM" TO TERMINOU. IF TERMINOU = "SIM" PERFORM ROTFIM THRU SAI-ROTFIM ELSE PERFORM ROTPROC THRU SAI-ROTPROC. READ CADFUNC INTO AREA-LEITURA-DA-WORKING AT END GO TO FIM.
40
WRITE area-do-fd AFTER ADVANCING literal/varivel WRITE ARIMP AFTER ADVANCING 2 WRITE area-do-fd AFTER ADVANCING PAGE WRITE ARIMP AFTER ADVANCING PAGE WRITE area-do-fd AFTER ADVANCING TAB WRITE ARIMP AFTER ADVANCING TAB WRITE area-do-fd AFTER ADVANCING mnemnico WRITE ARIMP AFTER ADVANCING PULO
WRITE area-do-fd AFTER POSITIONING literal/varivel LINES WRITE ARIMP AFTER POSITIONING 2 LINES WRITE area-do-fd AFTER POSITIONING literal/varivel LINES AT END-OF-PAGE imperativo WRITE ARIMP AFTER POSITIONING 2 LINES AT END-OF-PAGE PERFORM CABEC THRU SAI-CABEC WRITE area-do-fd AFTER POSITIONING literal/varivel LINES AT EOP imperativo WRITE ARIMP AFTER POSITIONING 2 LINES AT EOP PERFORM CABEC THRU SAI-CABEC
PARA ARQUIVOS SEQUENCIAIS REWRITE area-do-fd REWRITE AREA-GRAV REWRITE area-do-fd FROM area-da-working-storage REWRITE AREA-GRAV FROM REGISTRO-FUNCIONARIO PARA ARQUIVOS INDEXADOS E RELATIVOS REWRITE area-do-fd INVALID KEY imperativo REWRITE AG INVALID KEY "CHAVE INVALIDA" REWRITE area-do-fd NOT INVALID KEY imperativo REWRITE AG NOT INVALID KEY "CHAVE OK" REWRITE area-do-fd FROM area-da-working-storage INVALID KEY imperativo 41
REWRITE AG FROM REG-CADASTRO INVALID KEY "CHAVE INVALIDA" REWRITE area-do-fd FROM area-da-working-storage NOT INVALID KEY imperativo REWRITE AG FROM REG-CADASTRO NOT INVALID KEY "CHAVE OK"
42
Fonte gerado
****************************************************************** * COBOL DECLARATION FOR TABLE DB2DEPC.EPCV50A1_PAT_PPT * ****************************************************************** 01 EPCV50A1. 10 CD-EMP PIC S9(5)V USAGE COMP-3. 10 NO-PPT-CRE PIC S9(11)V USAGE COMP-3. 10 CD-TPO-VIN-PAT PIC S9(3)V USAGE COMP-3. 10 CD-SEQ-TPO-VIN-PAT PIC S9(2)V USAGE COMP-3. 10 CD-PAT-CRR PIC S9(11)V USAGE COMP-3. 10 CD-TPO-PES PIC X(1). 10 NM-PAT PIC X(40). 10 NO-CPF-CGC PIC S9(15)V USAGE COMP-3. 10 TS-INC PIC X(26). 10 CD-USU-INC PIC X(8). 10 TS-ULT-ATU PIC X(26). 10 CD-USU-ULT-ATU PIC X(8). 10 CD-PGM-MAN PIC X(8).
43
Fonte codificado
(na procedure division) EXEC SQL INSERT INTO EPCV12A1_HIS_PPT (CD_EMP, NO_PPT_CRE, CD_SEQ_HIS_PPT_CRE, CD_STA_HIS_PPT_CRE, DS_HIS_PPT_CRE, TS_INC, CD_USU_INC, TS_ULT_ATU, CD_USU_ULT_ATU, CD_PGM_MAN) VALUES (:EPCV12A1.CD-EMP, :EPCV12A1.NO-PPT-CRE, :EPCV12A1.CD-SEQ-HIS-PPT-CRE, :EPCV12A1.CD-STA-HIS-PPT-CRE, :EPCV12A1.DS-HIS-PPT-CRE, :EPCV12A1.TS-INC, 'MIGRACAO', :EPCV12A1.TS-ULT-ATU, 'MIGRACAO', 'EPCBX55') END-EXEC.
15 SQL-PVAR-ADDRS1. 20 SQL-PVAR-ADDR1 20 SQL-PVAR-IND1 15 SQL-PVAR-NAME1. 20 SQL-PVAR-NAMEL1 20 SQL-PVAR-NAMEC1 12 SQLVAR-BASE2. 15 SQL-PVAR-TYPE2 15 SQL-PVAR-LEN2 15 SQL-PVAR-ADDRS2. 20 SQL-PVAR-ADDR2 20 SQL-PVAR-IND2 15 SQL-PVAR-NAME2. 20 SQL-PVAR-NAMEL2 20 SQL-PVAR-NAMEC2 12 SQLVAR-BASE3. 15 SQL-PVAR-TYPE3 15 SQL-PVAR-LEN3 15 SQL-PVAR-ADDRS3. 20 SQL-PVAR-ADDR3 20 SQL-PVAR-IND3 15 SQL-PVAR-NAME3. 20 SQL-PVAR-NAMEL3 20 SQL-PVAR-NAMEC3 12 SQLVAR-BASE4. 15 SQL-PVAR-TYPE4 15 SQL-PVAR-LEN4 15 SQL-PVAR-ADDRS4. 20 SQL-PVAR-ADDR4 20 SQL-PVAR-IND4 15 SQL-PVAR-NAME4. 20 SQL-PVAR-NAMEL4 20 SQL-PVAR-NAMEC4 12 SQLVAR-BASE5. 15 SQL-PVAR-TYPE5 15 SQL-PVAR-LEN5 15 SQL-PVAR-ADDRS5. 20 SQL-PVAR-ADDR5 20 SQL-PVAR-IND5 15 SQL-PVAR-NAME5. 20 SQL-PVAR-NAMEL5 20 SQL-PVAR-NAMEC5 12 SQLVAR-BASE6. 15 SQL-PVAR-TYPE6 15 SQL-PVAR-LEN6 15 SQL-PVAR-ADDRS6. 20 SQL-PVAR-ADDR6 20 SQL-PVAR-IND6 15 SQL-PVAR-NAME6. 20 SQL-PVAR-NAMEL6 20 SQL-PVAR-NAMEC6 12 SQLVAR-BASE7. 15 SQL-PVAR-TYPE7
PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '. PIC S9(4) COMP-4 VALUE +484. PIC S9(4) COMP-4 VALUE +2816. PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '. PIC S9(4) COMP-4 VALUE +484. PIC S9(4) COMP-4 VALUE +512. PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '. PIC S9(4) COMP-4 VALUE +452. PIC S9(4) COMP-4 VALUE +2. PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '. PIC S9(4) COMP-4 VALUE +452. PIC S9(4) COMP-4 VALUE +20. PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '. PIC S9(4) COMP-4 VALUE +452. PIC S9(4) COMP-4 VALUE +26. PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '. PIC S9(4) COMP-4 VALUE +452. 45
PIC S9(4) COMP-4 VALUE +26. PIC S9(9) COMP-4. PIC S9(9) COMP-4. PIC S9(4) COMP-4 VALUE +0. PIC X(30) VALUE ' '.
46
47
BEEP BEFORE BEGINNING BELL BINARY BLANK BLINK BLOCK BOTTOM BY C01 C02 C03 C04 C05 C06 C07 C08 C09 C10 C11 C12 CALL CANCEL CBL CD CF CH CHAIN OFF OMITTED ON OPEN OPTIONAL OR ORDER ORGANIZATION OTHER OTHERWISE OUTPUT OVERFLOW OVERLINE PACKED-DECIMAL PADDING PAGE PAGE-COUNTER PASSWORD PERFORM PF PH PIC PICTURE PLUS POINTER POS POSITION POSITIONING POSITIVE PREVIOUS PRINT PRINTER PRINTER-1 PRINTING PROCEDURE PROCEDURE-POINTER PROCEDURES PROCEED PROCESSING
COMPUTATIONAL-6 COMPUTATIONAL-X COMPUTE CONFIGURATION CONSOLE CONTAINS CONTENT CONTINUE CONTROL CONTROLS CONVERT CONVERTING COPY CORE-INDEX CORR CORRESPONDING COUNT CRT CURRENCY CURRENT-DATE CURSOR DATA DATE DATE-COMPILED DATE-WRITTEN DAY DAY-OF-WEEK DECS DE RELOAD REMAINDER REMARKS REMOVAL RENAMES REORG-CRITERIA REPLACE REPLACING REPORT REPORTING REPORTS REQUIRED REREAD RERUN RESERVE RESET RETURN RETURN-CODE RETURNING REVERSE REVERSE-VIDEO REVERSED REWIND REWRITE RF RH RIGHT RIGHT-JUSTIFY ROLLBACK ROUNDED RUN S01 S02 SAME SCREEN SD SEARCH SECTION SECURE
GIVING GLOBAL GO GOBACK GREATER GRID GROUP HEADING HIGH HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL ID IDENTIFICATION IF IN INDEX INDEXED INDICATE INITIAL INITIALIZE INITIATE INPUT INPUT-OUTPUT INSERT INSPECT INSTALLATION SPACE-FILL SPACES SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 START STOP STORE STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUBTRACT SUM SUPPRESS SYMBOLIC SYNC SYNCRONIZED SYSIN SYSIPT SYSLST SYSOUT SYSPUNCH TAB TABLE TALLY TALLYING TAPE TERMINAL TERMINATE TEST TEXT THAN THEN THROUGH THRU TIME TIME-OF-DAY
LOW-VALUES MANUAL MEMORY MERGE MESSAGE MODE MODULES MORE-LABELS MOVE MULTIPLE MULTIPLY NAME NAMED NATIVE NCHAR NEGATIVE NEXT NO NO-ECHO NOMINAL NOT NOTE NULL NUMBER NUMERIC NUMERIC-EDITED OBJECT-COMPUTER OCCURS OF UPSI-1 UPSI-2 UPSI-3 UPSI-4 UPSI-5 UPSI-6 UPSI-7 USAGE USE USER USING VALUE VALUES VARIABLE VARYING WAIT WHEN WHEN-COMPILED WITH WORDS WORKING-STORAGE WRITE WRITE-ONLY ZERO ZERO-FILL ZEROES
48
PROGRAM PROGRAM-ID PROMPT PROTECTED PURGE QUEUE QUOTE QUOTES RANDOM RANGE RD READ READY RECEIVE RECORD RECORD-OVERFLOW RECORDING RECORDS REDEFINES REEL REFERENCE REFERENCES RELATIVE RELEASE
SECURITY SEEK SEGMENT SEGMENT-LIMIT SELECT SELECTIVE SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SERVICE SET SIGN SIZE SKIP1 SKIP2 SKIP3 SORT SORT-CONTROL SORT-MERGE SOURCE SOURCE-COMPUTER SPACE
TIMES TITLE TO TOP TOTALED TOTALLING TRACE TRACK-AREA TRACK-LIMIT TRACKS TRAILING TRAILING-SIGN TRANSFORM TRUE TYPE UNDERLINE UNIT UNLOCK UNSTRING UNTIL UP UPDATE UPON UPSI-0
49
50