您的位置:

药剂科微机管理2000年问题的解决办法

2022-07-28
来源:求医网
中图分类号:R952文献标识码:B

文章编号:1001-0408(2000)01-0022-01▲

微机管理药库药品的进、销、存有着及时、准确的特点,为大多数医院所采用。规模较大的医院,如“二甲”以上的医院药剂科管理基本上达到了网络化,甚至加入到了整个医院网络中。所用软件也较为专业化,基本上不存在2000年问题(以下简 Y2K问题)。而一般中、小医院(二级甲等以下),由于经济条件的制约,仅利用微机对药库药品的进、销、存进行管理,所用软件也大都采用自编的FOXPRO FOR DOS程序,故一般存在 Y2K问题,需要及时修改,以免进入2000年时软件运行出错或系统瘫痪。笔者结合修改我院药库管理程序中Y2K问题的实践,着重介绍这种自编软件中Y2K问题的解决办法。

1何为Y2K问题

Y2K问题不仅存在于软件中,也存在于微机的硬件中。

1.1硬件中的Y2K问题

目前,个人PC、笔记本电脑在社会拥有量巨大,在各个领域应用广泛,并具有越来越重要的作用和地位。但是,相当一部分微机的BIOS(Basiclnput/Outp-utSystem)不支持2000年。当微机运行至2000年1月1日时,微机的时钟变为1900年或其它年份。根据美国花旗银行公布的测试结果,1997年以前生产的微机有75%不支持2000年,1997年生产的微机有45%不支持2000年。在厂商颁布已支持2000年的微机BIOS中,有28%实际不支持。

检测微机是否支持2000年的方法很简单,即修改微机BIOS的时钟日期,看其能否显示正确的2000年日期。如不能够正确显示2000年的日期,则说明你的微机不支持2000年。微机BIOS时钟的2000年问题解决较为简单,一般的微机厂商都提供修改软件,在国际互联网上也有许多免费修改软件,可以解决微机BIOS时钟问题。对不支持BIOS升级主板的微机则只能更换主板。

1.2软件中的Y2K问题

软件中的Y2K问题,就是指在编制软件的当初只在软件中用两位数表示年份,如1999年表示99,反过来说99就代表1999年。这有什么问题呢?当到2000年时,同理在电脑中就表示00,可见,反过来就不对了,因为电脑并不知道00应该前面加20,它仍然是加19,因此00就成了1900年,这就会带来很大的混乱,甚至有可能导致系统瘫痪。

2怎样解决Y2K问题

2.1硬件中解决Y2K问题的方法

上面已经提到解决硬件中Y2K问题的最佳方案是升级微机主板的BIOS。还有其他的修正方法,如:安装一个驻留程序(TSR),每次启动时被加载,它可以在BIOS将不正确的日期传给操作系统之前修正日期参数;或通过增加一个插卡来截获对BIOS的调用,进行日期的修改(同使用内存驻留程序一样,增加插卡会增加硬件冲突的危险。而且,对于原本不一定要花钱就能解决的问题,你却得多破费1元购买插卡的钱)。

2.2软件中解决Y2K问题的方法(以FOX语言编程为例)

首先,我们应在程序开始处加入如下二语句:

set century on

set date ansi

即在程序中所有的日期年份以4位数表示,并以年、月、日的顺序显示日期。程序中的日期常量也应使用严格日期格式,并以4位数来表示年份(这是解决Y2K问题的最彻底的办法)。

2.2.1原始数据库日期字段为D型(日期型)的程序修改后,数据库日期字段将自动加上世纪。如:原来为99.08.19,则现在为1999.08.19。以后只要设置好输入、输出格式即可。

2.2.2原始数据库日期字段为C型(字符型)的程序修改如下(假设字段名为rq):(1)先将日期字段由C型6位改为数字型(N型)8位(整数)。(2)建入命令repl rq with rq+19000000,将日期改为19××××××式样表示。(3)将日期字段再由N型改回C型,即可使全部数据的日期以字符型“1 9××××××”表示,从而保证程序修改前后数据库使用的连续性。(4)更改日期字段宽度后程序中日期数据的输入格式也应改为8位,并根据药库管理程序的特点加入输入日期数据的验证与限定条件(假设日期变量=riqil)。如:valid ctod(substr(riqil,1,4)+“·”+substr(riqil,5,2)+“·”+substr(riqil,7,2))≥date( ),以保证输入日期的正确性(这在以字符型字段设定日期时尤为重要)。(5)更改日期数据的输出格式主要是调整打印输出日期时有关函数的取值。如:调程序前(设riqil=“990819”)应设函数取值为substr(riqil,1,2)+“年”+substr(riqil,3,2)+“月”+substr(riqil,5,2)+“日”。此时打印输出为99年8月19日。调程序后(设riqil=“19990819”)如不更改函数设置则打印将出错,即输出为19年99月08日。此时应调整函数取值substr(riqil,1,4)+“年”+substr(siqil,5,2)+“月”+substr(riqil,7,2)+“日”。输出为1999年08月19日。

以上修改方法在我院药库管理程序上修改、调试成功,现已正式投入运行中。

3其他解决Y2K问题的方法

一般药库管理程序包括科内网络软件,其功能仅用于药品的进、销、存管理,程序设计并不复杂,应用以上办法即可解决Y2K问题。至于大型管理软件如银行、航空系统等软件,仅采用修改日期的输入、输出格式,去逐个把输入、存贮日期的地方都改过来一定是件非常烦人的事,是达不到也不可能达到目的的。否则,全世界也就不会去花数十亿美金来解决这个问题了。目前,计算机Y2K问题的各种修改方法都有其固有的局限性和不足,在此仅介绍一个简单的办法,仅供参考。方法是在程序开头部分加入一条如下命令:

set century to 19 rollover 50

这条命令的意思是:对于1个两位数的年份,如果大于或等于50,系统隐含加上19;如小于50,则加20。也就是说,“99.1.20”,系统会认为是1999年1月20日,而“01.1.20”,系统则会认为是2001年1月20日。至于这个50,你可以在0~99之间任意设置(不过此命令仅在Visal Foxpro 5.0以上使用)。

4结语

Y2K问题是一个不可轻视的问题,解决Y2K问题刻不容缓,对于一般DOS下的业余管理软件,完全可以自己动手加以解决,这也是我们广大药剂管理人员在世纪之交将要面对的新课题。让我们努力更新知识,迎接新的挑战吧!■

收稿日期:1999-11-08