顯示具有 Genero 標籤的文章。 顯示所有文章
顯示具有 Genero 標籤的文章。 顯示所有文章

2012年1月3日 星期二

Fedora 16 runs Genero 4GL




Fedora 16 也能執行 Genero 4GL









2011年12月29日 星期四

TIPTOP 用戶要有升級 Genero 版本的權利

鼎新如是說,所購買的 Genero 其實不含升級的費用,也就是說目前的版本 你不可能升級

也就是說 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 執行


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年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.

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

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=

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 標記名稱
LABEL 敘述
標記GOTO跳到的位址。
<語法格式>
LABEL 標記名稱
例:
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() 

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

   {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  

  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