The Package Line

The packageline lets you divide the external call tables into groups of external routine definitions, with each group identified by a single packagename. This is useful for organizational purposes. Each packagename should be unique to that external call table. A routine name should be unique within a given package or group, but may be re-used in a different package. This lets you use different external routines with the same name, giving you greater flexibility in naming external routines.

A packageline consists of the case-insensitive keyword PACKAGE followed by the name of the package, which is case-sensitive and must consist of 1 to 24 characters. Packagelines must occur before a zcentry ROUTINE line, never within a zcentry.

Each packageline specifies the package name for all subsequent external call table entries up to the next packageline. When processing an externref that includes both a packagename and a routine name, GT.M searches for the routine name from the specified packageline until it encounters that routine name or the next packageline. Packagenames should therefore be unique: if two identical packagenames appear in a table, GT.M will never encounter the second packagename, or the set of definitions that appears under it. If the externref does not include any packagename, GT.M searches the entire external call table, regardless of packagelines, until it encounters the first appearance of the specified routine name.