ABL Application Schema content builder

ABL Application Schema content builder

The ABL Application Schema content builder extracts data on temp-tables and ProDataSets from source files. The content builder first ensures that the catalog database contains the necessary records to specify the source file (catalog, root path, project, project relative path, and resource). Then it analyzes the code to extract the specific information.

The content builder creates parent and child records to describe the full schemas:

Entry type Child entry types Child entry types
TEMP-TABLE FIELD  
INDEX

INDEX-FIELD

DATASET BUFFER  
DATA-RELATION RELATION-FIELD

Any entry that has parent or child entries displays them as subnodes in the Meta Catalog Explorer view.

The content builder records the following data in the catalog:

Content type Entry type Entry
APPSCHEMA TEMP-TABLE The temp-table's name.
FIELD The name of a temp-table field.
INDEX The name of a temp-table index.
INDEX-FIELD The name of a field in a temp-table index.
DATASET The ProDataSet's name.
BUFFER The name of a ProDataSet buffer.
DATA-RELATION The name of a ProDataSet data relationship.
RELATION-FIELD The name of a field in a ProDataSet data relationship.

Depending on the entry type, the content builder also extracts the following attribute information for each entry:

Entry type Attribute Value
TEMP-TABLE NO-UNDO TRUE or FALSE.
GLOBAL TRUE if a global temp table.
SHARED TRUE if a shared temp table.
LIKE TRUE if defined with the LIKE option.

FIELD

DATA-TYPE The data type.
LIKE TRUE if defined with the LIKE option.
EXTENT TRUE if extents exist.
FORMAT The format, if any.
LABEL The label, if any.
INITIAL The initial value, if any.

INDEX

PRIMARY TRUE if a primary index.
UNIQUE TRUE if a unique index
WORD-INDEX TRUE if a word index.
INDEX-FIELD SORT ASCENDING or DESCENDING.
DATASET SHARED TRUE if a shared ProDataSet.
DATA-RELATION REPOSITION TRUE if applicable.

The content builder assigns IDs to each unique Entry and Attribute. It stores the location of these elements in the file, either as a line number or as characters from the file's beginning. The content builder also stores pointers to any parent or child entries.

For example, take the following temp-table definition:

  • DEFINE SHARED TEMP-TABLE ttOrd
  •     FIELD OrderNum AS DECIMAL
  •     FIELD CustName AS CHARACTER LABEL "Name"
  •     FIELD OrderDate LIKE Order.OrderDate
  •     INDEX OrderNum IS PRIMARY UNIQUE OrderNum
  •     INDEX CustOrder IS UNIQUE CustName OrderNum
  •     INDEX OrderDate OrderDate.

When the content builder analyzes this statement, it adds the following information to the database:

Content Type Entry type Entry Attributes Attribute values
APPSCHEMA TEMP-TABLE ttOrd SHARED TRUE
FIELD OrderNum DATA-TYPE DECIMAL
CustName DATA-TYPE CHARACTER
LABEL "Name"
OrderDate LIKE TRUE
INDEX OrderNum PRIMARY TRUE
UNIQUE TRUE
CustOrder UNIQUE TRUE
OrderDate

 

 

INDEX-FIELD

CustName SORT ASCENDING
OrderDate SORT ASCENDING
OrderNum SORT ASCENDING
OrderNum SORT ASCENDING

There are two OrderNum entries because two indexes use it.

As mentioned previously, the content builder also stores the data on any parent or child relationships for each entry.

When displayed in the Meta Catalog Explorer, you would see the following structure: