宏定义

PDF 的这个部分包含了用户定义的宏。宏是表示控制代码或一序列控制代码的一个助记符。助记符简化了对 PC 打印机控制序列的定义,使它更易于读取 PDF 中的信息。

下表显示了宏定义语句的结构。一个宏定义由四部分组成:

1 2 5 6
名称 EQU PC 打印机控制代码 注释

例如:

   FFF    EQU   0C               /* Form Feed */

第一部分是用户定义的助记符或宏名称。该名称的长度必须 为三个字符,并且决不能以数字开头。这有助于 定义一个有意义的助记符,如 P17 表示字符间距为 17.1。

第二部分 EQU 表示相等,并且必须编码为 EQU。

第三部分是十六进制控制代码,它是特定于 PC 打印机的。每个 PC 打印机生产商都可以 用不同的控制代码定义同一个打印机功能。例如,IBM® 4019 LaserPrinter 使用由“IBM® 个人打印机数据流 (PPDS)”定义的控制代码。Hewlett-Packard 打印机使用由 Hewlett-Packard 打印机控制语言 (PCL) 定义的控制代码。这些控制代码通常在随 打印机交付的手册中给出定义。

一些 PC 打印机手册把控制序列描述为 ASCII 符号的字符串,如 ESC J 1 K:另一些打印机则使用十六进制数,如 1B 57 01;还有一些使用十进制值,如 27 28 1。打印机定义 表编译器接受所有这些格式。

宏定义部分中的控制代码可以是以下任何一个:

  • 解释成 ASCII 值的单一字符
  • 解释为十六进制值的两位数
  • 解释为十进制值的三位数

如果您让控制代码部分为空白,或者如果您删除了它,字符 或控制代码将被解释为空串。如 果字符或控制代码在文件中的定义不止一次,使用最后一次的定义。

第四部分是注解部分。符号 /* 表示注解开始, 符号 */ 表示注解结束。注解可以 在打印机定义文件的任何地方编码,并且被 打印机定义表编译器忽略。

以下是 IBM® 4019 LaserPrinter 特有的宏定义语句的示例。

LFF EQU 0A                       /* Line Feed                  */
VTB EQU 0B                       /* Vertical Tab                */
FFF EQU 0C                       /* Form Feed                   */
CRR EQU 0D                       /* Carriage Return             */
P05 EQU 1B 57 01                 /* 5 Pitch-Characters/inch     */
P10 EQU 12                       /* 10 Pitch-Characters/inch    */
CDW EQU 1B 57 00                 /* Cancel Double Wide contin.  */
P17 EQU 12 0F                    /* 17.1 Pitch-Character/inch   */
LL8 EQU 1B 41 09 1B 32           /* Set line length 8 lines/inch*/
P12 EQU 1B 3A                    /* 12 Pitch-characters/inch    */
RES EQU 1B 5B 4B 07 00 05 31 01 A4 00 00 90
                                 /* The above macro resets the  */
                                 /* printer using the factory   */
                                 /* defaults.  See the IBM Laser*/
                                 /* Printer Technical Reference */
                                 /* manual.                     */

要说明宏是如何编码的,请考虑使用本例。要使主机打印作业打印出双倍字宽的 字符,您必须知道什么控制代码可以开启 您的 PC 打印机上的双倍字宽打印。在 IBM® 4019 LaserPrinter 上,开启双倍字宽打印的控制代码是 X'1B5701'。它可以被编码为:

BDW EQU 1B 57 01

其中 BDW 表示开始双倍字宽。

单是这样不会使 3270 主机打印向打印机发送 该控制。助记符必须包括在一个控制代码语句中, 如在文件的控制代码部分中描述的 START_JOB。

注:HCL Z and I Emulator for Windows 一起交付的 IBM® 4019 LaserPrinter 打印机定义文件已将这个控制代码定义为 P05 宏。请参阅 IBM® 4019 LaserPrinter“宏定义语句”样本中的第 9 行 (IBM4019.PDF 文件内容)。