quarta-feira, outubro 28, 2015

Definição de Objetos Natural

Os objetos Natural (programas, mapas, áreas de dados, etc.) são armazenados em bibliotecas (“Libraries”), que estão em um file no Adabas (seja FNAT ou o FUSER). Os programas Natural, fontes e objetos são identificados por nomes com formação igual aos nomes das bibliotecas, ou seja, até 8 caracteres, sendo o primeiro alfabético.

Os programas fontes são formados por linhas de até 72 posições, numeradas por 4 dígitos. Esta numeração é gerada pelo Natural durante a criação do programa e é usada pelo Compilador e Editores, e tem importantes funções lógicas dos programas.

Dentro das linhas, a disposição das instruções (statements ou comandos de programas) é livre, não havendo instruções nem parâmetros posicionais.

Tela dos programas;
 15:34:19               ***** NATURAL LIST COMMAND *****              27/10/2015
 User X105510             - LIST Objects in a Library -         Library NAT2CUR

 Cmd  Name       Type         S/C  SM Version  User ID    Date        Time
 ---  T>_______  *__________  *__  *  *______  *________  *__________ *________
 __   TERM1      Map          S/C  S  3.1.05   U300293    2003-11-04  16:10:06
 __   TERM2      Program      S    S  2.2.08   U801298    1998-07-24  17:20:24
 __   TERM3      Program      S    S  2.2.08   U900459    1998-01-30  10:48:02
 __   TERM4      Program      S    S  2.2.08   U801298    1998-07-30  15:27:40
 __   TEST       Program      S/C  S  4.1.04   U301693    2006-10-04  11:58:58
 __   TESTE      Program      S/C  S  2.2.08   U803198    1999-07-23  15:22:10
 __   TESTETE    Program      S    S  3.1.05   U300493    2003-11-10  14:58:59
 __   TESTE01    Program      S/C  R  3.1.05   U105510    2004-09-27  11:01:47
 __   TESTE02    Program      S/C  S  3.1.05   U105510    2004-10-01  15:31:50
 __   TESTE1     Local        S/C     2.2.08   U600169    1998-01-19  16:22:28
 __   TESTE2     Program      S/C  S  3.1.05   U300993    2003-11-04  14:36:24
 __   TESTE3     Subprogram   S    S  3.1.05   U300993    2003-10-14  10:49:09
 __   TESTE4     Program      S/C  S  3.1.05   U300993    2003-11-04  14:49:55
 __   TESTE5     Program      S/C  S  3.1.05   U300993    2003-11-04  14:51:21
                                                               14 Objects found
 Top of List.
 Command ===>
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help  Print Exit  Sort        --    -     +     ++          >     Canc
Os tipos de objetos naturais são definidos abaixo.

  • COPYCODE
    Pedaço de código fonte, que pode ser aproveitado em vários programas. Único objeto Natural que não é compilado. Nos programas aonde o COPYCODE vai ser aproveitado, através do comando INCLUDE, ele será compilado, juntamente com o programa.

  • GLOBAL
    Objeto utilizado para definição de variáveis. Todos os objetos que se referenciarem a uma GLOBAL, terão as mesmas variáveis, e estas manterão os valores após o término de um objeto, permitindo que um objeto altere valores e outro reconheça as alterações.

  • LOCAL
    Objeto utilizado para definição de variáveis. A diferença entre uma LOCAL e uma GLOBAL é que valores das variáveis locais somente serão reconhecidos pelo objeto onde foram declaradas, deixando de existir quando do término do mesmo.

  • PARAMETER
    Objeto utilizado para definição de variáveis que serão utilizadas entre programas e subprogramas.

  • MAP
    Utilizado para entrada e exibição de dados. Permite a definição de Regras de Validação 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 são chamados os outros componentes.

  • SUBPROGRAM (N)
    Objeto chamado por outro, com passagem de parâmetros, que permite o retorno de dados ao objeto chamador.

  • SUBROUTINE
    Uma sub-rotina é um pedaço de código 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 se escolhe a segunda opção, o tipo de objeto que conterá as sub-rotinas é o SUBROUTINE. As letras sublinhadas nos nomes dos objetos podem ser utilizadas logo após o comando EDIT, evitando a digitação completa do tipo de objeto.
Comandos de Manipulação na Linguagem Natural

