概要
PRINT コマンドは、現在ロードされているルーチンからコードの行を表示します。ルーチンをロードするには、ZLOAD を使用します。ZLOAD は、ルーチンの INT コード・バージョンをロードします。現在のルーチンの名前については、$ZNAME 特殊変数にアクセスします。
出力は、現在のデバイスに送られます。ターミナルから呼び出した場合、現在の出力デバイスは既定でターミナルになります。現在のデバイスは、USE コマンドで設定できます。現在のデバイスのデバイス ID については、$IO 特殊変数にアクセスします。
Note:
PRINT コマンドと ZPRINT コマンドは機能的に同一です。
PRINT は、ルーチンの INT コード・バージョンを表示します。INT コードではプリプロセッサ文はカウントされず、含まれることもありません。ルーチンの MAC バージョンの完全な空白行は、ソース・コード内にあっても、複数行コメント内にあっても、コンパイラによって削除されます。したがって、INT ルーチンには表示もカウントもされません。このため、PRINT では、MAC ルーチン内の以下の複数行コメントは、3 行ではなく 2 行で表示およびカウントされます。
/* This comment includes
a blank line */
MAC コード内のコメント #;、##;、および /// は、INT コードには表示されないことがあるため、行数やオフセットに影響が生じる場合があります。詳細は、"MAC コードのルーチンおよびメソッドに使用するコメント" を参照してください。
PRINT で、編集ポインタを出力した行の末尾に設定します。例えば、PRINT の次に ZINSERT " SET y=2" を指定すると、行がルーチンの末尾に挿入されます。また、PRINT +1:+4 の次に ZINSERT " SET y=2" を指定すると、行が第 5 行として挿入されます。$TEXT 関数は、現在のルーチンから 1 行を出力しますが、編集ポインタは変更しません。
PRINT には、以下の 2 つの形式があります。
引数なしの PRINT は、現在ロードされているルーチンのすべてのコードの行を表示します。
引数付きの PRINT は、指定されたコードの行を表示します。PRINT lineref1 は、lineref1 によって指定された行を表示します。PRINT lineref1:lineref2 は、lineref1 から lineref2 まで (両端を含む) の行を表示します。
lineref 引数は、ルーチンの INT コード・バージョンを使用して、行および行オフセットをカウントします。ソース (MAC) バージョンに対応する行および行オフセットを正しくカウントするために、ルーチンの変更後、PRINT のルーチンを再コンパイルする必要があります。
$TEXT 関数を使用して、単一の INT コード行を返すことができます。
例
以下のコード行が与えられた場合を示します。
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",!
lineref 引数なしの PRINT は、コメント行を含めて、9 行すべてを表示します。
PRINT +0 は、空の文字列を表示します。
PRINT +1 は、ラベル AviationLetters を表示します。
PRINT +8 は、コメント行 /* Not sure about E */ を表示します。
PRINT +10 は、空の文字列を表示します。
PRINT Def または PRINT Def+0 は、行 Def WRITE "D is Delta",! を表示します。これは、実行可能なコードも含むラベル行です。
PRINT Def+1 は、行 WRITE "E is Epsilon",! を表示します。
範囲の例
PRINT +0:+3 は、空の文字列を表示します。
PRINT +1:+3 は、最初の 3 行を表示します。
PRINT +3:+3 は、3 行目を表示します。
PRINT +3:+1 は、3 行目を表示します。lineref2 は無視されます。
PRINT +3:Abc+1 は、3 行目を表示します。lineref1 と lineref2 はともに同一行を指定しています。
PRINT +3:abc+1 は、3 行目からルーチンの最後までを表示します。行ラベルは大文字と小文字が区別されるので、範囲の端点が判別されません。
PRINT Abc+1:+4 は、3 行目と 4 行目を表示します。
PRINT Abc+1:Abc+2 は、3 行目と 4 行目を表示します。
PRINT Abc:Def は、2、3、4、5、および 6 行目を表示します。
PRINT Abc+1:Def は、3、4、5、および 6 行目を表示します。
PRINT Def:Abc は、行 Def WRITE "D is Delta",! を表示します。lineref2 はコード内で先に出現しているので、無視されます。