FOXBASE与高级语言程序的数据共享及混合编程

时间:2022-03-22 11:12:34 来源:网友投稿

1.引言

数据库管理系统FOXBASE目前在我国各个领域的管理和办公自动化中得到非常广泛的应用,尤其是在管理信息系统(MIS)与决策技持系统(DSS)中,数据库的数据不仅是供低层管理作统计、汇总、查询、报表输出等使用,更重要的是对数据进行分析、提炼,利用一些数学模型的计算,为中、高层管理提供辅助决策的依据。但由于FOXBASE+系统的运算功能较弱,对于决策中的大量线性规划、运筹学、统计学等问题的计算、绘图等要求难以满足,而这类问题又是一些高级语言如BASIC、FORTRAN、PASCAL、C语言或汇编语言等较为容易解决的。因此,随着我国计算机应用的越来越深入普及,应用水平越来越提高,解决数据库系统与其它语言程序之间的数据传输、数据共享以及混合编程的问题就显得越来越重要,而这个问题往往又是学生或编程人员在学习或编程中的难点。下面是笔者根据在教学和科研实践中的点滴经验,谈谈数据库系统FOXBASE+2.1与其它程序语言之间的接口和混

合编程问题的一些体会

2.FOXBASE+与高级语言进行数据传输的接口

FOXBASE+系统提供了两条转换文件格式的命令作为数据库与高级语言程序之间传输数据的桥梁。其具体做法是先用COPY命令把数据库文件(.DBF)复制成文本文件(.TXT),再提供给高级语言程序进行访问,或者是用APPEND FROM命令进行反问转换和传输,即把高级语言程序中生成的文本文件(.TXT),传输到数据库文件(.DBF)中,如图所示:

FOXBASE+用于.DBF文件与.TXT文件之间转换的两个命令的具体格式和功能如下:

2.1 生成文本文件

命令格式:COPY TO<文本文件名>[<范围>][FIELDS<字段名表>][FOR/WHILE<条件>]SDF/DELIMITES[WITH BLANK/<定界符>]

该命令的功能是将当前库文件的部分或全部记录,按指定的格式复制给定文件名的文本文件中,文本文件的扩展名.TXT由系统自动加上。其中的SDF和DELIMITED是规定文本文件格式的,要必选其一,否则无法生成文本文件。

若在该命令中使用了选项SDF,则生成的文本文件是SDF格式,称为标准格式或系统数据格式。这种格式规定各记录的长度相同,严格限定各数据项(字段)长度、类型和存放顺序。字段中存放的数据不足,应以空格填满。字符型字段按左对齐存放,数字型字段按右对齐存放。各字段之间无分隔符,以回车换行作符作为一条记录结束的标志。

例如将FOXBASE+中的数据文件NLK.DBF转换成高级高言的SDF格式文本文件WJ1.TXT,其转换前后的文件内容分别如下:

.use ZLK

.Iist

记录号# 代号 书名定价册数 金额

1 P117计算机系统结构基础8.20 5 41.00

2 P145知识工程与知识处理系统 8.40 542.00

3 P110计算机综合应用知识 19.50358.50

.COPY TO WJ1.TXT SDF

.!TYPE WJ1.TXT

P117计算机系统结构基础 8.20 541.00

P145知识工程与知识处理系统 8.40 542.00

P110计算机综合应用知识 19.50358.50

