DOS下的FOXBASE程序向XENIX拷贝时的注意事项

Author: 山西长治市人民银行 彭起顺 Date: 1993-04-02

        在DOS下编制FOXBASE程度时,对于在显示器上一行写不下的命令行,编程者可以在此行上一直敲入内容,当超过一行时,它会自动换行接着显示,如程序pro1.prg:
        clear
        @10,10  say"-----------------"
        retu
        程序中一连串的“-”符号就是如此,这样形式的程序,在DOS下运行不会出现任何问题,但是当在XENIX下用“doscp-m”命令拷贝到XENIX上,在FOXBASE下运行时就出现了问题。
        在XENIX的FOXBASE下直接运行该程序(即:do pro1),它会出现如下提示:
        "-----------Unrecongnized  command  verb
        若在一程序(假设该程序名为pro2.prg,并且是正确的)中调用pro1.prg时,则会出现如下错误提示:
        "-----------Unrecongnized  command  verbDO"pro1"
        调用来自-/usr/jjl/pro2.prg
        以上两种情况均会中断程序运行,并当pro1.prg中的错误行前有许多正确的命令行及调用程序和被调用程序都很长时,中断处仅显示:
        DO"pro1"command  verb
        调用来自-/usr/jj1/pro2.prg
        这样就给人一种假象,好象是调用程序出了问题,其实,问题仍出在pro1.prg中。
        笔者通过分析发现,如上DOS格式的pro1.prg程序,其续行符为十六进制的8d,而在XENIX系统的FOXBASE是不认识该续行符的,故被当做错误进行处理。正确的方法是在DOS下的pro1.prg程序中,对于在显示器上一行写不下的命令行,可以在该显示行的末尾加一个分号“;”,以标明下一显示行为该命令行的续行,这样,才可避免上述情况的发生。以分号“;”做为续行符,两个系统都认可。
        本文所提问题是一个普遍现象,该现象有时会给人们一种扑朔迷离的感觉,使人们抓不住问题的症结。为检测有无此现象,读者可以在用doscp命令拷贝完之后,在XENIX系统上调用FOXBASE的编译程序foxpcomp对所拷贝过来的prg程序进行编译,若存在上述问题,在编译时即可发现,这样,读者可以对出现的错误进行修改。
        最后,需要指出的一点是,DOS下的fox程序(经编译了的prg程序)经doscp到XENIX上是不能运行的。
        因为这两个系统上的FOXBASE编译程序虽是伪编译,但其内部处理机制不同,唯一可行的方法就是把DOS下的prg程序doscp到XENIX上,再用XENIX的FOXBASE编译程序对其进行编译才行,反之,也一样。