Displays one or more source code lines from a routine.
The ZZPRINT command displays one or more source code lines from a specified ObjectScript routine. It can display a designated line of code and a specified number of lines that appear before and/or after that designated line of source code, enabling you to see it in context. The entry value specifies a starting point for display. However, ZZPRINT does not limit its display to the specified entry; offset, before, and after may include source code lines in prior or subsequent entries.
The displayed lines include all labels, comments, and whitespace, with the exception of entirely blanks lines. A blank line, whether in code or within a multiline comment, is neither displayed nor counted. For this reason, ZZPRINT displays and counts the following multi-line comment as two lines, not three:
/* This comment includes
a blank line */
ZZPRINT does not count or display preprocessor statements.
Command Delimiters and Blank Space Requirements
The delimiting quotation marks (" ") are required. The opening quotation mark must appear exactly one space after the command name or postconditional expression. Any number of spaces can appear following the opening quotation mark or proceeding or following the closing quotation mark.
The caret (^) prefix to the routine name is required. If you specify an offset, any number of spaces can precede the caret prefix. If you do not specify an offset, there must be no spaces between the entry name and caret prefix to the routine name.
The plus sign (+) is required to specify an offset. The plus sign must immediately follow the entry name (if specified). A plus sign not immediately followed by an integer represents an offset of zero. For example, a plus sign immediately followed by the caret (^) prefix, by a space, or by a non-number character all represent an offset of zero. A plus sign immediately followed by a integer represents a positive offset. A plus sign immediately followed by a negative integer represents a negative offset.
A colon (:) delimiter is required to specify a before line count. To specify an after line count you must specify both colon delimiters, whether or not you specify a before value. Any number of spaces are permitted before or after these colon delimiters.
An optional postconditional expression. InterSystems IRIS executes the command if the postconditional expression is true (evaluates to a nonzero numeric value). InterSystems IRIS does not execute the command if the postconditional expression is false (evaluates to zero). For further details, refer to Command Postconditional Expressions in Using ObjectScript.
The name of an entry within routine. Entry names are case-sensitive. If routine does not contain the specified entry, the system generates a <NOLABEL> error.
An integer specifying the number of lines to offset from the beginning of entry (if specified), or the beginning of routine. Omitting offset is the same as an offset of zero. An offset of zero from entry is the entry label line itself (line 1). An offset of zero from routine is the (nonexistent) line prior to the beginning of the routine (line 0). Therefore, to display a comment line at the beginning of a routine, you must specify an offset of 1 ("+1^mytest").
Offset counts include all source code lines except preprocessor statements and completely blank lines. These are neither displayed nor counted. An offset that exceeds the available lines in routine when counting from the specified (or implied) entry point returns a null string.
The name of the routine from which to display source code lines. Routine names are case-sensitive. If the specified routine does not exist, the system generates a <NOROUTINE> error.
You must have read permission for routine to be able to ZZPRINT it. If you do not have this permission, InterSystems IRIS generates a <PROTECT> error.
A positive integer specifying the number of lines to display before the specified line. This enables you to view a source code line in the context of the lines immediately prior to it. This is a count of lines backwards from a designated program line. The before count does not include the program line designated by "entry+offset^routine". If the before count is larger than the number of available code lines, ZZPRINT displays the available code lines; it does not issue an error.
A positive integer specifying the number of lines to display after the specified line. This enables you to view a source code line in the context of the lines immediately following it. This is a count of lines forwards from a designated program line. The after count does not include the program line designated by "entry+offset^routine". If the after count is larger than the number of available code lines, ZZPRINT displays the available code lines; it does not issue an error.
When you specify an after value, you can specify or omit a before value:
To display a designated program line and a specified number of lines after that line, specify a positive integer for after and a value of 0 for before.
To display all lines in the routine prior to the designated program line and a specified number of lines after that line, specify an after value without specifying a before value. (Just specify the placeholder colon.) If you specify an after without a before, ZZPRINT displays from the start of routine to the location after the designated program line specified by the after line count.
To display a specified number of lines before and after a designated program line, specify a positive integer for before and a positive integer for after.