对progress语言的介绍
首先要说的是,progress是一家在纳斯达克上市的一家美国公司,他的主要产品就是progress开发语言及其周边软件工具。如果有兴趣的话,你可以访问其官方网站:
www.progress.com.
说到progress语言本身,他现在的最新版本是v10,也叫OpenEdge 10. 目前流行的还是v9版本。
progress语言有一个很大的特点就是听接近于自然语言的,这里当然是指英语。每一个语句都带有众多的属性,从而你可以给这些属性赋予不同的值,就可以得到不同的显示外观了。这一点有点儿像一语里的从句。 比如说 display "Hello world" format "x(10)"
with frame
my-frame. 其功能是把"Hello world"显示在框架my-frame里,并且显示的格式是十位。
progress号称是一个符合第四代语言(4GL)规范的语言,接近底层的操作不多。比如说常见的数学函数,一般的语言里肯定是会提供大多数初等函数的,但是progress就没有很多,比如稍微复杂一点的对数函数、三角函数就没有提供。
当然了,progress提供了方法调用本地程序,甚至是dll里的函数。你也可以在图形界面里面使用ocx控件。同时也是为了弥补它自身控件种类有限的不足。
progress有一点类似于java,可以跨平台。所以编译过的progress程序并不是一个可执行程序而是中间代码。它可以分为运行环境和开发环境:运行环境只能执行编译成中间代码的程序,而开发程序则可以直接运行源代码。比如说在unix服务器上装了一个运行环境,那么你的程序就可以以源代码的形式直接放在服务器上,无需编译成中间代码。
现在的软件基本上都要访问数据库,progess自身就带了一个。这是一个表面看上去比较粗糙但是基本上符合基本的关系数据库特征的一个系统。并且它是和语言完美的结合在一起的。
对数据库的连接可以是手动也就是通过代码也可以是自动也就是通过开发环境连接。访问数据库的数据就像访问一个结构一样,你可以直接使用database.table.field来引用一个字段。
数据路的连接是隐性的、自动传递的,也就是说在a程序文件里连接了数据库,并且在a中调用了b程序那么在b程序中可以自动使用相同的数据库信息的。
和数据库配套的有一个很好的表格控件。
对于数据的查询,最简单的就是一个for each语句。比如
for each order where order.order_number = "123456" no-lock:
display order.
end.
如果你想使用sql语句,你不得不使用一个专门的工具SQLExplorer.其实就是一个通过JDBC访问progress数据库的工具。
另外像c语言一样,progress也支持嵌入式sql语句。不过我们从来不使用它。
progress提供了很多方法访问外部资源,像刚才提到的比如动态连接库拉包括windows平台上的dll和unix平台上的so。除此之外,com,activex也是都不能少。
作为语言本身具有的功能还有socket,xml(包括SAX和DOM)。
progress语言有一个特别的地方就是没有程序入口。当你指定运行文件的时候或者是编写程序的时候,它会顺序执行。比如:
display "Hello world".
就像脚本语言一样,但它是强类型的。
当然了,progress提供了方法调用本地程序,甚至是dll里的函数。你也可以在图形界面里面使用ocx控件。同时也是为了弥补它自身控件种类有限的不足。
对数据库的连接可以是手动也就是通过代码也可以是自动也就是通过开发环境连接。访问数据库的数据就像访问一个结构一样,你可以直接使用database.table.field来引用一个字段。
数据路的连接是隐性的、自动传递的,也就是说在a程序文件里连接了数据库,并且在a中调用了b程序那么在b程序中可以自动使用相同的数据库信息的。
和数据库配套的有一个很好的表格控件。
display "Hello world".
就像脚本语言一样,但它是强类型的。