ZLink

ZLINK Compilation
Examples of ZLINK
Auto-ZLINK
ZLINK, auto-ZLINK and Routine Names

If the current process does not contain a copy of a routine, the ZLINK command adds an executable GT.M routine to the current process. If the current process contains a copy of a routine and the routine is not active, the ZLINK command replaces the current routine process with a "new" version. If necessary, the ZLINK command compiles the routine prior to integrating it with the process.

The format of the ZLINK command is:

        ZL[INK][:tvexpr] [expr1[:expr2][,...]]
      

ZLINK cannot change a routine that GT.M is currently executing. An attempt to ZLINK an active routine results in a run-time error because changing a routine in progress could have unpredictable results. Before ZLINKing the routine, use the ZSHOW command to display the currently active routines, then remove it from the GT.M stack using ZGOTO, or the appropriate number of QUITs.

When the ZLINK command specifies a file, GT.M sets $ZSOURCE to that filename. By default, ZLINK and ZEDIT use $ZSOURCE for a filename when they have a missing or null argument. A subsequent ZLINK without an argument is equivalent to ZLINK $ZSOURCE. For more information on $ZSOURCE, refer to the appropriate section in the "Intrinsic Special Variables" chapter in this manual.

Because RMS does not permit the percent sign (%) in a file name, use an underscore (_) in place of the percent in the ZLINK file-specification for routines beginning with a percent sign.

[Note]

In order to ensure compatibility with GT.M versions that do not permit the percent sign (%) in a file name, use an underscore (_) in place of the percent in the ZLINK file name for routines beginning with a percent sign.

If the expression includes an explicit directory, ZLINK searches only that directory. Otherwise, if $ZROUTINES is not null, a ZLINK command uses $ZROUTINES to locate files. If $ZROUTINES is null, ZLINK uses the current directory. For more information on $ZROUTINES, refer to the appropriate section in the "Intrinsic Special Variables" chapter in this manual.

If the filename contains an explicit file extension, ZLINK processes the file according to the extension, object (.o) or source (usually .m). If the file name does not specify a file extension, ZLINK attempts to find and match both the object and source for a routine.

The following table illustrates how ZLINK processes the three possibilities of file extension.

ZLINK Operation Summary

EXTENSION SPECIFIED

EXTENSION SOUGHT BY ZLINK

RESULT

.o

.m

.o

found

link only

not found

error

.m or None

not found

found

compile and link

found

not found

link only

not found

not found

error

found .o file newer than .m and version okay

found .m file older than .o

link only

found .o file older than .m or version mismatch

found .m file newer than .o

compile and link