This document is intended for programmers who have never used Natural Construct. It introduces new users to the basic features and functions of the generation environment, as well as how Natural Construct works.
To get acquainted with the generation environment, follow the step-by-step instructions to create a simple menu program for an order entry application. If you encounter problems, try one or more of the following suggestions:
Display the online help as follows:
To view the help for a panel, press the help (PF1) key while the cursor is anywhere on the panel except an input field.
To view the help for an input field or select a parameter from a pop-up window, press PF1 or type "?" and press Enter when the cursor is in the field.
Note:
If you do not specify a required parameter, or enter an incorrect
one, Natural Construct will prompt you for the correct information.
Check relevant sections of Natural Construct Generation.
Visit our web site at www.softwareag.com to get timely product information, correspond with customer support representatives, or access related documents.
Although this guide deals mainly with the generation subsystem, Natural Construct contains two other subsystems. For information, see Help Subsystem, and Administration Subsystem.
This document covers the following topics:
Natural Construct is a powerful, easy-to-use, model-based application generator that helps you create and implement high-quality, robust Natural applications. It is built around and uses existing Natural facilities, which means that Natural Construct-generated applications can be deployed on most platforms or distributed across multi-tiered environments.
To Natural's production-oriented development environment and portable execution environment, Natural Construct adds:
a code generator (at a statement, as well as Natural object level)
a help maintenance system
a model maintenance system
These subsystems are described in the following sections.
As a code generator, Natural Construct offers a wide range of reusable program structures, called models. These models allow even inexperienced programmers to generate fully functional applications using high-level, fill-in-the-blank specifications. And Natural Construct uses data defined in Predict, Software AG's data dictionary, to provide the default model specifications, such as local views and field prompts. You can also create your own verification or referential integrity rules in Predict for use with your Natural Construct-generated applications.
The help subsystem is designed for non-programmers. It separates the coding of an application from the creation of the online documentation. This separation allows business users or technical writers to write the online help information and programmers to concentrate on programming. In addition, the help subsystem supports multi-lingual help text. For information about this subsystem, see Natural Construct Help Text.
The administration and modeling subsystem is used mainly by administrators. It allows them to modify the models supplied in the generation subsystem, create new models, and set security standards. For information about this subsystem, see Natural Construct Administration and Modeling.
There are many good reasons for using Natural Construct to create Natural applications. For example, you can:
Reduce development efforts by 50% (as reported by many customers)
Reduce training time and increase acceptance of new applications, as the generated programs have a consistent interface
Decrease the development time for complex applications and make fewer mistakes
Reduce checking and testing requirements; you can concentrate on the customized code
Reduce maintenance efforts by including business rules within the generated objects
Easily regenerate applications as requirements change
Natural Construct is based on the premise that most applications have common functional blocks of code. These blocks of code became object templates, called models, which ensure that the required and expected aspects of each object type are incorporated into the generated object in a standard way.
Rather than re-engineering redundant routines each time you create an object, you can use the Natural Construct models to produce functionality-rich business applications that incorporate state-of-the-art technology.
Natural Construct uses the following information to generate an object:
The chosen model
The model specifications supplied by the programmer
Predict data, as required
Data coded in the user exits (optional)
For more information about designing or implementing a Natural Construct application, see Implementation Methodology or Design Methodology in Natural Construct Generation.
Natural Construct supplies more than 100 models, which are available through the Generation main menu. These models generate various programs, subprograms, helproutines, data areas, maps, Natural statements, etc. You can also invoke the statement models from the Natural and User Exit editors.
For client/server environments, Natural Construct provides a series of object maintenance and browse models (Object-Maint and Object-Browse models). In addition, Natural Construct supplies user exit models to assist you in writing user exit code.
Which model you choose depends on what you are doing. For example:
For help: | Try: |
---|---|
Developing client/server applications | Object-Maint and Object-Browse models (for information, see Generate a Business Object). |
Remembering Natural syntax | Statement models (for information, see Writing Natural Statements). |
Testing Natural objects | Driver or Maint models (for information, see Testing Subprograms and Helproutines or Creating Test Data). |
Writing user exit code | User exit models (for information, see Object-Browse Models in Natural Construct Generation). |
Developing conventional applications (character-based interfaces) | Maint model and/or models beginning with Browse or Browse-Select; also the Start, Menu, and Quit models. |
Tip:
The Browse and Browse-Select models are similar. Both models generate
a browse (query) program that allows users to select and process a record, but
the Browse-Select model provides more options. A generated browse program
performs one pre-determined set of commands on a selected record (such as
delete a record or modify a record); a generated browse-select program allows
the user to specify which set of commands are performed.
Basically, the models can be grouped into four categories:
conventional
client/server
statement
user exit
Choose the model that provides the functionality you require. For example, to create the sample menu program later in this documentation, you'll use the Menu model. The following sections describe the most commonly used models in each category.
These models generate non-distributed programs, subprograms, helproutines, data areas, and maps. The models in this category include:
Model | Generates |
---|---|
Startup | A startup program that initializes the application environment and invokes the menu and quit programs. It provides an easy way to set up initial global variables for an application. |
Quit | A quit program that releases application resources. It provides a common exit point from anywhere in an application. |
Menu | A menu program that controls the flow of work modules in an application. |
Browse/Browse-Select | A simple or complex browse program, subprogram, or helproutine that queries the database and allows users to browse through and select data for processing. |
Maint | An online maintenance program that allows users to select a record from the database and then perform a maintenance function (delete, for example). The program controls all data access and user interface requirements. |
Map | An external Natural map. |
Batch | A program that runs in batch mode to create a report or update the database. |
Driver | A driver program you can use to test and debug Natural subprograms and helproutines. |
Shell | A skeleton program you can use as a template when developing Natural programs. |
For more information about these models, see the applicable section in Natural Construct Generation. For an example of using the Menu model, see Generate a Simple Program.
The models in this category generate the components required for a client/server application. They include:
Model | Generates |
---|---|
Object-Maint-Subp | An object subprogram that accesses data, performs updates, and enforces data integrity. |
Object-Maint-Dialog | An object dialog program that inputs the object map and invokes the object subprogram. |
Object-Browse-Subp | An object browse subprogram and the associated object PDAs, key PDAs, and restricted PDAs. |
Object-Browse-Dialog | A character-based dialog that works with an object browse subprogram. |
Object-Browse-Dialog-Driver | A driver program or helproutine that invokes an object browse dialog. |
For more information about the client/server models, see the applicable section in Natural Construct Generation. For an example of creating an object maintenance process, see Generate a Business Object.
The statement models generate blocks of code containing one or more Natural statements, which you can use as building blocks when creating user exit code or specialized programs. Using the statement models assists you with the statement syntax and reduces the time required to write recurring code segments and test your code.
Typically, you invoke the statement models from the User Exit and Natural editors using a .g line command and the model name in brackets. For example, enter .g(view) to invoke the View statement model. Enter the .g commands in the same position as other line commands, such as the .i (insert) or .d (delete) command.
A few of the commonly used statement models are:
Model | Generates |
---|---|
Callnat | A Natural CALLNAT statement, which calls a subprogram for execution. |
Decide-On | A Natural DECIDE-ON statement, which specifies multiple actions to be performed (depending on the contents of a variable). |
Get | A Natural GET statement, which reads a record with a given Adabas ISN (internal sequence number) without initiating a processing loop. |
View | The definition of a view, as derived from Predict. |
Natural Construct supplies more than 40 statement models. For information about these models, see Statement Models in Natural Construct Generation. For an example of using statement models, see Writing Natural Statements.
These models generate text member modules containing the field layout specifications for an object browse dialog. The models are invoked from the User Exit editor using the User-Exit statement model. The user exit models are:
Model | Generates |
---|---|
Input-Key | Layout specifications for input fields and prompts on the dialog. |
Export-Data-Fields | Layout specifications for column headers and fields exported to an ASCII file on a PC. |
Report-Data-Fields | Layout specifications for column headers and fields routed to a printer. |
Write-Data-Fields | Layout specifications for column headers and fields displayed on a screen. |
For more information, see User Exit Models and User-Exit Statement Model in Natural Construct Generation.
Each model has at least one specification panel to collect specifications that are common to the code generated by that model. To help you fill in the parameters, most models supply default values for key fields. You need only specify any additional parameters the model requires to generate the appropriate code.
To create a menu program, for example, you must specify the following parameters:
A menu heading
The codes a user types to access options listed on the menu
Descriptions of the options
The name of the program executed to perform each option
Other parameters allow you to include optional features in your program.
Tip:
When creating your specification documents, you can use the fields on
the specification panels as a checklist to determine which parameters may be
required.
Predict is a data dictionary system that centrally stores and manages all information about the metadata (data about data) for an organization. Natural Construct can use the metadata to accurately and consistently generate application code. Although a Natural Construct-generated application can be executed without Predict, the code generator relies on this metadata.
The main advantage of using Predict is that you can change the metadata and then regenerate the code to reflect the changes. For example, you can change a relationship between files in Predict, regenerate the code, and the new relationship is automatically incorporated.
Natural Construct uses the Predict metadata that describes:
File relationships, such as restricted or cascade delete constraints
File layouts
Field attributes, such as maximum occurrences, redefinitions, edit masks, validation rules, and headings
Field descriptions (for online help)
Note:
The help subsystem and Natural Construct-generated applications can
be implemented in an existing Natural environment without Predict. To do this,
you add the standard helproutine (CDHELPR) to the Natural map for which help is
required. For more information, see Providing Online Help for Your
Applications.
You can also create Predict metadata by documenting generated Natural objects. This option is available when you generate an object.
For more information about using Predict with Natural Construct, see Use of Predict in Natural Construct and Defining Objects and Relationships in Natural Construct Generation.
When specific customizations are required to fulfill your business
needs, you can add additional code in a user exit. User exits are strategic
points in the model outline, such as at the start of the program or after
input. You choose which user exit you want based on the location of the exit
within the code. If you are unsure of the location of a user exit, you can
generate and edit the Natural object. The position of each user exit is shown
in comments that begin with ** SAG Exit Point
followed by the name
of a user exit. For example:
** SAG Exit Point Change-History
These pointers indicate where the exit will be located in the generated code.
You enter user exit code in the User Exit editor, which you can access from the last specification panel for a model or when you enter U in the Function field on the Generation main menu. If you forget to choose an exit, you can display a list of available exits by entering "SAMPLE" on the command line in the editor.
You can place any Natural code within a user exit. The user exit code becomes part of the object's source code. If you regenerate the object, changes to the user exit code are always preserved.
Many models supplied with Natural Construct have user exits available. When you're creating an object, select the user exits you require and supply the appropriate code for each user exit. Natural Construct uses both the model specifications and the user exit code to create an object.
For more information, see User Exits for the Generation Models in Natural Construct Generation.
You're now ready to use Natural Construct to generate your first program the main menu for an order entry system. A main menu provides users with a selection of functions available within a system, such as the Generation main menu.
After generating the menu, you'll make a few changes to the specifications and regenerate the program.
The following diagram shows the modules used for the sample menu program:
The sample menu, as well as other sample programs described in this guide, require access to several modules used in the Natural Construct demo system. The demo system is a fully functional order entry system that was generated using the Natural Construct models (see Natural Construct Demo System in Natural Construct Generation). Natural Construct supplies the following demo systems:
SYSCSTDE (Adabas)
SYSCSTD2 (DB2)
SYSCSTDV (VSAM)
SYSCSTDS (SQL)
Note:
Examples in this guide refer to the SYSCSTDE demo system.
Before beginning this procedure, use the Natural SYSMAIN utility to copy the following modules from the demo library into your user library:
Module | Description |
---|---|
MYMAP | Map used by the object maintenance dialog example. |
NCGDA | Global data area (GDA) containing global variables. NCGDA is a modified copy of CDGDA, the standard global data area for Natural Construct-generated applications. |
NCOSCSTO | Drill-down browse subprogram invoked from NCOSCUST when the user selects an order. |
NCOSCUST | Browse program for the Browse Customer Orders option. |
NCOSODET | Subprogram used in the Callnat statement model example. |
NCTFWHS1 | Map used by the browse subprogram. |
NCTFWHSB | Browse subprogram invoked from NCTFWHSE when the user enters "B" in the Action field. |
NCTFWHSE | Maintenance program for the Maintain Warehouses option. |
Note:
If you encounter problems trying to access the demo system or files
(files beginning with NCST), your environment may not be set up. Contact your
system administrator to set up the environment.
This section describes how to use the Menu model to generate a menu program.
Note:
Before beginning the procedure, ensure that the required modules
have been copied to the current library. For a list of modules, see
Before You
Begin.
To generate the menu program
At the Natural prompt, logon to your Natural Construct library.
Enter "ncstg". The Generation main menu is displayed:
CSGMAIN N a t u r a l C o n s t r u c t CSGMNM0 Oct 22 Generation Main Menu 1 of 1 Functions ----------------------------------------------- R Read Specifications M Modify Specifications U User Exit Editor G Generate Source T Test Source E Edit Source S Save Source W Stow Source L List Modules C Clear Edit Buffer ? Help . Return ----------------------------------------------- Function ......... _ Module ............. ________ Panel ...... __ Model ............ ________________________________ Type ....... Command .......... ________________________________ Library .... MYLIB Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- help quit optns lang |
Tip:
Typing "M" on the main menu is the
equivalent of Create New.
For more information about the Generation main menu or the Generation subsystem, see Using the Generation Subsystem, in Natural Construct Generation.
Specify the following:
M | Function field |
MYMENU | Module field |
Menu | Model field |
Note:
If you do not specify a model name, Natural Construct displays a
selection window.
Press Enter. The Standard Parameters panel for the Menu model is displayed. Notice that some of the fields are filled in for you, based on values you specified on the main menu:
CUMNMA MENU Program CU--MA0 Oct 22 Standard Parameters 1 of 2 Module ............. MYMENU__ System ............. MYLIB___________________________ Global data area ... CDGDA___ With block ......... ________________________________ Title .............. Menu ..._________________ Description ........ This menu ...__________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ First heading ...... ________________________________________________ Second heading ..... ______________________________________________________ Command ............ _ Message numbers .... _ Password ........... _ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- right help retrn quit right main |
Type "First Heading for My Menu" in the First header field.
Note:
We aren't using the remaining fields on this panel. If you're
curious about what these fields are used for, you can type
"?" and press Enter to invoke Natural Construct's
online help or see General Model Specifications in
Natural Construct Generation.
Press Enter. The Additional Parameters panel is displayed:
CUMNMB MENU Program CUMNMB0 Oct 22 Additional Parameters 2 of 2 Map layout ......... ________ * Code Functions____________________________________ Program Name ------ --------------------------------------------- -------------- __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * __ _____________________________________________ ________ * Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- help retrn quit optns attr left userX main |
For this example, leave the Map layout field blank. This allows Natural Construct to create a default (internal) map layout. If you've created an external map layout tailored to your shop standards, you could type the name of that map in this field.
For more information about this panel, press PF1 (help) to invoke the online help or see Additional Parameters Panel in Natural Construct Generation.
Specify the following:
MW | 1st Code field |
Maintain Warehouses | On line to the right of the 1st Code field |
NCTFWHSE | 1st Program field |
BC | 2nd Code field |
Browse Customer Orders | On line to the right of the 2nd Code field |
NCOSCUST | 2nd Program field |
These parameters specify the codes the user enters to invoke the corresponding menu functions, the names of the functions, and the names of the programs invoked to perform the function.
Press Enter. You are returned to the Generation main menu.
Enter "G" in the Function field. A confirmation message is displayed, indicating that the generation was successful.
Enter "W" in the Function field. A confirmation message is displayed. Your menu program is now generated and stowed.
Note:
For more information about these functions, see Generate
Source Function and Stow Generated Source Function
in Natural Construct Generation.
To see the code generated by the Menu model, enter "E" in the Function field.
To see what the menu will look like to users, enter "T" in the Function field. The following menu is displayed:
MYMENU ***** First Heading for My Menu ***** Oct 22 5:18 PM Code Functions ---- ------------------------- MW Maintain Warehouses BC Browse Customer Orders ? Help . Terminate ---- ------------------------- Code: __ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- help retrn quit flip main |
Press PF2 (retrn). You are returned to the Generation main menu.
You've successfully created a sample menu program. Next, you'll see how easy it is to change a few of the specifications and regenerate the menu program.
Note:
If you have any problems creating the menu, see
Troubleshooting and
Debugging for possible reasons.
This section describes how to change some of the specifications for the menu and then regenerate the program. The procedure begins at the Generation main menu.
To change the specifications and regenerate the menu program
Enter "M" in the Function field.
Note:
"MYMENU" and
"Menu" should be displayed in the Module and Model
fields.
The Standard Parameters panel is displayed, showing the specifications you entered when you created the menu.
Enter "Second Heading for My Menu" in the Second header field. The Additional Parameters panel is displayed.
Select the word "Functions" and type "Options". On the generated menu, Options will be displayed instead of Functions.
Enclose the words "Maintain" and "Browse" within angle brackets (for example, <Maintain>Warehouses and <Browse>Customer Orders).
Angle brackets are the default intensify characters for Natural Construct. They indicate that the enclosed text is highlighted on the generated menu screen.
Tip:
Notice that the intensify characters are placed in the space
between words; they do not take up a physical space.
Press Enter. You are returned to the Generation main menu.
Enter "G" in the Function field. Natural Construct regenerates the menu program, incorporating your changes.
Enter "W" in the Function field. Your menu is now regenerated and stowed.
Enter "T" in the Function field. The following menu is displayed:
MYMENU ***** First Heading for My Menu ***** Oct 22 - Second Heading for My Menu - 5:21 PM Code Options ---- ------------------------- MC Maintain Warehouses BW Browse Customer Orders ? Help . Terminate ---- ------------------------- Code: __ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- help retrn quit flip main |
You've successfully changed the specifications and regenerated the menu program. Now that you're familiar with the generation subsystem, see Natural Construct for New Application Development for information about creating a Natural Construct business object.
A common task an analyst performs is writing the specifications for a new program. Natural Construct can help create a list of questions you can use to create these documents.
The first question is whether the program will be used in a client/server environment or as a stand-alone program. This answer restricts the range of models you should use.
The next question is whether the program will query or maintain data, which further restricts the model selection.
Once you've selected a model, you can use the fields on the model specification panels to determine what parameters may be required. For example, the following figure shows the first specification panel for the Menu model:
CUMNMA MENU Program CU--MA0 Oct 22 Standard Parameters 1 of 2 Module ............. MYMENU__ System ............. MYLIB___________________________ Global data area ... CDGDA___ With block ......... ________________________________ Title .............. Menu ..._________________ Description ........ This menu ...__________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ First heading ...... ________________________________________________ Second heading ..... ______________________________________________________ Command ............ _ Message numbers .... _ Password ........... _ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- right help retrn quit right main |
Use the fields on this panel to determine what information is required to create the menu program. For example:
What is the name of the menu program? This question is important if you must adhere to standardized naming conventions.
What will it do?
What is the first heading on the menu screen?
What is the second heading?
Will the menu allow users to access the Natural command line?
Will the menu be implemented in different languages?
Will the menu require security restrictions?
Press Enter to display the Additional Parameters panel and use the fields on that panel to determine other questions you need to answer. Once you have the answers to all these questions, you can easily write the specification document for the menu.
Natural Construct supplies many utilities to aid in the application development process. These utilities are described in different Natural Construct guides, depending on their function. The following table lists each guide and some of the utilities it describes:
Guide | Describes utilities to: |
---|---|
Natural Construct Administration and Modeling |
Transfer data across dissimilar platforms Print a list of all code frames Compare two source modules Compare modules in two libraries Convert Natural Construct components to uppercase |
Natural Construct Generation |
Transfer data across dissimilar platforms Export models to a work file Import models from a work file Insert all INCLUDE statements into generated code (used for debugging) Submit JCL Convert the contents of the source buffer to uppercase Regenerate multiple modules (either online or in batch) Trace and debug Natural modules |
Natural Construct Help Text |
Print a copy of help text members Unload members to a work file Load members from a work or PC file to the help text file Save the contents of the source buffer to the help text file |