调用 ESQL/C 过滤器

esql 命令可以自动调用 GBase 8s ESQL/C 过滤器 esqlmf 来处理非 ASCII 字符。

下图显示包含非 ASCII 字符的 GBase 8s ESQL/C 程序如何成为可执行程序。

图: 从非 ASCII 源程序创建 ESQL/C 可执行程序


此图显示包含非 ASCII 字符的 GBase 8s ESQL/C 程序如何成为可执行程序。
当设置下列环境变量时,指示 esql 如何调用 esqlmf
esqlmf 如何过滤 GBase 8s ESQL/C 源文件取决于 CC8BITLEVEL 环境变量的值。对于 CC8BITLEVEL 的每个值,下表显示 GBase 8s ESQL/C 处理器在 GBase 8s ESQL/C 源文件上调用的 esqlmf 命令。
CC8BITLEVEL esqlmf 操作
0 将文字字符串和注释中的所有非 ASCII 字符转换为八进制常量。
1 将文字字符串(但不是注释)中的非 ASCII 字符转换成八进制常量。
2 将文字字符串中的非 ASCII 字符转换成八进制常量,以确保非 ASCII 字符中的所有字节均设置了第 8 位。
3 不调用 esqlmf
重要: 要启动 CC8BITLEVEL 可以指定的 esqlmf 命令,必须将 ESQLMF 环境变量设置为 1
当将 CC8BITLEVEL 设置为 012 时,GBase 8s ESQL/C 处理器执行下列步骤:
  1. 使用 GBase 8s ESQL/C 预处理器将嵌入式语言语句(source.ec)转换为 C 语言源代码 (source.c)
  2. 使用 GBase 8s ESQL/C 过滤器 esqlmf 过滤预处理文件 (source.c) 中的非 ASCII 字符(如果 ESQLMF 环境变量为 1

    esqlmf 开始过滤之前,它创建具有 .c_ 文件扩展名的 C 源文件 (source.c) 的副本 (source.c_)。

  3. 通过 C 编译器编译过滤的 C 源文件 (source.c) 以创建目标文件 (source.o)
  4. 链接目标文件与 GBase 8s ESQL/C 库和您自己的库以创建可执行程序

如果未设置 CC8BITLEVELesql 即会转换文字字符串和注释中的非 ASCII 字符。您可以修改 CC8BITLEVEL 的值以反映 C 编译器的能力。