4.基本資料型態和運算式

 

4-1 字元 char(n)

字元的基本資料型態包括小寫字母,大寫字母,數字,標點符號以及像+、﹪

、*之類的特殊符號。

<語法格式> char(n)

char(n)   n為使用者所定義的資料長度,其範圍 1 <= n <= 32,767

§例: DEFINE answer           CHAR(1)

 

4-2 小型整數 smallint

資料長度為 2 位元,其範圍 -32,767 +32,767

<語法格式> smallint

§例: DEFINE i            SMALLINT

 

4-3 整數 integer

資料長度為4位元,其範圍 -2,147,483,647 +2,147,483,647

<語法格式> integer

§例: DEFINE i            INTEGER

 

4-4 浮動點數 decimal[(m[,n])]

<語法格式> DECIMAL(precision[, scale])

此種資料最多的長度為32個數字。

1.precision為所有數字個數,但不包括小數點。

2.scale為小數點右邊的數字個數。

3.資料長度為

bytes = ROUND(precision/2+1)

§例:DEFINE unit_price   DECIMAL(6,2)

            此定義 unit_price 4 位整數 2 位小數。

 

4-5 小型浮點數 smallfloat

小型浮點數相當於C語言中的 float 的資料型態,大約有7個有效數字資料長度

為4位元。

<語法格式>  smallfloat

§例: DEFINE unit_price   SMALLFLOAT


4-6 浮點數 float

小型浮點數相當於C語言中的 double 的資料型態,大約有14個有效數字。資料

長度為8位元。

<語法格式>  float

§例: DEFINE unit_price   FLOAT

 

4-7 序數 serial

序數資料型態為 informix-4gl 自動設定的連續整數. informix-4gl 在開始時,預設

為1,使用者亦可任選一個大於0的數值做起始值,之後每次新增一筆資料則

自動加1當作序號。

<語法格式>  serial

§例: DEFINE employee_num   serial

§例: DEFINE custom_num     serial(1000)

員工編號啟始值為 1,顧客編號啟始值為 1000.

 

4-8 日期 date

<語法格式>  month/day/year

1.其中/為分隔符號,亦可使用(.)或連字符號(-)代替。

2.月和日為兩位數,不足兩位者可補 0 或不補 0 皆可。

3.年為4位數介於 0000 9999 之間,若只輸入兩位數,informix-4gl 會在此數值之

   前加上19。

4.系統所儲存的資料長度為4位元.

§例: DEFINE birth_date     date

若要使用中華民國年份以符合國人習慣,而所使用系統為 unit 下的 Bournel

shell則可以在 .profile 檔中設定下列的格式:

DBDATE=Y2MD/;export DBDATE

年份變成在最前面且只佔2位數,若輸入790820則系統會顯示79/08/20的格式

 

4-9 錢制 money[(m[,n])]

基本上錢制資料型態雷同於 decimal 資料型態,當一個值被定義成此型態後,

informix-4gl 會在其值之前自動出現錢制符號($),並以小數點型態顯示。

<語法格式>  money(precision[scale])

1.precision為所有數字個數,但不包括小數點。

2.scale為小數點右邊的數字個數。

3.若沒有設定 scale,則 informix-4gl 預設小數2位,若沒有設定 precision

   informix-4gl 預設小數為 decimal(16,2)

4.資料長度為

bytes = ROUND(precision/2+1)

§例: DEFINE unit_price   money(7,3)

此定義 unit_price4位整數3位小數。
4-10 變數的定義(define):

 

<語法格式>

    define        variable-name  [, ...]        data-type

§例:

    DEFINE answer               CHAR(1)

    DEFINE sys_program      CHAR(6)

    DEFINE i,j,k                    SMALLINT

    DEFINE tot_cnt               INTEGER

    DEFINE upddate             DATE

    DEFINE yy                      DATETIME YEAR TO YEAR

    DEFINE mm                    DATETIME MONTH TO MONTH

    DEFINE fetch_dir,

                  toward_last,

                  toward_first,

                  at_end           SMALLINT

 

變數定義敘述(define)必須放在mainfunctionreportglobal等敘述的後面。

 

<語法格式>

    define        variable-name  [, ...]        record  like        table.*

§例:

    DEFINE p_ssaltab         RECORD LIKE ssaltab.*

 

<語法格式>

    define        variable-name  [, ...]        like        table.column

§例:

    DEFINE rank             LIKE ssaltab.payrank

 

<語法格式>

    define        variable-name   [, ...]       like        table.column

§例:

    DEFINE old_insure_no    LIKE ssaltab.insure_no

<語法格式>

 

    define        variable-name  [, ...]  record

                     var-name  [, ...]          data-type

                                                       end reocrd

§例:

    DEFINE p_formonly        RECORD

                                   char1        CHAR(8),

                                   char2        CHAR(10),

                                   char3        CHAR(2),

                                   char4        CHAR(4)

                                            END RECORD
<語法格式>

    define        variable-name    array [...] of  record

                     var-name  [, ...]        data-type

                                                                   end reocrd

§例:

    DEFINE s_menu ARRAY[4]  OF  RECORD

                                   menu_name    CHAR(4),

                                   action             CHAR(6)

                                                          END RECORD

§例:

    DEFINE p_st                ARRAY[20]  OF  RECORD

                                  family_name         LIKE sfamilytab.family_name,

                                  family_idno           LIKE sfamilytab.family_idno

                                                                       END RECORD


4-11 算術運算式

┌──────────────────────────┐

  運算子                                        

├──────────────────────────┤

    **                  指數運算                   

├──────────────────────────┤

    *                   乘法運算                   

├──────────────────────────┤

    /                   除法運算                   

├──────────────────────────┤

   mod                  餘數運算                   

├──────────────────────────┤

    +                   加法運算                   

├──────────────────────────┤

    -                   減數運算                   

└──────────────────────────┘

 

 

4-12 字串運算式

┌──────────────────────────┐

  運算子                                       

├──────────────────────────┤

    ,                   連結運算                  

├──────────────────────────┤

    [m,n]               從m至n字元位置取出子字串  

├──────────────────────────┤

    USING               設定格式                  

├──────────────────────────┤

    CLIPPED             消除尾部空白              

└──────────────────────────┘


4-13 布林運算式

informix-4gl 程式的敘述如 IFCASEWHILESELECTUPDATE

DELETE 均可使用布林運算式來作運算。

┌──────────────────────────┐

                                            

├──────────────────────────┤

    TRUE                真, 定義成 1              

├──────────────────────────┤

    FALSE               假, 定義成 0              

├──────────────────────────┤

    UNKNOWN             未知情況                  

└──────────────────────────┘

 

一般布林運算式所使用到的運算式子有下列三種:

 

┌──────────────────────────┐

  運算子                                       

├──────────────────────────┤

   AND                                           

├──────────────────────────┤

   OR                                            

├──────────────────────────┤

   NOT                                           

└──────────────────────────┘

 

AND │T  F  ?     OR │T  F  ?      NOT│

──┼────   ──┼────    ──┼──

T   │T  F  ?      T │T  T  T       T │ F

F   │F  F  F      F │T  F  ?       F │ T

?   │?  ?  ?      ? │T  ?  ?       ? │ ?


4-13 關係運算式

┌─────────────────┐

│關係運算符號                     

├─────────────────┤

│關係運算符號 :         小於 : <  

                   大於 : >  

             小於或等於 : <= 

             大於或等於 : >= 

             不等於 : != 或 <>│

└─────────────────┘

 

 

4-14 空值 (NULL VALUE)

在算數運算式中,若有一個值為 null 時,則整個運算式的結果也將是 null 值。