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
