Minggu, 13 November 2011

informix

Pengenalan informix

Informix SQL adalah suatu sofware untuk menangani masalah-masalah database dengan berbasis pada sistem penyimpanan record dan dengan penggunaan bahasa permintaan terstruktur (Strucured Query Language). Informix - SQL mengurangi waktu yang diperlukan untuk menangani permintaan dari user dalam hal mengorganisasi suatu file, meminta informasi, membuat ringkasan, membuat group dan fungsi-fungsi lain dalam sistem manajemen database.

Cara instalasi informix

 Untuk menggunakan informix-sql beberapa hal harus disiapkan dengan anggapan anda telah menginstall Informix - SQL pada komputer anda, diantaranya :

·         Men-set variabel INFORMIXDIR agar Informix - SQL dapat mengalokasikan program-programnya.
·         Men-set variabel TERM agar Informix - SQL dapat mengetahui jenis terminal yang anda gunakan.
·         Men-set variabel TERMCAP atau TERMINFO agar Informix - SQL dapat berkomunikasi dengan terminal anda.
·         Men-set variabel INFORMIXTERM untuk menspesifikasikan apakah Informix - SQL harus menggunakan TERMCAP atau TERMINFO untuk mengalokasikan kapabilitas dari terminal .
·         Men-set variabel PATH agar shell dapat menemukan lokasi bin untuk menjalankan program-program dari Informix – SQL.

            Variabel - variabel diatas dapat anda set pada system prompt di file hidden : .profile ( Untuk Bourne Shell ) atau .login ( Untuk C shell ) .Dengan demikian setiap kali anda memasuki system prompt / login maka secara otomatis anda menjalankan file .profile atau .login .

cara install Informix SE for Linux:

               1. Buat group "informix" dan user informix
               2. Buat directory install atao taroh aja di homedirnya user informix
               3. Set environtment variable di ~informix dengan file .profile
                              INFORMIXDIR=<install-dir>
                               PATH=${INFORMIXDIR}/bin:${PATH}
                               export INFORMIXDIR PATH
               4. Extract filenya dengan user informix sesuai dengan INFORMIXDIR
               5. Jadi su untuk installasi...
                               ./installesql
                               ./installconn
                              ./installse
               6. Informix udah terinstall......untuk connect ke server ato jalanindaemon
                   edit dulu file di INFORMIXDIR/etc/sqlhost...
                   untuk itu buat kopimix dan baca dulu Administrator guidenya di sitenya informix.


Fasilitas Yang Ada Pada ISQL

            Informix - SQL merupakan kumpulan lengkap dari suatu manajemen database yang memungkinkan kita untuk melaksanakan tugas dengan jangkauan yang luas. Dengan ISQL kita dapat :
o   Membentuk table dengan Schema Editor
            Database dibentuk oleh satu atau lebih table. Schema editor menampilkan menu yang akan menuntun kita untuk dapat membentuk table dari database.
o   Memasukkan dan meminta informasi data menggunakan Screen Form
                        Setelah kita membentuk table, kita dapat menyimpan data pada table tersebut. Cara tercepat adalah dengan memasukkan data yang kita inginkan menggunakan Screen Form. Selain dapat memasukkan data kita juga dapat meminta informasi/query data yang kita inginkan, menghapus data, mengupdate data.

o   Fasilitas Report
            Dengan fasilitas ini kita dapat mencetak informasi sesuai format yang kita inginkan, misalnya dengan judul kolom. Dapat dicetak dicetak dikertas atau dalam file sesuai kebutuhan kita.

o   SQL (Structured Query Language)
            SQL merupakan suatu bahasa permintaan yang interaktif. Dengan SQL kita dapat membentuk berbagai macam tugas manajemen database yaitu :
         Membentuk dan menghapus table
         Memasukkan dan menghapus data
         Query database
         Memberi nama lain untuk table dan kolom

·         Sistem USER MENU
                      Fasilitas User Menu yang ada di SQL digunakan untuk membentuk dan menjalankan berbagai macam menu. Pilihan yang dapat dipakai di User Menu :
                • Submenu dalam sistem menu
                • ISQL program ( report, screen form, SQL )
           • Program lain yang ada dalam software library
                              • Utilitas dari sistem operasi

DATA DEFINITION

CREATE DATABASE

            Statement CREATE DATABASE digunakan untuk membuat sebuah database baru. INFORMIX-4GL akan memuat sistem catalog yang akan berisi sebuah kamus data yang menggambarkan struktur database. Database yang dibuat secara otomatis menjadi current database (yang aktif saat itu).

