dBASEⅢ与高级语言程序间的连接

Author: Date: 1994-01-07

        被调用的高级语言程序通常经过编译、链接形成.COM或.EXE文件(解释BASIC源程序除外),它们以外部文件的形式存储在磁盘上,当dBASEⅢ执行RUN语句时会把这些文件调入内存并从其入口开始运行。下面举例说明:
        有一个BASIC程序,其文件名为BBB.BAS,程序清单如下:
        10 PRINT "现已进入BASIC状态!"
        20 FOR I=1 TO 60:X=X+1:NEXT I
        30 SYSTEM
        该BASIC程序被下面的dBASEⅢ程序调用:
        CLEAR
        @(5,28) SAY"准备进入BASIC状态!"
        RUN BASICA BBB
        @(7,30) SAY"退出BASIC状态!"
        RETURN
        此dBASEⅢ程序运行时,先在屏幕上显示“准备进入BASIC状态!”,然后执行语句RUN,该语句首先把BASICA.EXE系统调入内存,接着再把BBB.BAS程序调入内存运行,执行完毕由SYSTEM语句控制返回dBASEⅢ中,于是在屏幕上便显示出“退出BASIC状态!”。从此便可见,使用RUN语句可以很方便地实现dBASEⅢ与BASIC程序的连接。其它高级语言也与此完全类似。只要高级语言程序已经成为独立的可执行程序,dBASEⅢ总可以用RUN语句来调用它,在此不再举例。
        dBASEⅢ与高级语言程序间的数据交换
        谈到数据交换必然是指数据文件之间的数据传递,要实现两个数据文件之间的数据传递,则要看两个数据文件存储数据的格式是否一致了。dBASEⅢ的各种类型文件中,其文本文件都是ASCII文件,文件中的数据都是以ASCII码的形式存储的;而BASIC、FORTRAN、PASCAL、COBOL、C语言等均有处理ASCII文件的功能,因此利用dBASEⅢ的文本文件可以实现这种传递。文本文件是扩展名.TXT的数据文件。它与数据库文件的区别在于数据库文件保存了数据库的结构及实际数据,而文本文件没有结构,仅有数据。同时我们还可以利用dBASEⅢ中的COPY语句将数据库文件转换为高级语言能够处理的文本文件,利用APPEND语句可以将由高级语言建立的文本文件中的数据追加到数据库文件中去,如下图所示:
        从上面的分析可以看出文本文件在数据传递过程中起着关键的作用,我们把它称为数据传递的“接口文件”。下面我们先介绍一下“接口文件”以及dBASEⅢ中的COPY及APPEND语句的用法。文本文件作为“接口文件”有以下两种格式:
        1.标准数据格式(SDF)
        标准数据格式指的是:每一个记录定长;记录从文件头部开始存放;每一个记录用回车换行结束;各记录中的同一数据项的长度及类型都相同,不足的用空格补充。将数据库文件DGKO.DBF转换为标准格式的文本文件DGKO.TXT以及把标准格式的文本文件DGKO.TXT中的数据加入到数据库文件中去的方法如下:
        C〉DBASE回车(进入dBASEⅢ状态)
        ·USE DGKO.DBF回车(打开数据库文件DGKO.DBF)
        ·COPY TO DGKO.TXT SDF回车
        (将DGKO.DBF中的数据记录以标准格式拷到DGKO.TXT文件中
        ·APPEND FROM DGKO.TXT SDF回车
        (将DGKO.TXT中的数据加到DGKO.DBF文件中去
        2.紧凑数据格式(DELIMITED),也称非标准格式
        这种数据格式指的是:不按数据项的长度而用分隔符来区分数据项;数据项与数据项之间用逗号隔开,字符型数据或逻辑型数据用单、双引号或其它“定界符”括起来,数字型数据可不加任何“定界符”;记录可以定长也可以不定长;在每个记录后面用回车换行符结束。将数据库文件DGKO.DBF转换为非标准格式的文本文件DGKO.TXT以及将非标准格式文本文件中的数据加入到DGKO.DBF中去的方法如下:
        C〉DBADE回车(进入dBASEⅢ状态)
        ·USE DGKO.DBF回车(打开数据库文件DGKO.DBF)
        ·COPY TO DGKO.TXT DELIMITED [WITH “*”]回车
        (将DGKO.DBF中的数据记录以非标准格式拷到DGKO.TXT文件中,选择项WITH使得所生成的数据文件中的字符型数据项将用给定的定界符*括起来)。
        ·APPEND FROM DGKO.TXT DELIMITED [WITH “*”]回车
        (将DGKO.TXT中的数据加入到数据库DGKO.DBF中去
        dBASEⅢ与MS-COBOL程序语言的数据交换
        在MS-COBOL中有三种文件组织形式:顺序文件、索引文件和相对文件。其中顺序文件中包括的行顺序文件由ASCII字符组成,数据之间没有分隔符,其存储形式为dBASEⅢ的标准文本文件的格式一致。因此,在MS-COBOL与dBASEⅢ交换数据时,必须采用SDF存储格式的“接口文件”,对MS-COBOL而言采用行顺序文件。具体实现方法如下:
        以数据库DGKO.DBF为例,该数据库结构如下:
        字段 字段名 类型 宽度 小数
        1 正副题名 C 134
        2 形成时间 C 2
        3 文件编号 C 30
        4 责任者 C 66
        5 分类 C 10
        6 密级 C 2
        7 档号 C 14
        8 保管期限 C 2
        在dBASEⅢ提示符下执行:
        ·USE DGKO.DBF回车
        ·COPY TO DGKO.TXT SDF回车
        然后将生成的DGKO.TXT文件拷入BD-386机器,作为MS-COBOL的行顺序文件应描述如下:
        ……
        ENVIRONMENT DIVISION.
        INPUT-OUTPUT SECTION.
        FILE-CONTROL.
        SELECT DGKO-F ASSIGN TO DISK
        ORGANIZATION IS LINE SEQUENTIAL
        ACCESS MODE IS SEQUENTIAL
        FILE STATUS IS DGKO-STA.
        DATA DIVISION.
        FILE SECTOPM.
        FD DGKO-F LABEL RECORD IS STANDARD
        VALUE OF FILE-ID “./DGKO.TXT”.
        01 DGKO-REC.
        02 ZFTM PIC X(134).
        02 XCSJ PIC X(8).
        02 WJBH PIC X(30).
        02 ZERZ PIC X(66).
        02 FENL PIC X(10).
        02 MIJI PIC X(2).
        02 DHAO PIC X(14).
        02 BGQX PIC X(2).
        WORKING-STORAGE SECTION.
        77 DGLP-STA PIC XX.
        ……