Você está na página 1de 72

Curso Bsico de Natural

Luciano Perdigo
Email: Lp2170@yahoo.com.br

NDICE
1. INTRODUO AO NATURAL ................................................................................................... 5 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. COMPONENTES .................................................................................................................. 5 SYSTEM FILE...................................................................................................................... 6 USER REAS...................................................................................................................... 6 BIBLIOTECAS ...................................................................................................................... 7 PROGRAMAS ...................................................................................................................... 7 INTERFACE NATURAL .......................................................................................................... 8 DDM ................................................................................................................................ 9 OBJETOS NATURAL........................................................................................................... 10

2. SESSO NATURAL ................................................................................................................ 11 2.1. COMANDOS DE UMA SESSO NATURAL ............................................................................... 11 Comandos de Controle de Bibliotecas.................................................................. 12 Comandos de Manipulao de Programas Fontes ............................................... 13 Comandos de Manipulao de Programas Objetos .............................................. 14 Comandos de Manipulao Mista de Programas.................................................. 14 Comandos de Transferncia/Limpeza de Work rea............................................ 14 Comandos de Execuo de Programas ............................................................... 15 Comandos de Processos Especiais ..................................................................... 15

2.1.1. 2.1.2. 2.1.3. 2.1.4. 2.1.5. 2.1.6. 2.1.7. 2.2.

EDITORES PARA OBJETOS ................................................................................................. 16 Editor de reas de Dados .................................................................................... 16

2.2.1.

2.2.1.1. Define Data.......................................................................................................... 17 2.2.2. 2.2.3. Editor de Mapas................................................................................................... 20 Editor de Programas ............................................................................................ 28

3. VARIVEIS DE SISTEMA........................................................................................................ 30 4. COMANDOS............................................................................................................................ 30 4.1. 4.2. 4.3. 4.4. SET KEY .......................................................................................................................... 30 FORMAT .......................................................................................................................... 31 SET CONTROL.................................................................................................................. 31 INSTRUES DE ENTRADA/SADA ....................................................................................... 32 Input .................................................................................................................... 32 Reinput ................................................................................................................ 33 Display................................................................................................................. 34 Write.................................................................................................................... 35

4.4.1. 4.4.2. 4.4.3. 4.4.4.

4.4.5. 4.4.6. 4.4.7. 4.4.8. 4.5.

Write Title/Trailer ................................................................................................. 36 Newpage ............................................................................................................. 37 Eject .................................................................................................................... 38 Skip ..................................................................................................................... 38

OPERAES ARITMTICAS ................................................................................................ 38 Add...................................................................................................................... 38 Subtract ............................................................................................................... 39 Multiply ................................................................................................................ 40 Divide .................................................................................................................. 40 Compute.............................................................................................................. 41

4.5.1. 4.5.2. 4.5.3. 4.5.4. 4.5.5. 4.6.

MANIPULAO DE CAMPOS ................................................................................................ 41 Compress ............................................................................................................ 41 Move ................................................................................................................... 42 Reset ................................................................................................................... 43 Separate.............................................................................................................. 43 Examine .............................................................................................................. 44

4.6.1. 4.6.2. 4.6.3. 4.6.4. 4.6.5. 4.7.

INSTRUES CONDICIONAIS .............................................................................................. 45 If .......................................................................................................................... 45 Decide On/Decide For.......................................................................................... 45

4.7.1. 4.7.2. 4.8.

CONTROLE DE PROCESSAMENTO ....................................................................................... 48 For....................................................................................................................... 48 Repeat................................................................................................................. 48 Accept / Reject..................................................................................................... 49 Escape Top/Bottom/Routine ................................................................................ 50 End...................................................................................................................... 51 Terminate ............................................................................................................ 51 Stop..................................................................................................................... 52 Limit..................................................................................................................... 52 At Start Of Data ................................................................................................... 52 At End Of Data..................................................................................................... 52 At Top Of Page .................................................................................................... 53 At End Of Page.................................................................................................... 53 At Break............................................................................................................... 54

4.8.1. 4.8.2. 4.8.3. 4.8.4. 4.8.5. 4.8.6. 4.8.7. 4.8.8. 4.9. 4.9.1. 4.9.2. 4.9.3. 4.9.4. 4.9.5.

PROCESSAMENTO DE QUEBRA AUTOMTICA ....................................................................... 52

4.10. MODULARIZAO DO SISTEMA ........................................................................................... 55 4.10.1. 4.10.1.1. Define Subroutine ................................................................................................ 55 Perform................................................................................................................ 56

4.11. UTILIZANDO JANELAS ........................................................................................................ 57

4.11.1. 4.11.2.

Define Window..................................................................................................... 57 Set Window ......................................................................................................... 58

4.12. UTILIZANDO BANCO DE DADOS ADABAS............................................................................ 58 4.12.1. 4.12.2. 4.12.3. 4.12.4. 4.12.5. 4.12.6. 4.12.7. 4.12.8. 4.12.9. Store.................................................................................................................... 58 Update................................................................................................................. 59 Delete.................................................................................................................. 59 End Transaction................................................................................................... 60 Backout Transaction ............................................................................................ 60 Read.................................................................................................................... 61 Find ..................................................................................................................... 62 Get ...................................................................................................................... 64 Histogram ............................................................................................................ 65

4.13. UTILIZANDO BANCO DE DADOS DB2/SQL ........................................................................... 66 4.13.1. 4.13.2. 4.13.3. 4.13.4. 4.13.5. 4.13.6. 4.13.7. 4.13.8. 4.13.9. 4.13.10. 4.13.11. 4.13.12. 4.13.13. 4.13.14. 4.13.15. 4.13.16. 4.13.17. 4.13.18. Insert ................................................................................................................... 66 Select .................................................................................................................. 67 Update................................................................................................................. 69 Delete.................................................................................................................. 69 Comando WHERE ............................................................................................... 70 Clusula GROUP BY ........................................................................................... 70 Clusula HAVING ................................................................................................ 70 Clusula ORDER BY ........................................................................................... 70 Operador IN......................................................................................................... 70 Operador BETWEEN .. AND................................................................................ 71 Operador LIKE..................................................................................................... 71 Operador IS NULL ............................................................................................... 71 Funo AVG ........................................................................................................ 71 Funo COUNT ................................................................................................... 71 Funes MIN, MAX.............................................................................................. 71 Funo SUM........................................................................................................ 72 Comando COMMIT.............................................................................................. 72 Comando ROLLBACK ......................................................................................... 72

Curso Bsico de Natural

1. Introduo ao Natural
O Natural uma ferramenta de desenvolvimento de 4 gerao desenvolvida pela

Software AG (Alemanha) e distribuda no Brasil pela Consist. Alm de possuir a verso para MVS, objeto deste curso, possui verses para UNIX, OS/2 e Windows.

Algumas caractersticas do Natural so: Linguagem de programao com acesso a diversos bancos de dados: ADABAS (Hierrquico e relacional), Oracle, Db2, etc.; Utiliza diversos editores para criar programas, funes, telas pr-formatadas e reas de dados; Permite uma programao modularizada; Utiliza funes e variveis do sistema; Permite execuo on-line e batch; Possui utilitrio de testes de programao; Possui utilitrio de criao/manuteno de mensagens de erros de aplicao; Qualquer aplicao pode ser facilmente portada para vrias outras plataformas.

O ambiente Natural composto de alguns arquivos ADABAS, dos quais os mais importantes so: FNAT Natural System File for System Program armazena todos os objetos do Natural, seus comandos, suas mensagens de erro e os helps; FUSER Natural System File for User Programs armazena os objetos Natural criados pelo usurio; FDIC Predict System File utilizado pelo Predict (Dicionrio de dados do Natural) para documentao de um sistema; FSEC Natural Security File System contm informaes de segurana e acesso.

Os objetos Natural (programas, mapas, reas de dados, etc.) so armazenados em bibliotecas (Libraries), com estrutura parecida com o diretrio DOS e podem Ter 8 caracteres como nome mximo. Mesmo sendo objetos de diferentes tipos, no podem possuir o mesmo nome.

1.1.

Componentes
O Natural tem os seguintes componentes principais: Ncleo executa os comandos e instrues e gerncia os demais componentes; 5

Desenvolvido por Luciano Perdigo

Curso Bsico de Natural Compilador de execuo interativa; Mdulos de interface: Com o Sistema Operacional executa todos os comandos de entrada/sada e demais comunicaes; Com o monitor de TP gerncia todos os recursos necessrios aplicao; Com o ADABAS executa todos os comandos ADABAS e controla vrios processos de acessos/atualizaes. System File arquivo ADABAS de suporte ao Natural.

1.2.

System File
O System File um arquivo ADABAS reservado para uso do Natural, que contm: Todos os programas Natural, tanto em formato fonte (programas) como em formato objeto (mdulos), agrupados em bibliotecas; Os mdulos de definio de arquivos, ou DDMs (Data Definition Modules), com a definio para o Natural dos arquivos ADABAS e suas userviews; As mensagens de erro do Natural; Os textos da funo Help.

1.3.

User reas
ESIZE Global Data rea USIZE FSIZE SORTSIZE DSIZE

LDA

CTL

Sort Source Objetos DDM's Buffer

ADALOG Buffer

Tabelas PA/PF Keys

6
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

1.4.

Bibliotecas
formada por um conjunto de programas fontes e/ou objetos, geralmente pertencentes ao

mesmo sistema. Em uma sesso Natural, as LIBS so estabelecidas pelo comando LOGON. As chamadas de programas a programas so feitas dentro da mesma biblioteca.

LIBRARY : CURSO

Programas Fontes

Mapas

Programas Objetos

rea de Dados

1.5.

Programas
Os programas Natural, fontes e objetos so identificados por nomes com formao igual

