卡片标准

第七卷「大陆」广州治理篇 | 吹牛者 | 约 3475 字 | 编辑本页

马千瞩自从当了“D 日以来最强势政务院”的国务卿之后,头发又少了不少。他的日程以分钟计。挤出两个小时来参加会议,这算是莫大的“恩典”。冯诺知道自己这完全是“挠到了痒处”。

为了充分阐述自己的理念和方案,虽然条件不许可他搞个玻璃板的 PPT,但是他还是专门制作了“提纲”和“材料”。前者供领导抓纲契领的阅读;后者则是细节,领导有兴趣了就可以仔细阅读。

至于其他的与会者,都算是行家里手,只要提供一分简单的技术说明就可以了。

会议在政务院的会议室举行,冯诺首先介绍了自己的技术思路,目前讨论的各种技术方案,然后才进入正题。

“为什么要采用穿孔卡片?其实很清楚,就是为了解决数据处理中的三大难点。其一,文档尺寸、形状太多;其二,单个文档上记录的交易太多;其三,文档记录数据的形式和方法太多。换言之,就是标准化的问题。”

冯诺停了一会,平缓一下紧张情绪,觉得自己的声调有点偏高。他没想到杨云真的在报告里提了这八字没一撇的穿孔卡计算机系统,还钓来了督公这条大鱼。冯诺太清楚领导来参观对事业的重要性了,这不仅仅是个人在领导面前露脸的问题,就算领导一言不发听完就走,也会对这个项目的前途产生很重要的推动作用,和过去做生意请领导题个字是同样的道理。这机会必须抓住。

穿孔卡计算机的立项研讨会已经开过一次,基本确定了参加人员和大致计划。这次会议主要是对“穿孔卡片”本身的讨论。因为这穿孔卡计算机和手摇计算机不同,首先得确定数据载体——穿孔卡片的规格和各种标准,才能进行下一步的机械设计。元老院手里没有实物可以仿制,只能根据资料和卡片本身进行逆推。所以,项目的第一件事,就是确定穿孔卡片的标准。

冯诺当然极力拿到了负责这一块的任务,他本来就做了不少调研,又是企划院的代表,而那些搞机械和电力的元老对这事也不大感兴趣。

“因此,我们一开始就要确定好穿孔卡片规格,至少在民用领域的所有应用中全部统一。穿孔卡片有 45 列,80 列,90 列等类型,但最通用的,也是最早在美国 1890 人口普查中使用的,是‘霍勒里思’穿孔卡,后来又通称‘IBM 卡’。该卡由坚固耐用的卡片纸做成,印有 10 行 x80 列数字,每行的数字分别为 0-9。此外,卡上还有 11 和 12 两排打孔位置,但没有印刷记号。11 排亦称 X 排,12 排亦称 Y 排。其位置实际位于数字行列的上方。这两行,加第 0 行,又合称‘三行区’或‘高区’”。

“国内以前应用穿孔卡片的时期较短,行业也较为局限,因此,穿孔卡片的标准完全照搬 IBM 卡的标准。其制造标准如下:缺角矩形卡片,水平方向为长边,长度 187.32 毫米,误差不超过 0.12 毫米;垂直方向为短边,长度 82.55 毫米,误差不超过 0.18 毫米;厚度为 0.175 毫米,误差不超过 0.005 毫米。纸纤维方向应为水平方向。每边的不直度公差为 0.08 毫米,各对应边的不平行度公差为 0.08 毫米,相邻两边的不垂直度公差不超过 5 分,缺角夹角为 60 度。请大家查看分发到手的资料。”

“然后是打孔规格,卡片基准直线 X,即水平基准直线是卡片上缘直线,卡片基准点是右边缘上距 X 基准直线 41.27 毫米的点,卡片基准直线 Y 是通过基准点并与基准直线 X 垂直的直线。卡片平行于基准直线 Y 的 80 条直线称为卡片的‘列’,列间距 2.21 毫米,卡片平行于基准直线 X 的 12 条直线称为卡片的‘行’,行间距 6.35 毫米。穿孔形状为矩形,孔中心位于行与列的交点上,其长边平行于 Y,短边平行于 X,尺寸为长边 3.2 毫米,短边 1.4 毫米,误差不超过 0.05 毫米。同一横行上各代码孔的最小边缘距离应大于 0.51 毫米,孔中心线与行列标准线误差小于 0.25 毫米。”

会场一片安静,与会者大概都在怀疑他们能否造出读取和打孔这么精密卡片的设备来。而冯诺想的则是忘了把造纸厂的人请来参加讨论,眼下能否造出合乎规格的纸来都十分难说,想爬个科技树,步步都是坑啊,千头万绪。不过他早有准备,继续说道:

