FOXBASE与高级语言程序的数据共享及混合编程_第1页
FOXBASE与高级语言程序的数据共享及混合编程_第2页
FOXBASE与高级语言程序的数据共享及混合编程_第3页
FOXBASE与高级语言程序的数据共享及混合编程_第4页
FOXBASE与高级语言程序的数据共享及混合编程_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为Word版,下载可任意编辑 与高级语言程序的数据共享及混合编程 1.引言 数据库管理系统FOXBASE目前在我国各个领域的管理和办公自动化中得到分外广泛的应用,尤其是在管理信息系统(MIS)与决策技持系统(DSS)中,数据库的数据不仅是供低层管理作统计、汇总、查询、报表输出等使用,更重要的是对数据举行分析、提炼,利用一些数学模型的计算,为中、高层管理供给辅佐决策的依据。但由于FOXBASE+系统的运算功能较弱,对于决策中的大量线性规划、运筹学、统计学等问题的计算、绘图等要求难以得志,而这类问题又是一些高级语言如BASIC、FORTRAN、PASCAL、C语言或汇编语言等较为轻易解决的

2、。因此,随着我国计算机应用的越来越深入普及,应用水平越来越提高,解决数据库系统与其它语言程序之间的数据传输、数据共享以及混合编程的问题就显得越来越重要,而这个问题往往又是学生或编程人员在学习或编程中的难点。下面是笔者根据在教学和科研实践中的点滴阅历,谈谈数据库系统FOXBASE+2.1与其它程序语言之间的接口和混 合编程问题的一些体会。 2.FOXBASE+与高级语言举行数据传输的接口 FOXBASE+系统供给了两条转换文件格式的命令作为数据库与高级语言程序之间传输数据的桥梁。其概括做法是先用COPY命令把数据库文件(.DBF)复制成文本文件(.TXT),再供给给高级语言程序举行访问,或者是用

3、APPEND FROM命令举行反问转换和传输,即把高级语言程序中生成的文本文件(.TXT),传输到数据库文件(.DBF)中,如下图: FOXBASE+用于.DBF文件与.TXT文件之间转换的两个命令的概括格式和功能如下: 2.1 生成文本文件 命令格式:COPY TOFIELDSFOR/WHILESDF/DELIMITESWITH BLANK/ 该命令的功能是将当前库文件的片面或全部记录,按指定的格式复制给定文件名的文本文件中,文本文件的扩展名.TXT由系统自动加上。其中的SDF和DELIMITED是规定文本文件格式的,要必选其一,否那么无法生成文本文件。 若在该命令中使用了选项SDF,那么生

4、成的文本文件是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计算机综

5、合应用学识 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分别分别

6、生成用双引号和#号作定界符的文本文件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,4

7、2.00 #P110#,#计算机综合应用学识#,19.50,3,58.50 2、由文本文件向数据库传输数据 命令格式:APPEND FORMFORSDF/DELIMITED WITH BLANK/ 该命令功能是把文本文件中合符条件的记录读出来,逐个追加到当前库文件的尾部。若文本文件的扩展名为.TXT,输实时可省略。 选中用SDF选项时,系统将根据当前文件的字段依次及其长度,把文本文件中的数据从左到右填入各字段之中,遇到回车换行符就终止该记录并开头追加下一条记录,直至追加完全部记录;选中用DELIMITED WITH项时,系统将文本文件的数据从左往右依次填入库文件的各个字段,每读到一个逗号,就终

8、止该字段的填入,开头下一字段的填入。文本文件中对应于字符型字段的数据,务必用字界符括起来,当系统读到回车换行符时就终止一条记录而开头一下记录的追加,直至读完全部记录。 假设某个高级语言程序生成了一个文本文件,就可以用此命令,把数据存入FOXBASE+的数据库文件中。 例如:设文本文件BAS2.TXT是由某BASIC程序生成的SDF格式文件,其数据格式如下: P121多媒体计算机技术 8.80870.40 P406计算机图形学 8.70869.60 P827计算机病毒防范与信息对抗技术 12.00 560.00 下面用APPEND FORM命令把BSA2.TXT的数据传输到ZLK.DBFK: .

9、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+与高级语言程序共享数据

10、FOXBASE+供给了RUN命令作为它的应用程序与高级语言之间协同运行的接口。也就是说FOXBASE+与其它高级语言共享数据是通过RUN命令为纽带来连接的,这种相互连接运行的过程如图所录。 3.1 数据库文件数据传输给高级语言应用程序 为了让数据库文件的数据能输给高级语言应用程序,首先务必在FOXBASE+环境下根据高级语言应用程序的需要,选择数据库文件中的某些数据生成一个能被高级语言程序接收的文本文件,然后在应用程序中加一段“接口程序”的编程方法。以下是FOXBASE+与BASIC程序之间数据传输与混合编程调用的实例。 程序BASI.BAS将已转换成SDF格式的文本文件WJ1.TXT的数据读

11、出并计算、打印资料的累计册数、金额、总册数、总金额。 10 DIM B(2) 15 OPENR,#1WJ1.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

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

13、2 高级语言程序传输数据给数据库文件 要让高级语言程序产生的数据追加到FOXBASE+的库文件中,在高级语言程序中也务必有一个“接口程序”,以便建立一个能为FOXBASE+数据库文件正确接收的文本文件。然后,在FOXBASE+环境下使用APPEND FORM命令把文本文件数据追加到数据库文件中。 BAS2.BAS是以随机输入方式将数据组织成SDF格式文本文件的“接口程序”。程序如下: 10 DIM B(2) 15 OPENR,#1BAS2.TXT,49 20 FIELD#1,4AS AL$,30 AS A2$,5,AS A3$,2AS A4$,6,AS A5$ 2 AS CR$ 25 X%-1

14、 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 DATAP121,“多媒体计算机技术”,8.80,8,70.40 130 DATAP4

15、06,“计算机图形学”,8.70,8,69.60 145 DATAP827, “计算机病毒防范与信息对抗技术”,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 计算机病毒防范与

16、信息对抗技术 12.00 5 60.00 之后在FOXBASE+环境下使用APPEND FORM命令把文本文件数据追加到数据库文件中。例如: .USE ZLK .APPEND FROM BAS2.TXT SDF 从本例可看出,要建立一个SDF格式的文本文件,须留神:写入文本文件的数据务必是ASCII码,其变量务必都是写符型变量。要根据被追加的数据库文件记录中字段排列的依次、长序和个数来定义各变量。要写入文本文件的变量个数可以少于数据库文件记录中的字段个数,但务必是结果的几个字段,前面字段的依次、长度和类型务必一致。填入文体文件变量中的数据,与库文件的字符型字段相对应的按左对齐填入,与数字型字段

17、相对的按右对齐填入。务必在文本文件每个记录的未尾,填入回车换行两个字符作为记录的终止(如程序中的70语句) 3.3 调用高级语言程序 上面介绍的数据库文件与高级语言之间的数据传输,还只能分别在FOXBASE+环境或高级语文程序环境下运行。为了在FOXBASE+下直接运行高级语言程序,须用RUN命令。 命令格式:/ 该命令可调用DOS命令或扩展名为COM.EXE.BAT的文件,执行完后回到FOXBAES+工作模式。其中DOS命令主要是诸如TYPE、DIR、ERNAME、DEL等内部命令,而.EXE的文件主要是指高级语言经过编译和连接后生成的可执行文件或DOS的一些外部命令文件。留神在使用RUN命

18、令时,要器务必有足够大的内存容量,通常至少应大于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.T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论