若在该命令中使用选项DELIMITES WITH<定界符>,则生成用户定义定界符格式或紧凑格式的文本文件。这种格式存贮的文件记录可以不定长。各字段之间可以用逗号隔开,字符型、逻辑型字段用双引号或其它符号(如空格或#号)括起来,并删去字型数据的尾部空格及数字中的前导0,仍用回车换行符作为一条记录的结束标志。例如用库文件ZLK.DBF分别分别生成用双引号和#号作定界符的文本文件WJ2.TXT和WJ3.TXT。

.USE XLK

.COPY TO WJ2.TXT-DELIMITES

.!TYPE WJ2.TXT

”P117”, “计算机系统结构基础”,8.20,5,41.00

”P145”, “知识工程与知识处理系统”,8.40,5,42.00

”P110”, “计算机综合应用知识”,19.50,3,58.50

.COPY TO WJ3.TXT DELIMITES WITH#

.!TYPY TO WJ3.TXT

#P117#,#计算机系统结构基础#,8.20,5,41.00

#P145#,#知识工程与知识处理系统#,8.40,5,42.00

#P110#,#计算机综合应用知识#,19.50,3,58.50

2、由文本文件向数据库传输数据

命令格式:APPEND FORM<文本文件名>[FOR<条件>]SDF/DELIMITED

[WITH BLANK/<定界符>]

该命令功能是把文本文件中合符条件的记录读出来,逐个追加到当前库文件的尾部。若文本文件的扩展名为.TXT,输及时可省略。

当选用SDF选项时,系统将根据当前文件的字段顺序及其长度,把文本文件中的数据从左到右填入各字段之中,遇到回车换行符就结束该记录并开始追加下一条记录,直至追加完全部记录;当选用DELIMITED WITH<定界符>项时,系统将文本文件的数据从左往右依次填入库文件的各个字段,每读到一个逗号,就结束该字段的填入,开始下一字段的填入。文本文件中对应于字符型字段的数据,必须用字界符括起来,当系统读到回车换行符时就结束一条记录而开始一下记录的追加,直至读完全部记录。

如果某个高级语言程序生成了一个文本文件,就可以用此命令,把数据存入FOXBASE+的数据库文件中。

例如:设文本文件BAS2.TXT是由某BASIC程序生成的SDF格式文件,其数据格式如下:

P121多媒体计算机技术 8.80870.40

P406计算机图形学 8.70869.60

P827计算机病毒防范与信息对抗技术 12.00 560.00

下面用APPEND FORM命令把BSA2.TXT的数据传输到ZLK.DBFK:

.USE ZLK

.APPEND FORM BAS2.TXT SDF

.LIST

记录号# 代号 书名 定价 册数 金额

1 P117 计算机系统结构基础8.205 41.00

2 P145 知识工程与知识处理系统8.405 42.00

3P110计算机综合应用知识 19.503 58.50

4P121多媒体计算机技术 8.80 870.40

5P406计算机图形学 8.70 869.60

6P827 计算机病毒防范与信息对抗技术12.50 5 60.00

由此看出,通过上述两种格式的命令,能正确地实现FOXBASE+与高级语言之间的数据共享与相互传输。

3. FOXBASE+与高级语言程序共享数据

FOXBASE+提供了RUN命令作为它的应用程序与高级语言之间协同运行的接口。也就是说FOXBASE+与其它高级语言共享数据是通过RUN命令为纽带来连接的,这种相互连接运行的过程如图所录。

3.1 数据库文件数据传输给高级语言应用程序

为了让数据库文件的数据能输给高级语言应用程序,首先必须在FOXBASE+环境下根据高级语言应用程序的需要,选择数据库文件中的某些数据生成一个能被高级语言程序接收的文本文件,然后在应用程序中加一段“接口程序”的编程方法。以下是FOXBASE+与BASIC程序之间数据传输与混合编程调用的实例。

程序BASI.BAS将已转换成SDF格式的文本文件WJ1.TXT的数据读出并计算、打印资料的累计册数、金额、总册数、总金额。

10 DIM B(2)

15 OPEN〞R〞,#1〞WJ1.TXT〞,49

20 FIELD#1,4AS AL$,30 AS A2$,5,AS A3$,2AS A4$,6,AS A5$

25 X%-1

30 FOR 1=1 TO3

40 GET #1,X%

55 PRINT A1$;A2$;A3$;A4$;A5$

60 B(1)=B(1)+VAL(A4$)

70 PRINT〞记录号:I,〞累计册数〞;1),累计金额: 〞;B(2)

80PRINT

90X%=X%+1

100 NEXT 1

110 PRINT〞合计册数:〞B(1),〞合计金额: 〞;B(2)

120 STSTEM

从上例程序可看出,将SDF格式文件的数据传输给高级语言程序时,编写接口程序须注意:①接收数据的各个变量必须定义为字符型变量,且其排列顺序及长度必须与文本文件记录中的数据项的排列顺序及长度相同。②使用打开文件语句时,定义记录长度必须把文本文件记录未尾的回车换行两个字符的长度考虎进去,即:记录长度=文本文件各数据长度之和+2。③高级语言接口程序可通过设置和改变代表记录号的变量来选取文本文件中所城要的记录。④任何高级语言程序可根据需要,选择其中的部分变量。例如55语句可改成打印某个变量的内容。若要使用与文本文件数字型相应的变量进行算术运算时,必须通 VAL函数把它转换为数字型方可进行。

3.2 高级语言程序传输数据给数据库文件

要让高级语言程序产生的数据追加到FOXBASE+的库文件中,在高级语言程序中也必须有一个“接口程序”,以便建立一个能为FOXBASE+数据库文件正确接收的文本文件。然后,在FOXBASE+环境下使用APPEND FORM命令把文本文件数据追加到数据库文件中。

BAS2.BAS是以随机输入方式将数据组织成SDF格式文本文件的“接口程序”。程序如下:

10 DIM B(2)

15 OPEN〞R〞,#1〞BAS2.TXT〞,49

20 FIELD#1,4AS AL$,30 AS A2$,5,AS A3$,2AS A4$,6,AS A5$ 2 AS CR$

25 X%-1

30 FOR 1=1 TO3

35 READ B1$,B2$,B3$,B4$

38 B5$=STR$(VAL(B3$)*VAL(B4$))

