6.7.4.4 Binary and Hexadecimal Numeric Formats
二进制和十六进制格式主要为了与现有机器格式兼容而设计,并非为了人类可读性。因此它们都以 F 格式作为默认输出格式。其中部分格式仅能在字节序(大小端)或浮点格式兼容的机器之间移植。
二进制格式使用的字节值在文本文件中会被解释为特殊控制功能,例如回车与换行。因此,二进制格式的数据不应包含在语法文件中,也不应从普通文本文件这类变长记录的数据文件中读取。它们可以从定长记录的数据文件读取或写入此类文件。有关定长记录的处理,请参见 FILE HANDLE。
P and PK Formats
这些是二进制编码的十进制格式,其中每个字节(P 格式中除最后一个字节外)表示两个十进制数字。第一个字节中最高有效 4 位是最高有效十进制数字,第一个字节中最低有效 4 位是下一个十进制数字,依此类推。
在 P 格式中,最后一个字节的最高有效 4 位是最低有效十进制数字。最低有效 4 位表示符号:十进制 15 表示负值,十进制 13 表示正值。
输出时数字向下舍入。系统缺失值以及超出可表示范围的数字输出为零。
最大字段宽度为 16。小数位数范围为 0 到字段所表示的十进制数字个数。
默认输出格式为 F 格式,其宽度为输入字段宽度的两倍,再加一列用于小数点(若要求小数位)。
IB and PIB Formats
这是整数二进制格式。IB 读写 2 的补码二进制整数,PIB 读写无符号二进制整数。字节序默认为宿主机的字节序,但可使用 SET RIB 为读取选择特定字节序(参见 SET RIB),类似地,可用 SET WIB 为写入选择(参见 SET WIB)。
最大字段宽度为 8。小数位数范围为 0 到该字段宽度所能表示的最大值中的十进制数字个数。
默认输出格式为 F 格式,其宽度为该字段宽度所能表示的最大值中的十进制数字个数,若格式有小数位则再加 1。
RB Format
这是实数的二进制格式。默认读写宿主机的浮点格式,但可使用 SET RRB 为读取选择另一种浮点格式(参见 SET RRB),类似地,可用 SET WRB 为写入选择(参见 SET WRB)。
推荐的字段宽度取决于浮点格式。NATIVE(默认格式)、IDL、IDB、VD、VG 和 ZL 格式应使用字段宽度 8。ISL、ISB、VF 和 ZS 格式应使用字段宽度 4。其他字段宽度不会产生有用结果。最大字段宽度为 8。不可指定小数位。
默认输出格式为 F8.2。
PIBHEX and RBHEX Formats
这些是十六进制格式,用于读写二进制格式,其中每个字节被重新编码为一对十六进制数字。
十六进制字段仅由十六进制数字 ‘0’…‘9’ 和 ‘A’…‘F’ 组成。输入时接受大写和小写;输出为大写。
除十六进制表示外,这些格式分别等价于 PIB 和 RB 格式。不过,PIBHEX 格式中的字节始终按最高有效字节在前(大端序)的顺序排列,不受宿主机本机字节序或 PSPP 设置影响。
字段宽度必须为偶数,且在 2 到 16 之间。RBHEX 格式不允许小数位;PIBHEX 允许的小数位数与宽度为给定宽度一半的 PIB 格式相同。