ABL Reference content builder

The ABL Reference content builder extracts data on procedures, functions, and methods. 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). The content builder analyzes the code to find where procedures, functions, and methods are defined, what their parameters are, and where they are used.

Each parameter is stored as a child record for the appropriate procedure, function, or method. 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
ABLREFERENCE PROCEDURE The procedure name.
FUNCTION The function name.
METHOD The method name.

PARAMETER

The parameter name.

PROCEDURE-REF

The name of the referenced procedure.

FUNCTION-REF

The name of the referenced function.

METHOD-REF

The name of the referenced method.

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

Entry type

Attribute

Value

PROCEDURE

ACCESS-MODIFIER

PRIVATE

PARAMETER

PARAMETER-TYPE

INPUT, OUTPUT, or INPUT/OUTPUT.

DATA-TYPE

The parameter's data type.

LIKE

TRUE if defined with the LIKE option.

EXTENT

The extents, if any.

NO-UNDO

TRUE if set.

FUNCTION

RETURN-DATA-TYPE

ACCESS-MODIFIER

The data type returned by the function.

PRIVATE

METHOD

RETURN-DATA-TYPE

ACCESS-MODIFIER

The data type returned by the function.

PUBLIC, PROTECTED, or PRIVATE

FUNCTION-REF

DYNAMIC

TRUE if call uses DYNAMIC-FUNCTION.

PROCEDURE-REF

PERSISTENT

TRUE if procedure is run persistently.

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 procedure:

PROCEDURE activateSession :

  DEFINE INPUT PARAMETER pcSessType AS CHARACTER NO-UNDO.

  RUN storeAppServerInfo IN TARGET-PROCEDURE

    ("":U).

  DYNAMIC-FUNCTION("setSessionParam":U IN TARGET-PROCEDURE,

                   "client_SessionType":U,

                   pcSessType).

END PROCEDURE.

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

Content Type

Entry type

Entry

Attributes

Attribute values

ABLREFERENCE

PROCEDURE

activateSession

 

 

PARAMETER

pcSessType

PARAMETER-TYPE

INPUT

DATA-TYPE

CHARACTER

NO-UNDO

TRUE

PROCEDURE-REF

storeAppServerInfo

 

 

FUNCTION-REF

setSessionParam

DYNAMIC

TRUE

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: