1

我试图让客户的姓氏,名字 - dob,我得到的所有东西都打印在同一个地方,知道吗?

         declare n_curs cursor for
              select unique pin,surname,given1,given2,dob from crcharge where
              chargenum in (select chargenum from crbookdd where book_no = rpt.book_no)
         order by surname,given1

            print ESC, "&l4E"

      foreach n_curs into t_pin, t_surname, t_given1, t_given2, t_dob
          if kick_new then
            print column 1, ESC, "&a0G", ESC, "&l3O", ESC, "&f4y3X",
                            ESC, "&l8D",ESC, "&l4E"
         end if
           let shtwrd_count = 0
        if shtwrd_count > 6 then
            let shtwrd[shtwrd_count] = t_shtwrd
            let shtwrd_count = shtwrd_count + 1
      Exit foreach
        end if
           print
           print  ESC,"&a6R", ESC, "&a3C",
                  upshift(t_surname) clipped, ",",
                  updown(t_given1) clipped," " ,
                  updown(t_given2) clipped,"-", t_dob clipped;

       end foreach
4

2 回答 2

1

因为您的转义序列在 CR(回车)之后抑制了 LF(换行)。

于 2012-09-14T04:54:48.347 回答
1

PRINT 语句后的分号表示“禁止换行”。因此,下一个 PRINT 语句在同一行继续。当这是您想要的效果时非常有用;否则,不好。

另外,作为一些建议,您应该参数化转义序列。如果您不这样做,那么当您需要更改打印机或终端类型时,生活将变得非常困难。创建命名效果并返回正确字符串的函数:

FUNCTION extra_bold()
    RETURN ESC, "&a6R"   -- Or whatever
END FUNCTION

然后使用它们:

PRINT extra_bold(), info.field
于 2012-09-14T14:09:24.280 回答