CLOSE DATABASE

DROP DATABASE
CREATE TABLE

ALTER TABLE

RENAME TABLE
            Digunakan untuk mengubah nama table.
Sintaks :
RENAME TABLE oldname TO newname
RENAME TABLE Kata kunci.
oldname Nama table yang ingin diubah namanya.
TO Kata kunci. newname Nama table yang baru.

DROP TABLE

CREATE VIEW

DROP VIEW

CREATE SYNONYM
           
            DROP SYNONYM
            Digunakan untuk menghapus synonym yang telah didefinisikan terlebih dahulu.
Sintaks :
DROP SYNONYM synonym

RENAME COLUMN
            Digunakan untuk merubah nama column (field).
Sintaks :
RENAME COLUMN table.oldcolumn TO newcolumn

CREATE INDEX

ALTER INDEX

DROP INDEX

            UPDATE STATISTICS

DATA MANIPULATION

DELETE
            Digunakan untuk menghapus satu atau lebih baris dari suatu tabel Sintaks : DELETE FROM table-name [ WHERE condition ]

INSERT
            Digunakan untuk menambah data ke dalam tabel.
Sintaks :
INSERT INTO table-name [(column-list)]  
            {VALUES (value-list) | SELECT-statement}

INSERT INTO
             Kata kunci table-name Nama dari table yang akan ditambah datanya column-list Column (field) yang akan ditambah datanya, bila lebih
dari satu column maka dipisahkan dengan koma

UPDATE
            Statement UPDATE digunakan untuk merubah suatu nilai dalam satu atau lebih kolom pada satu atau lebih baris dalam table.
Sintaks :
UPDATE table-name SET {column-name = expr [,...] |
{(column-list) | [table-name.]*} =
{(expr-list) | record-name.*}}
[WHERE condition ]

SELECT
            Statement SELECT digunakan untuk meng-query suatu current database.
Statement SELECT dapat terdiri dari 8 buah clause. Dari semuanya hanya SELECT clause dan FROM clause yang merupakan kata kunci. Jika INTO clause disertakan, maka harus ditulis sebelum FROM clause.
Sintaks :
SELECT clause [INTO clause] FROM clause
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
[ORDER BY clause]
            [INTO TEMP clause]

DATA ACCESS  

GRANT
            Statement ini digunakan untuk memberikan hak istimewa seorang pemakai dalam suatu table atau data base
REVOKE
          Statement ini digunakan untuk menghapus hak akses istimewa seorang pemakai dalam suatu table atau database.

Sintaks :
REVOKE {tab-privilege ON table-name | db-privilege}
FROM {PUBLIC | user-list}
REVOKE Kata kunci
tab-privilege Satu atau lebih hak akses istimewa yang dipisahkan




contoh membuat database dengan menggunakan informix:

Langkah 1 : * Membuat database-nya, misalnya kita beri nama : abc
Sintak-nya : CREATE DATABASE abc
* Membuat table untuk memasukkan/ menyimpan data kurs, misalnya kita beri nama: t_vals
Sintak-nya : CREATE TABLE t_vals
(curren char(2),
skatan char(3),
urai char(15),
kurs_beli decimal(10,5),
kurs decimal(10,5),
tglpro date
);

* Membuat formulir untuk memasukkan data; kita beri nama f_kurs.per

database abc
screen
{

Kurs Per Tanggal : [f003 ]

Kode Singkatan Uraian Kurs Beli Kurs Tengah
===============================================================
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
[a0] [a1 ] [f000 ] [f001 ] [f002 ]
===============================================================
CTRL/C >> Ke Menu
}
end
tables
t_vals
attributes
a0 = t_vals.curren, reverse, noentry;
a1 = t_vals.skatan, upshift, reverse, noentry;
f000 = t_vals.urai, reverse, noentry;
f001 = t_vals.kurs_beli, reverse;
f002 = t_vals.kurs, reverse;
f003 = t_vals.tglpro, format = "dd/mm/yyyy", reverse, color=yellow;
end

instructions
delimiters " ";
screen record s1_scr[9] (t_vals.curren, t_vals.skatan, t_vals.urai,
t_vals.kurs_beli, t_vals.kurs)
screen record s3_scr (t_vals.tglpro)

* Membuat formulir untuk memasukkan data; kita beri nama f_kurs.per

#
# Prog. Id. p_kurs
#
#

DATABASE abc

GLOBALS
DEFINE
kk ARRAY[50] OF RECORD
curren LIKE t_vals.curren,
skatan LIKE t_vals.skatan,
urai LIKE t_vals.urai,
beli LIKE t_vals.kurs_beli,
kurs LIKE t_vals.kurs
END RECORD,

