走近2000年问题
冀建疆
(水利部水利水电规划设计总院 100011)伴着世纪的钟声,我们将进入一个新的纪元。随着这个巨人的走近,一个令全球恐慌的问题棗2000年问题也越来越显得引人注目。
1 2000年问题的由来
在70年代,由于计算机的处理速度非常慢,而且内存价格昂贵,为了节省空间,程序员们将计算机中的日期以两位数编码,由于忽略了下个世纪的到来,“年”的表示也仅用了两位数的格式,当然他们也没有想到自己编写的软件到现在还在用。这就使计算机到了下世纪仍误以为是二十世纪,从而依据这些日期所做的计算将得不到正确的结果。此外,按照历法的规定,闰年是指能被4整除的年份,而能被100整除的年份不是闰年,但2000年却是特殊情况(闰年),这种现象要400年才发生一次。这就导致许多系统和应用软件的设计没有考虑2月29日这一天,致使其以后的日期随之发生错误。
2 2000年问题的危害
2000年问题又称“千年虫”和“Y2K”,到目前还没有人能知道它到底会带来多大的麻烦,但就最近研究表明形势不容乐观,根据权威的Gartner信息技术咨询公司数据,“千年虫”已经开始使计算机出现小的错误和故障,在通信、金融、运输和一些应用部门,“千年虫”带来的麻烦要持续到2002年。正如今日的经济是全球性的经济,2000年问题也是全球性的问题,它之所以有如此广泛的波及面,是因为它不仅存在于计算机的程序中,而且存在于嵌入系统中,它既可以单独、也可以共同对很多系统的运行产生影响。下面是一些有代表性的危害情况和统计数据:
(1)英国2000年问题工作组宣称,英国有30%的中型企业若不采取行动解决2000年问题,将会面临倒闭的危险,英国私营企业中有2/3的工作岗位会受到影响。
(2)Gartner信息技术咨询公司估计全球至少有1/3的国家不能够在2000年前做好准备。世界各国政府和公司在这方面的开支将高达3万亿至6万亿美元。世行最新发布的一项研究表明,在120个发展中国家里只有10%的国家具有政府牵头制定的2000年问题解决方案。这将导致这些国家的银行瘫痪、贸易陡降,甚至引起社会动荡。由于恐慌,发展中国家的人们纷纷从银行取走存款,使经济衰退的可能性高达60%。
(3)Visual Basic 以其可视化的编写界面得以广泛的流行,它包括许多数据处理函数,在绝大多数情况下,这些函数完全意识不到2000年,许多程序员习惯于用“串”来储存数据,这导致不能顺利识别年代。
(4)2000年问题不仅是个技术问题而且还是个法律问题。据统计由于忽视2000年问题将导致供应商与客户的法律诉讼花费达1000亿美元。
(5)2000年问题并不是到2000年才出现,例如某公司的财年截止日期是6月31日,如果不及时解决2000年问题,那么到1999年7月1日财务报表上就会是FY00了。
总的说来,2000年问题主要有两种情况发生,一种由于计算机不能识别2000年,而将00视为无效的数字,或将其认为是误操作导致整个系统死机。这种问题由于容易被发现,故其危害性不大。另一种则是计算机将2000年后的年代误认为上一世纪的某一个年份导致局部发生故障。这种故障不易被人们发现,故其危害性极大,例如金融交易中,错误的计算可能被认为是正确的结果而作出错误的决定。前面所提的诸多危害绝大多数都是第二种情况所导致。
3 2000年问题的解决方案及现状
自2000年问题出现后,许多计算机厂商致力于2000年问题的研究,并取得了一些实质性的进展。任何公司解决该问题不外乎两种途径,一种是在产品设计阶段就防止问题产生,另一种则是在产品发货并安装就位后再来纠正问题。通常第一种途径由于产品在开发时已认识到2000年问题,较易解决。对于广大用户而言,由于已买了没有对2000年问题处理过的机器,而且这些计算机还正在使用,用户不具备解决该问题的能力,仅能依靠厂商的服务,所以处理起来牵动的范围相当的广,难度自然不言而喻了。无论哪种途径其常用的解决方法主要有以下几种:重写系统法;用新的技术和操作系统来代替一些陈旧的操作系统,比如用Windows代替Dos,这样做的工作量比修补要少的多,但同样存在转换原系统中的大量数据,以便能继续使用。日期扩充法;将原有的表示“年”的日期代码由两位数扩充至四位,该方法需要对原代码、数据库以及输入、输出、格式进行修改,工作量大,对系统资源的要求较高。日期估算法;在编制程序时做出假设,默认在某一年后的年份作为上一世纪来处理,在此之前的作为下一世纪处理。但该方法仅适用于100年内的应用。日期减值法;由于日历每28年就要重复一次,利用它的周期性,运算时将所有日期减28或28的倍数,运算结束后再加28即可。位元转换法;是一种压缩存储技术,利用现有的资源将4位年份数通过编码和压缩的方法存储在2位数据空间中,使原有的数据库改动少,对资源的需求没有任何增加,是一种在较低层的数据结构中解决2000年问题的方案。
通常国内外解决2000年问题要分六个步骤进行,这六个步骤对于不同类型的系统每个阶段的确切步骤将有所不同。
(1)认识2000年问题;要求从领导到一般技术人员都要认识、了解2000年问题,它的严重性、危害性、复杂性、广泛性以及如何解决和处理该问题。
(2)清查;对本单位的计算机系统经过认真的清查、评估,确定2000年问题的影响程度。清查处于风险中的系统和系统组成部件,包括计算机系统的硬件、操作系统、微码、数据库、应用软件、接口和支持、维护设施,以及对日期敏感的系统。
(3)制定计划,开展各项准备工作;首先要划定问题的范围确定总体计划,再进行初步的评估,列出存在问题的清单,分析易受损害和受害带来损失最为严重的部件,制定出解决问题的方针,决定对处于风险中的系统采取修改还是替换的方法,从而制定出应急计划,并分析可能采取的解决方案及费用、时间和需做的工作。对整个工作计划进一步细化,列哪一部分要修改、采取何种方式进行、由何人承担等。最后将整个系统备份。
(4)解决方案和计划实施;根据确定的方案的计划,进行系统的修改和更换工作。
(5)测试和验证;在解决2000年问题时,要大量地改变系统的逻辑和数据,故而要找出修改之处,修改和编写文档之后,必须对相应系统进行测试,确保修改后的新系统正确、可靠、稳定。
(6)现场维护;虽然经修改后的新系统能用传统的方法启动,但也有不同之处,特别是有些系统还要修改系统间的接口,所以现场维护主要靠使用者,因此必须对最终用户进行培训。
自人们意识到2000年问题后,许多商家都看准了这个商机,致力于2000年问题的解决之道。据调查,全球1997年只有5%的IT预算用于解决2000年问题,1998年末将达到30%,到1999年将达44% 。但到现在还没有哪个公司拿出完整、可靠的根治措施。虽然一些大的计算机公司提出了解决方案,但都不能包治百病。诸如著名的SUN公司声称,由于UNIX系统采用32位的时钟计数器,是以1970年1月1日为起始点,直到2038年的1月19日才会溢出。故SUN的工作站和服务器硬件完全是2000年就绪的。至于操作系统,SUN公司称Solaris2.6是第一种获得第三方独立测试机构关于2000年就绪认证的操作环境。对于一些老版本的操作系统,SUN公司向用户免费提供补丁程序,使其2000年就绪。微软公司针对其应用软件,发布了Office97Service Release2对他的Office97系列进行修正,使该应用程序能识别2000年。Symantec公司推出了Norton 2000的企业版1.0,该软件能查明在Windows3.x、Windows95、Windows98和NT Workstations操作系统中的电子表格和数据库文件中存在的2000年问题。但众所周知,造成2000年问题的原因虽然简单,但它涉及了计算机的软件、硬件、应用等所有方面,不是哪一家公司能够独立解决的。针对这一情况,联合国通过了一项2000年问题决议呼吁所有成员国进行合作,并要求政府、公共和私营部门在解决该问题方面共享经验。
4 2000年问题在中国
虽然中国计算机应用起步比较晚,国家级大型计算机应用网络系统和数据库系统相对较少,对计算机的依赖性远不如西方发达国家,但据信息产业部权威人士讲,计算机在中国的装机量已起过1000万台,并以每年50%的速度递增,中国是全球计算机和通信设备的十大买主之一,中国还是购买正版软件的大户。故而中国要纠正2000年问题大约需要180万个人月的工作量。此外中国2000年问题有其特殊性,即硬件环境的多元化,全球主要计算机公司的产品都能在中国找到,除了从国外买来的系统软件、应用软件外,用户多年来还自行开发了不少应用软件和接口软件,但却缺少必要的技术文档;主要用户无双机备份系统,无法停机进行系统改造;一些用户的信息因涉及商业和技术秘密而无法借助外界技术力量深入改造。
我国从1996年开始着手解决2000年问题,今年8月,受国务院委托,信息产业部在北京主持召开了全国计算机2000年问题电视电话会议,对全国各行各业解决2000年问题作出了统一部署,要求各行业必须高度重视计算机2000年问题可能带来的危害,由信息产业部主要负责,会同国家计委、科技部制定具体方案,组织实施,力争在1998年年底之前,最迟在1999年3月底以前完成程序修改,9月底前完成测试。在信息产业部的配合下,银行、财税、电信、民航、石化、冶金、交通等这些国民经济的支柱产业,其2000年问题的解决已取得良好的进展。由于要彻底地解决2000年问题,不仅需要权威的领导指挥机制统筹规划和组织实施,还需要大量的资金投入,有幸的是世界银行已答应赠给中国60万美金用于解决2000年问题,其中10万元已经到位,另外50万元正处于最后审批阶段,这对于我们可算是解了燃眉之急。
5 2000年问题带来的机遇
任何事情都要全面地看待,2000年虽然给计算机界带来了恐慌,但对于信息产业未尝不是一次机遇。为了避免老的电脑系统的崩溃和混乱,各国政府正努力解决它,这对于已经从事和即将从事解决2000年问题工作的厂商来说是个机会;不少软件为了解决2000年问题而将其软件改名,如Windows NT5.0改为Windows2000,WPS的下一代产品也叫作WPS2000,这将有助于各软件开发商推陈出新,促进技术进步;硬件、软件历来是相互促进、同时增长,这也将促使CPU到2000年进入比较成熟的时期。
6 正确对待2000年问题
水利水电勘测行业多为单机独立用户,即PC机。网络系统、以日期为计算单位的数据库系统并不多见,并没有形成修改十分困难的庞大系统,2000年问题似乎并不严重。但绝大多数PC机的2000年硬件问题源于机器的BIOS或CMOS芯片,届时BIOS将不知道如何把日历从1999年翻到2000年,同样CMOS也不知道如何处理四位数日期,这就需要采取相应的措施去纠正。对于上网的PC机可从网络上取得正确的日期,未上网的PC机可以从相应的服务商处获取。
虽然2000年问题听起来让人不免恐慌,但对我们行业大可不必岌岌可危。前不久Viasoft公司的OnMark 2000软件工具以及WRQ公司的Express 2000套件经过检测能够解决PC机的2000年问题,虽然两个软件不能独立解决全部问题,但结合在一起却是极其强大的审核工具。价格并不昂贵,每个机位仅需60?0美元。而且有资料表明,1996年前交付使用的PC机都存在2000年问题,而系统是133MHz和166MHz的奔腾芯片以及其以后的高档机器都不存在2000年问题。对于广大用户来说基本上使用的都是奔腾机,故而不必担心此问题了。即使是在这之前的机子,我相信随着我们的进步必将很快退出舞台。
总之,只要我们坚持重视、不怕和实干的原则,就可以顺利渡过难关。2000年问题给我们带来了问题,也给我们带来了更多的机遇,更多的研究课题,只要我们携起手来,当2000年的钟声敲响时,带给我们的就不会是混乱而只是希望。
参考资料:
《每周电脑报》1998年 第32、40、41期
《计算机世界》1998年 第30、39、41、47期
《网络报》1998年 第10期