“这是 70 年代末期国内发布的穿孔卡片标准,其制造精度当然是为了满足穿孔卡计算机系统当时每分钟 1000 张到 2000 张卡片处理速度的要求来制订的。我们手里目前没有穿孔卡计算机系统早期的卡片标准,不过可以肯定,20 世纪初的技术达不到这样的精度标准,实际上,一则 50 年代的资料中,穿孔卡的尺寸被简单介绍为 18.6 厘米 x8.3 厘米。因此,适用于我们自制设备的穿孔卡精度及误差标准,还有待于在开发中进一步摸索。”

“穿孔卡的每一列可用来记录一个字符,包括从 0 到 9 的数字和 26 个英文字母,以及若干种符号,如等号,百分号等。每列记录一个字符,整个卡片共可以记录 80 个字符。”

“字符通过打孔实现,某列如果要表达一个数字,直接在第 0 行到第 9 行的对应行穿孔。如果某列要表达一个英文字母,则需要高区和数字区同时打孔。通常顶端还会印制该列的取值作为参考,具体方案请大家翻到资料附录 2。”

穿孔卡片的每一列都能够存储 1 个英文字母,其方案为: 12-1 A 11-1 J 0-1 / 12-2 B 11-2 K 0-2 S 12-3 C 11-3 L 0-3 T 12-4 D 11-4 M 0-4 U 12-5 E 11-5 N 0-5 V 12-6 F 11-6 O 0-6 W 12-7 G 11-7 P 0-7 X 12-8 H 11-8 Q 0-8 Y 12-9 I 11-9 R 0-9 Z

“三行区上打孔,搭配 1-9 数字行打孔,共有 3x9=27 中方案,除去 0-1 位置表示特殊符号‘斜线’,刚好能表示 26 个字母。有意思的是,之所以用 0-1 表示斜线,则是因为整个方案中,就只有这个编码两个孔的距离最近,技术实现难度较大。此外,其他的特殊符号则可以用每列穿 3 个孔的若干方案解决。霍勒里思代码里仅用了 8 号孔作为搭配的孔,但这同时也揭示了,3 孔编码在技术上是可能的。”

“之所以提到 3 孔编码,是考虑到中文编码的问题。”

这时会场出现了不少窃窃私语的声音。中文的编码是元老院应用穿孔卡的一大问题。当年穿孔卡计算机没有在国内自行生产,用途也不广泛,实际并无标准的中文编码方法。

穿孔卡比起元老们熟知的数据存储载体,容量实在小得可怜,每张 18.7x8.3 的卡片只能存 80 个字符,还只是英文字母。如果要是政府或者商务的业务处理也就罢了,大不了多用标准编号,比如几年前司凯德和洪璜楠力推的国家标准代码体系,终于有了用武之地。

仅就眼下人口普查的需求来说,性别、籍贯、出生地、出生时间、现居所、文化水平、家庭成分等问题其实都可以很容易地通过编码解决,过去 18 位身份证上面仅用了 6 位就表示了全国每个人的出生地。原因很简单,命中每一个编码的人都很多,编制编码表是合适的。学过数据库的人画个 ER 图就很容易发现本来就应该这么做。但是唯有一个字段,就是姓名,永远也绕不过中文编码的问题。人口普查表各字段的具体设计工作可以丢给民生省的人,可是这中文编码必须现在解决。

“其实中文编码问题不难解决,问题是占用空间太大。”

“1980 年颁布的《信息交换用汉字编码字符集》,通称 GB2312 编码,不仅仅规定了汉字在计算机上的表示方法,其实也定义了一套使用 4 位十进制数字表示汉字的方法,就是区位码。区位码收录了一级汉字 3755 个,二级汉字 3008 个,符号 682 个,基本满足当前需求。所以最简单的中文编码方法就是每 4 列编码一个汉字,大家以前高考的时候都涂过自己的姓名,当时用的就是区位码。”

“目前邮电部在全岛的电报系统已经基本铺设完成,电报员也培训了好几批。我看是不是直接用我们的标准中文电码更方便?人手也可以通用。”这时一直没怎么发言的绍宗开口了。

“区位码在每级汉字内部排序是按照拼音顺序,不怎么用培训吧。反而是标准电码是按部首排序的,实际上比掌握区位码难得多。”

“标准电码从 19 世纪末就有雏形,直接从清朝那时就编制了,是现阶段汉字编码的自然之选。”

“说话容易还是写字容易?标准电码从字形入手那是因为开始用电报的都是读书人阶层。我们的国民普及教育从拼音入手实际已经颠覆了过去的体系,普通人当然是用区位码更方便。”

“美国护照当年用的可一直是标准电码。”