wt_mtuang RECORD LIKE t_mtuang.*,
wt_vals RECORD LIKE t_vals.*,
w_date,
w_tgl LIKE t_vals.tglpro,
w_kurs LIKE t_vals.kurs,
w_nmbln CHAR(9),
w_anno, w_year,
w_mona, w_mont INTEGER,
ii,k SMALLINT,
w_pros CHAR(3),
w_promt CHAR(1)

END GLOBALS

MAIN
OPTIONS
INSERT KEY F1,
DELETE KEY F2,
PREVIOUS KEY F3,
NEXT KEY F4

DEFER INTERRUPT
LET INT_FLAG = FALSE

OPEN WINDOW win_vals AT 5,9
WITH FORM "f_kurs" ATTRIBUTE(border, message line last)

MENU "KURS BULANAN"
COMMAND "ADD" "Memasukkan Kurs"
LET w_pros = "add"
CALL init_kk_array()
CALL rekam()
COMMAND "QUERY" "Melihat Kurs"
LET w_pros = "que"
CALL init_kk_array()
CALL lihat()
COMMAND "REVISI" "Koreksi"
LET w_pros = "upd"
CALL init_kk_array()
CALL lihat()
COMMAND "DELETE" "Koreksi/Hapus Kurs"
LET w_pros = "del"
CALL init_kk_array()
CALL lihat()
COMMAND "EXIT" "Keluar Menu"
EXIT MENU
END MENU

CLOSE WINDOW win_vals

END MAIN

FUNCTION lihat()
DEFINE query_1,s1 CHAR(500),
exist SMALLINT

CONSTRUCT query_1 ON tglpro FROM t_vals.tglpro

LET s1 = "SELECT tglpro FROM t_vals WHERE ",query_1 CLIPPED,
" GROUP BY tglpro ORDER BY tglpro"

LET exist = 0

PREPARE s_1 FROM s1
DECLARE q_curs SCROLL CURSOR FOR s_1
OPEN q_curs

MENU "=>"
COMMAND "First " "record pertama..."
FETCH FIRST q_curs INTO wt_vals.tglpro

IF STATUS = NOTFOUND THEN
CLEAR FORM
CALL mes_int_flag(" Tidak ada data ...")
ELSE
CALL disp_vals()
END IF

COMMAND "Next" "record berikutnya..."
FETCH NEXT q_curs INTO wt_vals.tglpro

IF STATUS = NOTFOUND THEN
CLEAR FORM
CALL mes_int_flag(" Record berikutnya tidak ada ...")
ELSE
CALL disp_vals()
END IF

COMMAND "Previous" "record sebelumnya..."
FETCH PRIOR q_curs INTO wt_vals.tglpro

IF STATUS = NOTFOUND THEN
CLEAR FORM
CALL mes_int_flag(" Record sebelumnya tidak ada ...")
ELSE
CALL disp_vals()
END IF

COMMAND "Exit" "ke-menu sebelumnya..."
EXIT MENU
END MENU

CLOSE q_curs

END FUNCTION


FUNCTION disp_vals()
DEFINE ws_vals RECORD LIKE t_vals.*

LET k = 1
DECLARE v_curs cursor for
SELECT * FROM t_vals
WHERE t_vals.tglpro = wt_vals.tglpro
ORDER BY curren

FOREACH v_curs INTO ws_vals.*
LET kk[k].curren = ws_vals.curren
LET kk[k].skatan = ws_vals.skatan
LET kk[k].urai = ws_vals.urai
LET kk[k].beli = ws_vals.kurs_beli
LET kk[k].kurs = ws_vals.kurs
LET k = k+1
END FOREACH

CALL set_count(k)
CALL dis_int_flag(" Tekan proses berikutnya...")

LET w_tgl = ws_vals.tglpro
DISPLAY ws_vals.tglpro TO s3_scr.tglpro
DISPLAY ARRAY kk to s1_scr.*
DISPLAY " " AT 19,1

CASE WHEN w_pros = "upd"
CALL prompt_line("Apakah data ini akan dikoreksi (y/n)? ") RETURNING w_promt

IF w_promt = "Y" THEN
CALL rekam()
END IF

WHEN w_pros = "del"
CALL prompt_line("Apakah data ini akan dihapus (y/n)? ") RETURNING w_promt

IF w_promt = "Y" THEN

