Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103704133
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-24 22:17:01

  出处:
 INFORMIX 4GL 的程序架构 
<语法格式>
#===========================
DATABASE database-name 
#---------------------------
GLOBAL 
   ... 
END GLOBALS 
#---------------------------
MAIN 
   ... 
END MAIN 
#---------------------------
FUNCTION function-name() 
   ... 
END FUNCTION 
#---------------------------
REPORT report-name() 
   ... 
END REPORT 
#===========================

IF 叙述 
<语法格式>
IF  boolean-exp  THEN 
    ... 
ELSE 
    ... 
END IF 

FOR 叙述 
<语法格式>
FOR varibale = integer_exp TO  integer_exp 
          ... 
         [CONTINUE FOR] 
         ... 
         [EXIT FOR] 
          ... 
END FOR  

WHILE 叙述  
<语法格式>
WHILE boolean-exp 
         ... 
         [CONTINUE WHILE] 
         ... 
         [EXIT WHILE] 
         ... 
END WHILE 
CASE 叙述 
<语法格式>
CASE  [(exp)] 
          WHEN  
                   ... 
                   [exit case] 
                   ... 
          WHEN  
                   ... 
                   [exit case] 
                   ... 
          OTHERWISE 
                   ... 
                   [exit case] 
                   ... 
END CASE 

GOTO 叙述 
无条件跳至标记处(同一函数、报表、MAIN之中)执行命令。
<语法格式>
GOTO 标记名称 

LABEL 叙述 
标记GOTO跳到的地址。
<语法格式>
LABEL 标记名称
例:
if    status != 0 then 
      goto stop_run 
end if 
statement 
... 
label stop_run: statement 

SLEEP 叙述 
使程序暂停几秒。
<语法格式>
SLEEP 整数表达式 
WHENEVER 叙述 
当错误或警告发生时执行 ... 
<语法格式>
WHENEVER 
    {GOTO 标计|CALL 函数|CONTINUE|STOP} 
例:
whenever error continue 
whenever error stop 


SET LOCK MODE TO WAIT


FOREACH 叙述 
相当于 WHILE 循环半和 FETCH 的组合。
<语法格式>
FOREACH 指针名称 [INTO 变量串行] 
          ... 
          [CONTINUE  FOREACH] 
          ... 
          [EXIT  FOREACH] 
END  FOREACH 

CALL 叙述 
<语法格式>
CALL 函数([参数串行]) [RETURNING  变数串行] 

例:
call  sample_function(parm1,parm2) returning  variable 
call  sample_function(parm) 
call  sample_function() 

DEFER 叙述 
阻止使用者中断程序执行
<语法格式>
DEFER  INTERRUPT 
一旦宣告,无法改变。 
RUN 叙述 
执行操作系统下的可执行文件
<语法格式>
RUN  可执行档名称 

例:
LET l_cmd=" echo '",str CLIPPED," '> cmsr350.out"
RUN l_cmd



PROMPT 叙述 
PROMPT 叙述可以从使用者处,交谈式的接受所输入之数据
<语法格式>
PROMPT  display_list  FOR variable 
例:
define  stuff_num    char(7) 
prompt  "请输入员工编号"  for  stuff_num 

DISPLAY 叙述 
<语法格式>
DISPLAY  display_list  [USING|CLIPPED]  AT  ROW,COLUMN 

MESSAGE 叙述 
用来显示讯息至屏幕的讯息行(default 第二行) 
<语法格式>
MESSAGE  display_list 
5-19 ERROR 叙述 
用来显示错误讯息至屏幕的错误行(default 第 24 行) 
<语法格式>
ERROR  display_list 
5-20 CLEAR 叙述 
<语法格式一>
CLEAR  SCREEN 
此叙述用来清除整个屏幕,包刮讯息行、错误行 
<语法格式二>
CLEAR  FORM 
此叙述用来清除所有的屏幕字段数据值。 
<语法格式三>
CLEAR  VARIABLE_LIST 
此叙述用来清除 field_list 所包含的一个或一个以上的屏幕字段数据值。 
INITIALIZE 叙述 
通常变量可以用LET 设定,但若要设定为 NULL 时,必须使用 INITIALIZE。
INITIALIZE l_bmd04 TO null 
LET lsql='database dsb'
PREPARE chgdsb FROM lsql
EXECUTE chgdsb 



    LET l_sql=" SELECT DISTINCT xhb11 FROM ",l_azp03 CLIPPED,":xha_file,",l_azp03 CLIPPED,":xhb_file",
              " WHERE xha01=xhb01",
              "   AND xha20=Today - 186",
              "   AND xhaconf<>'X'"
    PREPARE xha_pre FROM l_sql
    DECLARE xha_cur CURSOR FOR xha_pre
    FOREACH xha_cur INTO l_xhb11
      LET l_sql=" SELECT xfb11 FROM ",l_azp03 clipped,":xfb_file",
                " WHERE xfb01='",l_xhb11 clipped,"' and xfb09='Y' "
      PREPARE xfc_pre FROM l_sql          
      DECLARE xfc_cus CURSOR FOR xfc_pre
      OPEN xfc_cus
      FETCH xfc_cus INTO l_xhb11
CLOSE xfc_cus        
      IF not (l_xhb11 is NULL or l_xhb11=' ') THEN
         INSERT INTO cmsp350_temp2(azp01,azp03,xfb01) valueS(l_azp01,l_azp03,l_xhb11)
      END IF
      END FOREACH
    END FOREACH 



         LET l_sql = " SELECT azj03 from azj_file"
                     "  WHERE azj01 = 'USD' and azjacti='Y' ",
                     " order by azj02 desc"
                   
         PREPARE sel_zu0_pre FROM l_sql
         DECLARE sel_zu0_cus CURSOR FOR sel_zu0_pre
         OPEN sel_zu0_cus
         FETCH sel_zu0_cus INTO l_azj03
         CLOSE sel_zu0_cus   
阅读(1038) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~