FOREACH I4GL SE

时间:2012-09-13 17:40:21

标签: informix 4gl

我正在努力获得客户的姓氏,名字 - 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

PRINT语句后的分号意味着“抑制换行符”。因此,下一个PRINT语句在同一行继续。这就是你想要的效果非常有用;否则,不好。

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

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

然后使用它们:

PRINT extra_bold(), info.field