DBSHORT - Interpretation of Database Field Short Names

This Natural profile and session parameter can be used to determine the interpretation of database field short names.

A database field defined in a DDM is described by two names:

  • the short name with a length of 2 characters, used by Natural to communicate with the database (especially with Adabas);

  • the long name with a length of 3-32 characters (1-32 characters, if the underlying database type accessed is DB2/SQL), which is supposed to be used to reference the field in the Natural programming code.

Under special conditions, you may reference a database field in a Natural program with its short name instead of the long name. This applies if running in Reporting Mode without Natural Security and if the database access statement contains a reference to a DDM instead of a view.

The decision if a field name is regarded as a short-name reference depends on the name length. When the field identifier consists of two characters, a short-name reference is assumed; a field name with another length is considered as a long-name reference. This standard interpretation rule for database fields can additionally be influenced and controlled by setting the compiler option DBSHORT to ON or OFF:

Possible settings ON Using a short name is allowed for referencing a database field.

However, a data base short name is not permitted in general (even if DBSHORT=ON)

  • for the definition of a field when a view is created;

  • when a DEFINE DATA LOCAL statement was specified;

  • when running under Natural Security.

OFF A database field may only be referenced via its long name. Every database field identifier is considered as a long-name reference, regardless of its length.

If a two character name is supplied which can only be found as a short name but not as a long name, syntax error NAT0981 is raised at compile time.

This makes it possible to use long names defined in a DDM with 2-byte identifier length. This option is essential if the underlying database you access with this DDM is SQL (DB2) and table columns with a two character name exist. For all other database types (for example, Adabas), however, any attempt to define a long field with a 2-byte name length will be rejected at DDM generation.

Moreover, if no short-name references are used (what can be enforced via DBSHORT=OFF), the program becomes independent of being compiled without Natural Security.

Default setting ON  
Dynamic specification yes
Specification within session yes
Applicable statements OPTIONS
Applicable command Either GLOBALS or DBSHORT option of COMPOPT

Examples:

Assume the following data base field definition in the DDM EMPLOYEES:

Short Name Long Name
AA PERSONNEL-ID

Example 1:

OPTIONS DBSHORT=ON
READ EMPLOYEES 
  DISPLAY AA      /* data base short name AA is allowed
END

Example 2:

OPTIONS DBSHORT=OFF
READ EMPLOYEES 
  DISPLAY AA      /* syntax error NAT0981, because DBSHORT=OFF
END

Example 3:

OPTIONS DBSHORT=ON
DEFINE DATA LOCAL
1 V1 VIEW OF EMPLOYEES
  2  PERSONNEL-ID
END-DEFINE
READ V1 BY PERSONNEL-ID 
  DISPLAY AA     /* syntax error NAT0981, because PERSONNEL-ID is defined in view;
                 /* (even if DBSHORT=ON)
END-READ
END