40 RSET A1$=B1$

45 RSET A2$=B2$

50 RSET A3$=B3$

55 RSET A4$=B4$

60 RSET A5$=B5$

70 RSET CR$=CHR$(13)+CHR$(10)

75 PRINT A1$,A2$,A3$,A4$,A5$

80 PUT#1,X%

90 X%=X%+1

100 NEXT 1

110 CLOSE

120 DATA〞P121〞,“多媒体计算机技术”,8.80,8,70.40

130 DATA〞P406〞,“计算机图形学”,8.70,8,69.60

145 DATA〞P827〞, “计算机病毒防范与信息对抗技术”,12.00,5,60.00

150 END

该程序是把要追加的数据(如120,130,140语句中的数据)以随机写入的方式组织到SDF格式的文本文件BAS2.TXT中,为了简化程序,将DATA语句中的数据用字符串形式读入,需要计算时再转换成数字型(如38语句)。

运行此程序后,便生成了文本文件BAS2.TXT在当前盘上,该内件内容如下:

.TYPE BAS2.TXT

P121 多媒体计算机技术8.80870.40

P406 计算机图形学8.70869.60

P827 计算机病毒防范与信息对抗技术 12.00 5 60.00

之后在FOXBASE+环境下使用APPEND FORM命令把文本文件数据追加到数据库文件中。例如:

.USE ZLK

.APPEND FROM BAS2.TXT SDF

从本例可看出,要建立一个SDF格式的文本文件,须注意:①写入文本文件的数据必须是ASCII码,其变量必须都是写符型变量。②要根据被追加的数据库文件记录中字段排列的顺序、长序和个数来定义各变量。要写入文本文件的变量个数可以少于数据库文件记录中的字段个数,但必须是最后的几个字段,前面字段的顺序、长度和类型必须一致。③填入文体文件变量中的数据,与库文件的字符型字段相对应的按左对齐填入,与数字型字段相对的按右对齐填入。④必须在文本文件每个记录的未尾,填入回车换行两个字符作为记录的结束(如程序中的70语句)

3.3 调用高级语言程序

上面介绍的数据库文件与高级语言之间的数据传输,还只能分别在FOXBASE+环境或高级语文程序环境下运行。为了在FOXBASE+下直接运行高级语言程序,须用RUN命令。

命令格式:/<可执行文件名>

该命令可调用DOS命令或扩展名为COM.EXE.BAT的文件,执行完后回到FOXBAES+工作模式。其中DOS命令主要是诸如TYPE、DIR、ERNAME、DEL等内部命令,而.EXE的文件主要是指高级语言经过编译和连接后生成的可执行文件或DOS的一些外部命令文件。注意在使用RUN命令时,要器必须有足够大的内存容量,通常至少应大于640KB。

例:在FOXBASE+状态下执行DOS命令TYPE。显示A盘上的CONFIG.SYS文件的内容。

输入命令:.RUN TYPE A:CONFIG.STS

即在屏幕上显示A盘CONEIG.SYS文件的内容后,又返回点状态。此外,使用此命令,还可在FOXBASE+应用程序中调用高级语言程序,且执行完高级语言程序后又返回继续执行FOZBASE+程序。

例如在FOXBASE+的点状态下运行程序BAS1.BAS(该程序在GWBASIC.EXE下运行通过)。只须键入命令:.RUN GWBASIC BAS1

即可将文件文件WJ1.TXT中的数据读出、计算,并在屏幕上显示。实现了FOXBASE+与高级语言BASIC程序之间的通讯。

若在FOXBASE+中用RUN命令调用源程序BAS2.BAS以生成文本文件BAS2.TXT,然后将其内容追加到库文件ZLK.DBF中,其调用BASIC程序的命令文件清单如下:

.*HUHD.PRG

SET TALK OFF

CLEAR

RUN GWBASIC BAS2.BAS

USE SJK

APPEND FORM BAS2.TXT SDF

LIST

RETURN

从以上程序可看出,RUN命令可把FOXBASE+的应用程序与其它高级语言程序(如本例中的BASIC程序)合并在一起,为一个共同的任务而协调运行,从而实现了数据库文件与高级语言数据共享。对于其它高级语言的调用,只要根据所用高级语言数据输入的特点,用类似的方法是不难实现的。而对于已编泽成可执行文件的混合调用方式。但需注意的是:由于执行RUN命令占用额外内存空间,较大程序无法运行,可采用在DOS环境中的轮流运行方式达到缓解。鉴于文章篇幅所限,在此不再赘述。

收稿日期:2008-09-20

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

推荐访问:混合 语言 高级 编程 程序

版权所有:天海范文网 2010-2024 未经授权禁止复制或建立镜像[天海范文网]所有资源完全免费共享

Powered by 天海范文网 © All Rights Reserved.。鲁ICP备10209932号