第四十章 Caché 命令大全 PRINT ZPRINT 命令

第四十章 Caché 命令大全 PRINT ZPRINT 命令

显示当前设备上当前例程的代码行。

重点

  1. 注意:PRINTZPRINT命令在功能上是相同的。
  2. 类文件不行,只能打印例程。

大纲

PRINT:pc lineref1:lineref2
ZP:pc lineref1:lineref2

参数

  • pc 可选-后置条件表达式。
  • lineref1 可选-要显示的行,或要显示的行范围内的第一行,指定为文字。可以是标签名称,数字偏移量(+ n)或标签名称和数字偏移量。如果省略,则显示整个当前例程。
  • :lineref2 可选-要显示的一系列行中的最后一行,指定为文字。要定义范围,必须指定lineref1。

描述

PRINT命令显示当前加载的例程中的代码行。使用ZLOAD加载例程。 ZLOAD加载例程的INT代码版本。对于当前例程的名称,请访问$ZNAME特殊变量。

输出将发送到当前设备。从终端调用时,当前输出设备默认为终端。可以使用USE命令建立当前设备。对于当前设备的设备ID,请访问$IO特殊变量。

注意:PRINTZPRINT命令在功能上是相同的。

PRINT显示例程的INT代码版本。 INT代码不计算或不包含预处理程序语句。例程的MAC版本中的完全空白行(无论是在源代码中还是在多行注释中)都由编译器删除,因此在INT例程中既不显示也不计数。因此,PRINT在MAC例程中将以下多行注释显示为两行,而不是三行:

   /* This comment includes

      a blank line */ 

MAC代码中的#;##;///注释可能不会出现在INT代码中,因此可能会影响行数和偏移量。

PRINT将编辑指针设置为其打印的行的末尾。例如,指定PRINT,然后ZINSERT“ SET y = 2”将该行插入例程的末尾;指定PRINT +1:+4,然后ZINSERT“ SET y = 2”将该行插入为第5行。$TEXT函数从当前例程中打印一行,但不更改编辑指针。

PRINT有两种形式:

  • 有参
  • 无参

不带参数的PRINT显示当前加载的例程中的所有代码行。

带参数的PRINT显示指定的代码行。 PRINT lineref1显示由lineref1指定的行。PRINT lineref1:lineref2显示以lineref1开头并以lineref2(含端点)结尾的行范围。

lineref参数使用例程的INT代码版本对行和行偏移进行计数。修改例程后,必须重新编译PRINT例程,以正确计算与源(MAC)版本相对应的行和行偏移量。

可以使用$TEXT函数返回一行INT代码。

参数

pc

可选的后置条件表达式。如果后置条件表达式为true(计算为非零数值),则Caché执行PRINT命令。如果后置条件表达式为假(计算为零),则Caché不执行命令。

lineref1

要打印的行或要显示或打印的行范围中的第一行。可以用以下两种语法形式之一指定:

  • +offset其中offset是一个正整数,指定当前例程中的行号。 +1是例程中的第一行,可以是标签行。 +0始终返回空字符串。
  • label [+ offset],其中label是例程中的标签,而offset是从标签开始计数的行号(标签本身计数为offset 0)。如果省略偏移选项,或指定label + 0,则Caché将打印标签行。 label + 1在标签之后打印该行。

标签的长度可能超过31个字符,但在前31个字符内必须唯一。 PRINT仅匹配指定标签的前31个字符。标签名称区分大小写,并且可能包含Unicode字符。

lineref2

要显示的行范围中的最后一行。以与lineref1相同的方式进行指定。必须指定lineref1才能指定lineref2。 lineref1和lineref2用冒号(:)字符分隔。在冒号和lineref2之间可能没有空格。

如果lineref2在行序列中指定的标签或偏移量早于lineref1,则PRINT会忽略lineref2并显示由lineref1指定的单行代码。

如果lineref2指定不存在的标签或偏移量,则PRINT从lineref1显示到例程的末尾。

示例

给出以下代码行:

不带行引用参数的PRINT显示所有九行,包括注释行。

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 +0 
    PRINT +1
    PRINT +8 
    PRINT +10
    PRINT Def 
    PRINT Def+1
  • 不带行引用参数的PRINT显示所有九行,包括注释行。
  • PRINT +0显示空字符串。
  • PRINT +1显示AviationLetters标签。
  • PRINT +8显示/* Not sure about E */注释行。
  • PRINT +10显示空字符串。
  • PRINT DefPRINT Def + 0显示Def WRITE“ D is Delta” ,!行。这是一个标签行,还包括可执行代码。
  • PRINT Def + 1显示WRITE“ E is Epsilon” ,!行。
DHC-APP>d AviationLetters^PHA.TEST.Command
A is Abel
B is Baker
C is Charlie
D is Delta
E is Epsilon
F is Foxtrot
AviationLetters
         /* Not sure about E */
         PRINT +0
Def      WRITE "D is Delta",!
         WRITE "E is Epsilon",!

范围示例

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 +0:+3 
    PRINT +1:+3 
    PRINT +3:+3 
    PRINT +3:+1 
    PRINT +3:Abc+1 
    PRINT +3:abc+1 
    PRINT Abc+1:+4 
    PRINT Abc+1:Abc+2 
    PRINT Abc:Def 
    PRINT Abc+1:Def 
    PRINT Def:Abc 
  • PRINT +0:+3显示空字符串。
  • PRINT +1:+3显示前三行。
  • PRINT +3:+3显示第三行。
  • PRINT +3:+1显示第三行; lineref2被忽略。
  • PRINT +3:Abc + 1显示第三行。 lineref1和lineref2都指定同一行。
  • PRINT +3:abc + 1从第三行显示到例程末尾。行标签区分大小写,因此未找到范围终点。
  • 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在代码的前面,因此将被忽略。
DHC-APP>d AviationLetters^PHA.TEST.Command
A is Abel
B is Baker
C is Charlie
D is Delta
E is Epsilon
F is Foxtrot
AviationLetters
Abc
         WRITE "A is Abel",!
         WRITE "A is Abel",!
         WRITE "A is Abel",!
         WRITE "A is Abel",!
         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 +0:+3
         PRINT +1:+3
         PRINT +3:+3
         PRINT +3:+1
         PRINT +3:Abc+1
         PRINT +3:abc+1
         PRINT Abc+1:+4
         PRINT Abc+1:Abc+2
         PRINT Abc:Def
         PRINT Abc+1:Def
         PRINT Def:Abc
abc()
         SET a=1,b=1,c=8
         WRITE "A is Abel",!
         WRITE "B is Baker",!
         WRITE "A is Abel",!
         WRITE "B is Baker",!
Abc
         WRITE "A is Abel",!
         WRITE "B is Baker",!
         WRITE "C is Charlie",!
Def      WRITE "D is Delta",!
         WRITE "A is Abel",!
         WRITE "B is Baker",!
         WRITE "C is Charlie",!
Def      WRITE "D is Delta",!
Def      WRITE "D is Delta",!
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342