本區發表的原創程式本人皆擁有著作權,未經授權不得使用。 所有貼出的程式畫面展示,原始程式碼都可以出售~請mail: darrenshen2008@gmail.com 版權聲明:TIPTOP的版權是鼎新電腦股份有限公司所有
2012年1月3日 星期二
2011年12月29日 星期四
TIPTOP 用戶要有升級 Genero 版本的權利
鼎新如是說,所購買的 Genero 其實不含升級的費用,也就是說目前的版本 你不可能升級
也就是說 Oracle 的版本也不能升級 (Genero中會設定支援的 Oracle 版本)
其實只要設備足夠,是有辦法自行升級的....
但是還要進一步做完整的測試 確認 TIPTOP 的穩定度
新的版本從哪邊拿? http://www.4js.com/en/download/test-drive 註冊完就能下載
也就是說 Oracle 的版本也不能升級 (Genero中會設定支援的 Oracle 版本)
其實只要設備足夠,是有辦法自行升級的....
但是還要進一步做完整的測試 確認 TIPTOP 的穩定度
新的版本從哪邊拿? http://www.4js.com/en/download/test-drive 註冊完就能下載
run Genero at Ubuntu
官方的說法是 支援 Redhat, SUSE
http://www.4js.com/online_documentation/fjs-gep-2.32.24-manual-install-html/?path=fjs-gep-2.32.24-manual-install
其實 也能在 ubuntu 執行
http://www.4js.com/online_documentation/fjs-gep-2.32.24-manual-install-html/?path=fjs-gep-2.32.24-manual-install
其實 也能在 ubuntu 執行
trim 字串的範例
main
define a string
define b varchar(20)
let a="1234567890"
display a
let b=ccl_trim(a)
display b
let b=' 09876543 '
let a=ccl_trim(b)
display a
let a=" abcde"
display ccl_trim(a)
end main
function ccl_trim(p_str)
define p_str string
define l_str base.StringBuffer
let l_str=base.StringBuffer.create()
call l_str.append(p_str)
call l_str.trim()
return l_str.tostring()
end function
2011年10月13日 星期四
2011年6月28日 星期二
Recursive of Genero 4GL
main
display a1(10)
end main
function a1(i)
define i integer
if i=1 then
return 1
end if
let i=i+a1(i-1)
return i
end function
display a1(10)
end main
function a1(i)
define i integer
if i=1 then
return 1
end if
let i=i+a1(i-1)
return i
end function
2011年5月25日 星期三
Genero 常見的 sql error 100 -206 -239
Genero 常見的 sql error 100 -206 -239
= 100 查無此資料
= -206 沒有這個 Table 或 view
The specified table table-name is not in the database.
= -239 資料重複
Could not insert new row - duplicate value in a UNIQUE INDEX column.
= 100 查無此資料
= -206 沒有這個 Table 或 view
The specified table table-name is not in the database.
= -239 資料重複
Could not insert new row - duplicate value in a UNIQUE INDEX column.
2011年4月22日 星期五
2011年4月21日 星期四
Genero & htm5
這個有趣了喔
甚麼是 htm5
http://dev.w3.org/html5/spec/Overview.html
http://zh.wikipedia.org/wiki/HTML5
htm5 跟 Genero 開發的關係? 因為透過 htm5 就有機會讓你手機 使用 Genero 4GL 開發的程式
http://www.4js.com/en/news/products/2010/statement-of-direction-genero-html-5-ready
甚麼是 htm5
http://dev.w3.org/html5/spec/Overview.html
http://zh.wikipedia.org/wiki/HTML5
htm5 跟 Genero 開發的關係? 因為透過 htm5 就有機會讓你手機 使用 Genero 4GL 開發的程式
http://www.4js.com/en/news/products/2010/statement-of-direction-genero-html-5-ready
Today, the Genero Web Client snippet technology already implements some HTML 5 features, which can be seen in the CANVAS business graphicssupported since Genero 2.20. Firefox, Safari and Chrome are among the few browsers supporting these features today (click on the table for more information). Genero developers can also customize their AJAX applications to use HTML 5 features on condition that they are deployed within browsers that support them. This AJAX snippet set will be smoothly migrated to HTML 5 whenInternet Explorer 9 is released.
… and continued support for MS Silverlight
It is our intent to continue supporting Silverlight for as long as there is demand and there is support from Microsoft. According to Brad Becker, Director of Microsoft Product Management, Developer Platforms, the future is bright:
more information http://www.kingstone.com.tw/book/book_page.asp?LID=se008&kmcode=2013120172760&Actid=wise&partner=
more information http://www.kingstone.com.tw/book/book_page.asp?LID=se008&kmcode=2013120172760&Actid=wise&partner=
2011年1月23日 星期日
2010年12月25日 星期六
INFORMIX 4GL memo
網路上很多可以查到這篇,但是,其實,是我寫的
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 {exp|boolean}
...
[exit case]
...
WHEN {exp|boolean}
...
[exit case]
...
OTHERWISE
...
[exit case]
...
END CASE
GOTO 敘述
無條件跳至標記處(同一函數、報表、MAIN之中)執行命令。
<語法格式>
GOTO 標記名稱
SLEEP 敘述
使程式暫停幾秒。
<語法格式>
SLEEP 整數咚闶?hr />WHENEVER 敘述
當錯誤或警告發生時執行 ...
<語法格式>
WHENEVER {ERROR|WARNING}
{GOTO 標計|CALL 函數|CONTINUE|STOP}
例:
whenever error continue
whenever error stop
FOREACH 敘述
相當於 WHILE 迴圈半和 FETCH 的組合。
<語法格式>
FOREACH 指標名稱 [INTO 變數串列]
...
[CONTINUE FOREACH]
...
[EXIT FOREACH]
END FOREACH
CALL 敘述
<語法格式>
CALL 函數([參數串列]) [RETURNING 變數串列]
DEFER 敘述
阻止使用者中斷程式執行
<語法格式>
DEFER INTERRUPT
一旦宣告,無法改變。
RUN 敘述
執行作業系統下的可執行檔
<語法格式>
RUN 可執行檔名稱
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


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 {exp|boolean}
...
[exit case]
...
WHEN {exp|boolean}
...
[exit case]
...
OTHERWISE
...
[exit case]
...
END CASE
GOTO 敘述
無條件跳至標記處(同一函數、報表、MAIN之中)執行命令。
<語法格式>
GOTO 標記名稱
LABEL 敘述
標記GOTO跳到的位址。
<語法格式>
LABEL 標記名稱
標記GOTO跳到的位址。
<語法格式>
LABEL 標記名稱
例:
if status != 0 then
goto stop_run
end if
statement
...
label stop_run: statement
if status != 0 then
goto stop_run
end if
statement
...
label stop_run: statement
SLEEP 敘述
使程式暫停幾秒。
<語法格式>
SLEEP 整數咚闶?hr />WHENEVER 敘述
當錯誤或警告發生時執行 ...
<語法格式>
WHENEVER {ERROR|WARNING}
{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()
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
LET l_cmd=" echo '",str CLIPPED," '> cmsr350.out"
RUN l_cmd
PROMPT 敘述
PROMPT 敘述可以從使用者處,交談式的接受所輸入之資料
<語法格式>
PROMPT display_list FOR variable
PROMPT 敘述可以從使用者處,交談式的接受所輸入之資料
<語法格式>
PROMPT display_list FOR variable
例:
define stuff_num char(7)
prompt "請輸入員工編號" for stuff_num
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
" 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
{r1} LET l_sql = " SELECT azj03 from azj_file",
{r1} " WHERE azj01 = 'USD' and azjacti='Y' ",
{r1} " order by azj02 desc"
{r1}
{r1} PREPARE sel_zu0_pre FROM l_sql
{r1} DECLARE sel_zu0_cus CURSOR FOR sel_zu0_pre
{r1} OPEN sel_zu0_cus
{r1} FETCH sel_zu0_cus INTO l_azj03
{r1} CLOSE sel_zu0_cus
{r1} " WHERE azj01 = 'USD' and azjacti='Y' ",
{r1} " order by azj02 desc"
{r1}
{r1} PREPARE sel_zu0_pre FROM l_sql
{r1} DECLARE sel_zu0_cus CURSOR FOR sel_zu0_pre
{r1} OPEN sel_zu0_cus
{r1} FETCH sel_zu0_cus INTO l_azj03
{r1} CLOSE sel_zu0_cus
LET g_sql="SELECT omaconf,oma54t,oma56t FROM ",g_dbs_new,"oma_file",
" WHERE oma01=?"
PREPARE t400_bu_13_p1 FROM g_sql
DECLARE t400_bu_13_c1 CURSOR FOR t400_bu_13_p1
OPEN t400_bu_13_c1 USING b_oob.oob06
" WHERE oma01=?"
PREPARE t400_bu_13_p1 FROM g_sql
DECLARE t400_bu_13_c1 CURSOR FOR t400_bu_13_p1
OPEN t400_bu_13_c1 USING b_oob.oob06
訂閱:
文章 (Atom)


