Hello!

See this great links for Natural.

Natural Commands: http://www.lnatural.com/comandos.htm
(with many samples)

Natural Manuals.: http://www.lnatural.com/index_mf.htm
(downloads)

Example of Natural program:
(Observe that the character "*" in the first position of
line and "/*" in all positions of line, begins a comment.
The comment finish automatically at the end of line)

*******************************************************
* PROGRAM..: CURPRM00                                 
* ANALIST..: Rodolfo                                  
* DATE.....: 05/03/2007                               
* FINALITY.: MAIN MENU                                
*******************************************************
DEFINE DATA
*
PARAMETER /* recieve information from previous program
          /* who calls this program. Recommended that
          /* begins with "#"
*
01 #OPERACAO     (I04)
01 #SEQUENCIAL   (I02)
01 #ITEM-FIN     (I04)
01 #TIPO-ITEM    (I02)
01 #VALOR-ITEM   (N15,2)
01 #CONTA        (N03)
*
INDEPENDENT /* public variables (recommended that
            /* begins with "+")
01 +PROGRAM-NAME(A08)
01 +SYSTEM-NAME(A03)
*
LOCAL /* local variables (recommended that begins
      /* with "#")
*
01 #OPCAO        (N01)     
01 #MENSAGEM     (A60)     
*
01 #CURPRM02
   02 #NUMERO    (P03/10)  
   02 #RESTO     (P01)     
   02 #CALCULO   (P03)     
   02 #MENSAGEM  (A20/10) 
   02 #CONTA     (N02)
   02 #BANDEIRA  (P01)
   02 #BANDEIRA2 (P01)
*
01 #CURNRM03
   02 #MENSAGEM  (A20/10) /* shows results
   02 #BANDEIRA  (N01)    /* flag of invalid number
   02 #NUMERO    (N03/10) /* for input number
   02 #CONTROLE  (C/10)   /* control variable for
                          /* Natural MAP
*
01 #CONTA        (N3)               
01 #CONTA2       (N3)               
01 #CV-SEL       (C/140)            
01 #LINHA        (N7)      INIT <1> 
01 #PAGINA       (N3)      INIT <1> 
01 #PAGINAS      (N3)               
01 #LIXO         (N2)               
01 #MENSAGEM     (A60)              
01 #CONTROLE     (C/140) /* CV for #MENSAGEM (result)
01 #CONTROLE2    (C/140) /* CV for #MENSAGEM (result)
01 #MATRICULA    (A8/140)  
01 #NOME         (A60/140) 
01 #SELECAO      (A1/140)
01 #CURRENT-DATE (A10))    
*
END-DEFINE /* end of variables definitions
           /* and begins codification.
*                
SET KEY ALL      
SET CONTROL 'M-2'
*
SELECT CURRENT DATE       /* works with SQL too.
  INTO :#CURRENT-DATE
  FROM SYSIBM.SYSDUMMY1
*
REPEAT
  RESET #OPCAO
  INPUT USING MAP 'CURMRM00' /* calls a Screen to
                             /* input data.
  DECIDE ON FIRST VALUE OF *PF-KEY
    VALUE 'PF1'
      REINPUT FULL 'Help not implemented yet.'
    VALUE 'PF5'
      ESCAPE BOTTOM
    VALUE 'ENTR'
      DECIDE ON FIRST VALUE OF #OPCAO
        VALUE 1
          FETCH 'CURPRM01'
        VALUE 2
          SET CONTROL 'P=C' /* this command prepare
                       /* to calls a COBOL program.
          CALL 'CURPRM02' #CURPRM02 /* CALL performs
                           /* a non Natural program.
        VALUE 3
          CALLNAT 'CURNRM03' #CURNRM03
          /* CALLNAT performs a Natural program.
        VALUE 4
          PERFORM READ-ARCHIEVE
          /* performs a internal subroutine.
        NONE
          COMPRESS 'The option' #OPCAO
                   'does not exist.' INTO #MENSAGEM
      END-DECIDE                          
      REINPUT #MENSAGEM                   
    NONE VALUE                            
      REINPUT FULL 'function not allowed.'
  END-DECIDE                              
END-REPEAT                                

*******************************************************
DEFINE SUBROUTINE READ-ARCHIEVE
*******************************************************
#CV-SEL(*) := (AD=N)
REPEAT
  CALLNAT 'CURNRM04' #CONTROLE(*) #CONTROLE2(*)
                     #MATRICULA(*) #NOME(*) #CONTA
                      #CV_SEL(*)
  DIVIDE 14 INTO #CONTA GIVING #PAGINAS REMAINDER #LIXO
  IF #LIXO NE 0
     ADD 1 TO #PAGINAS
  END-IF
  INPUT USING MAP 'CURMRM04' /* calls a screen to input
                             /* and show data.
  DECIDE ON FIRST VALUE OF *PF-KEY
    VALUE 'PF1'
      REINPUT FULL 'Help not implemented yet.'
    VALUE 'PF3'
      FETCH 'CURPRM00'
    VALUE 'PF5'
      STOP
    VALUE 'PF6'
      REINPUT FULL 'Option not implemented yet.'
    VALUE 'PF7'
      IF #LINHA = 1
         #MENSAGEM := 'First page'                   
      ELSE                                           
        SUBTRACT 14 FROM #LINHA                      
        SUBTRACT  1 FROM #PAGINA                     
      END-IF                                         
      REINPUT FULL #MENSAGEM                         
    VALUE 'PF8'                                      
      IF #LINHA = 127 OR #MATRICULA(#LINHA+14) = ' ' 
         #MENSAGEM := 'Last page'                    
      ELSE                                           
         ADD 14 TO #LINHA                            
         ADD  1 TO #PAGINA                           
         RESET #MENSAGEM                             
      END-IF                                         
      REINPUT FULL #MENSAGEM                         
    VALUE 'ENTR'                                     
      IF #SELECAO(*) = 'C' /* OR #SELECAO(*) = 'A'
         CALLNAT 'CURNRM4A' #MATRICULA(*) #NOME(*)
                            #CONTA #SELECAO(*) 
      ELSE                                           
         REINPUT FULL 'Option not implemented yet.'  
      END-IF                                         
    NONE VALUE                                       
      REINPUT FULL 'Option not implemented yet.'     
  END-DECIDE                                         
END-REPEAT                                           
END-SUBROUTINE
*
*
*
END

Thank you very much!
Best Regards
Rodolfo
:-D

PS: I don“t know why but, every time I click on "preview", the indentation
loses itself.

-- 
<http://forum.pspad.com/read.php?2,46384,51668>
PSPad freeware editor http://www.pspad.com

Odpovedet emailem