Informix 4GL 語句 memo

发表于:2007-06-22来源:作者:点击数: 标签:
INFOR MI X 4GL的程式架構 <語法格式> #=========================== DATABASE database-name #--------------------------- GLOBAL ... END GLOBALS #--------------------------- MAIN ... END MAIN #--------------------------- FUNCTION function-nam

   



 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  


原文转自:http://www.ltesting.net