《INFORMIX-4GL新手进阶整理》由会员分享,可在线阅读,更多相关《INFORMIX-4GL新手进阶整理(15页珍藏版)》请在金锄头文库上搜索。
1、Informix - 4GL 初级进阶Informix - 4GL 初级进阶1第一章 INFORMIX-4GL基本组成1第二章 INFORMIX-4GL的处理逻辑4第三章 INFORMIX-4GL中的数据类型8第四章 定义程序变量14第五章 函数间传值18第一章 INFORMIX-4GL基本组成程序INFORMIX-4GL中的程序可以处理大量的应用需求,可以管理小型商业或主要银行的资金。INFORMIX-4GL程序包括执行特定函数所需的所有部分。程序:为解决一个问题或处理数据由计算机执行的操作逻辑顺序。模块文件INFORMIX-4GL的一个构件是模块(module),模块是INFORMIX-4
2、GL指令的机器文件,是整个程序的一部分。把一组模块组合在一起,就成为整个程序,上图中有三个模块,合在一起就组成了客户程序。 在上图,跟踪记录客户的程序分成了三个模块,每个模块有其特殊的作用,cust_main.4gl模块用于驱动和控制程序,cust_add.4gl模块用于管理新增客户记录,cust_edit.4gl模块包括改变或删除客户记录的INFORMIX-4GL代码。模块包括一个或多个函数的集合。函数(function)是INFORMIX-4GL代码最基本的单元,它是在被调用时执行的一组INFORMIX-4GL语句序列。在INFORMIX-4GL程序中函数一次也没执行过也是有可能的,例如,
3、如果从没删除过客户,那么函数delete_cust就不会被调用 函数类型在INFORMIX-4GL中有四种函数,不同的函数名表示不同种类的INFORMIX-4GL语句功能。GLOBALS:在这个函数只用于说明变量声明语句,它也让其它模块知道变量的存在,每个程序只允许有一个GLOBALS函数。MAIN:给出INFORMIX-4GL开始的位置,INFORMIX-4GL首先总是先读MAIN函数,MAIN函数驱动程序的其余部分,因此,每个程序要有一个MAIN函数(否则INFORMIX-4GL不知从哪儿开始)执行。REPORT:它是附加的报表格式化语句,其它的函数如MAIN、GLOBALS和FUNCTI
4、ON不能处理报表语句。FUNCTION:这是INFORMIX-4GL代码的基本单元,它不象MAIN和GLOBALS有特殊用处,定义一个函数的目的是什么它就做什么。第二章 INFORMIX-4GL的处理逻辑 有六种:IF 、CASE 、WHENEVER 、WHILE、 FOR 、FOREACH判断和循环语句INFORMIX-4GL有一组判断和循环语句,它用于程序在执行时决定执行的顺序。判断逻辑:分支同其它语言一样,INFORMIX-4GL提供了随变量条件而执行相应语句的方法。用IFTHEN语句可以根据一定的条件做相应的动作。例如:当用户输入错误时可以显示特定的错误信息。给IFTHEN语句加入EL
5、SE子句,可以描述一个测试条件不满足时的可选动作。有可能的话,多个IF语句可以嵌套使用,可以把一组相关的动作放在一个语句里。CASE语句也可以完成这一功能。 IF语句IFTHENELSE用于测试值为TRUE或FALSE的表达式。IF语句是执行条件语句的指令。它包括两条逻辑选择。在程序执行过程中,当测试条件为TRUE,INFORMIX-4GL执行跟在保留字THEN后面的语句,并以END IF或ELSE保留字为结尾。若有ELSE子句,在测试条件为FALSE(或NULL)时,INFORMIX-4GL才执行ELSE子句。嵌套IF语句IF语句可以嵌套在IF语句中,常见的错误是忘了写END IF保留字或在
6、嵌套IF语句中,IF和END IF不匹配。这种情况下编译时会出现错误信息,提示一般语法错误。CASE语句:CASE语句可以减少多重IF语句。它常用于在一个语句中表示连贯相关的选择判断。判断:WHENEVERWHENEVER语句在INFORMIX-4GL语句执行过程中用于捕获错误和例外情况。WHENEVER是个编译开关(Compiler Swith),编译开关或编译指令并不在程序运行过程中执行,是在处理代码时改变编译模式。 WHILE循环用WHILE循环在状态布尔表达式值为TRUE时一直执行循环体语句或语句组。EXIT WHILE语句把程序控制权转到END WHILE后的第一个语句处执行。CON
7、TINUE WHILE语句中断循环体语句序列,并把程序控制权返回给循环体头部,并测试布尔表达式值。若布尔表达式值为FALSE,程序控制跳过剩余的循环。 FOR循环用FOR循环可以指定迭代的次数。若用了带整型表达式的STEP保留字。循环步长按STEP中指定的值增加。因为整型表达式可以是一个变量,所以可以动态地设置循环总数。第三章 INFORMIX-4GL中的数据类型 CHAR字段(character)存储任意字母、数字和符号的组合。存储的数据可以是名字、地址、社会安全号码、电话号码和其它由字母、数字、标点及其它符号组成的信息。在多数应用中,CHAR是常用的数据类型,它占用了大部分磁盘空间。CHA
8、R字段的最大长度是32767字节。CHAR是固定长度的,若定义字符字段为400字节,即使数据小于400字节,这个字段在磁盘上也要占够空间数。 有五种数字类型字段,每种表示不同类型的数字。数字字段不能存放字符或符号,但是,加(+)和减(-)可放在数字字段用于表示正、负。 在小型应用中两者的区别可能不明显,但在大型应用中有本质的区别。 FLOAT和SMALLFLOAT这两种数据类型存储二进制浮点数,用于科学计算。这两种数据类型的精度: FLOAT双精度。14位有效数字 SMALLFLOAT单精度。7位有效数字FLOAT可以存储SMALLFLOAT类型数据的两倍。FLOAT字段不是存放大数据,而是存
9、放高精度数据。 DECIMAL存储用户指定的带小数点数字。最高为32位数字。DECIMAL数字可以用给定的精度和标尺显示。 精度是整个数字的位数 标尺是小数点右边的数字个数定义为(5,2)的DECIMAL字段可以存储小数点前3位整数,小数点后2位小数的5位数字数据。精度和标尺是可选项。 无精度时:DECIMAL可看作是DECIMAL(16),即16位精度的浮点数。 无标尺时:DECIMAL可看作是一个浮点小数。DECIMAL可以是高精度数且能对数字进行四舍五入。FLOAT表示的精度因机器的不同而不同,这在网络数据传输中会有影响。 MONEY存储货币金额。金额以前导$表示。它可以描述类似DECI
10、MAL数据类型的高达32位的数字。同DECIMAL一样,MONEY字段要给定精度和标尺。它是固定长度的。MONEY字段没有给定精度和标尺时缺省的是DECIMAL(16,2)。占用的磁盘空间缺省是八位。这比大部分应用所需的高。你可以定义MONEY字段所需的最大范围来节省磁盘空间。若需要,以后还可以增加。 SERIAL字段是系统分配给表中每行INTEGERS存储字段的唯一值。当行增加时,其值按序增加。缺省起始数为1,最大值为二十一亿。一个表中只能有一个SERIAL字段且这个字段一般为主键(PK)。程序变量不能是SERIAL数据类型。若起始数设为100,则加入的第一行序列值为100。不要试图在分配了
11、SERIAL后改变其值。SERIAL值是不能用UPDATE语句修改的。尽管它可以修改SERIAL数,但是不方便也是不必要的,如果程序不得不维护一系列连续的审计ID号,就要用别的方法来产生。当一行或多行被删除,虽然数据被移走,但SERIAL值仍然增加,因此,当新增一行时,仍然分配序列的下一个数。SERIAL数是不能重复利用的。 DATE数据类型用于存储日历数,当日期以INTEGERS存储时,DATE数据可以用上图所列的任意格式插入DATE字段。DATE数据类型是从1899年12月31日往后开始的,即1900年1月1日是第一天。DATETIME数据类型用于存储表示时间点的值。它使得精度更高且选择点
12、更细。DATETIME精度范围大可以到年,小到计算机时间片的秒。DATETIME优于DATE数据类型。它定义了从年到时间片秒的时间点。DATETIME(1990-4-24 12:00) YEAR TO MINUTEDATETIME(16 12:23) DAY TO MINUTEDATETIME(31.234) SECOND TO FRACTIONDATETIME数据项可以是公元1年到公元9999年之间的任一时间点。 INTERVAL数据类型用于存储一个时间段。如上图,第一个INTERVAL表示89年零8个月,第二个INTERVER表示560天零2小时25秒。例如:INTERVAL(5-3) Y
13、EAR TO MONTHINTERVAL(11:15) HOUR TO MINUTEINTERVAL数据项可以表示大到9999年零1个月或小到时间片秒。INTERVAL数据类型不能即包括月又包括日,这是因为月中的天数是随月份不同而不同的,如3月是31天,而9月是30天。每年月份中的天数也是不同的,二月份的天数每四年从28天到29天变一次。因为日历上的不同,ANSI把INTERVAL类型分成两个子类:年月型INTERVAL和日期时间型INTERVAL。INFORMIX-OnLine引擎允许在字段中存储变长字符类型,这个类型叫VARCHAR。用VARCHAR的主要好处是,它可以增加存储在磁盘上每页
14、的行数,提高读表的性能。VARCHAR与CHAR数据类型字段相比,它减少了磁盘浪费。VARCHAR字段可以存储0255位字符数据,当定义VARCHAR数据类型时,要定义字段的最大长度。开发者可以根据性能需要指定一个最小的长度。max-size参数设置了数据项中允许输入的最长字符限制。min-size参数设置了占用的最小磁盘空间。第四章 定义程序变量 DEFINE语句的放置位置决定了变量的范围。把DEFINE放在Global函数中,使其它所有函数都能使用该变量。这个变量是全局的。在其它模块中调用Globals:要在其它模块中调用Global部分,必须让其它模块知道这个Global部分。在第一个函
15、数外部定义变量:在cust_main.4gl中,DEFINE语句放在了global调用后面,但在MAIN之前。这给变量以模块级范围。要使变量有模块范围,必须把DEFINE语句作为global调用后的第一个语句。在函数内部:若DEFINE放在FUNCTION保留字后面,它就具有局部范围。函数保留字包括MAIN、FUNCTION和REPORT。若变量是局部范围的,它只能在定义它的函数内部使用。若要把函数定义为局部的,DEFINE语句必须放在FUNCTION保留字之后。在其它函数中要用到局部变量的值,可以通过传值传给哪个函数。有三种类型的范围:全局范围(Global)-所有模块或函数都可以使用该元素模块范围(Module)-元素声明或定义的模块中的所有函数都可以使用该元素局部范围(Local)-只有定义或声明该元素的函数可以使用该元素变量命名规则:可以是18位字符长前八个字符必须唯一必须以字母开头可以包括字母、数字和下划线(_)可以是大写或小写字母若变量名同数据库、表或字段名一样