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
SET LOCK MODE TO WAIT
例:
call sample_function(parm1,parm2) returning variable
call sample_function(parm)
call sample_function()
例:
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
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