Adabas and Natural Education

I have been teaching Adabas and Natural since they both were released in the United States (1974 for Adabas, 1978 for Natural). The classes have been evolving constantly. The seminars I teach today are the "descendants" of seminars designed many years ago. The material changes as new releases are announced. For example, the Natural 2.2 Update class was superceded in 1997 by a Version 2.3 Update class, followed in 2000 by both a Version 3 Update class (for mainframes) and a Version 4 Update Class ( for PCs running NT or Windows 2000). These classes, in turn, were replaced by the current classes which reflect Natural Version 4 on the mainframe and Natural Version 6 for Open Systems.

Rather than reproduce the entire course catalogue here (please contact me for a copy) I have chosen to present the class I teach most frequently.The Natural Master Class combines elements of the Natural 4 Update Class with material from an earlier Advanced Natural Workshop which focused on Natural performance and Natural features that are relatively unknown (or under utilized).

Natural Master Class

(Course Description)



There are three parts to the agenda. The first is concerned with changes that have appeared with the release of Natural 4.1 and 4.2. The second addresses an often overlooked aspect of Natural, namely efficiency. The final portion of the agenda covers a wide variety of statements and facilities. The three portions are interleaved to facilitate topics which span multiple areas (e.g. MultiFetch which is both new in Version 4 and is an important efficiency statement. There is deliberatly more than a weeks worth of material described below. As the class proceeds, the topics to be covered will be based on the needs and interests of the attendees. Thus, every presentation of this class is unique.

Part 1 - Natural Version 4 Update

Course Description

Version 4 of Natural is in production at most Natural shops. There are many changes in Version 4 that will dramatically alter the way Natural code is written. MULTIFETCH will make a major impact on performance for many systems. The advent of "large variables" (alpha and binary variables of up to one gig, yes, gig not meg) opens up a host of new programming approaches involving incore tables. In addition, DYNAMIC variables are now a part of the language, which allow for variables that adapt to the required length. Selection boxes provide a major enhancement to screen design. Not only are they more familiar to endusers, they provide a mechanism that obviates the need for data validation. There are a number of enhancements to subprogram linkage. The use of OPTIONAL will greatly facilitate maintenance and enhancement of subprograms. The use of BY VALUE and BY VALUE RESULT will remove constraints that have existed for inter object linkage. There are numerous enhancements that provide for simpler programming than was previously the case. The REPOSITION option for ESCAPE TOP will lead to code that is easier to read than the functionally similar code (with "dummy" REPEAT loops) that exists today. The advent of the delimiter TO as a complement to ENDING AT will not only simplify coding, but also offer performance improvement as well. There are other features which may, or may not, prove valuable to your shop based on your applications and system structures. There are new System Variables, new USR modules (including an important one for the Stack), new utilities (SYSOBJH replaces both SYSTRANS and SYSUNLD). All in all, an impressive array of new features. Why is this class important? Software AG's own documentation describes the new features. This class shows your programmers what to do with the new features. The Software AG documentation describes large Alpha variables. This class shows how to use such variables to create incore tables and how to efficiently access such tables. Knowing the basics of Multifetch is fine, but will your programmers avoid the performance and processing traps that wait to trap the unwary?

Course Topics

Part 2 - Natural Performance

Course Description

Way back when Natural was first developed I observed that the best thing about Natural was its ease of use, and the worst thing about Natural was its ease of use. This statement proved to be quite prophetic. Simple tasks in Natural can often be accomplished in a variety of ways. A casual programmer might simply "pick one", without considering the performance impact of their selection. Such an approach can lead to disastrous execution times. The purpose of this class is to convey information germane to performance that will allow programmers to identify the most efficient way to perform a given function. This can then be weighed, along with readability of code, maintainability of code, etc, to determine the most appropriate code for a given purpose. Topics will include consideration of the Natural/Adabas interface (size of Views, proper handling of MU's and PE's, READ and FIND), use of System Variables and Functions, Natural "facilities" (e.g. MULTIFETCH), "hidden" costs of various statements, etc. Since most of the class is conducted "live", the attendees get to see the impact of poor design and programming.

Course Topics

Part 3 - Programming with Natural

Course Description

Natural is far more than just a programming language; it is a development platform. There is a Debug facility which includes a mechanism to monitor and examine calls to Adabas. There is a family of "Terminal Commands" which include facilities for recording key strokes (very useful for user defined recordings), windowing (far beyond the capability of mere DEFINE WINDOW statements), screen scraping, etc. There are specialized editors. Of particular note, the Map Editor and its accompanying facilities like Processing Rules, Layouts, Helproutines, and Array facilities. The Programming language itself is quite rich. It contains statements to interface with users, statements to interface with Adabas, statements to manipulate characters and numbers. Many aspects of Natural programming will be covered in the Performance discussions. In addition, however, we will cover options that are not generally known or utilized.

Course Topics