- NATURAL
-
NATURAL is a fourth-generation programming language from Software AG. It is largely used for building databases output in plain text form, for example.
* Hello World in NATURAL WRITE 'Hello World!' END
It has the
ESCAPE TOP
flow control instruction, which is similar tocontinue
in C, C++, Java and several other languages, except that it also works within subroutines to both return from the routine and then continue the calling statement's processing loop.Like
continue
, it avoids large amounts of indentation levels when using nested instruction blocks inside any loop.Example with ESCAPE TOP:
DEFINE DATA LOCAL 1 I (N3) /* 3 digits without decimals END-DEFINE FOR I = 2 TO 100 IF (I / 2 * 2) = I AND I > 2 WRITE 'Number' I 'is divisible by 2' ESCAPE TOP END-IF IF (I / 3 * 3) = I AND I > 3 WRITE 'Number' I 'is divisible by 3' ESCAPE TOP END-IF IF (I / 5 * 5) = I AND I > 5 WRITE 'Number' I 'is divisible by 5' ESCAPE TOP END-IF IF (I / 7 * 7) = I AND I > 7 WRITE 'Number' I 'is divisible by 7' ESCAPE TOP END-IF IF (I / 11 * 11) = I AND I > 11 WRITE 'Number' I 'is divisible by 11' ESCAPE TOP END-IF WRITE 'Number' I 'is prime' END-FOR END
The levels of indentation can be automatically adjusted with the STRUCT command in the Natural Editor.
The same example, without ESCAPE TOP:
DEFINE DATA LOCAL 1 I (N3) /* 3 digits without decimals END-DEFINE FOR I = 2 TO 100 IF (I / 2 * 2) = I AND I > 2 WRITE 'Number' I 'is divisible by 2' ELSE IF (I / 3 * 3) = I AND I > 3 WRITE 'Number' I 'is divisible by 3' ELSE IF (I / 5 * 5) = I AND I > 5 WRITE 'Number' I 'is divisible by 5' ELSE IF (I / 7 * 7) = I AND I > 7 WRITE 'Number' I 'is divisible by 7' ELSE IF (I / 11 * 11) = I AND I > 11 WRITE 'Number' I 'is divisible by 11' ELSE WRITE 'Number' I 'is prime' END-IF END-IF END-IF END-IF END-IF END-FOR END
Another powerful flow control instruction command is the
ESCAPE BOTTOM
, which is similar toESCAPE TOP
except that it continues the processing from end of the calling statement's processing loop. Example with ESCAPE BOTTOM:DEFINE DATA LOCAL 1 I (N3) /* 3 digits without decimals END-DEFINE FOR I = 2 TO 100 IF (I / 2 * 2) = I AND I > 2 WRITE 'Number' I 'is divisible by 2' ESCAPE BOTTOM END-IF IF (I / 3 * 3) = I AND I > 3 WRITE 'Number' I 'is divisible by 3' ESCAPE BOTTOM END-IF IF (I / 5 * 5) = I AND I > 5 WRITE 'Number' I 'is divisible by 5' ESCAPE BOTTOM END-IF IF (I / 7 * 7) = I AND I > 7 WRITE 'Number' I 'is divisible by 7' ESCAPE BOTTOM END-IF IF (I / 11 * 11) = I AND I > 11 WRITE 'Number' I 'is divisible by 11' ESCAPE BOTTOM END-IF WRITE 'Number' I 'is prime' END-FOR END
One thing that sets NATURAL apart from most other languages is its rich syntax. For example, many languages have a simple switch case statement that can be used to replace nested IF statements pertaining to a single variable. This is prone to logic errors since it is necessary to BREAK out of the statement programatically. NATURAL has a much cleaner/richer DECIDE statement which is easier to understand and code. Here are some examples of this:
DECIDE ON FIRST VALUE MARITAL-STATUS VALUE 'M' ASSIGN DESC = 'Married' VALUE 'D' ASSIGN DESC = 'Divorced' VALUE 'W' ASSIGN DESC = 'Widowed' ANY ASSIGN ONCE-MARRIED = TRUE NONE ASSIGN DESC = 'Single' END-DECIDE
External links
Categories:- Procedural programming languages
- Software AG
Wikimedia Foundation. 2010.