Genero BDL concepts (BDL概念)

Genero程序

Genero BDL是一个基于简单而且易读语法的编程语言。

程序逻辑是基于.4gl文件扩展名的文本文件编写,称作程序源码模块。

源码模块可以被(fglcomp)编译为.42m后缀名的p-code模块,.42m可以被运行时系统(fglrun)执行。应用程序本身

就是由一组.42m模块建立的。

 

集成的SQL支持

一套SQL语句是BDL语言语法结构的一部分,可以被直接用于源码中,相当于普通的程序语言指令一样。

静态SQL语句在编译时被解析和验证。在运行时,静态SQL语句自动被准备和执行。程序变量被编译器检测并传为

SQL的参数。普通SQL语句,例如SELECT,INSERT,UPDATE或者DELETE可以写在源码中,视作语言语法的

一部分。

MAIN
DEFINE n INTEGER, s CHAR(20)
DATABASE stores
LET s = "Sansino"
SELECT COUNT(*) INTO n FROM customer WHERE custname = s
DISPLAY "Rows found: " || n
END MAIN

动态SQL语句可以在执行是动态组建。动态SQL语句可以使用SQL参数:

MAIN
DEFINE txt CHAR(20)
DATABASE stores
LET txt = "SET DATE_FORMAT = YMD"
PREPARE sh FROM txt
EXECUTE sh
END MAIN

通过数据库驱动,同一个程序可以打开任意支持的数据库的连接。

XML支持

BDL语言根据需要,通过不同的类支持XML。提供两中方式:

1、基本的和用户界面相关的XML,提供内嵌的XML类

2、比较复杂的XML,和Web服务功能,提供功能全面的XML类,这些类在web服务扩展中。

 

用户界面

Genero的用户界面技术是基于在运行时系统和终端之间的一种抽象表示分享技术。当程序启动,运行时系统生成

抽象的用户界面(AUI)树,同时传递这个树给终端。终端根据抽象元素在工作站渲染出真实的图行对象。当一个

应用程序的控件被用户界面触发时,终端的抽象树自动和运行时系统的抽象树同步。

运行时系统和终端经过电脑网络利用终端协议交互。抽象用户界面(AUI)树和终端协议都是标准的XML。


资源文件描述一些图形对象的特性。默认资源文件是.4ad和.4st结尾,用户也可以自己定义,或者用自己的版本替换。

抽象用户界面(AUI)树上面的元素可以在运行时通过内嵌的工具修改。

语言库

为方便不同领域程序的编写,BDL有几个工具包可以使用

工具函数和类在不同的表单中是有效的,包裹内嵌类,内置函数,和可载入模块

窗口和表单

程序通过交互指令控制和操作显示区域的窗口和表单对象。表单使用描述性文本文件(.per)定义的。表单文件被

fglform编译成可以被运行时系统理解的运行时表单文件(.42f)。运行时表单文件可以部署在不同的生产环境。

(.42f)文件是XML文档,包含表单元素的描述,可以在不同显示设备上显示的可移植性。XML文件可以直接编写,

或者在程序运行时利用

XML工具生成或者修改。

 

交互指令

交互指令控制应用表单的字段输入和动作处理。

这些交互指令实现程序对用户动作和数据输入的回应。例如INPUTBY NAME 指令块控制用户输入数据的一系列表单字段

DEFINE cust_rec RECORD LIKE customer.*
INPUT BY NAME cust_rec.*
...
BEFORE FIELD cust_name
...
ON ACTION print
...
END INPUT

交互指令可以通过模式或者非模式对话框实现。(modal或者paralleldialogs)。模式对话框控制的窗口,在对话

框确认或者取消后,会自动关闭。对话框窗口显示在其他正在显示的窗口上面,当模式对话框执行,其他窗口时

不能访问的。

非模式对话框运用几个窗口可以同时操作,用户可以任意切换。

用户动作回应

点击表单上的按钮或者按定义的动作按键,程序会执行相应的动作处理器的可执行代码。表单元素可以触发动作

的称为动作视图。

动作处理器通过交互指令ON ACTION 语句定义。当动作触发时,定义在处理器里面的代码块会被执行。当运行时

系统看到ONACTION 控制器时,会自动产生动作对象和连接该对象到动作视图。通用的动作处理器,比如对话框

的确认和取消,交互指令会自动执行和该功能一致的代码。

通过配置默认动作,你可以定义动作的描述属性(比如文本,图像)和功能属性(比如快捷键,目录显示)让动

作视图和动作相关联。

 

产生报表

BDL可以很容易的产出报表,而且能导出几种输出格式

页头和页脚的页码可以自己定义。数据可以分组,也可以分组加总和分子组加总显示。报表可以输出到显示器,

打印机,文件,或者(通过管道)传递给另外一个程序。报表甚至可以被重定向为XML数据通过SAX过滤器,得

到的XML数据可以被转换为HTML,PDF或者其他由XML可以生成的文档格式

 

国际化

BDL语言支持单字节和多字节。单字节比如ISO-8859-1,多字节字符集比如BIG5或者UTF-8。语义中变量和操作

字符中字符串数据的长度基于字节或者字符单元。

标签和信息可以从程序和表单中分离,根据用户群(特定的语言或者特定的业务段)制定相应的子标签和信息。

源文件(4gl,per,4ad等)可以用特定的编码编写,然而,仍然建议你使用ASCII编写源码文件,其它依赖本地特性

的字符串可以保存在额外的字符串文件中。

 

Web服务支持

Web服务库可以实现web服务的客户端和服务器端。

Web服务是局域网或者互联网上应用间通信的标准方式。它定义两个实体键怎样通信:

1、服务器提供服务

2、客户端使用服务

The Genero Web Services Extension(GWS) Web服务扩展是BDL的扩展。它安装在BDL语言目录。Fglgws包

包含BDL语言和GWS。

Web服务扩展需要应用服务器管理。除非有需要,Web服务不是必须的。

程序工具

BDL除了编译器,还提供几个程序工具

一套程序工具集,可以帮助你提供程序开发进度,测试,优化,源文档产生。

 

编译一个程序

你需要编译源文件成为一个可以运行的应用。

一个程序可以由单个源码模块产生,但是一般一个程序都是需要几个模块,可能包含特定的文件和本地字符串文件。

当通过DEFINE… LIKE 语句定义数据库表或者栏类型的变量时,需要相应的数据库模式文件。

在运行时系统运行你的应用前,你需要用编译工具编译源码为各式运行时文件。


编译后的源码模块可以被连接为运行时系统可以执行的.42r程序,也可以被组合在一起成为.42x库,.

42x可以被用来生成.42r程序。


可以通过IMPORTFGL指令声明当前模组需要哪些依赖的模组,该指令就是定义.4gl模组之间的依赖。当使用了

这个属性,就不需要链接模组来生成程序。

IMPORTFGL cust_module
MAIN
DATABASE stores
CALL cust_module.input_customer()
END MAIN

在前面导入模组的方法

 

部署一个应用

一个应用部署,需要部署相应的运行时和源文件。很多(但不是所有)文件都是从源码编译过来的。

 

这些文件必须在用户站点部署

1.      42r,.42x, .42m –可执行程序和库,编译后模组

2.     .42f-运行时表单文件

3.     .42s-编译的本地字符串文件,假如有需要

4.     .4sm-自定义的起始目录XML文件,如果有产生

5.     .4ad, .4st-这些是默认的XML文件,有Genero自动产生。必须和运行时系统一起发布。假如有自定义这些文件,

可以用自定义版本替换。

 

运行时环境设定

Fglprofile是配置文件和环境变量设定文件,可以改变程序的行为


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值