IF w_pros = "del" THEN
DELETE FROM t_vals
WHERE t_vals.tglpro = w_tgl
ELSE
CALL mes_int_flag(" Data tidak dihapus ...")
END IF
END IF
END CASE

END FUNCTION

FUNCTION rekam()

IF w_pros = "add" THEN

INPUT w_tgl FROM s3_scr.*
AFTER FIELD tglpro

DECLARE u_cur cursor for
SELECT kurs FROM t_vals
WHERE tglpro = w_tgl
OPEN u_cur
FETCH u_cur INTO w_kurs
IF STATUS <> NOTFOUND THEN
CALL mes_int_flag(" Kurs ini sudah di-input...")
CLOSE u_cur
NEXT FIELD tglpro
END IF
END INPUT

IF INT_FLAG THEN
LET int_flag = FALSE
CALL mes_int_flag(" Proses Dibatalkan Operator ...")
RETURN
END IF
CALL isi_kode_sing()

END IF

INPUT ARRAY kk WITHOUT DEFAULTS FROM s1_scr.*
LET ii = arr_curr()

IF INT_FLAG THEN
LET int_flag = FALSE
CALL mes_int_flag(" Proses Dibatalkan Operator ...")
RETURN
END IF

IF w_pros = "upd" THEN
DELETE FROM t_vals
WHERE t_vals.tglpro = w_tgl
END IF

FOR k = 1 TO ii
IF kk[k].curren IS NOT NULL OR kk[k].curren <> "" THEN
INSERT INTO t_vals
(curren, skatan, urai, kurs_beli, kurs, tglpro)
VALUES
(kk[k].curren, kk[k].skatan, kk[k].urai, kk[k].beli, kk[k].kurs,
w_tgl)
END IF
END FOR
CALL mes_int_flag(" Proses rekam selesai ...")

END FUNCTION

FUNCTION init_kk_array()
FOR k = 1 TO 50
INITIALIZE kk[k].* TO NULL
END FOR
END FUNCTION

FUNCTION isi_kode_sing()
LET k = 1

DECLARE i_curs cursor for
SELECT * FROM t_mtuang
ORDER BY curren
FOREACH i_curs INTO wt_mtuang.*
LET kk[k].curren = wt_mtuang.curren
LET kk[k].skatan = wt_mtuang.skatan
LET kk[k].urai = wt_mtuang.urai
LET k = k+1
END FOREACH
CALL set_count(k)

END FUNCTION


FUNCTION mes_int_flag(w_char40)
DEFINE w_char40 CHAR(40)

OPEN WINDOW wx at 18,20 with 1 rows, 40 columns
ATTRIBUTE(border, message line last)
MESSAGE w_char40 CLIPPED ATTRIBUTE(YELLOW) SLEEP 2 MESSAGE ""
CLOSE WINDOW wx
END FUNCTION


FUNCTION dis_int_flag(w_char40)
DEFINE w_char40 CHAR(40)

DISPLAY w_char40 CLIPPED AT 19,1 ATTRIBUTE(YELLOW,BLINK)

END FUNCTION


FUNCTION prompt_line(x_prompt)
DEFINE x_prompt CHAR(40),
x_yn CHAR(1)

OPTIONS PROMPT LINE LAST
PROMPT x_prompt CLIPPED FOR x_yn
IF x_prompt IS NULL OR
x_prompt = "" OR
x_prompt = " " THEN
LET x_prompt = "N"
END IF

LET x_yn = UPSHIFT(x_yn)
RETURN x_yn
END FUNCTION









Keunggulan aplikasi INFORMIX :

Dengan informix-sql, kita dapat :
- menyusun & memodifikasi tabel
- menggunakan menu yg disediakan oleh schema editor
- memasukkan & mencari informasi database dgn menggunakan screen form
- mengurutkan, menggabungkan, mengatur & menampilkan data dengan report.
- Menambahkan, mengubah & mencari informasi database menggunakan query language
- Memanfaatkan isql melalui fasilitas khusus, user menu
            i4gl (informix-4GL) ® C compiler
            r4gl (rapid development system)
            r4gl memberikan fasilitas koreksi (debugger), program di-compile lebih cepat dari   i4gl.
            Sedangkan standart i4gl memerlukan compiler C.
            r4GL tidak memerlukan compiler C dalam membetuk program eksekusi

5 komentar:

  1. makasih yaaa..... udah ngasih artikel untuk ngerjain tugas.....
    semoga semakin maju ni blog hehehehe :D :D

    BalasHapus
  2. AKU SUKA SAMA PANDANYA LOOOOHHHH !!!!!!!!!!!!!!!!!!!!!!!

    BalasHapus