- NATURAL, as the name suggests, is more "natural" to write. It is more forgiving with the programmer, as opposed to COBOL, which forces you to stick with very tough syntax.
- The wotk environment and the editor (either NATURAL editor or NSPF) is more comfortable to work.
- More builT-in Functions and system variables then in COBOL (for example, in NATURAL you can use *USER to get the user id, while in COBOL you have to navigate your way through control blocks).
- Modularization: As NATURAL was designed as structured 4th generation language, it supplies many features the make your application writing morE modular.
- Much of the work is done for you by NATURAL, for example: Pseudo-Conversational interactions are handled by NATURAL; Communicating with other CICS programs is done in full transperancy to the programmer etc.
- Comprehensive run time environment which allows the programmer to do almost anything, like interfacing with anything (databases, TSO, ISPF, other languages, HTTP etc.)
- Since NATURAL is an interpreted language (as opposed to compiled COBOL), for big batch processing you might experience some performance issues.
- Interaction with storage and MVS data areas is not straightforward (even REXX is better in this issue).
- The biggest disadventage: NATURAL wasn't developed by IBM...
By the way, you haven't said anything about ADABAS vs. DB2...
- First and important: Performance. As far as I know and feel in my daily work, ADABAS is faster then DB2. This argument can be verified at Wikipedia.
- Hierarchy: As opposed to DB2, ADABAS is hierarchical database. This means that you can have parent/child relationships whithin the same record. This saves much time in retrieving data.
- Utilities: ADABAS is delivered with dozens of utilities, which are easier to learn and use then DB2 utilities.
- Regarding NATURAL: ADABAS "speaks" with NATURAL in the same language. You can do most of the programmer's and DBA's work from within NATURAL run-time environment.
- All data is saved in compressed format.
- Less DBA activity in daily maintenance.
- The communication with some languages is shomewhat poor (it took me a month to develop a REXX access to ADABAS).
- Again, it wasn't debeloped by IBM...
Here's the deal: I interface with ADABAS from REXX in the following method:
1. Format the five essential buffers: Record, Value, Search, Format & ISN.
2. I format an area to be used as Control-Block, then I fill the appropriate positions with control-block information like command-id, command name, file number etc.
3. I allocate DDCARD.
4. I run ADABAS with all 6 areas as parameters.
Please note that this is a very tedious mission to invoke ADABAS directly from within REXX. However, you can do that much simpler if you create "bridges", for example by using Direct ADABAS commands from within COBOL, and invoking that COBOL as a function from REXX. Alternatively, you can invoke NATURAL directly from REXX, and use the STACK parameter to pass parameters to NATURAL.