Skip to main content

This version of the product is no longer supported, and this documentation is no longer updated regularly. See the latest version of this content.Opens in a new tab

PRINT

Displays lines of code from the current routine on the current device.

Synopsis

PRINT:pc lineref1:lineref2
P:pc lineref1:lineref2

Arguments

pc Optional — A postconditional expression.
lineref1 Optional — The line to be displayed, or the first line in a range of lines to be displayed. Can be a label name, a numeric offset (+n) or a label name and a numeric offset. If omitted, the entire current routine is displayed.
:lineref2 Optional — The last line in a range of lines to be displayed. To define a range, lineref1 must be specified.

Description

The PRINT command displays lines of code from the currently loaded routine. The output is sent to the current device. You establish the current device with the USE command. For the name of the current routine, access the $ZNAME special variable. For the device ID of the current device, access the $IO special variable.

Note:

The PRINT and ZPRINT commands are functionally identical.

The displayed lines include all labels, comments, and whitespace, with the exception that entirely blanks lines are neither displayed nor counted. For this reason, PRINT displays and counts the following multi-line comment as two lines, not three:

   /* This comment includes

      a blank line */ 

PRINT has two forms:

  • Without arguments

  • With arguments

PRINT without arguments displays all the lines of code in the currently loaded routine.

PRINT with arguments displays the specified lines of code. PRINT lineref1 displays the line specified by lineref1. PRINT lineref1:lineref2 displays the range of lines starting with lineref1 and ending with lineref2 (inclusive).

You can use the $TEXT function to return a single line of code.

Arguments

pc

An optional postconditional expression. Caché executes the PRINT command if the postconditional expression is true (evaluates to a nonzero numeric value). Caché does not execute the command if the postconditional expression is false (evaluates to zero). For further details, refer to Command Postconditional Expressions in Using Caché ObjectScript.

lineref1

The line to be printed or the first in a range of lines to be displayed or printed. Can be specified in either of the following syntactical forms:

  • +offset where offset is a positive integer specifying the line number within the current routine. +1 is the first line in the routine, which may be a label line. +0 always returns the empty string.

  • label[+offset] where label is a label within the routine and offset is the line number counting from the label (with the label itself counting as offset 0). If you omit the offset option, or specify label+0, Caché prints the label line. Note that with this form, offset actually evaluates to offset+1 because the label itself is counted as line 0. For example, label+1 prints the line after the label.

A label may be longer than 31 characters, but must be unique within the first 31 characters. PRINT matches only the first 31 characters of a specified label. Label names are case-sensitive, and may contain Unicode characters.

lineref2

The last line in a range of lines to be displayed. Specify in the same way as lineref1.lineref1 must be specified to specify lineref2. lineref1 and lineref2 are separated by a colon (:) character. No whitespace may appear between the colon and lineref2.

If lineref2 is earlier in the line sequence than lineref1, PRINT ignores lineref2 and displays the single line of code specified by lineref1.

Examples

Given the following lines of code:

AviationLetters
Abc
  WRITE "A is Abel",!
  WRITE "B is Baker",!
  WRITE "C is Charlie",!
Def WRITE "D is Delta",!
  WRITE "E is Epsilon",!
  /* Not sure about E */
  WRITE "F is Foxtrot",!

PRINT with no lineref arguments displays all nine lines, including the comment line.

PRINT +0 displays the empty string.

PRINT +1 displays the AviationLetters label.

PRINT +8 displays the /* Not sure about E */ comment line.

PRINT +10 displays the empty string.

PRINT Def or PRINT Def+0 display the Def WRITE "D is Delta",! line. This is a label line that also includes executable code.

PRINT Def+1 displays the WRITE "E is Epsilon",! line.

Range Examples

PRINT +0:+3 displays the empty string.

PRINT +1:+3 displays the first three lines.

PRINT +3:+3 displays the third line.

PRINT +3:+1 displays the third line; lineref2 is ignored.

PRINT +3:Abc+1 displays the third line. Both lineref1 and lineref2 are specifying the same line.

PRINT +3:abc+1 displays from the third line to the end of the routine. Line labels are case-sensitive, so the range endpoint was not found.

PRINT Abc+1:+4 displays lines 3 and 4.

PRINT Abc+1:Abc+2 displays lines 3 and 4.

PRINT Abc:Def displays lines 2, 3, 4, 5, and 6.

PRINT Abc+1:Def displays lines 3, 4, 5, and 6.

PRINT Def:Abc displays the Def WRITE "D is Delta",! line. Because lineref2 is earlier in the code, it is ignored.

See Also

FeedbackOpens in a new tab