aos nomes das bibliotecas, ou seja, at 8 caracteres, sendo o primeiro alfabtico. Fontes e objetos podem (mas no devem) Ter nomes diferentes. Os programas fontes so formados por linhas de at 72 posies, numeradas por 4 dgitos. Esta numerao gerada pelo Natural durante a criao do programa, e usada tanto pelo compilador e editores do Natural como tambm tem importantes funes lgica dos programas. Dentro das linhas, a disposio das instrues (statements ou comandos de programas) livre, no havendo instrues nem parmetros posicionais. Comentrios podem ser includos e duas formas: Toda linha ser considerada um comentrio se contiver * ou ** nas duas primeiras posies; A parte de uma linha direita de /* ser considerada um comentrio. 7
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Exemplo:

0010 *

Estas duas linhas (0010 e 0020)

0020 ** so comentrios. 0030 FORMAT LS=80 . . 0200 END As instrues END ou . indicam fim de programa. /* Bem como esta parte da linha (0030)

1.6.

Interface Natural
Ao entrar no Natural, nos apresentada a seguinte tela:

17:52:21 User X121212

***** NATURAL ***** - Main Menu -

03/01/2003 Library CURSO

Function _ _ _ _ _ _ _ _ Development Functions Development Environment Settings Maintenance and Transfer Utilities Debugging and Monitoring Utilities Example Libraries Other Products Help Exit NATURAL Session

Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Exit Canc

Informaes da tela: User Chave do usurio ativo. Library Biblioteca atualmente selecionada.

Entrando na Development Functions, temos acesso rea de programao do Natural, que permite as seguintes opes: C Cria um objeto 8
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural E edita um objeto R Permite alterar nome de um objeto D Deleta um objeto X Executa um programa (nico objeto que permite execuo direta) L Lista fonte dos objetos S Lista subrotinas utilizadas ? Help . Sair do menu Development Functions
17:52:50 User X028862 ***** NATURAL ***** - Development Functions 03/01/2003 Library CURSO Mode Structured Program PERPGRAF

Code C E R D X L S ? . Code .. _

Function Create Object Edit Object Rename Object Delete Object Execute Program List Object(s) List Subroutines Used Help Exit Type .. _ Name .. ________________________________

Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Menu Exit Canc

1.7.

DDM
DDMs so mdulos que descrevem um arquivo ADABAS e seus campos, ou uma

userview de um arquivo ADABAS. As DDMs so identificadas por um nome de at 32 caracteres, nome este tambm usado para identificar os arquivos nos programas Natural. Em um programa Natural todas as caractersticas dos campos de banco de dados so retiradas das DDMs no havendo a necessidade de se definir esses campos nos programas. O processo de obteno das caractersticas dos campos feito em tempo de compilao, e elas so agregadas aos programas quando estes so catalogados; portanto, os programas em formato objeto no utilizam as DDMs.

A estrutura de DDMs mostrada a seguir:

9
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

10:53:12 User X121212 DDM DBID 0 T L - 1 1 1 G 1 2 2 2 1 1 1 1 1 M 1 1 * * * 1 * * * DB -AA AB AC CD AD AE AF AG AH AI AJ AL AM AN

***** NATURAL LIST COMMAND ***** - List DDM VEHICLES DDM FNR 119 VSAM Name

03/01/2003 Library CURSO Page 1

Default Sequence

AO

Name -------------------------------REG-NUM CHASSIS-NUM PERSONNEL-ID CAR-DETAILS MAKE MODEL COLOR YEAR CLASS LEASE-PUR DATE-ACQ CURR-CODE MAINT-COST DAT-ACQ-DESC -------- SOURCE FIELD(S) ------DATE-ACQ(5-6) DATE-ACQ(3-4) MODEL-YEAR-MAKE -------- SOURCE FIELD(S) ------YEAR(1-2) MAKE(1-20)

F Leng S D Remarks - ---- - - -----------------------A 15 N D CAR'S REGISTRATION N I 4 F A 8 D CNNNNNNN DESCRIPTION OF THE C A 20 N D A 20 N A 10 N D N 4,0 N YEAR OF THE CAR'S MA A 1 F D P=PRIVAT A 1 F L=LEASED N 8,0 N DATE WHEN CAR WAS AC A 3 N CURRENCY OF MAINTENA P 7,0 N MAINTENANCE COST IN B 4 N S CAR AGE BASED ON DAT

22

N S MODEL YEAR + CAR MAK

11:03:13 User X121212 DDM DBID 250 T L - 1 1 1 1 1 1 1 DB -OA AA AB AC AD AE AF

***** NATURAL LIST COMMAND ***** - List DDM DB2TST-CADASTRO_CURSO DDM FNR 1 VSAM Name

03/01/2003 Library CURSO Page 1

Default Sequence ?

Name -------------------------------CD_USU COD_CPF_CGC NOM NR_SEQL_END SEXO NVL_ECLD DT_ATL

F Leng S D Remarks - ---- - - -----------------------A 11 D P 14,0 D A 60 D I 2 D A 1 D I 2 D A 10 D

1.8.

Objetos Natural
Um objeto Natural nada mais do que um componente de um sistema. Os diversos tipos

de objetos Natural so: COPYCODE Pedao de cdigo fonte, que pode ser aproveitado em vrios programas. nico objeto Natural que no compilado. Nos programas aonde o COPYCODE vai ser aproveitado, atravs do comando INCLUDE, ele ser compilado, juntamente com o programa. GLOBAL Objeto utilizado para definio de variveis. Todos os objetos que se referenciarem a uma GLOBAL, tero as mesmas variveis, e estas mantero os 10
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

valores aps o trmino de um objeto, permitindo que um objeto altere valores e outro reconhea as alteraes. LOCAL Objeto utilizado para definio de variveis. A diferena entre uma LOCAL e uma GLOBAL que valores das variveis locais somente sero reconhecidos pelo objeto onde foram declaradas, deixando de existir quando do trmino do mesmo. PARAMETER Objeto utilizado para definio de variveis que sero utilizadas entre programas e subprogramas. MAP Utilizado para entrada e exibio de dados. Permite a definio de Regras de Validao para os campos, inclusive com acesso Base de Dados. Helproutine Tipo de objeto que permite ser definido como ajuda a um campo de entrada de dados. Quando o cursor estiver posicionado num campo e for teclado ?, ser chamada a HELPROUTINE que estiver associada ao campo. PROGRAM Principal objeto Natural. a partir dele que so chamados os outros componentes. SUBPROGRAM (N) Objeto chamado por outro, com passagem de parmetros, que permite o retorno de dados ao objeto chamador. SUBROUTINE Uma subrotina um pedao de cdigo geralmente executado mais de uma vez ou de diversas partes de um programa. Pode ser interno, definido dentro de um programa ou fora dele (externo). Quando escolhe-se a segunda opo, o tipo de objeto que conter as subrotinas o SUBROUTINE.

As letras sublinhadas nos nomes dos objetos podem ser utilizadas logo aps o comando EDIT, evitando a digitao completa do tipo de objeto.

2. Sesso Natural
2.1. Comandos de uma Sesso Natural
Os comandos do sistema Natural so identificados pela mensagem na linha de comando direto do Natural. So utilizados para criao, modificao e execuo de programas. Os comandos podem ser os seguintes: Comandos de controle de bibliotecas Comandos de manipulao de programas fontes Comandos de manipulao de programas objetos Comandos de manipulao mista de programas (fontes / objetos) Comandos de transferncia / limpeza de Work-rea Comandos de execuo de programas Comandos de processos especiais 11
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

2.1.1. Comandos de Controle de Bibliotecas


LOGON As bibliotecas so estabelecidas pela instruo LOGON LOGON | biblioteca | FIN A instruo FIN encerra uma sesso Natural, devolvendo o controle ao sistema de onde o Natural foi invocado. LIST A instruo LIST invoca um utilitrio para listagem de diretrios de bibliotecas (fontes/objetos), listagem de programas e de DDMs. Pode-se chamar um MENU das vrias funes do LIST atravs do formato LIST *, ou chamar diretamente a funo, como veremos a seguir: L(IST) LIST FILE LIST P(ROGRAM) LIST M(AP) LIST S(UBROUTINE LIST SUBPROGRAM ou N LIST H(ELPROUTINE) LIST G(LOBAL) LIST L(OCAL) LIST PARAM(ETER) LIST C(OPYCODE) | Object-Type| | FILE-NAME | PROGRAM-NAME | MAP-NAME |Object-Name| | DDM | Programa | Mapa

| SUBROUTINE-NAME | Subrotina | SUBPROGRAM-NAME | Subprograma | HELPROUT-NAME | GLOBAL-NAME | LOCAL-NAME | PARAMETER-NAME | COPYCODE-NAME | Rotina de Help | Global Data rea | Local Data rea | Parameter Data rea | Copycode

Exemplo: LIST *
11:06:06 User X121212 Cmd --__ __ __ __ __ __ __ Name *________ A AAA AAA01 AAA02 AADS AAFGDA AAFLAY

Lista todos os tipos de objetos


***** NATURAL LIST COMMAND ***** - LIST Objects in a Library 03/01/2003 Library CURSO Date Time *__________ *________ 2002-12-16 10:45:34 2002-12-18 20:01:45 2002-11-04 16:49:54 2002-12-13 14:03:16 2002-12-18 09:43:44 2002-11-06 16:22:32 2002-11-07 11:38:49 14 Objects found

Type *__________ Program Program Local Program Program Global Map

S/C *__ S S S/C S/C S/C S/C S/C

SM * S S S R R R

Version *______ 3.1.04 3.1.04 3.1.04 3.1.04 3.1.04 3.1.04 3.1.04

User ID *________ X117566 X087789 I017641 X117566 X116213 A431601 A431601

Top of List. Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Print Exit -+ ++ > Canc

12
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

EDIT A instruo EDIT exibe a cpia do programa (ou outro tipo de objeto) na work-area, ficando inalterado o original no system file at que seja dado um comando de atualizao (SAVE ou STOW). Pode-se chamar um MENU das vrias funes do LIST atravs do formato EDIT *, ou chamar diretamente a funo, como veremos a seguir. E(DIT) E(DIT) | Object-Type| | Object-Type| |Object-Name| * lista tudo referente ao object-type

Se no for especificado o object-name, ser editado o contedo existente na work-rea; se no houver nenhum contedo na work-rea, o modo de edio permitir a criao de um programa (ou qualquer tipo dos objetos especificados) sem o controle do compilador. | Programa | Mapa

EDIT P(ROGRAM) EDIT M(AP) EDIT S(UBROUTINE EDIT SUBPROGRAM ou N EDIT H(ELPROUTINE) EDIT G(LOBAL) EDIT L(OCAL) EDIT PARAM(ETER) EDIT C(OPYCODE)

| PROGRAM-NAME | MAP-NAME

| SUBROUTINE-NAME | Subrotina | SUBPROGRAM-NAME | Subprograma | HELPROUT-NAME | GLOBAL-NAME | LOCAL-NAME | PARAMETER-NAME | COPYCODE-NAME | Rotina de Help | Global Data rea | Local Data rea | Parameter Data rea | Copycode

2.1.2. Comandos de Manipulao de Programas Fontes


CHECK Checa a sintaxe do objeto atualmente na rea de trabalho. Pode ser substitudo por apenas C. SAVE Salva o objeto. Pode-se especificar o nome desejado logo aps o comando. Pode ser substitudo por apenas S.

PURGE O comando PURGE usado para deletar um ou mais programas fontes do Natural System File. O contedo existente em work-rea no alterado. 13
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Se o program-name no for especificado, ser exibido um mapa com os programa fontes existentes no Natural System File, para especificao individual.

2.1.3. Comandos de Manipulao de Programas Objetos


CATALOG Cataloga o objeto na rea de trabalho. Este comando checa a sintaxe e grava a verso executvel do objeto. No grava o fonte. Pode ser substitudo por apenas CAT. UNCATALOG Apaga apenas o mdulo objeto, mantendo o mdulo fonte.

2.1.4. Comandos de Manipulao Mista de Programas


STOW Checa a sintaxe do objeto na rea de trabalho, salva o fonte e cataloga o objeto. Este comando executa internamente as funes do comandos CHECK, SAVE e Catalog. Porm, ele somente salva o objeto se este no contiver nenhum erro. SCRATCH Apaga o fonte e o mdulo objeto informado logo aps o comando. Pode ser substitudo por SCR.

2.1.5. Comandos de Transferncia/Limpeza de Work rea


READ L e transfere para a rea de trabalho o objeto definido aps o comando. CLEAR Limpa a rea de trabalho. RENUMBER Renumera as linhas do programa fonte que estiver na work-rea, em incrementos de 10.

SCAN Pesquisa um determinado STRING dentro de um ou de todos os objetos de uma biblioteca.

14
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

2.1.6. Comandos de Execuo de Programas


RUN Executa o programa atualmente na rea de trabalho. O comando compila o programa antes de execut-lo. Pode ser substitudo por apenas R.

2.1.7. Comandos de Processos Especiais


GLOBALS Exibe menu que est definido com uma srie de aes e atributos que afetam tanto o resultado dos comandos como o resultado das instrues. As principais funes dos parmetros so: Definir caracterstica dos relatrios e mapas; Estabelecer limites para quantidades de registros lidos, de pginas de relatrios, etc.; Definir caracteres de controle.

11:23:25

***** NATURAL GLOBALS COMMAND ***** - Session Parameters -

03/01/2003

(CC) Cond.Prog.Execution ....... OFF (CF) Term.Control Character .... % (DC) Dec. Character .............. , (DFOUT) Date Format Output ....... I (DFSTACK) Date Format Stack Cmd .. S (DFTITLE) Date Format Title ...... S (DU) Dump Generation ......... OFF (EJ) Page Eject ................ ON (FS) Default Format ............ ON (FCDP) FC on Dyn.Prot.Fields ... ON (IA) Input Assign ................ = (ID) Input Delimiter ............. ; (IM) Input Mode .................. F (LE) Limit Error ............... OFF (LS) Line Size ................. _80 (LT) Limit .............. __99999999

(MT) Max.CPU Time ....... _______0 (NC) Nat.Sys.Commands ........ OFF (OPF) Overw.Prot.Fields ...... OFF (PD) Page Dataset ............ _50 (PM) Print Mode ............... RP (PS) Page Size ............... _23 (REINP) Reinput on Error ..... ON (SA) Sound Alarm ............. OFF (SF) Spacing Factor ........... _1 (SL) Source Line Length ....... 72 (SM) Structured Mode ......... OFF (TS) Translate Sys.Prog ...... OFF (WH) Wait on Hold ............ OFF (ZD) Zero Division ........... ON (ZP) Zero Printing ........... ON

Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Print Exit Updat Canc

HELP Permite a exibio de mensagens de erro e comandos do Natural. Tambm pode ser acesso teclando ?. Ambas as opes permitem a passagem do cdigo diretamente (? 3148, por exemplo, exibe o contedo do cdigo de erro 3148).

15
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

PROFILE Mostra a profile de segurana corrente para o usurio.

11:24:56

***** NATURAL EDITORS ***** - Editor Profile -

03/01/2003

Profile Name .. X121212_ PF and PA PF1 ... PF4 ... PF7 ... PF10 .. PF13 .. PF16 .. PF19 .. PF22 .. PA1 ... Keys HELP___________ _______________ -______________ SC=____________ _______________ _______________ --_____________ _______________ _______________

PF2 ... PF5 ... PF8 ... PF11 .. PF14 .. PF17 .. PF20 .. PF23 .. PA2 ...

SC=____________ _______________ +______________ _______________ _______________ _______________ ++_____________ _______________ SCAN___________

PF3 ... PF6 ... PF9 ... PF12 .. PF15 .. PF18 .. PF21 .. PF24 .. PA3 ...

EXIT___________ _______________ _______________ CANCEL_________ MENU___________ _______________ _______________ _______________ _______________

Automatic Functions Auto Renumber .. Y

Auto Save Numbers .. 0__

Source Save into .. EDITWORK

Additional Options .. N Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Exit AddOp Save Flip Del Canc

2.2.

Editores para Objetos

2.2.1. Editor de reas de Dados


GLOBAL DATA REA (GDA) Objeto utilizado para definio de variveis. Todos os objetos que se referenciarem a uma GLOBAL, tero as mesmas variveis, e estas mantero os valores aps o trmino de um objeto, permitindo que um objeto altere valores e outro reconhea as alteraes. Somente uma GDA pode ser usada ao mesmo tempo. Se uma GDA for recatologada, todos os objetos que a utilizam devem ser recatalogados. A GDA j deve existir quando um programa for ser catalogado ou executado.

PARAMETER DATA REA (PDA) Objeto utilizado para definio de variveis que sero utilizadas entre programas e subprogramas. Os dados na PDA devem Ter o mesmo tamanho/formato e seqncia que no objeto chamador, mas no precisam Ter o mesmo nome. 16

Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

LOCAL DATA REA (LDA) Objeto utilizado para definio de variveis. A diferena entre uma LOCAL e uma GLOBAL que nos valores das variveis locais somente sero reconhecidos pelo objeto onde foram declaradas, deixando de existir quando do trmino do mesmo. A LDA obrigatria em modo estruturado e opcional em report.

A tela a seguir mostra o editor de rea de dados:

Local XXXL0001 Library CURSO Command I T L Name All - -------------------------------V 1 EMPL 2 PERSONNEL-ID 2 FIRST-NAME 2 NAME 2 CITY 2 JOB-TITLE 2 SALARY M 2 BONUS

DBID

29 FNR

4 > +

F Leng Index/Init/EM/Name/Comment - ---- --------------------------------EMPLOYEES A 8 /* CNNNNNNN A 20 /* FIRST/CHRISTIAN NAME A 20 /* SURNAME/FAMILY NAME A 20 /* MAIN CITY/TOWN A 25 P 9,0 (1:3) /* ANNUAL SALARY P 9,0 (1:3,1:2) /* BONUS PER YEAR

2.2.1.1. Define Data


Para a definio de variveis, utilizamos a instruo DEFINE DATA. Deve ser o primeiro comando de um programa. Somente pode existir uma DEFINE DATA por objeto. As definies podem ser internas ou externas. Definies internas: INDEPENDENT LOCAL PARAMETER

Definies externas: GLOBAL USING XXXG0001 LOCAL USING XXXL0001 LOCAL USING XXXA0001

Quando mltiplas rea de dados so utilizadas pelo mesmo programa, elas devem ser codificadas na seguinte ordem: Global 17
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Parameter Local Independent

Aps a definio da ltima varivel, fechar o lao com END-DEFINE. Exemplo: DEFINE DATA LOCAL 1 #CD-MATR-FUNC 1 #NM-FUNC 1 #TELEFONE 2 #DDD 2 #NUMERO 1 #VL-SAL-FUNC 1 #TAB-MS END-DEFINE (I4) (A35) (N3) (N8) (P11,2) (A3/12)

A estrutura para definio composta de: Nvel Nome Formato/tamanho Complemento

Podemos definir at 7 nveis de variveis. O tamanho mximo para um nome de varivel 32 caracteres. Os caracteres vlidos para formao do nome so os alfabticos (A-Z), nmeros (09) e os especiais (#, -, _, @, $, &). O caracter + tambm pode ser utilizado, desde que apenas na primeira posio. Para efeito de padronizao, utilizamos o caracter # como caracter inicial para designar variveis definidas pelo usurio.

Formato Alfanumrico Numrico Compactado Inteiro Data Hora Lgico Binrio Controle Ponto Flutuante

Cdigo A N P I D T L B C F

Tamanho Mximo Observao 253 27 Mximo de 7 decimais 27 Mximo de 7 decimais 1, 2 ou 4 I1 valores de 1 at 127 I2 valores de 1 at 32767

TRUE ou FALSE 126 Atributo de controle de mapas 4, 8

Matrizes
JAN FEV MAR ... DEZ

18
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Para definir a ocorrncia de mltiplos elementos, basta colocar uma barra, seguida do nmero de vezes que o campo deve ser repetido. Opcionalmente, podemos definir 1:n como quantidade. Variveis de qualquer tipo pode ser transformados em matriz. 1 #MESES-ANO 1 #DIAS-SEMANA (A3/12) (A7,1:7)

Redefinio
Podemos redefinir um campo, ou parte dele, em campos menores, de acordo com a necessidade. Os campos de menor nvel podem ser de formato diferente, desde que tenham o mesmo tamanho. DIA DATA MS ANO

1 #DT-NASC (A8) 1 REDEFINE #DT-NASC 2 #DD-NASC (A2) 2 #MM-NASC (A2) 2 #AA-NASC (A4)

Valores iniciais
A atribuio de valores iniciais pode ser feita quando da definio da varivel. Durante a execuo do programa, pode-se atribuir novos valores s mesmas. Quando a varivel for alfanumrica, o valor inicial deve vir entre aspas simples. 1 #DT-ADM 1 REDEFINE #DT-ADM 2 #DD-ADM 2 #MM-ADM 2 #AA-ADM 1 #IN-CPF 1 #CPF (A8) INIT<28121945>

(A2) (A2) (A4) (L) INIT<FALSE> (N14) INIT<42271236730001>

No pode-se atribuir valores a uma varivel que redefinio de outra, mas apenas varivel de nvel acima dela.

Registros
Um registro uma coleo de variveis, com caractersticas em comum. O Natural permite a definio de registros, bastando para isso criar variveis com nveis diferentes. 1 #REG-SAIDA 2 #CD-FUNC 2 #NM-FUNC 2 #DT-NASC 3 #DD-NASC 3 #MM-NASC 3 #AA-NASC 19
Desenvolvido por Luciano Perdigo

(N9) (A35) (A2) (A2) (A4)

Curso Bsico de Natural

2 #CD-SEXO

(A1)

2.2.2. Editor de Mapas


Aps escolher a opo D no menu inicial, digitar EDIT MAP (ou simplesmente E M) e ser exibido o submenu do editor de mapas:
08:41:21 User X121212 Code ---D E I H M S T W ? . ***** NATURAL MAP EDITOR ***** - Edit Map Function --------------------------------Field and Variable Definitions Edit Map Initialize new Map Initialize a new Help Map Maintenance of Profiles & Devices Save Map Test Map Stow Map Help Exit 03/01/2003 Library CURSO

Code .. I

Name .. ________

Profile .. SYSPROF_

Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Exit Test Edit

O Natural pressupes a criao de um mapa novo: por esse motivo, CODE j vem preenchido com I. Se formos Editar, etc. um mapa, devemos trocar o cdigo.

Opes: D Exibe todos os campos definidos no mapa, com respectiva posio, formato, nome e outras informaes. E Edita um mapa j existente . Se for informado EDIT MAP NOME, o mapa j ser carregado. I Inicializa um novo mapa. Exibe uma tela de parmetros para construo de um novo mapa. No caso de edio de um mapa j existente, a tela de parametrizao no exibida automaticamente. H Inicializa um novo mapa de help. M Manuteno de profiles. Profiles so mapas que podem ser usados como modelo de novos mapas. S Salva o mapa que estiver na rea de trabalho. T Testa o mapa. Permite visualizar o mapa e simular seu preenchimento. 20
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural W Gera o mdulo objeto e salva o mdulo fonte do mapa (STOW). ? Help . Sai do submenu de mapas.

Se formos inicializar um novo mapa, ser exibida a seguinte tela:

17:58:39 Delimiters ----------------Cls Att CD Del T D BLANK T I ? A D _ A I ) A N M D & M I : O D + O I (

Define Map Settings for MAP Format --------------------------Page Size ...... 23 Line Size ...... 79 Column Shift ... 0 (0/1) Layout ......... ________ dynamic ....... N (Y/N) Zero Print ..... N (Y/N) Case Default ... UC (UC/LC) Manual Skip .... N (Y/N) Decimal Char ... , Standard Keys .. N (Y/N) Justification .. L (L/R) Print Mode ..... __ Control Var .... ________

03/01/2003 Context -------------------------Device Check .... ________ WRITE Statement _ INPUT Statement X Help ____________________ as field default N (Y/N)

Automatic Rule Rank 1 Profile Name .... SYSPROF Filler Characters -----------------------Optional, Partial .... Required, Partial .... Optional, Complete ... Required, Complete ...

Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Exit Let

Delimiters
O delimitadores servem para informar ao Natural qual tipo de campo e seus atributos sero definidos a seguir: T A M O Tipos de Campos Texto constante Campo somente de entrada Campo modificvel. Serve para entrada e sada de dados Campo somente de sada

B C D I

Atributos de Campos Blinking (piscante) V Modo de vdeo reverso Cursivo / Itlico U Sublinhado (Underline) Default (cor normal) Y Dinmico Intensificado (high light) N No exibido

Campo T

Caracteres Default de Prefixo de Campos Atributo Caracter Prefixo Default Espao em branco 21

Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

T A A A M M O O

Intensificado Default Intensificado No-exibido Default Intensificado Default Intensificado

? _ )

& : + (

Format
Especifica caractersticas de entrada/sada do mapa.

Page Size Line Size Column Shift Layout Dynamic Zero Print Case Default

Manual Skip

Decimal Character Standard Keys Justification Print Mode

Control Variable

Nmero de linhas do mapa. Pode variar de 1 a 250. Nmero de linhas do mapa. Pode variar de 5 a 249. Se o contedo for 1, o mapa deslocado uma coluna para a esquerda em tempo de execuo. Nome do mapa que contm o layout pr-definido para o mapa Se especificado Y, os mapas so combinados em tempo de execuo. Seno, so combinados durante a inicializao. Se especificado Y, campos zerados sero exibidos como 0. Seno, campo zerados sero mostrados como espaos. UC indica que todos os campos tero as letras minsculas transformadas em maisculas; LC, as letras minsculas permanecem em minsculas. Se especificado Y, o cursor no passar para o prximo campo Quando ele estiver todo preenchido. Com N, o cursor passar para o campo seguinte assim que o campo atual estiver completo. Caracter a ser utilizado como separador das casas decimais. Se informado Y, nas duas ltimas linhas sero exibidas as teclas de funo. Se informado L, todos os campos sero justificados a esquerda (LEFT). Se informado R, direita (RIGHT). Modo de impresso do campo: I Invertido C Utiliza caracteres alternativos N Campo no ser impresso D Mode de caracter duplo-byte. Varivel de controle para todos os campos que sejam controlados dinamicamente e que no tenham varivel de controle definida.

Context
Especifica o contexto do mapa.

Device Check

Se um nome de um dispositivo informado neste campo, todos os atributos do mapa sero checados para verificar compatibilidade com o dispositivo. 22

Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Write Statement

Marcando este campo, o mapa ser usado apenas para sada de dados. Input Statement Marcando este campo, o mapa ser usado para entrada/sada de dados. Help Nome da helproutine associada ao mapa As field default Se especificado Y, o nome do campo onde for pressionada a tecla help ser passado como parmetro default para a helproutine. Automatic Rule Rank Define o nmero default de uma regra de validao automtica. Profile Name Nome da profile ativa para inicializao do mapa.

Filler Characters
Especifica caracteres de preenchimento para os campos.

Optional, Partial Required, Partial Optional, Complete Required, Complete

Opcional, no precisa ser preenchido completamente. Preenchimento requerido, no precisa ser preenchido completamente. Opcional, deve ser preenchido completamente. Preenchimento requerido, deve ser preenchido completamente.

Aps a alterao dos parmetros desejados, aparece a tela de edio de mapas:

Ob _ . . . . . . 001

Ob D CLS ATT DEL CLS ATT DEL . T D Blnk T I ? . A D _ A I ) 1 . A N M D & 2 . M I : O D + . O I ( . --010---+----+----+---030---+----+----+---050---+----+----+---070---+----

Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Mset Exit Test Edit -+ Full < > Let

reas do Editor: 1. rea de split. Permite visualizar e inserir variveis de views e de outros objetos. 2. reas de prefixos. Mostra quais so os prefixos associados a cada tipo de campo. 3. rea de edio. Permite definir o layout do mapa.

23
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Para elaborarmos um mapa, basta digitarmos os campos desejados, precedidos ou no do prefixo correspondente, de acordo com critrios pr-estabelecidos. Para criarmos um campo alfanumrico modificvel, por exemplo, basta digitarmos o cdigo &, seguido do nmero de X correspondentes ao desejado. Outra forma digitar &X(qtde). Para criarmos um campo numrico, digitar o cdigo, seguindo de 9. Exemplo: &9999. A entrada de campos do tipo data no possvel diretamente da tela, sendo necessrio digitarmos a data num campo alfa ou numrico e depois movermos para um campo DATE.
Ob _ . . . . . . 001 Ob D CLS ATT DEL CLS ATT DEL . T D Blnk T I ? . A D _ A I ) . A N M D & . M I : O D + . O I ( . --010---+----+----+---030---+----+----+---050---+----+----+---070---+---?Consrcio?de?Veculos ?Nmero:&999999999 ?Nome..:&XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ?Valor.:&999999999,99

Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Mset Exit Test Edit -+ Full < > Let

Teclas de funo na tela de edio de mapas:

PF1 PF2 PF3 PF4 PF5 PF6

Teclas de Funo Invoca o help do editor de mapa PF7 Move metade da pgina para baixo Permite alterar definies do mapa PF8 Move metade da pgina para cima Retorna ao menu do editor PF9 Permite edio em tela cheia Testa o mapa corrente PF10 Move a janela para a esquerda Edita o campo sob o cursor PF11 Move a janela para a direita Topo move para o incio do mapa PF12 Ignora as mudanas aps o ENTER

Para colocarmos um campo diretamente de uma view ou de um programa, basta na rea de split digitar V e o nome da view para exibir os respectivos campos, ou P e o nome do programa. Os caracteres + e permitem movimentar a tela de split para cima ou para baixo. Para inserirmos o campo desejado, colocar na tela o prefixo desejado e o nmero do campo que aparece na tela de split. Para desativar, colocar espao em branco.

24
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Comandos de Linha
Os comandos de linha devem ser digitados no incio da linha. Alguns comandos de linha no podem ser digitados ao mesmo tempo, pois o Natural no interpreta todos os comandos ao mesmo tempo. ..C Centraliza a linha corrente. Deve Ter sido dado <ENTER> previamente na linha a centralizar. ..D Deleta a linha. ..D(n) Apaga as n linhas, contando com a linha atual. ..E Permite a edio de campos em tela cheia. ..Fc Preenche a linha inteira com o caracter c. ..I Insere uma linha. ..I(n) Insere n linhas. ..J Join. Concatena a linha corrente com a linha de baixo. ..M Move a linha. Colocar o cursor na linha de destino e teclar <ENTER>. ..P Abre o editor de regras de validao do mapa. ..Q Sair do editor de mapas. ..R Duplica a linha. ..S Split. Permite dividir a linha. Posicionar o cursor no ponto de quebra e teclar <ENTER>.

Comandos de Campo
Os comandos de campo devem ser digitados em cima do prefixo do campo. .A Definio de array (matriz). Permite definir o nmero de ocorrncias, matrizes bidimensionais e qual elemento dever ser o primeiro a ser apresentado. .C Centraliza o campo, levando em considerao os campos adjacentes. .D Deleta o campo. .E Permite editar o campo no modo estendido. .M Move o campo. Posicionar o cursor no novo lugar e teclar <ENTER> .R Repete o campo marcado na posio atual do cursor. .P Permite editar as regras de validao do campo.

Exemplo de edio estendida de campo:

25
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Fld #002 Fmt A5 ------------------------------------------------------------------------------AD= MDLT______ ZP= SG= HE= _____________________ Rls 0 AL= _____ CD= __ CV= ________________________________ Mod Undef PM= __ DF= DY= ______________________________ EM= _______________________________________________________________ 001 --010---+----+----+---030---+----+----+---050---+----+----+---070---+----

Cdigo:&99999 Valor.:.EXXXX

Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--HELP Mset Exit <--- ---> -+ < > Let

Quando da criao do campo, o Natural estabelece #001 para o primeiro campo e vai nomeando sucessivamente os campo s medida em que so criados , seqencialmente. Para alterar o nome do campo, digitar .E no campo. Outros campos na tela de edio estendida do campo: Fmt Formato. Permite alterar o formato (N, A, P, D, etc.); AD Definio de atributos do campo. Digitar o atributo diretamente no campo ou teclar ? para preencher as opes disponveis. ZP Zero print. Disponvel apenas se for campo numrico. Se informado Y, imprime 0 (zero) quando for valor zerado. Se informado N, o campo mostrado como espaos em branco. SG Signal. Especifica se o sinal do campo ser mostrado ou no. Disponvel apenas se for campo numrico. HE Helproutine. Especifica uma Helproutine a ser executado caso seja pressionada a tecla de HELP no campo. Outra forma de ativar o Help digitar ? na primeira posio do campo. NL / AL Numeric Length ou Alphabetic Length. Especifica o nmero de caracteres a serem exibidos. O campo pode ser A9, por exemplo, mas ser necessrio mostrar apenas as 4 primeiras: AL=4. CD Color Atributes. Permite atribuir uma cor especifica para o campo. CV Control Variable. Varivel de controle. Estabelece a varivel de controle (tipo C) do mapa.

26
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural PM Print Mode. I = Invertido, C = Conjunto de caracteres alternativos, N Sem impresso. DY Atributos Dinmicos. Permite definir atributos para altera parte do campo. EM Edit Mask. Permite especificar uma mscara para o campo. Mscara para nmeros: 9 apresenta o nmero, mesmo que seja zero; Z suprime os zeros no significativos. Ex.: ZZZ.ZZ9,99 S sinal do campo. Ex.: ZZ0,00S Mscara para campos data: DD Dia MM Ms YYYY Ano. Ex.: DD/MM/YYYY Mscara para campos hora: HH horas II minutos SS segundos. Ex.: HH:II:SS Mscara para campos alfa: X especifica um caracter alfa. Ex.: XXX-XX

Se for digitado .A num campo, ser aberta a tela de edio de array:


Name #002 Upper Bnds 1_____ 1_____ 1_____ ------------------------------------------------------------------------------Dimensions Occurrences Starting from Spacing 0 . Index vertical 1__ ________ 0 Lines 0 . Index horizontal 1__ ________ 1 Columns 0 . Index (h/v) V 1__ ________ 0 Cls/Ls 001 --010---+----+----+---030---+----+----+---050---+----+----+---070---+----

&XXXXX .A9999

Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--Help Mset Exit -+ < > Let

Upper Boundaries estabelece o tamanho mximo de ocorrncias do array. Occurrences a linha que for preenchida nesta coluna, estabelece o nmero de ocorrncias verticais e/ou horizontais do array. Starting from permite estabelecer uma varivel para controlar qual o nmero do primeiro elemento da tela em relao ao array definido no programa.

Por exemplo, podemos definir um array de 100 ocorrncias internamente e 10 ocorrncias sendo exibidas na tela. Definimos ento uma varivel que ter o nmero do primeiro elemento. Se a varivel tiver o contedo 70, sero mostradas as ocorrncias de 70 a 80. til para controle de paginaes. 27
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

2.2.3. Editor de Programas


Aps escolher a opo D no menu inicial, digitar EDIT PROGRAM (ou simplesmente E P) e ser exibido o editor de programas. O editor de programas possui o seguinte layout:

> > + Program XXXP0001 Lib CURSO All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 0020 Linha de Comandos Tipo de 0030 Objeto 0040 0050 0060 Nome do Objeto 0070 Biblioteca 0080 0090 Modo de 0100 Programao 0110 0120 0130 0140 0150 Informaes do fonte 0160 0170 0180 0190 0200 ....+..Current Source Size: 0 Char. Free: 70273 .+....+... S 0 L 1

Na linha de comandos podemos digitar os seguintes comandos, exclusivos rea do editor de programas: NNNN Traz a linha NNNN para o incio. ADD Adiciona linhas no final do fonte. TOP ou -- Posiciona a janela de edio na primeira linha do fonte sendo editado. Pode ser substitudo por T. BOTTOM ou ++ Posiciona a janela de edio no final do fonte sendo editado. Pode ser substitudo por B. +H Avana meia pgina (10 linhas). -H retrocede meia pgina (10 linhas). CHANGE So passados dois parmetros: o valor a trocar e o novo valor. O Comando procura a primeira ocorrncia do valor e efetua a troca. Caracteres especiais devem ser informados entre aspas simples ( ). Na linha em que tiver sido efetuada a troca, na rea destinada numerao das linhas, aparecer a informao da substituio. Pode ser substitudo por CH. GLOBALS SM=[ON/OFF] Muda o modo de programao entre estruturado e report. LET Ignora todas as alteraes feitas no fonte aps o ltimo <ENTER>. PROFILE Exibe e permite alterar as informaes de edio da seo atual. 28
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural RESET Limpa marcas de bloco e qualquer outra informao presente na rea de numerao das linhas. SCAN Procura a string no fonte. SPLIT <tipo de objeto> <nome do objeto> Divide a tela em duas partes: na superior, mantm o editor ativo; na inferior, apresenta apenas para visualizao o objeto solicitado.

A seguir, a relao dos principais comandos de movimentao de texto do editor de programas. Estes comandos devem ser digitados na primeira posio da linha: .C[n] Copy. Copia a linha atual, duplicando-a. Se especificado um nmero para n entre parnteses, duplica a linha n vezes. .X e .Y Marca o bloco. .CX-Y[n] Copia o bloco marcando com .X e .Y. Se especificado um nmero para n entre parnteses, duplica a linha n vezes. .D[n] Delete. Apaga a linha corrente. Se especificado um nmero para n entre parnteses, duplica a linha n vezes. .I[n] Insert. Insere linhas aps a linha corrente. Se especificado um nmero para n entre parnteses, duplica a linha n vezes. Se informado .i[objeto], o fonte do objeto ser inserido no fonte atual. .J Join. Concatena a linha corrente com a linha seguinte, desde que o tamanho da linha resultante seja suportado pelo editor (127 caracteres por linha). .L Ignora as mudanas da linha, desde que no pressionado <ENTER>. .MX-Y[n] Move. Move o bloco marcado para a linha seguinte atual. .P Posiciona a linha como sendo a primeira da tela. .S Split. Divide a linha corrente, quebrando-a em duas. Aps colocar .S no incio da linha, colocar o cursor sob o caracter que dever ser o primeiro da nova linha e teclar <ENTER>.

Aps a marcao de um bloco, aparecem as marcas correspondentes (X e Y) na primeira coluna do fonte. Quando definimos o .X e o .Y para a mesma linha, na primeira coluna exibido Z. Quando existir um bloco marcado, podem ser digitados os comando DX-Y na linha de comandos para apagar o bloco e Ex-y para editar apenas o bloco, ou seja, apaga o resto do fonte. As teclas de funo podem ser configuradas pelo usurio, atravs do comando PROFILE, para executar diversas funes.

29
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

3. Variveis de Sistema
*APPLIC-ID...: *CURSOR......: *CURS-FIELD..: *DATA........: *ERROR-LINE..: *ERROR-TA....: *GROUP.......: *HARDWARE....: *INIT-PROGRAM: *LANGUAGE....: *LIBRARY-ID..: *LINESIZE....: *LOG-OS......: *OPSYS.......: *OSVERS......: *PAGE-NUMBER.: *PF-NAME.....: *SCREEN-IO...: *STARTUP.....: *SUBROUTINE..: *TPSYS.......: *USER........: *WINDOW-LS...: *WINDOW-OS...: GTRPRG 1004 0 -1 0 *APPLIC-NAME..: *CURS-COL.....: *CURS-LINE....: *DEVICE.......: *ERROR-NR.....: *ETID.........: *HARDCOPY.....: *INIT-ID......: *INIT-USER....: *LEVEL........: *LINE-COUNT...: *LOG-LS.......: *MACHINE-CLASS: *OS...........: *PAGESIZE.....: *PF-KEY.......: *PROGRAM......: *SERVER-TYPE..: *STEPLIB......: *THIS-OBJECT..: *UI...........: *USER-NAME....: *WINDOW-POS...: SYSTEM 4 1 COLOR 0 X?h??% B1D8 X028862 1 10 80 MAINFRAME MVS/ESA 24 ENTR GTRXSIS SISTEM 0000000000000000 CHARACTER SYSTEM 0

2064 NTRN 38 CURSO 80 23 MVS/ESA SP7.0.1 1 X

CICS X028862 80 24

4. Comandos
4.1. Set Key
Comando utilizado para ativar/desativar as teclas de funo.

[ON ] SET KEY [OFF] [ALL]

[programa] SET KEY PFn = [ON [OFF [HELP ] ] ] [NAMED [OFF ]

[operando]

SET KEY ALL Ativa todas as PFs para uso. SET KEY PF2=PGM Ativa PF2 para executar o programa especificado. SET KEY OFF Desativa todas as PFs. SET KEY ON Reativa todas as PFs. SET KEY PF4=HELP Ativa a tecla F4 para servir de HELP de campo. 30
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural SET KEY PF7=PRGP0010 NAMED MENU Ativa a tecla PF7 para executar o programa PRGP0010 e coloca o string MENU na rgua de PFs. DEFINE DATA LOCAL 1 #PF4 (A56) 1 #FCT (A8) END-DEFINE ... SET KEY PF1 PF2 PF3 = `MENU` PF4 = #PF4 PF5 = `LISTA EMPREGADO` PF6 = XXXP0070 NAMED IMPRIME ...

4.2.

Format
A instruo FORMAT especifica valores para os parmetros globais que se aplicam

formatao de relatrios e mapas. FORMAT {parmetro}

FORMAT AL=7 LS=15 PS=50

/* Exibio de 7 bytes do campo /* Torna um pgina com 15 linhas /* Permite exibio em 50 colunas

4.3.

Set Control
usado para executar comandos de controle de terminal de dentro de um programa. Os

comando de Controle de Terminal so identificados pelo uso do caracter %. Alguns comandos de terminal utilizados so: %YB mostra rgua de PF-KEY na parte inferior da tela. %YT mostra rgua PF-KEY na parte superior da tela. %YF mostra de PF1-PF12. %YL mostra de PF13-PF24. %MP protege a linha de mensagem. %MB linha de mensagem inferior da tela. %MT linha de mensagem superior da tela. %N ativa modo no conversacional. %Q no mostra o mapa em batch. %X linha de estatstica. %W usado para comandos de janela. %% Interrompe operao do Natural. 31

Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.4.

Instrues de Entrada/Sada

4.4.1. Input
Instruo para obter dados para o programa ou para mostrar os dados de programa. INPUT parmetros WITH TEXT-option MARK *operando ALARM-option nX nT x/y / 'texto' (attributes) 'c'(n) operand1 (parmetros) ...

onde X significa espaos em branco, T posio de tabulao, X/Y linha e coluna da tela. Exemplos:

INPUT #VAR-ALFA INPUT

#VAR-NUM(SG=OFF)

#AGENCIA

INPUT //// 10T AGENCIA....: #AGENCIA

Parmetros: AD=[r][a][i/o][c][f] r apresentao: Blink, Default, Intensified, Non-display a alinhamento: Left, Right i/o modo: Input (A), Modifiable, Output c tratamento de caracteres: T minsculas para maisculas, W aceita minsculas f caracter de preenchimento (filler): definido pelo usurio.

INPUT (AD=IMLT.)

////

10T

AGENCIA....: #AGENCIA

INPUT /// AGENCIA (I) #AGENCIA(AD=M) INPUT (AD=M) #AGENCIA #CONTA INPUT MARK *#CONTA /// #AGENCIA #CONTA INPUT MARK 2 /// #AGENCIA #CONTA

INPUT com mensagem na linha de mensagem:

INPUT WITH TEXT Digite a agncia. AGENCIA: #AGENCIA (AD=MI_)

32
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

INPUT com utilizao de mapa externo:

INPUT USING MAP XXXM0001

Apresentando mensagem na linha de mensagem:

INPUT WITH TEXT #MSG USING MAP XXXM0014

Marcando um determinado campo:

INPUT WITH TEXT #MSG MARK #CODIGO USING MAP XXXM0002

4.4.2. Reinput
Instruo para voltar a executar a ltima instruo INPUT.

REINPUT [FULL] operando1 MARK *operando2 [alarm] Operando1: varivel ou constante com a mensagem a ser apresentada no REINPUT. Operando2: campo para posicionamento do cursor. Entre uma instruo INPUT e o REINPUT correspondente, no pode haver nenhuma instruo WRITE ou DISPLAY, pois para a execuo do REINPUT, a ltima comunicao com a tela tem obrigatoriamente que Ter sido com um INPUT. A clusula FULL altera todos os campos da tela, at onde encontra-se o campo a redigitar. Se no for especificada, no atualiza os campos. DEFINE DATA LOCAL 1 #USUARIO (A8) 1 #SENHA (A8) END-DEFINE INPUT (AD=M) WITH TEXT Preencher os campos. ///// 10T Usurio.: (I) #USUARIO / 10T Password: (I) #SENHA (AD=N) / IF #USUARIO = REINPUT Informe cdigo de usurio. MARK *#USUARIO ALARM END-IF IF #SENHA = REINPUT Informe a senha. MARK *#SENHA ALARM END-IF END

33
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Utilizando um mapa para a entrada de dados, o programa anterior ficaria da seguinte maneira:

DEFINE DATA LOCAL 1 #USUARIO (A8) 1 #SENHA (A8) END-DEFINE INPUT WITH TEXT Preencher os campos. USING MAP XXXM0020 IF #USUARIO = REINPUT Informe cdigo de usurio. MARK *#USUARIO ALARM END-IF IF #SENHA = REINPUT Informe a senha. MARK *#SENHA ALARM END-IF END

4.4.3. Display
Instruo para imprimir dados do programa, em formato de colunas. A instruo DISPLAY automaticamente inclui cabealhos, com o mesmo nome da varivel, caso no seja informado um cabealho diferente.

DISPLAY (rep) NOTITLE parmetros = Nx NT texto c n operando parmetros

Opes: NOTITLE suprime a linha de cabealho da pgina. Rep nmero do relatrio. O Natural pode controlar at 32 relatrios simultneos, numerados de 0 a 31. Parmetros: SF (Spacing Fator) Fator de espaamento das colunas. Valores: de 1 a 30. HC (Heading Centering) Ajuste do cabealho das colunas CENTER, LEFT, RIGHT. FC (Filler Character) Caracter de preenchimento do cabealho. Default: brancos. UC (Underlining Character) Caracter utilizado para sublinhar os cabealhos. Default: -

Exemplos: DISPLAY (SF=25 HC=L UC=*) NUM-MATRIC NOME-EMPREG DISPLAY MATRICULA EMPREGADO NUM-MATRIC 34
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DISPLAY MATRICULA/DO/EMPREGADO NUM-MATRIC

Parmetros de variveis: AL (Alphanumeric Length) Tamanho mximo para exibio de campo alfanumrico. NL (Numeric Length Tamanho mximo para exibio de campo numrico. Exemplos: DISPLAY NUM-MATRIC NOME-EMPREG(AL=20) DISPLAY NUM-MATRIC(NL=3) NOME-EMPREG SIG-ORGAO(AL=4)

Vejamos o seguinte programa como exemplo de utilizao da instruo DISPLAY:

DEFINE DATA LOCAL 1 EMP VIEW OF AD-EMPREGADO 2 NUM-MATRIC 2 NOME-EMPREG 2 SIG-ORGAO END-DEFINE FIND EMP WITH SIG-ORGAO = DEPTO-001 DISPLAY NUM-MATRIC NOME-EMPREG SIG-ORGAO END-FIND END

A execuo gera o seguinte resultado:

Page 1 NUM-MATRIC ---------001536 147685 875923 NOME-EMPREG -----------------------------------FULANO DE TAL LUCIANO PERDIGO MARIA APARECIDA DA SILVA

15:43:16 SIG-ORGAO ---------DEPTO-001 DEPTO-001 DEPTO-001

4.4.4. Write
A instruo WRITE causa a impresso de uma ou mais linhas com formatao livre, e com as seguintes caractersticas: 35
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Se uma linha lgica excede a linha fsica, ela ser dividida em duas, mas nenhum campo ser truncado; No h gerao de cabealhos, e o tamanho de cada elemento determina as posies de impresso; Faixas de valores de campos mltiplos e grupos peridicos so dispostos horizontalmente na mesma linha.

WRITE (rep) NX NT

NOTITLE parmetros =

Texto c n

operando

parmetros

1.

2. 3. 4. 5.

WRITE NOTITLE `=` #PRIMEIRO-NOME `=` #SOBRENOME `=` #ULTIMO-NOME // `L O C A L I Z A O` / `CIDADE:` #CIDADE / `PAS:` #PAIS // ... WRITE NOTITLE 5X #NOME 50T #PROFISSAO ... WRITE / `MDIA CIDADE:` C*SALARIO(1) AVER(SALARIO(1)) // ... WRITE / `MDIA SALRIO ` C*SALARIO(1) AVER(SALARIO(1)) // ... WRITE NOTITLE (AL=16 NL=8) `=` #CODIGO `=` #NOME `=` #TELEFONE(AL=10 EM=XXX-XXXXXXX)

4.4.5. Write Title/Trailer


A instruo WRITE TITLE define um ttulo para um relatrio, em substituio ao ttulo padro do Natural.

WRITE (rep) TITLE [LEFT] [parmetros] NX NT = Texto c n [SKIP n] operando parmetros

A instruo WRITE TRAILER define uma ou mais linhas a serem impressas no rodap de um relatrio.

WRITE (rep) TRAILER [LEFT] [parmetros] NX = 36


Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

NT

Texto c n

operando

parmetros

[SKIP n]

Exemplo:

DEFINE DATA LOCAL 1 EMP VIEW OF EMPREGADO 2 NUM-MATRIC 2 NOME-EMPREG 2 SIG-ORGAO END-DEFINE FORMAT(1) LS=100 PS=50 WRITE(1) TITLE LEFT RELAO DE EMPREGADOS (I) WRITE(1) TRAILER LEFT PGINA *PAGE-NUMBER(1)(EM=ZZ9) SKIP 1 FIND EMP WITH SIG-ORGAO = DEPTO-001 DISPLAY NUM-MATRIC NOME-EMPREG SIG-ORGAO END-FIND END

4.4.6. Newpage
Este comando provoca um avano de pgina do relatrio.

NEWPAGE (rep) IF LESS THAN operand1 LINES LEFT WHEN O NEWPAGE avana a pgina e provoca a impresso do cabealho na pgina seguinte.

IF LESS THAN: se especificada a clusula, ocorrer quebra de pgina somente quando houver menos linhas do que o especificado no parmetro.

... NEWPAGE (1) IF LESS THAN 5 LEFT ...

37
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.4.7. Eject
Este comando provoca um avano de pgina do relatrio, sem gerar cabealho na prxima pgina. EJECT (rep) IF LESS THAN operand1 LINES LEFT WHEN IF LESS THAN: se especificada a clusula, ocorrer quebra de pgina somente quando houver menos linhas do que o especificado no parmetro.

... EJECT (1) IF LESS THAN 5 LEFT ...

4.4.8. Skip
Gera linhas em branco em um relatrio. SKIP (rep) [Lines]

... WRITE Total de pratos: #TOTAL-PRATOS SKIP 2 ...

4.5.

Operaes Aritmticas

4.5.1. Add
Comando utilizado para efetuar a operao de soma.

ADD [ROUNDED] operando-1 ... operando-n TO operando-x

ADD [ROUNDED] operando-1 ... operando-n GIVING operando-x O comando ADD permite adicionar constantes ou variveis a uma varivel. Se for utilizada a opo TO, os valores do operando-1 at o operando-n sero adicionados ao operando-x, inclusive. Se for utilizada a opo GIVING, o resultado da soma dos valores do operando-1 at o operando-n ser armazenado no operando-x. 38
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

A clusula ROUNDED permite que o resultado seja arredondado, ajustado-se ao tamanho do operando-x. Exemplos: INSTRUO ---------------------------------ADD +5 -2 -1 GIVING #A ADD 0,231 3,6 GIVING #B ADD ROUNDED 2,9 3,8 GIVING #C MOVE *DATX TO #DATE ADD 7 TO #DATE ADD #ARRAY1 (2,*) TO #ARRAY2 (4,*) RESULTADO --------------------------------#A: 2 #B: #C: 3,8 7

current date +7 #ARRAY2 value = #ARRAY1 + #ARRAY2

4.5.2. Subtract
Comando utilizado para efetuar a operao de subtrao.

SUBTRACT [ROUNDED] operando-1 ... FROM operando-2

SUBTRACT [ROUNDED] operando-1 ... FROM operando-2 GIVING operando-3 Quando for utilizada somente a clusula FROM, o valor de operando-2 ser utilizado com a subtrao do operando-1 do operando-2. Quando for utilizada a clusula GIVING, o resultado da subtrao do operando-1 do operando-2 ser armazenado no operando-3. Com a clusula ROUNDED, o resultado arredondado de acordo com o campo receptor.

DEFINE DATA LOCAL 1 #A (P2) INIT <50> 1 #B (P2) 1 #C (P1,1) INIT <2,4> END-DEFINE SUBTRACT 6 FROM #A SUBTRACT 6 FROM 11 GIVING #A SUBTRACT 3 4 FROM #A GIVING #B /** Resultado: /** Resultado: /** Resultado: #A: 44 #A: #A: #A: 5 5 5 #B: #B: -2 12

SUBTRACT -3 -4 FROM #A GIVING #B /** Resultado: SUBTRACT ROUNDED 2,06 FROM #C /** Resultado: 39
Desenvolvido por Luciano Perdigo

#C: 0,3

Curso Bsico de Natural

4.5.3. Multiply
Comando utilizado para efetuar a operao de multiplicao.

MULTIPLY [ROUNDED] operando-1 BY operando-2

MULTIPLY [ROUNDED] operando-1 BY operando-2

GIVING operando-3

Quando for utilizado somente a clusula BY, o resultado da operao ser armazenado em operando-2.

Quando for utilizada a clusula GIVING, o resultado ser armazenado em operando-3.

Com a clusula ROUNDED, o resultado arredondado de acordo com o campo receptor.

MULTIPLY #A BY 3 MULTIPLY #A BY 3 GIVING #C MULTIPLY ROUNDED 3 BY 3.5 GIVING #C MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*)

4.5.4. Divide
Comando utilizado para efetuar a operao de diviso.

DIVIDE [ROUNDED] operando-1 INTO operando-2 GIVING operando-3

DIVIDE operando-1 INTO operando-2 GIVING operando-3 REMAINDER operando-4

Se for utilizada a clusula GIVING, o resultado da diviso ser armazenado em operando3, seno o resultado ser armazenado em operando-2.

Se for utilizada a clusula REMAINDER, o resto da diviso ser armazenado em operando4.

40
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DEFINE DATA LOCAL 1 #A (N7) INIT <20> 1 #B (N7) 1 #C (N3.2) 1 #D (N1) 1 #E (N1) INIT <3> 1 #F (N1) DIVIDE 5 INTO #A DIVIDE 5 INTO #A GIVING #B DIVIDE 3 INTO 3,1 GIVING #C DIVIDE 3 INTO 3,1 GIVING #D DIVIDE 2 INTO #E REMAINDER #F /** Resultado: /** Resultado: /** Resultado: /** Resultado: /** Resultado: #A: 4 #B: 4 #C: 1,03 #D: 1 #E: 1 #F: 1

4.5.5. Compute
A instruo COMPUTE executa operaes aritmticas e permite a utilizao de funes do Natural.

COMPUTE [ROUNDED] operando-1 = ...

expresso aritmtica

A clusula ROUNDED faz com que o resultado seja arredondado. A palavra COMPUTE opcional, desde que o sinal de igualdade seja precedido de dois pontos: #VAR := 4 * #MULT COMPUTE #A = 3 * 2 + 4 / 2 - 1 #A := SQRT (#B) Resultado: #A = 0007 Resultado: Raiz quadrada de #B

4.6.

Manipulao de Campos

4.6.1. Compress
A instruo COMPRESS utilizada para combinar o contedo de dois ou mais operandos para um campo.

COMPRESS operando-1

... operando-n [IN]TO operando-x

[LEAVING NO [SPACE]] [WITH DELIMITER operando-3] Operando-1 ... Operando-n qualquer tipo de varivel ou constante. 41
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural Operando-x varivel alfanumrica que receber o resultado da concatenao. LEAVING NO concatena sem deixar espao em branco entre os dados. WITH DELIMITER especifica um caracter para servir de separador entre os campos.

COMPRESS NOME SOBRENOME INTO #NOME-COMPLETO COMPRESS #DIA #MS #ANO INTO #DATA LEAVING NO COMPRESS #DIA #MS #ANO INTO #DATA WITH DELIMITER /

4.6.2. Move
A instruo MOVE copia o contedo de um campo para outro ou atribui um valor a uma varivel.

[ROUNDED] [BY NAME] MOVE [ALL] [EDITED] operando1 TO operando-2

ROUNDED faz a movimentao e arredonda, de acordo com o tamanho do campo receptor. BY NAME movimenta todos os campos de uma estrutura/registro para outro, desde que haja campos nas duas estruturas com o mesmo nome. ALL efetua o preenchimento de uma varivel string com parmetro especificado. EDITED efetua a movimentao de um campo com uma mscara ara outro campo.

MOVE #VAR TO #VAR-2 MOVE ROUNDED 1,95 TO #N1 /* (N1)

MOVE BY NAME #DATA TO #DATA-INV

01 #DATA 02 #DD 02 #MM 02 #AA (N2) (N2) (N4)

01 #DATA-INV 02 #AA-INV 02 #MM-INV 02 #DD-INV (N4) (N2) (N2)

MOVE ALL * TO #LINHA

/* (A78) /* (A10)

MOVE EDITED DATX(EM=DD/MM/YYYY) TO #A 42


Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.6.3. Reset
A instruo RESET estabelece valores nulos, de acordo com o tipo de varivel, ou os valores especificados inicialmente.

RESET [INITIAL] operando-1 ... operando-n A clusula INITIAL restabelece o valor original definido no DEFINE DATA pela clusula INIT. A B N P I L F D T DEFAULT DE INICIALIZAO Alfanumrico Branco Binrio 0 (zero) Numrico 0 (zero) Numrico Compactado 0 (zero) Inteiro 0 (zero) Lgico False Ponto Flutuante 0 (zero) Data 0 (zero) Hota 00:00:00

DEFINE DATA LOCAL 1 #ALFA (A10) 1 #PERCENTUAL (N3,2) 1 #MAT-MS (N2/12) 1 #REGISTRO 2 #NOME (A40) 2 #MATRICULA (N9) 1 #MAX-REG (N4) INIT<100> END-DEFINE ... RESET #ALFA #PERCENTUAL #REGISTRO #MAT-MS(*) #MAX-REG ... RESET INITIAL #MAX-REG ...

4.6.4. Separate
A instruo SEPARATE usada para separar o contedo de um campo para dois ou mais campos (alfanumricos, array ou grupos).

SEPARATE operando-1 [LEFT] INTO operando-2 WITH operando-3

Operando-1 varivel ou constante alfanumrica. Operando-2 varivel alfanumrica (pode ser um array).

43
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural Operando-3 varivel ou constante. Se omitido, assume que o delimitador qualquer caracter menor que a letra a (minscula).

SEPARATE A B,C.D INTO #A #B #C #D SEPARATE 123.5,26.3 INTO #N1 #N2 WITH DELIMITER , SEPARATE 1 2 3 4 INTO #ARRAY(*) /* (A1/4)

4.6.5. Examine
A instruo EXAMINE pesquisa um campo (alfanumrico ou array) por uma opo e altera, deleta ou conta o nmero de ocorrncias de uma campo.

EXAMINE operando-1 FOR operando-2 [DELETE [FIRST]] [REPLACE [FIRST] operando-3] [GIVING POSITION operando-3] [GIVING INDEX operando-3]

Operando-1 representa o campo a ser examinado. Operando-2 representa o valor a ser utilizado na operao de pesquisa. DELETE apaga a ocorrncia especificada, concatenando o resto do string. Se FIRST for especificado, apaga apenas a primeira ocorrncia. REPLACE troca a ocorrncia especificada em operando-2 pela especificada em operando-3. Se FIRST for especificado, apenas a primeira ocorrncia ser alterada. GIVING POSITION usado para obter a partir de qual byte o operando-2 inicia no operando-1. Se o operando-2 no for encontrado, retorna 0 (zero). GIVING INDEX usado para obter o nmero da ocorrncia (ndice) em que o operando-2 ocorre no operando-1, que dever ser uma matriz. Caso no seja encontrado, retorno 0 zero).

DEFINE DATA LOCAL 1 #DEP1 (A18) 1 #DEP (A18) INIT<AAABBBCCCDDDEEEFFF> 1 REDEFINE #DEP 2 #TAB-DEP (A3/6) 1 #I (I1) 1 #I (I1) END-DEFINE MOVE #DEP TO #DEP1 * EXAMINE #TAB-DEP(*) FOR BBB GIVING INDEX #I 44
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

EXAMINE EXAMINE EXAMINE EXAMINE EXAMINE * DISPLAY END

#DEP #DEP #DEP #DEP #DEP

FOR FOR FOR FOR FOR

BBB GIVING POSITION #J DE REPLACE XY C REPLACE FIRST W F REPLACE Z B DELETE

#I #J #DEP1 #DEP

A execuo gera o seguinte resultado:

#I #J

#DEP1

#DEP

-- -- ------------------ -----------------2 4 AAABBBCCCDDDEEEFFF AAAWCCDDXYEEZZZ

4.7.

Instrues Condicionais

4.7.1. If
A instruo IF usada para controlar a execuo de grupos de instrues com base em uma condio lgica. IF condio [THEN] instruo [ELSE] instruo END-IF

IF SALARY (1) LT 40000 WRITE NOTITLE `*****` NAME 30X `SALARY LT 40000` ELSE IF BIRTH GT 300101 FIND VEHIC-VIEW WITH PERSONNEL-ID = PERSONNEL-ID DISPLAY (IS=ON) NAME BIRTH SALARY (1) MAKE (AL=8) END-FIND END-IF END-IF

4.7.2. Decide On/Decide For


A instruo DECIDE uma estrutura de mltipla escolha (case).

45
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DECIDE ON FIRST VALUES OF operando-1 EVERY VALUE operando-2 [,...] VALUE operando-2 : operando-3 Instrues ANY VALUE Instrues ALL VALUE Instrues NONE VALUE Instrues END-DECIDE

DECIDE FOR FIRST CONDITION EVERY WHEN condio-lgica Instrues WHEN ANY Instrues WHEN ALL Instrues WHEN NONE Instrues END-DECIDE Esta instruo usada de duas formas, sendo: DECIDE ON usada para executar uma ou mais aes, dependendo de um valor (ou valores) contidos em uma varivel. DECIDE FOR usada para executar uma ou mais aes, dependendo de mltiplas condies lgicas.

As seguintes opes de controle podem ser usadas: FIRST ou EVERY para aps a primeira condio verdadeira (FIRST), ou executa todas as condies descritas (EVERY). ANY executado se alguma das condies for verdadeira. ALL executado se todas as condies forem verdadeiras. (A opo EVERY tem de ser especificada). NONE executado se nenhuma das condies for verdadeira. obrigatrio o uso desta opo e pode-se usar a clusula IGNORE quando no se deseja executar nada.

46
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Decide On First Value DECIDE ON FIRST VALUE OF #COD VALUE 1 PERFORM VERIFICA-COD-1 VALUE 2:4 PERFORM VERIFICA-COD-2-3-4 VALUE 5 , 9 , 11 PERFORM VERIFICA-COD-5-9-11 VALUE 8 STOP NONE IGNORE END-DECIDE

Decide On Every Value DECIDE ON EVERY VALUE OF #COD VALUE 1:6 PERFORM VERIFICA-COD-1-6 VALUE 1:3 PERFORM VERIFICA-COD-1-3 VALUE 4:6 PERFORM VERIFICA-COD-4-6 NONE IGNORE END-DECIDE

Decide For First Condition DECIDE FOR FIRST CONDITION WHEN #TIPO = A PERFORM TRATA-CONTA-A WHEN #TIPO = C PERFORM TRATA-CONTA-C WHEN NONE REINPUT Tipo de conta invlida. MARK *#TIPO END-DECIDE

Decide For Every Condition DECIDE FOR EVERY CONDITION WHEN #TIPO = A PERFORM TRATA-CONTA-A WHEN #NASC NE MASK(DDMMYYYY) REINPUT Data Nascimento invlida. WHEN ANY MOVE TRUE TO #ERRO WHEN NONE IGNORE END-DECIDE 47
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DECIDE dentro de DECIDE DECIDE ON FIRST VALUE OF #COD VALUE 1


DECIDE FOR FIRST CONDITION WHEN #TIPO > #TIPO-AUX REINPUT Tipo Invlido... MARK ... WHEN #TIPO < #TIPO-AUX PERFORM GRAVA-TIPO WHEN NONE IGNORE END-DECIDE

VALUE 2 WRITE Tipo: #TIPO NONE IGNORE END-DECIDE

4.8.

Controle de Processamento

4.8.1. For
Instruo utilizada para iniciar um processamento de loop e controlar o nmero de vezes que o loop ser executado.

FOR operando1 = operando2 TO operando3 [STEP operando4] ... END-FOR

Operando1: pode ser uma varivel de usurio ou um campo de arquivo, que ter o valor alterado a cada ocorrncia do loop. Operando2 e Operando3: variveis ou constantes, de valor inicial e final do loop. Operando4: incremento, podendo ser positivo ou negativo.

DEFINE DATA LOCAL 1 #I (I2) 1 #NUM-PAR (I2) END-DEFINE FOR #I = 2 TO 100 STEP 2 WRITE Nmero par: #I END-FOR END

4.8.2. Repeat
A instruo REPEAT inicia um loop de processamento cujo final controlado por uma condio lgica. 48
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

REPEAT Instrues [UNTIL] [WHILE] condio-lgica END-REPEAT

REPEAT [UNTIL] [WHILE] condio-lgica Instrues END-REPEAT

Se a condio lgica for omitida, o loop deve ser encerrado com instrues do tipo ESCAPE ou STOP. WHILE executa o loop enquanto a condio for verdadeira. UNTIL executa o loop enquanto a condio for falsa.

... REPEAT INPUT USING MAP XXXM0005 IF #MATRICULA = 0 ESCAPE BOTTOM END-IF FIND EMPREGADO WITH MATRICULA = #MATRICULA END-FIND INPUT USING MAP XXXM0008 END-REPEAT ...

4.8.3. Accept / Reject


Estes comandos so usados para aceitar (ACCEPT) ou rejeitar (REJECT) registros, de acordo com condies lgicas em processamento de loop.

ACCEPT IF condio-lgica REJECT IF condio-lgica O Natural quem faz o teste e no o banco de dados. Por essa razo, o registro recuperado (lido), para que o teste seja efetuado. Os campo utilizados para teste podem ser campos da view ou variveis de usurio. 49
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Pode haver combinao de vrios ACCEPT / REJECT numa leitura, mas o comando REJECT deve ser codificado antes do comando ACCEPT.

READ EMP ACCEPT IF #SEXO = 'M' AND #ESTADO-CIVIL = 'S' DISPLAY #NOME #IDADE END-READ

4.8.4. Escape Top/Bottom/Routine


ESCAPE TOP BOTTOM (r) IMMEDIATE ROUTINE IMMEDIATE

ESCAPE TOP causa o retorno para o incio do processamento de loop. Dar-se- nova repetio do processo de loop. ESCAPE BOTTOM encerra o processamento do loop, e continuar com o primeiro comando aps o loop. Se a clusula LABEL for especificada, o processamento seguir com o comando identificado pelo LABEL ou pelo nmero de referncia. Se a clusula IMMEDIATE for especificada, no se dar a evoluo das funes STANDARD (Aver, count, max) e as funes de quebras por fim de processamento. ESCAPE ROUTINE a opo indica que a rotina, que pode Ter sido invocada por um PERFORM, CALLNAT, FETCH RETURN ou pelo programa principal, abandonar o controle retornando ao nvel superior. No caso do programa principal, o Natural receber o controle. Podese usar tambm a clusula IMMEDIATE.

50
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

A1.READ . . . B1.READ FILE ... . . . C1.FIND FILE ... . . . ESCAPE TOP ESCAPE BOTTOM ESCAPE BOTTOM (A1) IMMEDIATE . . . END-FIND (C1) . . . END-READ (B1) . . . END-READ (A1) . . . END

4.8.5. End
A instruo END indica fim de programa. Todos os objetos tem de Ter o END como ltimo statement, com exceo do COPYCODE. FIND ... READ ... END-READ END-FIND END

4.8.6. Terminate
O comando termina a execuo do programa e do Natural, retornando o controle ao monitor de teleprocessamento (CICS, TSO, etc.). ... IF *PF-KEY = PF5 OR = PF17 TERMINATE END-IF ...

51
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.8.7. Stop
Termina a execuo de um programa e retorna o controle para o Natural. ... IF #OPO = 9 STOP END-IF ...

4.8.8. Limit
A instruo LIMIT, limita o nmero de loops para comandos de leitura (READ, FIND, HISTOGRAM) de acordo com o valor de n, retornando uma mensagem.

LIMIT n

... LIMIT 4 * READ EMPLOY-VIEW BY NAME STARTING FROM `BAKER` ... END-READ

4.9.

Processamento de Quebra Automtica

4.9.1. At Start Of Data


Comando que executa uma srie de comandos no incio da leitura de um file.

[AT] START [OF] DATA ... END-START Deve ser codificado dentro do lao de leitura.

FIND EMPRESA WITH SIGLA-UF = MG AT START OF DATA WRITE Incio do Relatrio. END-START END-FIND

4.9.2. At End Of Data


Comando que executa uma srie de comandos ao trmino da leitura de um file. 52
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

[AT] END [OF] DATA ... END-ENDDATA Deve ser codificado dentro do lao de leitura. FIND EMPRESA WITH SIGLA-UF = MG AT START OF DATA WRITE Trmino do Relatrio. END-START END-FIND

4.9.3. At Top Of Page


Comando que executa uma srie de comandos toda vez que uma pgina for inicializada para impresso de um relatrio.

[AT] TOP [OF] PAGE ... END-TOPPAGE Pode ser codificado em qualquer lugar do programa.

... AT TOP OF PAGE WRITE Relatrio de Funcionrios em Frias. END-TOPPAGE ...

4.9.4. At End Of Page


Comando que executa uma srie de comandos quando uma condio de fim de pgina for detectada. [AT] END [OF] PAGE ... END-ENDPAGE Pode ser codificada em qualquer parte do programa. ... AT END OF PAGE WRITE Pgina: #PAG(EM=ZZ9) END-ENDPAGE ... 53
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.9.5. At Break
A instruo AT BREAK especifica os campo para cujos valores sero feitos controles de quebra automticos ou manuais, e tambm os procedimentos a serem executados nestas quebras.

[AT] BREAK [OF] campo [/n/] ... END-BREAK

Campo: atributo do arquivo, cujo contedo ser utilizado para teste de quebra, ou seja, o AT BREAK ter os comandos internos executados toda vez que ocorrer uma alterao do valor do campo em relao ao contedo anterior. /n/: pode-se especificar a quebra de um certo nmero de caracteres iniciais do campo, atravs da clusula /n/. Por exemplo, se quisermos uma quebra quando houver alterao da primeira letra de um nome, basta codificar AT BREAK OF NAME /1/. Mais de um AT BREAK pode ser codificado numa operao de leitura, e quando acontece um quebra, as quebras de nveis anteriores tambm acontecem. Funes disponveis na quebra: COUNT quantidade de registros lidos SUM soma de valores OLD contedo do campo de quebra antes de ocorrer a quebra. AVER mdia de valores MAX maior valor lido MIN menor valor lido

Exemplo de quebra simples:

READ EMPREGADO BY CARGO WHERE DEPTO = VENDAS AT BREAK OF CARGO WRITE - (70) / 10T CARGO: OLD(CARGO) (AD=I) / 40T SALARIO MEDIO: AVER(SALARIO) / 40T QTDE. FUNCIONARIOS: COUNT(SALARIO) / 40T TOTAL SALARIO: SUM(SALARIO) END-BREAK DISPLAY MATRICULA NOME CARGO DEPTO END-READ

54
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Exemplo de quebra composta:

FIND EMPREGADO WITH DEPTO = COMPRAS SORTED BY SECAO SETOR SERVICO DISPLAY MATRICULA NOME CARGO SALARIO AT BREAK OF SERVICO WRITE 10T CARGO: OLD(CARGO) / 40T MENOR SALARIO: MIN(SALARIO) / 40T MAIOR SALARIO: MAX(SALARIO) / 40T SALARIO MEDIO: AVER(SALARIO) / 40T TOTAL SALARIO: SUM(SALARIO) / 40T QTDE. FUNCIONARIOS: COUNT(SALARIO) END-BREAK AT BREAK OF SETOR WRITE 10T CARGO: OLD(CARGO) / 40T MENOR SALARIO: MIN(SALARIO) / 40T MAIOR SALARIO: MAX(SALARIO) / 40T SALARIO MEDIO: AVER(SALARIO) / 40T TOTAL SALARIO: SUM(SALARIO) / 40T QTDE. FUNCIONARIOS: COUNT(SALARIO) END-BREAK AT BREAK OF SECAO WRITE 10T CARGO: OLD(CARGO) / 40T MENOR SALARIO: MIN(SALARIO) / 40T MAIOR SALARIO: MAX(SALARIO) / 40T SALARIO MEDIO: AVER(SALARIO) / 40T TOTAL SALARIO: SUM(SALARIO) / 40T QTDE. FUNCIONARIOS: COUNT(SALARIO) END-BREAK END-FIND

4.10. Modularizao do Sistema 4.10.1.Define Subroutine


Este comando utilizado para definir uma subrotina, interna ou externa.

DEFINE SUBROUTINE nome-da-rotina Instrues END-SUBROUTINE Nome-da-rotina pode conter at 32 caracteres. A subrotina chamada atravs do comando PERFORM. Uma alterao na subrotina externa no condiciona recompilao do objeto que a chama.

55
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Subrotina Interna ... END-READ * DEFINE SUBROUTINE VALIDA-CAMPO IF #CAMPO <= 0 WRITE Campo invlido. ESCAPE ROUTINE END-IF IF #CAMPO-2 = WRITE Campo obrigatrio. END-IF END-SUBROUTINE Subrotina Externa DEFINE DATA PARAMETER 1 #SENHA (A5) 1 #RETORNO (L) END-DEFINE DEFINE SUBROUTINE TESTA-SENHA-ENTRADA IF #SENHA = 15488 #RETORNO := TRUE ELSE #RETORNO := FALSE END-IF END-SUBROUTINE END

4.10.1.1. Perform
Executa a chamada a uma rotina, interna ou externa. O controle devolvido instruo seguinte ao PERFORM, aps a execuo da subrotina.

PERFORM subrotina [parmetro-1 ... parmetro-n] O comando ESCAPE ROUTINE permite interromper a execuo de uma subrotina antes do seu trmino, devolvendo o controle para a instruo PERFORM.

DEFINE DATA LOCAL 1 FUNC VIEW OF FUNCIONARIO 2 NOME-FUNC 1 #COD-FUNC (N9) END-DEFINE INPUT USING MAP XXXM0013 PERFORM VALIDA-MAPA PERFORM ALTERA-REGISTRO ... DEFINE SUBROUTINE VALIDA-MAPA IF #COD-FUNC = 0 REINPUT Cdigo invlido. MARK *#COD-FUNC END-IF 56
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

... END-SUBROUTINE ... END

4.11. Utilizando Janelas 4.11.1.Define Window


Comando utilizado para especificar o tamanho, posio de uma janela.

DEFINE WINDOW nome-janela SIZE lin * col BASE lin / col [TITLE operando-1] FRAMED [ON] [OFF] [POSITION [ON]] [OFF] SIZE tamanho da janela, em linhas * colunas BASE posio de abertura da janela, em relao a uma janela normal (24 * 80), em linhas / colunas. TITLE ttulo da janela. Pode ser uma varivel alfanumrica ou uma constante. FRAMED se informado ON, a janela ter moldura. Se informado OFF, a janela no ter. POSITION deve ser informado apenas se a janela a ser exibida for maior do que a tela fsica. Se a janela for maior, ON mostrar na ltima linha uma informao de que existe mais janela a ser exibida. OFF desabilita a linha de posio. O comando DEFINE WINDOW apenas define uma janela, sendo necessrio o comando SET WINDOW para tornar a janela ativa.

DEFINE DATA LOCAL 1 #I (N3) END-DEFINE DEFINE WINDOW JANELA1 SIZE 13 * 10 BASE 5 / 12 FRAMED ON POSITION OFF * RESET #I ...

57
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.11.2.Set Window
Comando utilizado para ativar / desativar uma janela.

SET WINDOW nome-janela OFF

Com o comando SET WINDOW nome-janela, ativa-se a janela especificada, o que significa que as prximas instrues de entrada/sada utilizaro essa janela, at que a mesma seja desativada ou uma nova seja ativada. OFF desativa a janela lgica aberta atualmente.

DEFINE DATA LOCAL 1 #I (N3) END-DEFINE DEFINE WINDOW JANELA1 SIZE 13 * 10 BASE 5 / 12 FRAMED ON POSITION OFF * RESET #I SET WINDOW JANELA1 INPUT USING MAP XXXM0010 SET WINDOW OFF END

4.12. Utilizando Banco de Dados ADABAS 4.12.1.Store


A instruo STORE cria um registro em um arquivo ADABAS, especificado pelo seu nome. STORE [RECORD] [IN] [FILE] nome-view Para que a gravao seja efetivada, necessrio que seja dado o comando END TRANSACTION.

DEFINE DATA LOCAL 1 EMP VIEW OF EMPREGADO 2 MATRIC 2 NOME 2 DEPTO * 1 #OPCAO (A1) 58
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

END-DEFINE INPUT USING MAP XXXM0011 PERFORM CONSISTE-CAMPOS INPUT USING MAP XXXM0012 IF NOT(#OPCAO = S OR = N) REINPUT Opo invlida. MARK *#OPCAO END-IF IF #OPCAO = S STORE EMP END TRANSACTION END-IF END

4.12.2.Update
A instruo UPDATE atualiza valores de campos de um arquivo ADABAS. O registro atualizado sempre o ltimo lido anteriormente pelas instrues FIND, READ ou GET.

UPDATE [RECORD] [IN] [STATEMENT] [(R)]

O parmetro (R) pode ser especificado para atualizar um registro de um FIND/READ de nvel superior, informando o nmero da linha do primeiro FIND/READ entre parnteses. Se forem inseridas/apagadas linhas, o Natural automaticamente atualizar o nmero da linha especificada.

... FIND EMP WITH MATRIC = #MATRIC #ISN := *ISN END-FIND ... GET EMP #ISN MOVE 4012 TO EMP.COD-CARGO UPDATE END TRANSACTION ...

... READ TAB-SALARIO BY NIVEL-SALARIAL PISO := PISO * 1,25 UPDATE END TRANSACTION END-READ ...

4.12.3.Delete
A instruo DELETE exclui um registro do arquivo ADABAS. O registro excludo sempre o ltimo lido anteriormente pelas instrues FIND, READ ou GET. 59
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DELETE [RECORD] [IN] [STATEMENT] [(R)] O parmetro (R) pode ser especificado para deletar um registro de um FIND/READ de nvel superior, informando o nmero da linha do primeiro FIND/READ entre parnteses. Se forem inseridas/apagadas linhas, o Natural automaticamente atualizar o nmero da linha especificada. ... DEP. READ DEPENDENTE BY MATRIC FIND EMPREGADO WITH MATRIC = DEPENDENTE.MATRIC IF NO RECORDS FOUND DELETE (DEP.) END TRANSACTION END-NOREC END-FIND END-READ ...

... READ ARQUIVO DELETE END-READ END TRANSACTION ...

4.12.4.End Transaction
Este comando atualiza os registros dos comandos STORE, UPDATE e DELETE.

END TRANSACTION

O END TRANSACTION encerra uma transao lgica, fechando todos os cursores abertos. ... IF #CONFIRMA = S UPDATE(0500) END TRANSACTION END-IF ...

4.12.5.Backout Transaction
Este comando usado para cancelar atualizaes em um arquivo.

BACKOUT TRANSACTION

60
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

O BACKOUT TRANSACTION desfaz as atualizaes efetuadas no arquivo. As atualizaes somente sero desfeitas desde que no seja dado um END TRANSACTION. ... IF #CONFIRMA = S UPDATE(0500) END TRANSACTION ELSE BACKOUT TRANSACTION END-IF ...

4.12.6.Read
A instruo READ inicia um loop de processamento para leitura seqencial de um arquivo ADABAS.

READ [limite] nome-da-view IN PHYSICAL SEQUENCE BY ISN Descritor = operando-1 [thru operando-2] STARTING FROM operando1 [ENDING at operando-2] [WHERE condies]

Se no for especificada nenhuma clusula, o READ executar um acesso fsico tabela (da mesma forma que o parmetro IN PHYSICAL SEQUENCE). A opo BY ISN executa uma leitura na tabela pelo nmero de ISN (Internal Sequence Number) do registro. Quando o acesso feito por um descritor, os registros sero recuperados na ordem do descritor, podendo ou no ser especificado um valor inicial para pesquisa e um valor final, para limitar a leitura. A clusula WHERE estabelece condies de recuperao de registros. importante frisar que o comando READ, quando utilizado com acesso pelo descritor, quando no encontra um registro que satisfaa condio, recupera os registros a partir do prximo. Exemplo: READ VIEW BY MATRICULA = 24912 Se no houver matrcula com valor 24912, o READ recuperar registros a partir da primeira matrcula acima da informada. Outros exemplos: 61
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

READ CARGO READ(5) CARGO READ #LIMITE EMPREGADO READ TAB-UF BY SIGLA-ESTADO READ TAB-UF BY SIGLA-ESTADO = AL THRU CE READ EMPREGADO BY MATRIC = 1000 THRU 2000 WHERE LOCAL = BH DEFINE DATA LOCAL 1 FUNC VIEW OF EMPREGADO 2 MATRICULA 2 NOME 2 LOTACAO END-DEFINE READ(10) FUNC BY MATRICULA WHERE LOTACAO = DEPTO-002 DISPLAY MATRICULA NOME LOTACAO END-READ END DEFINE DATA LOCAL 1 CARGO VIEW OF TAB-CARGO 2 COD-CARGO 2 DESCR-CARGO 2 NFR-CARGO 2 DT-FIM-CARGO END-DEFINE READ CARGO BY COD-CARGO WHERE NFR-CARGO = 5 AND DT-FIM-CARGO = 999999 PERFORM ALTERA-NFR END-READ END DEFINE DATA LOCAL 1 ESTADO VIEW OF TAB-ESTADO 2 SIGLA-ESTADO 2 NOME-ESTADO END-DEFINE READ ESTADO DISPLAY ESTADO END-READ END

4.12.7.Find
A instruo FIND seleciona um conjunto de registros de um arquivo ADABAS e inicia um loop de processamento, onde os registros selecionados so lidos um a um. baseado em um critrio de pesquisa com base em uma chave definida. Se no for satisfeita a condio, nenhum registro retornado.

62
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

[ALL] FIND [Limite] nome-da-view WITH critrio-de-seleo [NUMBER] [WHERE condio-lgica] [SORTED BY campo-1 ... campo-3] [IF NO RECORDS FOUND] Instrues [END-NOREC] Instrues END-FIND ALL processa todos os registros. Limite pode ser estabelecido um nmero de registros a serem lidos. WITH especifica um critrio de seleo, aplicado a um campo descritor. NUMBER se for especificada a clusula NUMBER, o FIND no abre um lao, no precisando do END-FIND, mas apenas conta o nmero de registros que atendam aos critrios de seleo. O nmero de registros ser recuperado com a varivel de sistema *NUMBER. WHERE pode-se especificar critrios condicionais para a recuperao de registros. SORTED BY especifica campos (at 3) para ordenao. IF NO RECORDS FOUND caso no haja nenhum registro a recuperar com as condies especificadas, a clusula permite que se executem instrues. Para cada FIND estaro disponveis as seguintes variveis do sistema: *ISN contm o ISN (Internal Sequence Number) do registro em processamento. *NUMBER contm a quantidade de registros que foram selecionados pelo critrio de pesquisa. *COUNTER contm o nmero de vezes que o loop foi inicializado at o momento (antes da verificao da clusula WHERE). Exemplos:

FIND CARGO WITH COD-CARGO = 101 FIND CARGO WITH COD-CARGO > 100 WHERE NOME-CARGO < C FIND NUMBER CARGO WITH SITUACAO = 001 FIND ESTADO WITH SIGLA-ESTADO = MG AND DATA-NASC > #DATA-NASC FIND(20) FUNCIONARIO WITH SITUACAO = ATIVO

63
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DEFINE DATA LOCAL 1 DEPTO VIEW OF DEPARTAMENTO 2 COD-DEPTO 2 NOME-DEPTO 1 FUNC VIEW OF FUNCIONARIO 2 MATRICULA 2 NOME 2 COD-DEPTO 1 #MATR-FUNC (N9) 1 #COD-DEPTO (A6) END-DEFINE REPEAT INPUT USING MAP XXXM0050 IF *PF-KEY = PF3 ESCAPE BOTTOM END-IF FIND NUMBER FUNC WITH MATRICULA = #MATR-FUNC IF *NUMBER NE = 0 REINPUT Funcionrio j cadastrado. MARK *#MATR-FUNC END-IF FIND DEPTO WITH COD-DEPTO = #COD-DEPTO IF NO RECORDS FOUND REINPUT Departamento inexistente. MARK *#COD-DEPTO END-NOREC MOVE NOME-DEPTO TO #NOME-DEPTO END-FIND DISPLAY NOME-DEPTO NOME MATRICULA END-REPEAT END

4.12.8.Get
Comando utilizado para recuperao de um registro atravs do seu ISN. O nmero do ISN de um registro pode ser conhecido atravs da varivel de sistema *ISN, quando da sua recuperao atravs do FIND ou READ.

GET nome-da-view operando *ISN

O GET no inicia processo de loop. O operando pode ser uma constante ou uma varivel numrica.

DEFINE DATA LOCAL 1 CLIENTE VIEW OF CLIENTES 2 COD-CLIENTE 2 NOME-CLIENTE 1 #NUMERO-ISN (P10) END-DEFINE FIND CLIENTE WITH COD-CLIENTE = 2678 #NUMERO-ISN := *ISN 64
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

END-FIND INPUT USING MAP XXXM0099 IF *PF-KEY = PF5 GET CLIENTE #NUMERO-ISN DELETE END TRANSACTION END-IF END

4.12.9.Histogram
A instruo HISTOGRAM inicia um loop de processamento para uma leitura seqencial dos valores de um descritor de um arquivo ADABAS. O HISTOGRAM faz a leitura diretamente das listas invertidas do descritor, portanto no torna disponvel nenhum campo do arquivo usado.

HISTOGRAM [limite] nome-da-view [VALUE FOR FIELD] campo [STARTING FROM operando-1] [WITH] [THRU operando-2] [ENDING AT] Instrues END-HISTOGRAM Limite pode ser especificado um nmero ou varivel como limite. Nome-view nome da view, que deve Ter apenas os campos descritores declarados. Campo nome do campo a contar. Operando-1 / operando-2 especificao de critrio de seleo. Para a instruo HISTOGRAM esto disponveis as seguintes variveis do sistema: *ISN para descritores contidos em grupos peridicos, contm a ocorrncia em que o valor lido se encontra. Para os demais descritores contm zero. *NUMBER para cada valor do descritor, contm a quantidade de registros em que este valor aparece. *COUNTER contm a quantidade de valores lidos at o momento (antes da verificao da clusula WHERE).

DEFINE DATA LOCAL 1 FUNC VIEW OF EMPREGADO 2 #DEPTO END-DEFINE HISTOGRAM FUNC DEPTO 65
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

DISPLAY DEPTO *NUMBER END-HISTOGRAM END A execuo gera o seguinte resultado:

DEPTO *NUMBER ------ ------DEP001 6 DEP002 10 DEP003 8 DEP004 25 DEP005 11

4.13. Utilizando Banco de Dados DB2/SQL 4.13.1.Insert


Adiciona um ou mltiplos registros em uma tabela. INSERT INTO Tabela [(campo1[, campo2[, ...]])] VALUES (valor1[, valor2[, ...]) Exemplos utilizando as tabelas definidas acima: INSERT INTO dependente (Cdigo_scio, Cdigo_dependente, nome, data_nascimento) VALUES (1005 , 3 , Joana Filha de Joo , 20.07.2001) Notem que os campos definidos e os valores esto na mesma ordem. Havendo mais campos na tabela, no referidos na lista:

Se aceitam nulos, sero nulificados; Se no aceitam nulo e no tem clusula default, no haver a incluso com retorno de erro; Se no aceitam nulo e tem clusula default, o default ser assumido.

No somos obrigados a listar os campos. Se os valores estiverem na mesma ordem da criao da tabela e nenhum campo omitido (salvo no final), podemos informar somente os valores. Essa uma prtica imperdovel para um programador NATURAL ou COBOL. Qualquer alterao na tabela causar alterao no cdigo. Outro exemplo: 66
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

INSERT INTO Dependente (Cdigo_scio, Cdigo_dependente, nome, data_nascimento) VALUES (1213 , 3 , Joaquina , 20.07.2001); Neste caso, se estamos utilizando os corretos conceitos de restrio de integridade, no haver a incluso, pois na tabela scio no existe registro com chave 1213.

4.13.2.Select
o comando SQL que permite a consulta. Sua sintaxe :

SELECT [DISTINCT | ALL] {* | tabela.* | [tabela.]campo1 [AS alias1] [[tabela.]campo2 [AS alias2] [,...]]} FROM nome-da-tabela [, ...] [WHERE critrios] [GROUP BY ...] [UNION ...] [ORDER BY ...]

O comando seleciona os campos informados, no produto cartesiano das tabelas informadas, as tuplas que atendem aos critrios informados na clusula WHERE, ordenados pelas colunas informadas na clusula ORDER BY. Vamos a exemplos: Tabela Scio:

Cdigo_scio 1005 1006 1100 1212 Tabela Dependente:

Nome Joo Jos Francisco Maria

Data_associao 25/05/1998 26/05/2000 27/08/1999 12/12/1997

... ... ... ... ...

Cdigo_scio 1005 1005 1006 1006 1006 1212

Cdigo_dependente 1 2 1 2 3 1

Nome Joo Filho Maria Filha Jos Filho Maria Jos Jos Caula Mariana

Data_nascimento 14/07/1986 19/05/1998 13/06/1960 14/07/1961 15/08/1962 17/03/1966

... ... ... ... ... ... ...

67
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

SELECT Scio.nome, Dependente.nome FROM Scio, dependente WHERE Scio.Cdigo_scio = Dependente.Cdigo_scio ORDER BY Scio.nome, Dependente.nome

Scio.nome Joo Joo Jos Jos Jos Maria Vamos observar que:

Dependente.nome Joo Filho Maria Filha Jos Caula Jos Filho Maria Jos Mariana

O nome do scio foi repetido para cada um de seus dependentes; A ordem no est a mesma: o resultado foi ordenado pela ordem alfabtica; O scio Francisco no apareceu pois no tem dependente.

Vamos a outro exemplo utilizando as mesmas tabelas:

SELECT Scio.nome, count(*) as QTD FROM Scio, Dependente WHERE Scio.Cdigo_scio = Dependente.Scio_cdigo GROUP BY Scio.nome O resultado ser:

Scio.nome Joo Jos Maria

QTD 2 3 1

Vamos observar que: O SGDB contou quantas tuplas foram encontradas agrupada pela coluna Scio.nome; A coluna com as quantidades foi nomeada para QTD, obedecendo o alias informado; O scio Francisco no apareceu novamente.

Vamos ao mesmo exemplo com a clusula HAVING:

SELECT Scio.nome, count(*) as QTD 68


Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

FROM Scio, Dependente WHERE Scio.Cdigo_scio = Dependente.Cdigo_scio GROUP BY Scio.nome HAVING QTD > 1 O resultado ser: Scio.nome Joo Jos Vamos observar que: O SGDB retirou a ltima tupla; O scio Francisco no apareceu novamente. QTD 2 3

4.13.3.Update
Altera valores de campos em uma tabela especificada, com base em critrios especificados.

UPDATE tabela SET novovalor WHERE critrios

Exemplo:

UPDATE Dependente SET data_nascimento = 22.07.2001, Nome = Joaquina Filha de Joo WHERE Cdigo_scio = 1005 and Cdigo_dependente = 3

4.13.4.Delete
Remove os registros de uma ou mais tabelas que satisfaam aos critrios. DELETE FROM Tabela WHERE critrios Exemplo: DELETE FROM dependente WHERE Cdigo_scio = 1005 and Cdigo_dependente = 3 69
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

Outro Exemplo: DELETE FROM Scio WHERE Cdigo_scio = 1005 Novamente, se estamos utilizando os corretos conceitos de restrio de integridade, no haver a excluso, pois na tabela Dependente existem registro com chave 1005 que se tornaro rfos.

4.13.5.Comando WHERE
Especifica quais registros das tabelas listadas na clusula FROM so afetados por uma instruo SELECT, UPDATE ou DELETE. Se voc no especificar uma clusula WHERE, a consulta retornar todas as linhas da tabela, ou pior, todas as combinaes das linhas das tabelas em produto cartesiano.

4.13.6.Clusula GROUP BY
Combina registros com valores idnticos na lista de campos especificada em um nico registro. Um valor de resumo criado para cada registro se voc incluir uma funo agregada SQL, como SUM ou COUNT, na instruo SELECT.

4.13.7.Clusula HAVING
Especifica mais registros agrupados so exibidos na instruo SELECT com uma clusula GROUP BY. Depois de GROUP BY combinar os registros, HAVING exibir qualquer registro agrupado pela clusula GROUP BY que satisfaa s condies da clusula HAVING.

4.13.8.Clusula ORDER BY
Classifica os registros resultante de uma consulta em um campo ou campos especificados, em ordem crescente ou decrescente. Os registros so classificados pelo primeiro campo listado aps ORDER BY. Os registros que tem valores iguais naquele campo sero ento classificados pelo valor no segundo campo listado e assim por diante.

4.13.9.Operador IN
Determina se o valor de uma expresso igual a algum dos vrios valores em uma lista especificada. A sintaxe :

70
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

WHERE ... <campo> IN (<lista de valores>) Se <campo> for encontrado em <lista de valores>, o operador IN retornar TRUE; caso contrrio, retornar FALSE. A <lista de valores> pode ser uma lista simples, do tipo valores separados por vrgula ou um SELECT.

4.13.10.

Operador BETWEEN .. AND

Determina se o valor de uma expresso se situa dentro de um intervalo especificado de valores. Se o valor de expr estiver entre valor1 e valor2 (inclusive ambas as pontas), o operador BETWEEN ... AND retornar TRUE; caso contrrio, retornar FALSE.

4.13.11.

Operador LIKE

Compara uma expresso de seqncia com um padro em uma expresso SQL. Para padro, voc pode utilizar caracteres curinga (por exemplo, LIKE MAR%, para MAKROBOOKS) ou utilizar caracteres isolados (por exemplo, LIKE _OSE, para JOSE ou ROSE).

4.13.12.

Operador IS NULL

Verifica se o valor de um expresso nulo.

4.13.13.

Funo AVG

Calcula a mdia aritmtica de um conjunto de valores contido em um campo especificado em uma consulta.

4.13.14.

Funo COUNT

Calcula o nmero de registros retornado por uma consulta. Utilizando-se formato COUNT(*) todas as tuplas resultantes sero contadas. Se o formato COUNT(distinct <campo), a funo contar quantas ocorrncias diferentes esto presentes nas tuplas resultantes, excetuandose os nulos.

4.13.15.

Funes MIN, MAX

Retornam o mnimo ou o mximo de um conjunto de valores contido em um campo especificado em uma consulta. No considera nulos. Havendo somente nulos, resultar em nulo.

71
Desenvolvido por Luciano Perdigo

Curso Bsico de Natural

4.13.16.

Funo SUM

Retorna a soma de um conjunto de valores contido em um campo especificado em uma consulta. A funo SUM ignora os registros que contenham campos nulos. Havendo somente nulos, retornar nulo.

4.13.17.

Comando COMMIT

Torna permanente todas a operaes que alteraram o Banco de Dados e libera todos os locks desde o incio da transao, do ltimo COMMIT ou ROLLBACK.

4.13.18.

Comando ROLLBACK

Desfaz todas a alteraes (como os comandos INSERT, DELETE e UPDATE) feitas desde o incio da transao, ou do ltimo comando COMMIT ou ROLLBACK. Libera tambm todos os locks.

72
Desenvolvido por Luciano Perdigo

Você também pode gostar