Abaixo será destacado os comandos que podem ser executados dentro do Natural;


  • Comandos de Manipulação de Programas Fontes

    CHECK

    Checa a sintaxe do objeto atualmente na área de trabalho. Pode ser substituído por apenas ‘C’.
     NAT0169 Error in format/length or in EM, HD, PM definition.
     > check                               > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
     E 0070 01  #SALARIO-MEDIO (N405)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120   DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1

    SAVE

    Salva o programa fonte. Pode-se especificar o nome desejado logo após o comando. Pode ser substituído por apenas “SA”.
     > save                                  > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N4)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120   DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1

    PURGE

    O comando ‘PURGE’ é usado para deletar um ou mais programas fontes do Natural System File. O conteúdo existente em work-área não é alterado. Se o program-name não for especificado, será exibido um mapa com os programa fontes existentes no Natural System File, para especificação individual.
     > purge TERM2                           > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N4)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120   DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    Deletado;
     MORE
     15:57:21                ***** NATURAL PURGE COMMAND *****            27/10/2015
     Library NAT2CUR               - Delete Sources -          DBID   220 FNR    15
    
    
     Number     Source     Message
     ------     --------   ---------------------------
         1      TERM2      deleted 
    • Comandos de Manipulação de Programas Objetos

    CATALOG

    Cataloga o programa fonte da área de trabalho. Este comando checa a sintaxe e grava a versão executável do programa. Não grava o fonte. Pode ser substituído por apenas ‘CAT’.
    
     > CATALOG                               > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    UNCATALOG

    Apaga apenas o módulo carga, mantendo o módulo fonte.

    O programa TERM2 tem o programa fonte/objeto;
     16:07:47               ***** NATURAL LIST COMMAND *****              27/10/2015
     User X105510             - LIST Objects in a Library -         Library NAT2CUR
    
     Cmd  Name       Type         S/C  SM Version  User ID    Date        Time
     ---  TERM2>___  *__________  *__  *  *______  *________  *__________ *________
     __   TERM2      Program      S/C  S  4.1.04   U105510    2015-10-27  16:07:45
     __   TERM3      Program      S    S  2.2.08   U900459    1998-01-30  10:48:02
     __   TERM4      Program      S    S  2.2.08   U801298    1998-07-30  15:27:40
     __   TEST       Program      S/C  S  4.1.04   U693016    2006-10-04  11:58:58
     __   TESTE      Program      S/C  S  2.2.08   U198031    1999-07-23  15:22:10
     __   TESTETE    Program      S    S  3.1.05   U493004    2003-11-10  14:58:59
     __   TESTE01    Program      S/C  R  3.1.05   U105510    2004-09-27  11:01:47
     __   TESTE02    Program      S/C  S  3.1.05   U105510    2004-10-01  15:31:50
     __   TESTE1     Local        S/C     2.2.08   U600169    1998-01-19  16:22:28
     __   TESTE2     Program      S/C  S  3.1.05   U300993    2003-11-04  14:36:24
     __   TESTE3     Subprogram   S    S  3.1.05   U300993    2003-10-14  10:49:09
     __   TESTE4     Program      S/C  S  3.1.05   U300993    2003-11-04  14:49:55
     __   TESTE5     Program      S/C  S  3.1.05   U300993    2003-11-04  14:51:21
     __   TESTE6     Program      S/C  S  3.1.05   U300993    2003-11-04  16:22:51
                                                                   14 Objects found
     Top of List.
     Command ===>
     Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
           Help  Print Exit  Sort        --    -     +     ++          >     Canc
    O TERM2 tem fonte(s) e objeto(c)
     16:07:47               ***** NATURAL LIST COMMAND *****              27/10/2015
     User 0105510             - LIST Objects in a Library -         Library NAT2CUR
    
     Cmd  Name       Type         S/C  SM Version  User ID    Date        Time
     ---  TERM1>___  *__________  *__  *  *______  *________  *__________ *________
     __   TERM1      Map          S/C  S  3.1.05   U293002    2003-11-04  16:10:06
     __   TERM2      Program      S/C  S  4.1.04   U105510    2015-10-27  16:07:45
     __   TERM3      Program      S    S  2.2.08   U900459    1998-01-30  10:48:02
     __   TERM4      Program      S    S  2.2.08   U801298    1998-07-30  15:27:40
    
                                                                    4 Objects found
     Top of List.
     Command ===> UNCATALOG TERM2
     Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
           Help  Print Exit  Sort        --    -     +     ++          >     Canc
    Deletado o objeto
     MORE
     16:09:13                ***** NATURAL UNCAT COMMAND *****            27/10/2015
     Library NAT2CUR                - Delete Objects -          DBID   230 FNR    15
    
    
     Number     Object     Message
     ------     --------   ---------
         1      TERM2      deleted
    Agora o TERM2 não tem mais o objeto (C);
    16:09:59               ***** NATURAL LIST COMMAND *****              27/10/2015
     User 0105510             - LIST Objects in a Library -         Library NAT2CUR
    
     Cmd  Name       Type         S/C  SM Version  User ID    Date        Time
     ---  TERM*____  *__________  *__  *  *______  *________  *__________ *________
     __   TERM1      Map          S/C  S  3.1.05   U293002    2003-11-04  16:10:06
     __   TERM2      Program      S    S  4.1.04   U105510    2015-10-27  16:07:45
     __   TERM3      Program      S    S  2.2.08   U900459    1998-01-30  10:48:02
     __   TERM4      Program      S    S  2.2.08   U801298    1998-07-30  15:27:40
    
    
    
    
    
    
    
    
    
    
                                                                    4 Objects found
     Top of List.
     Command ===>
     Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
           Help  Print Exit  Sort        --    -     +     ++          >     Canc
    Comandos de Manipulação Mista de Programas

    STOW

    Checa a sintaxe do programa fonte da área de trabalho, salva e cataloga. Este comando executa internamente as funções dos comandos CHECK, SAVE e Catalog. Porém, ele somente salva o programa fonte se este não contiver nenhum erro.
     > stow                                  > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    SCRATCH

    Apaga o fonte e o módulo carga informado logo após o comando. Pode ser substituído por ‘SCR’.
     > scratch                                  > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    Comandos de Transferência/Limpeza de Work-Area

    READ

    Lê e transfere para a área de trabalho o programa fonte definido após o comando.

    Estou em um programa vamos dar um comando para ver outro programa;
     > read term3                            > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    Feito, estamos em outro programa;
     >                                       > +  Program     TERM3    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL
       0030 01 #TEXTO (A100)
       0040 01 REDEFINE #TEXTO
       0050   02 #LINHA1 (A50)
       0060   02 #LINHA2 (A50)
       0070 01 REDEFINE #TEXTO
       0080   02 #LETRA(A1/100)
       0090 01 #INDICE(N3)
       0100 01 #QTDE(N3)
       0110 END-DEFINE
       0120 REPEAT
       0130   SET KEY PF3
       0140   INPUT
       0150     10/10 'TEXTO:' #LINHA1         (AD=M)
       0160     11/10 '      ' #LINHA2         (AD=M)
       0170   IF *PF-KEY EQ 'PF3'
       0180     STOP
       0190   END-IF
       0200   #INDICE := 0
            ....+....1....+....2....+....3....+....4....+....5....+... S 33   L 1
    CLEAR

    Limpa a área de trabalho.
     > clear                                 > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    Feito, depois do clear;
     >                                       > +  Program              Lib NAT2CUR
     All    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010
       0020
       0030
       0040
       0050
       0060
       0070
       0080
       0090
       0100
       0110
       0120
       0130
       0140
       0150
       0160
       0170
       0180
       0190
       0200
            ....+....1....+....2....+....3....+....4....+....5....+... S 0    L 1
    RENUMBER (n)

    Renumera as linhas do programa fonte que estiver na work-area, em incrementos de 10.
     > RENUMBER                              > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 * -------------------------------------------------------------
       0010 * RENUMBER - teste para ver o que faz este comando natural
       0010 * -------------------------------------------------------------
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
            ....+....1....+....2....+....3....+....4....+....5....+... S 37   L 1
    Reordenou a ordem das linhas;
     >                                       > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 * -------------------------------------------------------------
       0020 * RENUMBER - TESTE PARA VER O QUE FAZ ESTE COMANDO NATURAL
       0030 * -------------------------------------------------------------
       0040 DEFINE DATA
       0050 LOCAL USING AAEL001
       0060 LOCAL
       0070 01  #INDICE (N2)
       0080 01  #QUANT(N2)
       0090 01  #SALARIO (N10)
       0100 01  #SALARIO-MEDIO (N5)
       0110 01  #EXTENSO (A50)
       0120 END-DEFINE
       0130 FORMAT PS=20 LS=133
       0140 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0150 * DISPLAY SALARY(1:12)
       0160   #SALARIO := 0
       0170   #QUANT := 0
       0180   #SALARIO := 0
       0190   FOR #INDICE 1 TO 12
       0200     IF SALARY(#INDICE) NE 0
            ....+....1....+....2....+....3....+....4....+....5....+... S 37   L 1
    SCAN

    Pesquisa um determinado ‘STRING’ dentro de um ou de todos os objetos de uma biblioteca.
     > scan JUSTIFIED                        > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    Mostra o que achou, linha 0300 e a 320 tem a palavra JUSTIFIED
     >                                       > +  Program     TERM2    Lib NAT2CUR
     Bot    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
       0210   END-FOR
       0220   IF #SALARIO NE 0
       0230     #SALARIO-MEDIO := #SALARIO / #QUANT
       0240   ELSE
       0250     #SALARIO-MEDIO := 0
       0260   END-IF
       0270   PERFORM EXTENSO #SALARIO-MEDIO #EXTENSO
       0280   WRITE PERSONNEL-ID 6X FIRST-NAME 1X #EXTENSO
       0290 END-READ
     S 0300 WRITE TITLE LEFT JUSTIFIED // 30T 'RELACAO DE SALARIO MEDIO'
       0310   / / 1T 'IDENTIFICACAO' 'NOME'17X 'SALARIO MEDIO'
     S 0320 WRITE TRAILER LEFT JUSTIFIED
       0330  'ADABASP1' 68T 'PAG'  *PAGE-NUMBER
       0340 END
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 15
    Comandos de Execução de Programas

    RUN

    Executa o programa atualmente da área de trabalho. O comando compila o programa antes de executá-lo. Pode ser substituído por apenas “R”.
     > run                                   > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 34   L 1
    Feito, foi rodando;
     MORE
     PAG      3
    
     1054          BRUNNO
     1055          CRISTIAN
     1056          CLAUDETE
     11            WILLIAN              TRINTA
     11100102      EDGAR                QUARENTA E CINCO MIL E OITOCENTOS E TRINTA E
     11100105      JUNIOR ARAUJO        SESSENTA E SETE MIL
     11100106      REINER               QUARENTA E SEIS MIL E SEISCENTOS E VINTE E C
     11100107      HELGA                TRINTA E QUATRO MIL
     11100108      WOLFGANG             QUARENTA E QUINHENTOS
     11100109      CHRISTA              TRINTA E SEIS MIL E SETECENTOS E CINQUENTA
     11100110      GEORG                SESSENTA E SETE MIL E CENTO E SESSENTA E SEI
     11100111      GABRIELE             TRINTA E SETE MIL E DUZENTOS E CINQUENTA
     11100112      GERHARDT             CINQUENTA E TREZENTOS E SETENTA E CINCO
     11100113      KLAUS                QUARENTA E NOVE MIL E SETECENTOS E CINQUENTA
     11100114      KLAUS                QUARENTA E NOVE MIL E QUINHENTOS
     11100115      MARION               TRINTA E SETE MIL
     11100116      ROLAND               QUARENTA E CINCO MIL E QUINHENTOS
     11100118      ROLF                 QUARENTA E UM MIL E SETECENTOS E CINQUENTA
    Comandos de Processos Especiais

    GLOBALS

    Exibe menu que está definido com uma série de ações e atributos que afetam tanto o resultado dos comandos como o resultado das instruções.
    As principais funções dos parâmetros são:

    · Definir característica dos relatórios e mapas;
    · Estabelecer limites p/quantidades de registros lidos, de páginas de relatórios, etc.;
    · Definir caracteres de controle.
     > GLOBALS                               > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 30   L 1
    Resultado
     16:35:23              ***** NATURAL GLOBALS COMMAND *****            27/10/2015
                                 - Session Parameters -
    
      (CC) Cond.Prog.Execution ....... OFF  (MT) Max.CPU Time ....... ______60
      (CF) Term.Control Character ....   %  (NC) Nat.Sys.Commands ........ OFF
      (DC) Dec. Character .............. ,  (OPF) Overw.Prot.Fields ......  ON
      (DFOUT) Date Format Output ....... S  (PD) Page Dataset ............ _50
      (DFSTACK) Date Format Stack Cmd .. S  (PM) Print Mode ............... RP
      (DFTITLE) Date Format Title ...... S  (PS) Page Size ............... _23
      (DU) Dump Generation .........   OFF  (REINP) Reinput on Error .....  ON
      (EJ) Page Eject ................  ON  (SA) Sound Alarm ............. OFF
      (FS) Default Format ............  ON  (SF) Spacing Factor ........... _1
      (FCDP) FC on Dyn.Prot.Fields ...  ON  (SL) Source Line Length ...... _72
      (IA) Input Assign ................ =  (SM) Structured Mode .........  ON
      (ID) Input Delimiter ............. |  (TS) Translate Sys.Prog ...... OFF
      (IM) Input Mode .................. F  (WH) Wait on Hold ............ OFF
      (LE) Limit Error ............... OFF  (ZD) Zero Division ...........  ON
      (LS) Line Size ................. _80  (ZP) Zero Printing ...........  ON
      (LT) Limit .............. __99999999
    
    
     Command ===>
     Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
           Help  Print Exit        Updat                                     Canc
    HELP

    Permite a exibição de mensagens de erro e comandos do Natural. Também pode ser acesso teclando “?”. Ambas as opções permitem a passagem do código diretamente (? 3148, por exemplo, exibe o conteúdo do código de erro 3148).
     > HELP                                  > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 30   L 1
    Resultado
     16:35:51               ***** NATURAL HELP UTILITY *****              27/10/2015
                               - Natural Program Editor -
    
     ------------------------------------------------------------------------------
    
                             Code  Function
    
                              C    Command Line
                              E    Edit Commands
                              L    Line Commands
                              K    Special PF-Key Functions
                              S    Cursor-Sensitive Commands
                              .    Exit
    
                      Code .. _
    
    
    
    
    
    
     ------------------------------------------------------------------------------
     Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
           Help  Menu  Exit                    -     +                       Canc
    PROFILE

    Mostra a profile de segurança corrente para o usuário.
     > PROFILE                               > +  Program     TERM2    Lib NAT2CUR
     Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
       0010 DEFINE DATA
       0020 LOCAL USING AAEL001
       0030 LOCAL
       0040 01  #INDICE (N2)
       0050 01  #QUANT(N2)
       0060 01  #SALARIO (N10)
       0070 01  #SALARIO-MEDIO (N5)
       0080 01  #EXTENSO (A50)
       0090 END-DEFINE
       0100 FORMAT PS=20 LS=133
       0110 READ EMPLOYEES-VIEW BY PERSONNEL-ID
       0120 * DISPLAY SALARY(1:12)
       0130   #SALARIO := 0
       0140   #QUANT := 0
       0150   #SALARIO := 0
       0160   FOR #INDICE 1 TO 12
       0170     IF SALARY(#INDICE) NE 0
       0180       #SALARIO := #SALARIO + SALARY(#INDICE)
       0190       ADD 1 TO #QUANT
       0200     END-IF
            ....+....1....+....2....+....3....+....4....+....5....+... S 30   L 1
    Resultado
     16:36:17                 ***** NATURAL EDITORS *****                 27/10/2015
                                  - Editor Profile -
    
     Profile Name .. X105510_
    
     PF and PA Keys
       PF1 ... HELP___________   PF2 ... _______________   PF3 ... EXIT___________
       PF4 ... _______________   PF5 ... _______________   PF6 ... _______________
       PF7 ... -______________   PF8 ... +______________   PF9 ... _______________
       PF10 .. SC=____________   PF11 .. _______________   PF12 .. CANCEL_________
       PF13 .. _______________   PF14 .. _______________   PF15 .. MENU___________
       PF16 .. _______________   PF17 .. _______________   PF18 .. _______________
       PF19 .. --_____________   PF20 .. ++_____________   PF21 .. _______________
       PF22 .. _______________   PF23 .. _______________   PF24 .. _______________
       PA1 ... _______________   PA2 ... SCAN___________   PA3 ... _______________
    
     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
    Clique Aqui - Clique Aqui
  • 0 comentários:

    Enviar um comentário