Pasang IKLAN

Mau Pasang iklan?? 30rb/bulan. berminat kirim email ke hadisucipto1989@yahoo.com. Atau isi coment untuk memesan tempat.


Selamat Datang di Blog Gery Casakom Tempat Belajar Bersama Berbagi Ilmu dan Pengalaman
free counters
ShoutMix chat widget

Senin, 24 Mei 2010

PEMROGRAMAN INFORMIX

Memulai informix-4gl

Ketik i4gl atau r4gl pada shell prompt

Informix-4gl RDS (Rapid Development System)

Informix-4gl C compiler

/u/komputer> r4gl 

maka akan tampil menu sbb :

INFORMIX-4GL : Module Form Program Query-language Exit
Create , modify , or run individual 4gl program modules
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



Module : bekerja pada program module Informix-4gl
Form : bekerja pada screen form
Program : spesifikasi komponen dari program multi-module
Query language : menggunakan SQL interaktif
Exit : kembali ke shell prompt


Menu MODIFY Dalam Module 4GL


Module ; Modify New Compile Program_Compile Run Debug Exit
Change an existing 4gl program module
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



Modify : untuk memodifikasi module 4gl yang sudah ada
New : untuk membuat module 4gl yang baru
Compile : untuk mengkompile module 4gl yang stand_alone tanpa melalui
pilihan modify.
Program_compile : mengijinkan kita mengkompile dan menggabung module.
Pilihan ini berguna jika kita mempunyai satu module dari sekelom-
pok program yang kompleks & ingin menguji dengan cara meng-
kompilenya dengan module lain.
Run : menjalankan module program
Debug : menggunakan Informix-4gl interaktif debugger untuk menganalisa
program.


MODIFY MODULE >> 
Choose a module with Arrow Keys or enter a name, and press RETURN
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -
Prog_latihan1
Prog_latihan2
Prog_latihan3


USE-EDITOR >> vi 
Enter editor name. (Return only for default editor)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



Kemudian muncul program yang sudah pernah dibuat,sbb.:
MAIN
DISPLAY “ Selamat Belajar Informix-4gl” AT 5,10
DISPLAY “ Semoga Sukses” AT 6,15
END MAIN

:wq

MODIFY MODULE : Compile Save-and-exit Discard-and-exit
Compile the 4gl module specification
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



COMPILE MODULE : Object Runable Exit
Create an object file (.4go suffix)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



COMPILE MODULE : Object Runable Exit
Create an runable program (.4gi suffix)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



Setelah sukses mengkompile, tampilan berikutnya sbb.:
MODIFY MODULE : Compile Save-and-exit Discard-and-exit
Save the 4GL module and return to MODULE Menu
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -





Menu NEW Dalam Module 4GL


Module ; Modify New Compile Program_Compile Run Debug Exit
Create a new 4GL program module
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



NEW MODULE >>_
Enter the name you want to assign to the module, and press RETURN
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




~
~ ketik program anda
~
~

Dalam setiap modul program 4GL harus terdapat main program, yang ditandai dengan statement MAIN.

MAIN
……………………………….. ………………………………..
…..statement…………
………………..………………
END MAIN

MAIN  menyatakan awal blok program .
END MAIN  menyatakan akhir blok program.

Contoh :
MAIN
CREATE DATABASE filkom
CREATE TABLE t_matakuliah
(kd_mk char(8),
nm_mk char(30),
sks smallint,
jenis char(1))
INSERT INTO t_matakuliah
VALUES (“DU-14201”,”Agama”,2,”W”)

END MAIN


MAIN
DISPLAY ‘Universitas Gunadarma’ AT 6,7
DISPLAY ‘Jl. Akses UI Kelapa Dua’ AT 7,7
ATTRIBUTE(reverse,blink)
END MAIN


Output :




MAIN
DEFINE
Nm char(25),
Ket char(30)

LET ket = ‘mahasiswa Universitas Gunadarma’
PROMPT ‘Nama anda : ‘ FOR nm
DISPLAY ‘Mhs. yang bernama ‘,nm,ket AT 10,5
DISPLAY ‘Mhs. yang bernama ‘,nm,’ adalah’,ket AT 12,5
END MAIN

Output :







MAIN
DEFINE nm char(25),
kls char(5)

PROMPT ‘Masukkan nama anda : ‘ FOR nm
PROMPT ‘Masukkan kelas anda : ‘ FOR kls

DISPLAY ‘Saya yang bernama : ‘,nm
DISPLAY ‘Sekarang duduk di kelas ‘,kls
DISPLAY ‘Sedang belajar Informix’
END MAIN

Output :

Program dengan menggunakan DATABASE

DATABASE filkom #contoh program cari data
MAIN
DEFINE
nm char(25), kls char(5)

SELECT nama,kelas INTO nm,kls
FROM t_master
WHERE npm=’10197477’

DISPLAY ‘Nama : ‘,nm AT 5,9
DISPLAY ‘Kelas : ‘,kls AT 6,9

END MAIN

DATABASE filkom
MAIN
DEFINE
nm LIKE t_master.nama,
kls LIKE t_master.kelas,
m_npm LIKE t_master.npm

PROMPT ‘Masukkan NPM yang dicari : ‘ FOR m_npm

SELECT nama,kelas INTO nm,kls
FROM t_master WHERE npm=m_npm
DISPLAY nm CLIPPED,’/’,m_npm,’/’,kls AT 10,12

END MAIN

Contoh program INSERT

# Statement yg diawali tanda ‘#’ tidak diakses
# Ini adalah contoh untuk memasukkan data ke dalam tabel
# Program ini dibuat oleh : ROSNI
# Tanggal pembuatan : 01 /10/2001
#-------------------------------------------------------------------

DATABASE filkom
MAIN
INSERT INTO t_matakuliah (kd_mk,nm_mk,sks,jenis)
VALUES (‘DK-14202’,’Fisika’,2,’W’)
END MAIN
{ contoh kedua program insert data
dibuat oleh …………………
selain menggunakan tanda ‘#’ boleh juga menggunakan tanda’{ }’
}

DATABASE filkom
MAIN
DEFINE kode_mk char(8),
nama_mk char(25),
jsks smallint,
jns char(1)

LET kode_mk = ‘DK-14202’ #contoh penggunaan LET
LET nama-mk = ‘fisika’
LET jsks = 2
LET jns =’W’

INSERT INTO t_matakuliah(kd_mk,nm_mk,sks,jenis)
VALUES (kode_mk,nama_mk,jsks,jns)

END MAIN


#contoh ketiga program insert data
# bandingkan format penulisan define

DATABASE filkom
MAIN
DEFINE kode_mk char(8),nama_mk char(25),jsks smallint,
jns char(1)

PROMPT ‘masukkan kode matakuliah = ‘ FOR kode_mk
PROMPT ‘masukkan nama matakuliah = ‘ FOR nama_mk
PROMPT ‘masukkan jumlah sks = ‘ FOR jsks
PROMPT ‘masukkan jenis matakuliah = ‘ FOR jns

#dibawah ini adalah statement ‘sql’
# penulisan statement sql-nya sama dengan contoh kedua

INSERT INTO t_matakuliah (kd_mk,nm_mk,sks,jenis)
VALUES (kode_mk,nama_mk,jsks,jns)

END MAIN

Contoh Program DELETE

DATABASE filkom
MAIN
DEFINE np LIKE t_master.npm

PROMPT ‘masukkan npm anda : ‘ FOR np

DELETE FROM t_master WHERE npm=np
END MAIN



DATABASE filkom
MAIN
DELETE FROM t_master WHERE kelas[1]=’4’ and ket_lulus=’W’
END MAIN



Contoh Program UPDATE

DATABASE filkom
MAIN
DEFINE
np LIKE t_master.npm,
almt LIKE t_master.alamat

PROMPT ‘masukkan npm anda : ‘ FOR np
PROMPT ‘masukkan alamat baru : ‘ FOR almt

#perintah sql
UPDATE t_master SET alamat = almt WHERE npm = np

END MAIN


DATABASE filkom
MAIN
UPDATE t_master SET kota=’Depok’ WHERE kota=’Cimanggis’
END MAIN


Contoh penggunaan FOR ….. END FOR

-- membuat program dengan menggunakan FOR … END FOR
-- kegunaan tanda ‘--‘ sama dengan tanda ‘#’

DATABASE filkom
MAIN
DEFINE np char(8), nama char(25), kls char(5),i smallint

FOR i = 1 TO 5
PROMPT ‘ketik npm anda = ‘ FOR np
PROMPT ‘ketik nama anda = ‘ FOR nama
PROMPT ‘ketik kelas anda = ‘ FOR kls

INSERT INTO t_master (npm,nama_mhs,kelas)
VALUES (np,nama,kls)

DISPLAY ‘N P M : ‘,np AT 6,5
DISPLAY ‘Nama : ‘,nama AT 7,5 ATTRIBUTE(blink)
DISPLAY ‘Kelas : ‘,kls AT 8,5
SLEEP 2
CLEAR SCREEN
END FOR
DISPLAY ‘Selesai dech ……bye…….’ AT 15,10
END MAIN

{contoh penggunaan WHILE …..END WHILE }

DATABASE filkom
MAIN
DEFINE np char(8), nama char(25), kls char(5), jawab char(1)

LET jawab=’y’
WHILE jawab=’y’ OR jawab=’Y’ #dpt ditulis jawab MATCHES’[Yy]’
PROMPT ‘ketik npm anda = ‘ FOR np
PROMPT ‘ketik nama anda = ‘ FOR nama
PROMPT ‘ketik kelas anda = ‘ FOR kls
INSERT INTO t_master (npm,nama_mhs,kelas)
VALUES (np,nama,kls)
PROMPT ‘ingin tambah data lagi [y/t] ? ‘ FOR jawab
CLEAR SCREEN
END WHILE
END MAIN
PENGGUNAAN FUNCTION

Mendefinisikan function
Function adalah satu routine yang merupakan bagian dari modul program 4GL. Function diletakkan diluar routine MAIN

MAIN
…..
..….
END mAIN

FUNCTION nama_function( )
…….
……
END FUNCTION

#contoh penggalan program yg menggunakan function

FUNCTION jum_mhs( )
DEFINE jum integer,
kls char(5)

PROMPT ‘menghitung jumlah mahasiswa kelas ‘ FOR kls

# perintah sql untuk menghitung
SELECT count(*) INTO jum
FROM t_master
WHERE kelas = kls

DISPLAY ‘Banyaknya mahasiswa kelas ‘,kls, ’=’ , jum
END FUNCTION

Memanggil FUNCTION
Untuk menggunakan function yang telah didefinisikan, dapat dilakukan dengan memanggil function tersebut dari dalam MAIN atau dari dalam FUNCTION lain.
Perintah yg diperlukan untuk memanggil function adalah ‘CALL’

MAIN
………
……….
CALL nama_function( )
…….
END MAIN
# contoh program untuk memanggil function

MAIN
CALL berita( )
END MAIN

FUNCTION berita( )
DISPLAY ‘lagi belajar function’
END FUNCTION


Pengertian variabel global, variabel module & variabel local

Routine adalah seperti MAIN, REPORT dan FUNCTION dapat mempunyai tiga jenis tingkatan variabel terhadap data yaitu global, module dan local.

Variabel global
Variabel yang dapat dikenal dan diterima diseluruh program

Variabel module
Variabel yg dikenal disemua routine yg terletak didalam program 4gl yg sama

Variabel local
Variabel ini hanya berlaku & dimengerti didalam routine yg mendefinisikannya.

Skema lingkup data variabel


Globals
Define var A modul 1

Main
Define var B modul 2
End main
Define var C
Function x
Define var D modul 3
Function y
Define var E




Lokasi Nama variabel Type Scope
Globals Var A Global Main
Function x
Function y
Main Var B Local Main
Module Var C Module Function x
Function y
Function x Var D Local Function x
Function y Var E Local Function y

Contoh :

Globals
Define a integer
End globals
Main
Let a = 0
Call ganti( )
Display a
End main
Function ganti( )
Let a = 99
End function


#outputnya = 99
Globals
Define a integer
End globals
Main
Let a = 0
Call ganti( )
Display a
End main
Function ganti( )
Define a integer
Let a = 99
End function

# outputnya = 0



Parameter
Jenis variabel atau nilai yang terletak antara tanda kurung ( ) pada perintah FUNCTION dan berhubungan dengan perintah CALL.

Parameter ini digunakan untuk melewatkan / mengirim nilai/informasi darii MAIN ke FUNCTION tanpa mempengaruhi nilainya.

PASSING VALUE (melewatkan/mengirim nilai melalui function)
Untuk mengirim/melewatkan nilai melalui function, digunakan parameter pada function yang terletak antara tanda kurung ( ).

Variabel yang menerima nilai/informasi disebut variabel argument.
Parameter harus didefinisikan juga dengan define.


Function tampil (nama,alamat)
Define nama char(25), alamat char(30)
……………………….
………………………….
End function

Function lihat (rec_mhs) #baca catatan ttg record
Define rec_mhs record like t_master.*
………………..
……………….
End function


Main
Define nama,kota char(30) #2 var bertype sama
Let nama = ‘audi’
Let kota = ‘Bandung’
Call lihat(nama,kota) # passing value
End main

Function lihat(nm,kt) # argument value
Define nm,kt char(30)
Display ‘nama = ‘,nm at 7,10
Display ‘kota = ‘,kt at 8,10
End function



RETURN VALUE
Mengembalikan nilai dari function kembali ke routine yang memanggilnya.

Main
Define juml integer

Call hitung( ) RETURNING juml
Display ‘jumlah = ‘,juml at 10,10

End main

Function hitung( )
Define jml integer
Select count(*) into jml from t_master
RETURN jml
End function

Penggunaan PASSING VALUE & RETURN VALUE


Database filkom
Main
Define npm char(8), nama char(25),
Alamat char(30), kota char(15)

Prompt ‘tampilkan data mahasiswa , npm = ‘ for npm
Call cari(npm) returning nama,alamat,kota
Display ‘N P M = ‘,npm at 15,5
Display ‘Nama = ‘,nama at 16,5
Display ‘Alamat = ‘,alamat at 17,5
Display ‘Kota = ‘,kota at 18,5
End main

Function cari(np)
Define np char(8), nm char(25),
alm char(30), kt char(15)


select nama,alamat,kota
into nm , alm, kt
from t_master
where npm = np

#perintah sql diatas bisa ditulis dalam satu baris seperti dibawah ini
#select nama,alamat,kota into nm,alm,kt from t_master where npm=np

return nm, alm, kt
end function




Latihan :

Buat program untuk menghitung luas segitiga dengan input alas dan tinggi di main section, sedangakan perhitungan luas di function hitung.






RECORD

Record merupakan kumpulan dari program variable yang kemungkinannya berbeda tipe data yang satu dengan lainnya.
Sebelum memakai suatu record, kita harus mendefinisikan terlebih dahulu pada DEFINE.

record_name
RECORD
Var_list data_type [,…….]
END RECORD

Define
rec_mk RECORD
kd_mk char(8),
nm_mk char(25),
sks smallint,
jenis char(1)
END RECORD
Main
Select kd_mk,nm_mk,sks,jenis INTO rec_mk.*
from t_matakuliah where kd_mk = ‘TI-17203’

#--------------------------------------------------------------
#sql diatas bisa ditulis seperti dibawah ini
{ Select kd_mk,nm_mk,sks into rec_mk.kd_mk THRU rec_mk.sks
From t_matakuliah where kd_mk=’TI-17203’ }
#--------------------------------------------------------------

display ‘Nama Matakuliah : ‘,rec_mk.nm_mk
display ‘Kode Matakuliah : ‘,rec_mk.kd_mk
end main

Jika kita mendefinisikan record sama seperti pada suatu table (seperti contoh diatas), maka penulisannya dapat disederhanakan menjadi :

record_name RECORD LIKE table_name.*

Define
rec_mk RECORD LIKE t_mk.*
main
………………….
end main

PERINTAH SELECT DENGAN CURSOR

• Mendeklarasikan cursor untuk mewakili perintah SELECT
• Mendapatkan row dengan FOREACH
• Mendapatkan row dengan OPEN , FETCH dan CLOSE

Mendeklarasikan cursor untuk select

sintaks : DECLARE nama_cursor [scroll] CURSOR FOR
SELECT statement

DECLARE k1 CURSOR FOR
Select * from t_master
Where kelas[1,2] = ‘4K’

DECLARE kur CURSOR FOR
Select npm,nama from t_master
Where nama[1]=’R’


Mendapatkan row dengan FOREACH

Statement ‘foreach’ menyebabkan urut-urutan statement dikerjakan satu persatu.

sintaks : FOREACH nama_kursor [INTO var]
………statement………
……………………………….
[CONTINUE FOREACH]
…………………………….
[EXIT FOREACH]
………………………
END FOREACH

• Nama kursor di FOREACH harus sudah pernah didefinisikan pada statement DECLARE
• INTO digunakan untuk menampung hasil query setiap row
• CONTINUE FOREACH atau EXIT FOREACH digunakan untuk interupsi pada kondisi tertentu
• Diakhiri dengan END FOREACH




# contoh penggunaan FOREACH

database filkom
main
define rec_mk RECORD LIKE t_matakuliah.*

declare k1 cursor for
select * from t_matakuliah where kd_mk[1,2]=’DU”

foreach k1 INTO rec_mk.*
display ‘Kode Matakuliah : ‘,rec_mk.kd_mk
display ‘Nama Matakuliah : ‘,rec_mk.nm_mk
display ‘Sks : ‘,rec_mk.sks
end foreach
end main


CONTINUE FOREACH

Statement IF dapat digunakan bersama statement CONTINUE FOREACH untuk menghentikan urutan statement yang ada pada FOREACH loop, dan melanjutkan pembacaan baris berikutnya.

#contoh penggunaan statement ‘continue foreach’
database filkom
main
define rec_mhs RECORD LIKE t_master.*

declare k2 cursor for
select * from t_master

foreach k2 into rec_mhs.*
if rec_mhs.kota = ‘Jakarta’ then
continue foreach
end if
display ‘N P M : ‘,rec_mhs.npm
display ‘Nama : ‘,rec_mhs.nama
display ‘Kota : ‘,rec_mhs.kota
display ‘ ‘
end foreach

end main


EXIT FOREACH

Statement IF dapat digunakan bersama statement EXIT FOREACH untuk menghentikan urutan statement yang ada pada ‘foreach loop’ , serta keluar dari ‘foreach loop’

# contoh penggunaan ‘exit foreach’
database filkom
main
define rec_mhs RECORD LIKE t_master.*,jw char(1)

declare k3 cursor for
select * from t_master

foreach k3 into rec_mhs.*
display ‘N P M : ‘,rec_mhs.npm
display ‘Nama : ‘,rec_mhs.nama
display ‘Alamat : ‘,rec_mhs.alamat

prompt ‘Ingin lihat data berikutnya ?[y/t] : ‘ for jw
if jw matches’[Tt]’ then
exit foreach
end if
end foreach

end main

Mendapatkan row dengan OPEN , FETCH dan CLOSE

Statement foreach diatas, sebenarnya mengkombinasikan beberapa fungsi statement tunggal :
• melakukan OPEN cursor yang terkait dengan statement SELECT
• Secara berulang melakukan FETCH (mengambil) baris, dan menjalankan sejumlah statement yang ada pada FOREACH loop.
• Melakukan CLOSE cursor, setelah seluruh baris terbaca seluruhnya.

OPEN
Untuk melakukan aktif set dari statement SELECT yang dikaitkan dengan suatu cursor.

DECLARE kur CURSOR FOR
SELECT * FROM t_matakuliah
WHERE jenis = ‘P’
OPEN kur

Informix-4GL akan mencari baris sesuai statement diatas dan meletakkan cursor pada posisi awal, sebelum baris pertama.

DK-14301 Pemrog.Gene.4 3 P
TI-17204 Sistem Pakar 2 P
TI-18201 Automata 2 P

FETCH
Untuk menggerakkan cursor pada baris berikutnya dalam suatu aktif set, dan mengambil informasi pada baris tersebut.

#contoh penggunaan statement fetch

FETCH kur INTO rec_mk.*


Output dari statement di atas, sbb.
DK-14301
Pemrog.Gene.4 3 P cursor
TI-17204 Sistem Pakar 2 P
TI-18201 Automata 2 P

Jika FETCH dijalankan sekali lagi, maka cursor akan berpindah ke baris kedua. Bila cursor berada setelah baris terakhir, maka tidak ada lagi informasi yang akan diambil. Pada saat yang sama Informix akan mengisi variabel status dengan informasi NOT FOUND, sebagai tanda bahwa cursor sudah berada di ‘luar batas’.

DK-14301 Pemrog.Gene.4 3 P
TI-17204 Sistem Pakar 2 P
TI-18201 Automata 2 P
Status = NOT FOUND cursor

Karena kita tidak dapat memperkirakan berapa jumlah baris dalam aktif set, maka kita harus selalu memeriksa isi variabel status, segera setelah statement FETCH.
Contoh :
FETCH kur INTO rec_mk.*
IF status = notfound then
Message ‘Tidak ada data’
ELSE
display ‘Kode Matakuliah :,rec_mk.kd_mk
Display ‘Nama Matakuliah :,rec_mk.nm_mk
END IF
CLOSE
Jika sudah tidak membutuhkan informasi atas baris-baris yang diperoleh dari statement SELECT, maka gunakan statement CLOSE atas kursor yang terkait.
#contoh penggunaan statement Close

CLOSE kur

Dapat menggunakan WHILE loop untuk pengulangan pembacaan (FETCH) suatu baris dan memeriksa variabel status selama seluruh baris yang ada dalam aktif set diproses.
Sintaks :
WHILE ekspresi Boolean
…………………………….
…………………………….
[ CONTINUE WHILE ]
…………………………….
…………………………….
[ EXIT WHILE ]
END WHILE

#contoh 1
Database filkom
Define r_mk RECORD LIKE t_mk.*,jawab char(1)
Main
DECLARE kurs CURSOR FOR
Select * from t_mk where nm_mk[1]=’A’

OPEN kurs
Let jawab=’y’


WHILE jawab matches’[Yy]’
FETCH kurs INTO r_mk.*
IF status = notfound then
Message ‘Data tidak ada’
EXIT WHILE
END IF
Display ‘Nama Matakuliah : ‘,r_mk.nm_mk
Display ‘Kode Matakuliah : ‘,r_mk.kd_mk
Prompt ‘Lihat data selanjutnya ? [y/t]’ for jawab
ENDWHILE
CLOSE kurs
End main


#contoh 2, untuk memastikan suatu aktif set itu kosong
Database filkom
Define r_mk RECORD LIKE t_mk.*,jawab char(1)
Main
DECLARE kurs SCROLL CURSOR FOR
Select * from t_mk where nm_mk[1]=’B’

OPEN kurs
FETCH FIRST kurs INTO r_mk.*
If status = notfound then
Message ‘Tidak ada data pada aktif set’
Else
Message ‘Minimal ada satu data pada aktif set’
End if
CLOSE kurs
End main


NEXT :menandakan baris berikutnya setelah baris aktif (active set)
PREVIOUS :menandakan baris sebelumnya dari baris aktif
PRIOR
FIRST : menandakan baris pertama pada baris aktif
LAST : menandakan baris terakhir pada baris aktif
CURRENT : menandakan pada baris yg aktif pada active list
RELATIVE m : menandakan baris ke-m relatif pada kursor yg aktif
ABSOLUTE n : menandakan baris ke-n, n bias integer atau variabel dari
program

















ARRAY
Array merupakan kumpulan record dengan tipe yang sama

Sintaks : array_name ARRAY[n] OF RECORD
Var_list data_type[..,…..]
END RECORD

n = bilangan integer, merupakan jumlah record yg dapat ditampung
oleh array tersebut.

#contoh
ar_krs ARRAY[12] OF RECORD
npm1 like t_nilai.npm,
nama1 like t_nilai.nama,
kd_mk1 like t_nilai.kd_mk,
nm_mk1 like t_nilai.nm_mk
END RECORD



#contoh
ar_mhs ARRAY[150] OF RECORD LIKE t_master.*


#contoh program lengkap tentang ARRAY
Database filkom
Main
Define ar_mhs ARRAY[150] OF RECORD LIKE t_master.*,
i,j smallint
DECLARE k1 CURSOR FOR
SELECT * from t_master where kelas[1]=’4’

Let i=1
FOREACH k1 INTO ar_mhs[i].*
Let i = i + 1
END FOREACH

Let j = i – 1
FOR i = 1 to j
Display ‘Data ke-‘,i,’ ‘,ar_mhs[i].*
END FOR
End main



Pembuatan FORM dengan 4GL

Screen FORM adalah media yg digunakan untuk input & output variabel pada program 4GL , juga digunakan sebagai penghubung data secara interaktif untuk menghapus , mencari & memodifikasi data .
Sebelum digunakan pada program, screen form harus dibuat & dicompile terlebih dahulu.

Spesifikasi file FORM
File FORM pada Informix-4GL terdiri atas 5 bagian (section) yaitu :
• DATABASE
Untuk mengidentifikasi database (jika digunakan)
• SCREEN
Untuk mengidentifikasi ukuran (dimensi), field tags, & tampilan dari form
• TABLE (bersifat optional)
Untuk mengidentifikasi table (jika digunakan) yg berhubungan dengan field yg digunakan dalam form
• ATTRIBUTE
Untuk mengidentifikasi spesifikasi & kegunaan setiap field pada setiap form seperti tampilan pada layar, komentar dsb.
• INSTRUCTION (bersifat optional)
Mengidentifikasi field delimiter, screen record & screen array.

Tampilan menu FORM pada 4GL

INFORMIX-4GL : Module Form Program Query-language Exit
Modify , Generate,New, Compile a form
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -





FORM : Modify Generate New Compile Exit
Change an existing form specification
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -








Struktur umum form (sama dengan struktur form pada ISQL, hanya pada 4GL ada tambahan INSTRUCTION)

Database {nama database| formonly}
Screen section
{
[text] [field_tag] [char_graphics]
}
end
Tables [nama table]
Attributes
Field_tag = table.column [,type]
End
[Instruction
[delimiter ‘[]’ ]
[screen record nama_record [n]
({table.*
| table.column1 THRU table.column2})
…..]
[end]


Pembuatan form dapat dilakukan dari ‘isql’ atau ‘r4gl’, khusus jika ada instruction, peng-compile-an harus dilakukan melalui r4gl.

#contoh form yg menggunakan instruction
database pelanggan
screen size 24 by 80
{\g--------------------------------------------------------\g
FORM PELANGGAN
Nomor pelanggan : [f000 ]
Nama pelanggan : [f001 ]
A l a m a t : [f002 ]
K o t a : [f003 ]
Jumlah tagihan : [f004 ]
\g-------------------------------------------------------\g
}
end
table customer
attributes
f000 = customer.no;
f001 = customer.nama;
f002 = customer.alamat;
f003 = customer.kota;
f004 = customer.tagihan;
end
INSTRUCTION
SCREEN RECORD rec_cust (customer.nama THRU customer.tagihan)
End

Statement pada INSTRUCTION section, antara lain :
• Statement untuk menampilkan ARRAY
Digunakan perintah SCREEN RECORD
Screen record nama_record [n]
({table.* |table.column1 THRU table.column2|table.column3})

Pada screen section dibentuk sbb:

Database mahasiswa
Screen
{ N P M Nama kelas
-----------------------------------------
[p ] [q ] [r ]
[p ] [q ] [r ]
[p ] [q ] [r ]
}
end
table t_master
attributes
p = t_master.npm;
q = t_master.nama;
r = t_master.kelas;
end
Instruction
Screen record sc_mhs[3]
(t_master.npm,t_master.nama,t_master.kelas)
end

Untuk menampilkan screen form pada program, maka harus ditulis statement pembuka & penutup, yaitu : OPEN FORM & CLOSE FORM

Sintaks : OPEN FORM var_nm_form FROM “form_file”
DISPLAY FORM var_nm_form
CLOSE FORM var_nm_form form yg sdh dicompile

#contoh
OPEN FORM form_cust FROM “f_cust”
Display FORM form_cust
CLOSE FORM form_cust

INPUT statement
Digunakan untuk mengisi nilaipd prog.variabel dgn data dimasukkan melalui screen field
Sintaks : INPUT var_list FROM field_list
Contoh:
• Define rec_cust RECORD LIKE customer.*
INPUT rec_cust.nama,rec_cust.kota FROM nama,kota

• Input rec_cust.nama THRU rec_cust.tagihan
From nama,alamat,kota,tagihan

• Input rec_cust.nama THRU rec_cust.tagihan from r_cust.*

• Kalau semua nama var sama dgn nama field, dpt digunakan :
INPUT BY NAME rec_cust.nama THRU rec_cust.tagihan

DISPLAY statement
Untuk menampilkan nilai variabel melalui screen field
Sintaks : DISPLAY display_list TO field_list

Contoh :

Let rec_cust.nama =’Didi’
Let rec_cust.kota = ‘Jakarta’
Display rec_cust.nama,rec_cust.kota TO nama,kota


{program ini utk melihat data customer berdasarkan nomor customer dgn menggunakan screen form}

database pelanggan
define rec_cust RECORD LIKE customer.*,
in_no LIKE customer.no
main
OPEN FORM form_cust from ‘f_cust’
Display FORM form_cust

Prompt ‘masukkan nomor customer yg dicari :’ form in_no

Select * into rec_cust.*
from customer
where no=in_no

Display by name rec_cust.*

CLOSE FORM form_cust
End main





REPORT Pada R4GL

Cara membuat REPORT
• Routine report berada diluar main routine.
Dengan menggunakan routine report, kita dapat mengatur informasi sebagai suatu laporan dengan menentukan judul laporan, perhitungan, margin, ukuran kertas dan elemen-elemen lainnya.
• Data yg akan ditampilkan dalam report diperoleh dari main routine atau dari function routine.
• Gunakan looping (seperti FOREACH atau WHILE) bersama dengan START REPORT, OUTPUT TO REPORT dan FINISH REPORT, untuk mengirim data ke report.


STRUKTUR REPORT

MAIN
START REPORT report_name
begin loop
statement yg memberikan nilai a,b,c
OUTPUT TO REPORT report_name
……….
End loop
FINISH REPORT report_name
END MAIN

REPORT report_name(x,y,z)
…………….
END REPORT


FORMAT REPORT ROUTINE

REPORT report_name (argument list)
[DEFINEdefine statement]
[OUTPUT output statement]
[ORDER BY sort list]
FORMAT
control block
……….statement…….
………………………………
END REPORT

STATEMENT REPORT
• Report didefinisikan diluar blok MAIN program (main routine)
• Semua variabel yg dikirim ke report diletakkan pada argument_list
• Argument_list tidak boleh terdiri dari array atau record yg mengandung nilai array. (satu argument hanya boleh mempunyai satu nilau yg unik)

DEFINE SECTION
Semua argument_list pada report harus didefinisikan
Report cust_report (no,nama,kota)
Define no smallint,
nama char(25),
kota char(15)

Report cust_daf (r_cust)
Define r_cust record like cust.*

OUTPUT SECTION
• Untuk mengubah margin
• Untuk menentukan panjang kertas
• Mengirim output ke printer atau ke file
• Default margin :
Left margin 5 spaces
Top margin 3 lines
Bottom margin 3 lines
Page length 66 lines

ORDER BY SECTION
• Untuk mengurutkan data melalui report
• Dapat dilakukan berdasarkan argument_list

Report cust_daf (no,nama,kota)
Define no smallint, nama char(25), kota char(15)
order by nama

FORMAT SECTION
Pada bagian ini ditulis control block dan statement² untuk :
• Membuat page header and trailers
• Mencetak informasi dengan format tertentu
• Mengelompokkan informasi
• Perhitungan seperti total atau rata².

END REPORT
Ditulis untuk mengakhiri suatu report, setelah format section.

 MENJALANKAN REPORT 

Data dikirim ke report dari MAIN routine atau function dengan menggunakan loop seperti : WHILE atau FOREACH dgn statement

START REPORT report_name
OUTPUT TO REPORT report_name (variable_list)
FINISH REPORT report_name

#contoh penggunaan looping foreach utk mengirim data ke report
database pelanggan
main
define rec_cust record like cust.*

declare kur cursor for
select * from cust

start report cust_daf
foreach kur into rec_cust.*
output to report cust_daf (rec_cust.*)
end foreach
finish report cust_daf
end main

report cust_daf(r_cust)
define r_cust record like cust.*
format

on every row
end report

Space/spaces
Untuk menyisipkan space diantara 2 ekspresi pada statement
Contoh : print nomor clipped,”,”,2 spaces,nama

Skip
Untuk menyisipkan baris kosong
Contoh : skip 2 lines

Pageno
Penomoran halaman secara otomatis
Cth : Print ‘Laporan Keuangan’,column 50,’Hal : ‘,pageno using ‘##”

#contoh penulisan format section
format
page header
print column 25,”Daftar Pelanggan”
skip 2 lines
print ‘Nomor Pelanggan’,
column 25,’N a m a’,
column 50,’K o t a’
print ‘-------------------------------------------------------‘
skip 1 line
on every row
print no,column 25,nama,column 50,kota
page trailer
print ‘Data pelanggan’,column 60,’hal :’,pageno using ‘##’

output :
Daftar Pelanggan

Nomor Pelanggan N a m a K o t a
1015002 Evita Aulia Jakarta
…………… ………….. ………


Data pelanggan Hal : 1

#contoh pembuatan report
database pelanggan
main
define rec_cust record like cust.*
declare kur cursor for
select no,nama,kota from t_cust
order by kota
start report cust-daf
foreach kur into rec_cust.no,rec_cust.nama,rec_cust.kota
output to report cust_daf(rec_cust.no,rec_cust.nama,
rec_cust.kota)
end foreach
finish report cust_daf
end main
report cust_daf(nomor,nm,kt)
define nomor smallint,nm char(25),kt char(15)
format
on every row
print nomor,column 25,nm,column50,kt
after group of kt
skip 2 lines
end report

output :

103 Dina Bandung
105 Tio Bandung
107 Adi Bandung

104 Doni Bogor
108 Rini Bogor

101 Mira Jakarta
102 Lina Jakarta
106 Tania Jakarta


#contoh penggunaan operasi aritmatika
on every row
print nomor,
column 25,nama,
column 50,tagih*0.8 using “Rp ###,###.##”


#contoh penggunaan function
on last row
print ‘Total Tagihan’,
column 20,SUM(tagih) using ‘Rp ###,###.##’
skip 1 line
print ‘jumlah pelanggan’,
column 20,COUNT(*) using ‘###’


Group function

Yaitu agregate function yg dapat digunakan untuk perhitungan suatu group informasi pada report
• Group sum(eksp)
• Group count(*)
• Group min(eksp)
• Group max(eksp)
• Group avg(eksp)






#contoh menghitung jumlah tagihan setiap kota
…………………
Report hit_tag(nomor,nm,kt,tagih)
Define nomor smallint
nm char(25), kt char(15),
tagih like cust.tagihan
order by kt
format
page header
print ‘NOMOR’,
column 15,’NAMA’,
column 40,’KOTA’,
column 60,’TAGIHAN’
skip 2 lines
on every row
print nomor,column 15,nm,column 40,kt,
column 60,tagih using ‘Rp ###,###.##’
after group of kt
skip 1 line
print column 20,’Total tagihan kota ‘,kt,
column 55,GROUP SUM(tagih) using ‘Rp ###.###.##’
skip 2 lines
page trailer
print column 20,'TOTAL TAGIHAN',
column 55, SUM(tagih) using 'Rp ###.###.##'
end report
………….

Outputnya :
NOMOR NAMA KOTA TAGIHAN

103 Dina Bandung Rp 60.000,00
105 Tio Bandung Rp 15.000,00
107 Adi Bandung Rp 20.000,00

Total tagihan kota Bandung Rp 95.000,00

104 Doni Bogor Rp 30.000,00
108 Rini Bogor Rp 25.000,00

Total tagihan kota Bogor Rp 55.000,00

101 Mira Jakarta Rp 75.000.00
102 Lina Jakarta Rp 35.000,00
106 Tania Jakarta Rp 40.000,00

Total tagihan kota Jakarta Rp 150.000,00

TOTAL TAGIHAN Rp 300.000.00

Menampilkan REPORT

Report dapat ditampilkan ke layar, printer atau ke file.
Report didefinisikan pada output section

OUTPUT
Left margin 10
Page length 50
Report to “/dev/lp0” #cetak ke printer

OUTPUT
Report to “hasil’ #cetak ke file ‘hasil’

OUTPUT
# Report to “hasil’ #cetak ke layar monitor

#contoh pembuatan report tanpa pengiriman parameter
# buat blanko KRS hilang

main
define i,jum smallint

prompt ‘Mau cetak berapa kali : ‘ for jum
for I = 1 to jum
start report cetakan
output to report cetakan( )
finish report cetakan
end for
end main

report cetakan( )
output report to ‘dev/lp1’
format
page header
print ‘Setoran Universitas Gunadarma’
print ‘N P M = ………………’
print ‘Nama = …………………………………………………’
print ‘Kelas = …………’
skip 2 lines
print ‘Biaya pencetakan KRS pengganti Rp 5000’
end report



#prog. pencetakan report npm dan nama mhs per kelas dgn m’gunakan array
database filkom
main
define a_mhs ARRAY[150] of record
npm like t_master.npm,
nama like t_master.nama
end record,
kls char(5),
i,j,k smallint
prompt ‘Masukkan kelas yg akan dicetak : ‘ for kls
declare kur cursor for
select npm,nama from t_master where kelas=kls
order by npm
let i = 1
foreach kur into a_mhs[i].*
let i = i + 1
end foreach
let j = i –1

start report cetak
for k = 1 to j
output to report cetak(a_mhs[k].npm,a_mhs[k].nama,kls,k]
end for
finish report cetak
end main

report cetak(np,nm,kl,m)
define np like t_master.npm,
nm like t_master.nama,
kl like t_master.kelas,
m smallint
output
report to ‘/dev/lp0’
top margin 5
bottom margin 6
left margin 5
page length 66
format
page header
print ‘Universitas Gunadarma’
print ‘Kelas : ‘,kl,column 40,’Hal : ‘,pageno using’##’
print ‘-------------------------------------------------------------------------‘
print column 3,’No’,column 10,’N P M’,column 25,’N A M A’
print ‘-------------------------------------------------------------------------‘
on every row
print column 3, m using ‘###’,column 10,np,column 25,nm
page trailer
print ‘-------------------------------------------------------------------------‘
on last row
print ‘-------------------------------------------------------------------------‘
end report
Tiga (3) contoh program dengan ouput yang sama

#contoh 1
database filkom
globals
define
rec_byr record like t_uang_klh.*
end globals

main
declare kur cursor for
select * from t_uang_klh
where npm[4,5]=’97’ and ket=’L’

start report cetak
foreach kur into rec_byr.*
output to report cetak( )
end foreach
finish report cetak
end main

report cetak( )
output
top margin 5
bottom margin 4
page length 66
report to ‘/dev/lp2’
format
page header
print column 25,’Contoh Laporan Pembayaran’,
column 55,’Hal : ‘,pageno using ‘##’
print ‘-----------------------------------------------------------------‘
print ‘N P M Jumlah Bayar Tanggal Bayar Keterangan’
print ‘-----------------------------------------------------------------‘
on every row
print rec_byr.npm,
column 13,rec_byr.jml_bayar using ‘Rp ##,###,###.##’,
column 34,rec_byr.tgl_bayar using ‘dd/mm/yy’,
column 55,rec_byr.ket
print ‘-----------------------------------------------------------------‘
page trailer
print column 34,’Pem.Generasi 4 ‘,today using ‘ddd,dd/mmm/yyyy’
end report

#contoh 2 : menggunakan parameter
database filkom
main
define
rec_byr record like t_uang_klh.*

declare kur cursor for
select * from t_uang_klh
where npm[4,5]=’97’ and ket=’L’

start report cetak
foreach kur into rec_byr.*
output to report cetak(rec_byr.* ) #contoh kirim parameter
end foreach
finish report cetak
end main

report cetak( rec_byr) #contoh menggunakan parameter
#parameter ini didefenisikan ulang,krn rec_byr tdk didef. secara global
define rec_byr record like t_uang_klh.*

output
top margin 5
bottom margin 4
page length 66
report to ‘/dev/lp2’
format
page header
print column 25,’Contoh Laporan Pembayaran’,
column 55,’Hal : ‘,pageno using ‘##’
print ‘-----------------------------------------------------------------‘
print ‘N P M Jumlah Bayar Tanggal Bayar Keterangan’
print ‘-----------------------------------------------------------------‘
on every row
print rec_byr.npm,
column 13,rec_byr.jml_bayar using ‘Rp ##,###,###.##’,
column 34,rec_byr.tgl_bayar using ‘dd/mm/yy’,
column 55,rec_byr.ket
print ‘-----------------------------------------------------------------‘
page trailer
print column 34,’Pem.Generasi 4 ‘,today using ‘ddd,dd/mmm/yyyy’
end report



#contoh 3 : menggunakan ARRAY
database filkom
globals
define rec_byr array[500] of record like t_uang_klh.*,
i,j smallint
end globals
main
declare kur cursor for
select * from t_uang_klh
where npm[4,5]=’97’ and ket=’L’
let i=1
foreach kur into rec_byr[i].*
let i = i + 1
end foreach
start report cetak
for j = 1 to i-1
output to report cetak( )
end for
finish report cetak
end main

report cetak( )
output
top margin 5
bottom margin 4
page length 66
report to ‘/dev/lp2’
format
page header
print column 25,’Contoh Laporan Pembayaran’,
column 55,’Hal : ‘,pageno using ‘##’
print ‘-----------------------------------------------------------------‘
print ‘N P M Jumlah Bayar Tanggal Bayar Keterangan’
print ‘-----------------------------------------------------------------‘
on every row
print rec_byr[j].npm,
column 13,rec_byr[j].jml_bayar using ‘Rp ##,###,###.##’,
column 34,rec_byr[j].tgl_bayar using ‘dd/mm/yy’,
column 55,rec_byr[j].ket
print ‘-----------------------------------------------------------------‘
page trailer
print column 34,’Pem.Generasi 4 ‘,today using ‘ddd,dd/mmm/yyyy’
end report

Output ketiga program di atas sbb.:


Contoh Laporan Pembayaran Hal : 1
N P M Jumlah Bayar Tanggal Bayar Keterangan
10699009 Rp 3.991.500,00 15/07/99 L
10699017 Rp 3.757.950,00 25/06/99 L
10699026 Rp 3.618.450,00 01/07/99 L
10699028 Rp 4.216.500,00 23/07/99 L
10699036 Rp 4.216.500,00 09/06/99 L
10699049 Rp 3.676.500,00 10/05/99 L
10699061 Rp 3.753.450,00 22/06/99 L
10699086 Rp 3.618.450,00 05/07/99 L
10699087 Rp 3.618.450,00 16/08/99 L
10699104 Rp 3.991.500,00 02/08/99 L
10699105 Rp 3.753.450,00 21/06/99 L
10699142 Rp 3.618.450,00 01/06/99 L




LATIHAN
Diketahui :
nama database yang digunakan -> pegawai
nama table yang digunakan -> t_barang
struktur file sbb :
kd_brg char(4)
nm_brg char(25)
hrg_brg money
stock_min smallint
jml_brg smallint
ket_brg char(1)

Ketentuan untuk field tag yang didiskripsikan dalam attribute :
- kd_brg harus diisi 2x
- nm_brg harus huruf besar dan jika pengisian nm_brg sudah penuh maka kursor otomatis akan pindah pada field berikutnya
- ket_brg hanya boleh diisi angka '1','2','3' atau '4'

Syarat perintah query yang digunakan pada report yaitu :
"tampilkan semua data barang yang ket_brg adalah '1' atau '2' saja !"

SOAL :
1. Buatkan program untuk menampilkan FORM
2. Buatkan program untuk membuat REPORT dengan ketentuan sbb :
- batas atas 5
- batas bawah 5
- batas kiri 5
- batas kanan 5
- panjang kertas 60
- dicetak dikertas dengan nama printer '/dev/lp3'

OUTPUT :
LAPORAN PERSEDIAAN BARANG
Hal : ....
-----------------------------------------------------
Kode Brg Nama Brg Harga Jumlah
-----------------------------------------------------
A012 Kertas Folio Rp. 12.000 30
xxxx xxxxxx Rp.999.999 99
xxxx xxxxxx Rp.999.999 99
xxxx xxxxxx Rp.999.999 99
xxxx xxxxxx Rp.999.999 99
-----------------------------------------------------


*** SELAMAT MENGERJAKAN ***

ISQL

PENDAHULUAN


Apa itu Bahasa Generasi Keempat ?

Selama seperempat abad bahasa untuk komputasi komersial telah berkembang dengat lambat. Telah ada perbedaan sintak tapi konstruksi dasrnya hampir sama. Kemudian muncul suatu piranti baru yang disebut dengan 'Bahasa generasi keempat', ‘Bahasa produktifitas Tinggi’, ‘Bahasa non-prosedural’, ‘Pembuat aplikasi’. Kemampuan piranti baru ini meliputi :
- Tidak perlu training yang lama pada DP.
- Bahasa untuk semua pemakai (profesional DP sampai pemakai akhir)
- Bahasa query
- Pembuat aplikasi
- Mencakup bahasa prosedural maupun nonprosedural
(Sebagian bahasa generasi keempat memenuhi ciri di atas tapi sebagian tidak.)

Generasi Bahasa Komputer :

 Bahasa Generasi Pertama  bahasa mesin
- tidak ada interpreter/kompilator
- diprogram dengan notasi biner
- sulit untuk tidak melakukan kesalahan.
contoh : 011011 000000 000000 000001 110101
berarti: bersihkan akumulator masukan isi lokasi penyimpanan 117 ke dlmnya

 Bahasa Generasi Kedua  bahasa assembly (1950-an)
- pengalamatan secara simbolis bukan alamat fisik.
- terdiri dari : SAP, AUTOCODER, SPS, BAL dan EASYCODER.
Contoh : CLA SALARY
Salary menunjukkan lokasi memori tempat variabel salary disimpan.

 Bahasa Generasi Ketiga  bahasa tingkat tinggi (1960-an)
- menggunakan kata-kata bahasa Ingggris
- menekankan formula dalam notasi matematika
- program dapat dikonversikan untuk dijalankan pada mesin-mesin yang berbeda.
- terdiri dari : ALGOL, FORTRAN, COBOL, PL/I dan ADA.
Contoh : x = (a+b) / (c+d)

 Bahasa Generasi Keempat  bahasa produktifitas tinggi (1970-an)
- mempercepat proses pembuatan aplikasi (baris code lebih sedikit)
- mempermudah aplikasi dan mempercepat perubahan.
- meminimalkan problem debugging.
- pemakai dapat memecahkan problem sendiri.
- terdiri dari : Informix, Oracle

 Bahasa Generasi Kelima  bidang artificial inteligence‘ (1980-an)
- sistem berbasis pengetahuan
- mesin dapat menggambarkan kesimpulan berdasarkan kode pengetahuan yang kompleks.
- terdiri dari : Prolog, LISP


Bahasa Prosedural dan Non Prosedural

* Bahasa Prosedural menentukan ‘Bagaimana’ sesuatu diselesaikan.
* Bahasa Nonprosedural menentukan ‘Apakah’ yang akan diselesaikan.

#Bahasa Prosedural :
- programmer memberikan instruksi yang detail tentang bagaimana masing-masing tugas diselesaikan.
- contohnya : COBOL, PL/I

#Bahasa Nonprosedural :
- pemakai mendapat hasil yang cepat tanpa mengatakan prosedur bagaimana hal itu dikerjakan.
- hampir semua bahasa queri, pembuatan laporan, paket grafik dan pembuat aplikasi adalah nonprosedural.
- contohnya : Informix, NOMAD

KARAKTER, PROPERTI DAN
KOMPONEN 4GL


Kriteria pokok pada 4GL :

- apakah diperuntukkan untuk perhitungan yang rutin atau pembuatan keputusan ad-hoc ?
- apakah diperuntukkan bagi pemakai akhir atau DP profesional ?
- apakah memerlukan ketrampilan programmer atau seorang analis yang meng-gunakannya ?
- feature manakah yang disediakan ? (exp. simple query, pembuatan laporan)
- apakah on-line atau off-line ?
- apakah dijalankan untuk mainframe, mini atau pc ?
- apakah cukup mudah digunakan dan hasilnya cepat diperoleh ?


Properti 4GL :

Agar suatu bahasa disebut dengan ‘Generasi Keempat’ harus mempunyai karakteristik sebagai berikut :
1. User-friendly.
2. Programmer non-profesional dapat memperoleh hasil
3. Menggunakan DBMS secara langsung.
4. Program untuk semua aplikasi dapat dibuat dengan satu perintah instruksi yang lebih sedikit.
5. Disusun untuk operasi on-line.
6. Mempermudah pemahaman dan perawatan code orang lain.
7. Prototype dapat dibuat dan dimodifikasi dengan cepat.
Komponen 4GL :



























Gb. Komponen 4GL untuk membangun aplikasi



Appli parameter : pemberian prosedur nama, katalog, versinya dan pembuat
Data spec : spesifikasi data, file yang digunakan.
Report spec : penentuan spesifikasi laporan berdasarkan data yg diambil.
Screen spec : laporan dan spesifikasi tampilan pada layar
Dialogue spec : memberikan struktur interaksi orang dan komputer.
Spec of rules : aturan-aturan untuk menentukan keputusan. Biasanya dipisah-kan dari badan aplikasi.

BAGAIMANA 4GL DIGUNAKAN


Problem dengan Pemrosesan Data
- Pemakai tidak mendapatkan aplikasi ketika mereka menginginkannya. Sering ada delay atas tahun.
- Sukar atau tidak mungkin mendapatkan perubahan manajemen dalam jumlah waktu tertentu.
- Program mempunyai kesalahan atau kadang-kadang tidak bekerja.
- Sistem yang digunakan sering tidak bergabung dengan persyaratan pemakai yang benar.
- Sukar untuk memahami DP dan berkomunikasi persyaratan secara tepat.
- Spesifikasi bahwa pemakai harus menandatangani, sulit untuk dikontrol.
- Harga sistem banyak mengembangkan dan menjaga daripada mengantisipasi.
- Karena waktu yang lama untuk mendapatkan hasil, sistem decision support tidak pernah diimplementasikan.

Perubahan Pengembangan Life Cycle
Sejarah life cycle tumbuh sebelum peralatan dan teknik ini muncul :
- Bahasa nonprosedural
- Teknik membuat code program secara otomatis
- Bahasa spesifikasi yang dapat menghitung
- Peralatan grafik on-line untuk disain
- Bahasa untuk pemakai terakhir
- Konsep pusat informasi
Requirements
Specifications
Design
Programming
Testing
Integration Testing
Development
Maintenance

Gb. Tradisional Development Life Cycle

Type Life Cycle :
1. Sistem Ad-hoc
Pemakai/analis akan menyaring, membuat dan memanipulasi data. Tidak ada persyaratan analisis atau spesifikasi penulisan. Sistem ini dirawat sepenuhnya oleh pembuat. Tidak ada life cycle formal.
2. Prototype Cycle
Prototype dibuat oleh sistem analis dan reaksi pemakai pada prototype menyebab-kan terjadinya modifikasi.


3. Prototype-3GL Cycle
Diprogram ke 3GL untuk mendapatkan efesiensi mesin yang lebih besar.
4. Spesifikasi dan 4GL Cycle
Analisa dan spesifikasi dengan life cycle tradisional tetapi code dibuat dengan code generator.
5. Lingkaran Spesifikasi Bahasa
Spesifikasi manual biasanya tidak konsisten, ambigius, dan tidak lengkap. Pada lingkungan ini administrator data akan menjaga kamus dan data yang digunakan organisasi.

Pendekatan Phisik
Tidak hanya bahasa yang diubah tetapi pendekatan phisik ke mesin juga berubah.
Komputer generasi I : panel dengan kabel dipasang.
Komputer generasi II : tidak mengatur program pada console.
Komputer generasi III : jarang melihat mesin.
Contoh : BASIC didesain sebagai bahasa berorientasi pada terminal.
COBOL didesain tanpa melalui pemrograman interaktif.

PC yang akan datang akan terkoneksi pada mainframe dengan LAN yang memberikan kecepatan transmisi beberapa kali lebih cepat dibandingkan dengan sirkuit telepon.
Bahasa yang akan datang seperti pengisian on-line, dengan operasi on-line komputer dapat menuntun developer dalam proses pengambilan langkah, memberikan keterangan singkat dan jika memilih fungsi Help memberi keterangan yang detail.


Gelombang 4GL
Gelombang Pengembangan 4GL :
1. Bahasa off-line yang digunakan pemakai untuk mengisi form. Contoh : MARK IV.
2. Bahasa yang dapat beroperasi pada terminal yang menyerupai mesin ketik. Contoh : SQL.
3. Bahasa yang dirancang untuk monitor dumb. Contoh : QBE.
4. Bahasa yang dirancang untuk waktu tanggap pada PC/LAN
5. Bahasa yang menggunakan grafik untuk desain program. contoh : CAD/CAM

Bagan System
Pemrosesan desain yang komplek dimulai dengan 'bagan' dan berlanjut ke representasi detail.
Contoh : arsitektur rumah, desainer aplikasi komputer.
Properti bagan yang penting dapat dipahami oleh pemakai akhir. Tipe-tipe bagan yang digunakan adalah :
- prototipe
- DFD
- Diagram HIPO
- Diagram Warnier
- Notasi HOS
- Aksi Diagram basis data

* Aksi Diagram basis data menunjukkan logika dan relasinya pada struktur basis data.
* DFD menunjukkan interaksi diantara pemrosesan yang terpisah.
* HOS menunjukkan penguraian fungsi yang formal.

Interpreter dan Compiler
Kode pada bahasa generasi III disebut 'Source Code', diterjemahkan compiler untuk membentuk 'Object Code'
Compiler >> 'offline'
interpreter >> 'online'
Interpreter kurang efisien dalam penggunaan mesin. Perbedaan antara compiler dan interpreter menjadi lebih kabur dengan 4GL.
Hampir semua 4GL disusun operasi on-line dan dialog memerlukan tempat antara software dan orang yang membuat aplikasi.
* Aspek menarik dari penggunaan compiler terpisah adalah prototipe dibuat pada PC dan kemudian dicompile untuk berjalan secara efisien pada mainframe.

Menemukan Kesalahan Sedini Mungkin

Prinsip penting dari pengembangan aplikasi. Statistik menunjukkan kesalahan selama pengetesan program 10 kali lebih mahal dibandingkan pada tahap spesifikasi.
- secara tradisional kesalahan ada dalam test program atau tahap perawatan.
- 4GL yang baik tergantung pada basis data yang disimpan.




















Gelombang
Informix-4GL adalah bahasa pemrograman generasi keempat yg memberikan kombinasi dua keunggulan yaitu prosedural & non prosedural, sehingga mampu memberikan semua fasilitas yg diperlukan dalam membentuk RDBMS.




Kemampuan informix meliputi :
• Bahasa pemrograman
• Screen-building utility
• Menu-building utility
• Report writer
• Window manager

Informix-4GL didisain secara khusus untuk penulisan program dalam membuat database relasional dan memberi fasilitas untuk memanipulasi data yg disimpan dalam database.

Penyimpanan Data
Informix menyimpan data-data didalam suatu tabel.
Tabel adalah kumpulan dari baris & kolom.
Tabel-tabel tsb disimpan dalam suatu database.
Suatu database minimal terdiri dari satu tabel.


T

Tttt
Database_1




database_2



Tabel : NPM Nama Kota  field/attribute
record/baris 1  10197521 Viona Jakarta
record/baris 2 10197214 Irfan Bogor  data value
10197687 Benita Jakarta
  
Field/kolom 1 kolom2 kolom 3

Informix

Isql r4gl/i4gl

Informix-SQL merupakan kumpulan lengkap dari manajemen database yg memungkinkan kita untuk melaksanakan tugas dengan jangkauan yg luas.


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

MEMULAI ISQL :
Ketik “isql” pada prompt unix







/u/filkom> isql 
layar monitor

Kemudian akan muncul menu utama dari isql, sbb.:

Informix-SQL: Form Report Query-language User menu Database Table Exit
Run, modify, create, or drop a form
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




Menu Utama dari isql

Menu isql terdiri dari 6 menu utama seperti diatas.

Menu dapat dipilih dengan menyorot menu yg diinginkan atau dengan mengetik huruf pertama dari menu tsb.
Baris kedua menampilkan pesan dari menu yg dipilih / yg disorot.










Query language Report Form











Table

Database User Menu





Gambar. Menu Hierarki ISQL









































MENU DATABASE – ISQL

Ada 2 cara untuk membuat database :
- melalui menu utama dengan memilih ‘database’
- menggunakan ‘sql’ dari menu ‘query language’

langkah-langkah membuat database, sbb. :

Informix-SQL: Form Report Query-language User menu Database Table Exit
Select , create, or drop a database
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




DATABASE : Select Create Drop Exit
Select a database to work with.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




DATABASE : Select Create Drop Exit
Create a new database
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




CREATE DATABASE >> filkom 
Enter the name you want to assign to the new database, then press Return
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




DATABASE : Select Create Drop Exit
Select a database to work with.
- - - - - - - - - - - - - - - - - - - - - - - filkom - --- - - - - - - - - -- - Press CTRL-W for help - - - -




Select : untuk memilih database yang akan digunakan
Create : untuk membuat database baru
Syarat pemberian nama database :
- panjang 1-18 karakter
- dimulai dengan huruf
- tidak boleh ada spasi
- tidak boleh menggunakan karakter khusus kecuali ‘_’
Drop : untuk menghapus suatu database
Exit : kembali ke menu utama

MENU TABLE DALAM ISQL

Informix-SQL: Form Report Query-language User menu Database Table Exit
Create, Alter, or Drop a database table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




Untuk masuk ke menu ‘table’ tekan tombol ‘T’ , kemudian monitor akan menampilkan menu table sbb.:

TABLE : Create Alter Info Drop Exit
Create a new table
- - - - - - - - - - - - - - - - - - - - - - - filkom - -- - - - - - - - - -- - Press CTRL-W for help - - - -




Create : untuk membuat tabel baru
Alter : untuk mengubah tabel yg telah dibuat
Info : untuk mengetahui struktur suatu tabel
Drop : untuk menghapus tabel beserta datanya
Exit : keluar dari menu tabel & kembali ke menu utama

Jika anda memilih ‘create’ dalam menu table , maka tampilan berikutnya seperti dibawah ini

CREATE TABLE >> t_master 
Enter the table nama you wish to create with the schema editor
- - - - - - - - - - - - - - - - - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -




CREATE TABLE t_master : Add Modify Drop Screen Exit
Adds columns to the table above the line with the highlight
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls



ADD NAME >> _
Enter column name. Return adds it. INTERRUPT return to CREATE / ALTER menu
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls



ADD TYPE t_master >> Char Number Serial Date Money date-Time Interval
Permits any combination of letters, numbers, and symbols
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm




ADD LENGTH >> _
Enter column length. RETURN adds it
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm char




ADD INDEX t_master : Yes No
Specifies that this columns will NOT have an index
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm char 8




ADD NULLS t_master : Yes No
Permits null values in this column
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm char 8 Yes




CREATE TABLE t_master : Add Modify Drop Screen Exit
Leaves the CREATE TABLE Menu
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm char 8 Yes No
nama char 25 Yes
alamat char 40 yes





EXIT t_master : Build-new-table Discard-new-table
Builds a new table and returns to the Table Menu
- - - - - - - - page 1 of 1 - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm char 8 Yes No
nama char 25 Yes
alamat char 40 yes


Build-new-table : membentuk tabel
Discard-new-table : membatalkan pembentukan tabel

Menu ‘ALTER TABLE’
ALTER TABLE >> _
Enter the table name you wish to alter with the schema editor
- - - - - - - - - - - - - - - - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

t_biaya
t_coba
t_master


ALTER TABLE t_master : Add Modify Drop Screen Exit
Adds column to the table above the line with the highlight
- - - - - -page 1 of 1 - - - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Length Index Nulls
npm char 8 Yes No
nama char 25 Yes
alamat char 40 yes


Menu ‘INFO TABLE’
INFO FOR TABLE >> _
Choose a table with the Arrow Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

t_biaya
t_coba
t_master


INFO t_master : Columns Indexes Privileges Status Table Exit
Display columns, names and data types for a table
- - - - - - - - - - - - - - - - - filkom -- - - - - - - - - -- - Press CTRL-W for help - - - -

Column name Type Nulls
npm char(8) No
nama char(25) Yes
alamat char(40) yes


MENU FORM dalam ISQL

Screen form adalah media yg digunakan untuk input/output variabel pada program 4GL, dan juga digunakan sebagai penghubung data secara interaktif untuk menghapus, melihat, modifikasi atau menghapus data.

Pembuatan form ada 2 cara :
• Generate : sistem informix yg membuat form
• New : programmer yg membuat sendiri

Informix-SQL: Form Report Query-language User menu Database Table Exit
Run, modify, create, or drop a form
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




FORM : Run Modify Generate New Compile Drop Exit
Use a form to enter data or query a database
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




Run : untuk menjalankan form yg telah dicompile / generate
Modify : mengubah bentuk form yg telah dibuat / digenerate
Generate : membuat form baru dgn bantuan sistem informix
New : membuat form baru tanpa bantuan sistem informix
Compile : mengcompile form yg telah dibuat/dimodifikasi sehingga dapat
dijalankan
Drop : untuk menghapus form


Langkah-langkah pembuatan form dengan menggunakan ‘Generate’

GENERATE FORM >> f_master
Enter the name you want to assign to then form, then press Return
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




CHOOSE TABLE >>
Choose the table to be used in the default form
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

informix.t_biaya
informix.t_coba
informix.t_master



GENERATE FORM : Table-selection-compile Select-more-tables Exit
Continue creating a default form with the selected tables
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -



Setelah memilih ‘Table-select-compile’, kemudian akan kembali menu Form, ini berarti sudah tercipta sebuah form dengan nama ‘f_master’, jika ingin melihat tampilan dari form tsb, maka pilih ‘Run’ pd menu Form.

Langkah-langkah pembuatan form dengan menggunakan ‘New’

NEW FORM>> f_master2 
Enter the name you want to assign to the form, then press Return
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




USE-EDITOR >> vi 
Enter editor name, (RETURN only for default editor)
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




~ _
~
~ ‘buat sendiri program yang anda inginkan’
~ harus mengetahui penggunaan editor ‘vi’
~
“tmp/f_master2.per [new file]

Setelah program selesai dibuat, maka tampilan selanjutnya sbb.:
NEW FORM : Compile Save-and-exit Discard-and-exit
Compile the form specification.
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




Form yang telah dibuat dengan ‘Generate’ atau ‘New’ , dapat ditampilkan dengan memilih ‘Run’ pada menu Form.

RUN FORM>> _
Choose a form with Arrow Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

f_biaya
f_coba
f_master

PERFORM : Query Next Previous View Add Update Remove Table …
Searches the active database table
1 : t_master table
Npm [ ]
Nama [ ]
Alamat [ ]
Kota [ ]
Telpon [ ]
Kelas [ ]
Ipk [ ]


Jika anda ingin mencari data atau mengubah data maka pilihlah ‘query’

QUERY : ESCAPE queries. INTERUPT discards query. ARROW keys move cursor.
Searches the active database table
1 : t_master table
Npm [ ]
Nama [ ]
Alamat [ ]
Kota [Jakarta ]
Telpon [ ]
Kelas [ ]
Ipk [ ]

Contoh : mencari data mahasiswa yg alamatnya di ‘Jakarta’

Setelah memasukkan kondisi seperti diatas, kemudian tekan tombol ‘Esc’

Tampilan sama dengan atas, yg berbeda cuma pojok kiri bawah



Searching …………………

Jika datanya ketemu, maka tampilan selanjutnya ….

PERFORM : Query Next Previous View Add Update Remove Table …
Searches the active database table
1 : t_master table
Npm [10197348]
Nama [Yudisthira ]
Alamat [Salemba No.33 ]
Kota [Jakarta ]
Telpon [4212817 ]
Kelas [4KA01]
Ipk [2,65]

15 row(s) found




Beberapa contoh mencari data dengan menggunakan ‘query’ pada menu ‘Run-Form (PERFORM)’


QUERY : ESCAPE queries. INTERUPT discards query. ARROW keys move cursor.
Searches the active database table
1 : t_master table
Npm [???97* ]
Nama [ ]
Alamat [ ]
Kota [ ]
Telpon [ ]
Kelas [ ]
Ipk [>3,00]



QUERY : ESCAPE queries. INTERUPT discards query. ARROW keys move cursor.
Searches the active database table
1 : t_master table
Npm [1?196* ]
Nama [ *ika* Nasution ]
Alamat [ ]
Kota [ ]
Telpon [ ]
Kelas [ ]
Ipk [ ]



QUERY : ESCAPE queries. INTERUPT discards query. ARROW keys move cursor.
Searches the active database table
1 : t_master table
Npm [ ]
Nama [ ]
Alamat [ ]
Kota [Depok ]
Telpon [ ]
Kelas [4KA06]
Ipk [ ]



QUERY : ESCAPE queries. INTERUPT discards query. ARROW keys move cursor.
Searches the active database table
1 : t_master table
Npm [ ]
Nama [ ]
Alamat [ ]
Kota [ ]
Telpon [8727541 ]
Kelas [ ]
Ipk [ ]

Tampilan penggunaan ‘Add’ pada menu ‘Run-Form (PERFORM)’

ADD : ESCAPE adds new data. INTERRUPT discards it. ARROW keys move cursor
Adds new data to the active database table
1 : t_master table
Npm [ _ ]
Nama [ ]
Alamat [ ]


Masukkan data , kemudian tekan tombol ‘Esc’
PERFORM : Query Next Previous View Add Update Remove Table ….
Adds new data to the active database table
1 : t_master table
Npm [10197521]
Nama [Evita ]
Alamat [Akses UI No.53 ]

Row added

Tampilan penggunaan ‘Update’ pada menu ‘Run-Form (PERFORM)’

UPDATE : ESCAPE changes data. INTERRUPT discard changes
Changes this row in the active database table.
1 : t_master table
Npm [10197521]
Nama [Evita ]
Alamat [Akses UI No.53 ]


Ubahlah data diatas sesuai yg diinginkan, kemudian tekan tombol ‘Esc’
PERFORM : Query Next Previous View Add Update Remove Table ….
Changes data to the active database table
1 : t_master table
Npm [10197521]
Nama [Evita Adjani ]
Alamat [Akses UI No.53 ]

This row has been changed

Tampilan penggunaan ‘Remove’ pada menu ‘Run-Form (PERFORM)’
REMOVE : Yes No
Removes this row from the active table
1 : t_master table
Npm [10197521]


PERFORM : Query Next Previous View Add Update Remove Table ….
Delete a row from the active database table
1 : t_master table
Npm [ ]


Row deleted
Tampilan penggunaan ‘Compile’ pada menu ‘Form’

FORM : Run Modify Generate New Compile Drop Exit
Compile the form specification
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -





COMPILE FORM >> _
Choose a form with the ARROW Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

f_biaya
f_coba
f_master



Tampilan penggunaan ‘Drop’ pada menu ‘Form’

FORM : Run Modify Generate New Compile Drop Exit
Drop a form
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -





DROP FORM >> _
Choose a form with the ARROW Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

f_biaya
f_coba
f_master



CONFIRM : No Yes
No, I do not want to drop it
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

f_biaya
f_coba
f_master





MODIFY FORM

FORM : Run Modify Generate New Compile Drop Exit
Modify a form
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -
f_biaya
f_coba
f_master



MODIFY FORM >>_
Choose a form with the ARROW Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - - - filkom- - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

f_biaya
f_coba
f_master



Database filkom
Screen size 24 by 80
{
npm [f010 ]
nama [f020 ]
alamat [f030 ]
}
end
tables
t_master
attributes
f010 = t_master.npm;
f020 = t_master.nama;
f030 = t_master.alamat;
end


tekan tombol ‘Esc’ kemudian ketik ‘:wq’


Tampilan program diatas seperti tampilan sebelumnya



Npm [ ]
Nama [ ]
Alamat [ ]

Ubahlah tampilan disamping tsb. menjadi seperti dibawah ini.



Untuk membuat tampilan seperti yang diinginkan, maka program awal harus diubah sbb.:

Database filkom
Screen size 24 by 80
{
\gp-------------------------------------------------------------------q\g
\g|\g BIODATA MAHASISWA \g|\g
\g|\g \g----------------------------\g \g|\g
\g|\g \g|\g
\g|\g \g|\g
\g|\g Nomor Pokok Mhs. = [f010 ] \g|\g
\g|\g Nama Mahasiswa = [f020 ] \g|\g
\g|\g Alamat Mahasiswa = [f030 ] \g|\g
\g|\g \g|\g
\g|\g \g|\g
\gb-------------------------------------------------------------------d\g
}
end
tables
t_master
attributes
f010 = t_master.npm,required;
f020 = t_master.nama,autonext;
f030 = t_master.alamat;
end



tekan tombol ‘Esc’ kemudian ketik ‘:wq’






DATABASE section
SCREEN section
{
[text] [field_tag] [char_graphics]
……..
}
END
TABLES table names
ATTRIBUTES
field_tag = table.column [,type];
……..
END

DATABASE section :
Mengidentifikasi database yg digunakan
Jika tidak memakai database, maka ditulis ‘DATABASE FORM ONLY’
SCREEN section :
Untuk menggambarkan bagaimana form akan ditampilkan di monitor.
Default adalah 24 baris, 80 kolom.

[text] :
kata / kalimat yang akan ditampilkan di monitor

[field_tag] :
untuk menunjukkan bagaimana data akan ditampilkan di monitor,
field yang akan ditampilkan menggunakan tanda [ ], masing-masing filed
b’hubungan dgn [field_tag] yg diidentifikasikan di ATTRIBUTES section.

[char_graphics] :
yang dapat digunakan antara lain :
char tampilan di layar
p  
q  
b  
d  
|  
-  

TABLES :
Digunakan untuk mengidentifikasikan seluruh nama tabel yg dipakai dalam spesifikasi form.

ATTRIBUTES :
Menggambarkan bagaimana bentuk dari masing-masing field yang akan ditampilkan di monitor.

TYPE :
Argumen yang dapat digunakan pada tiap field, antara lain :

autonext Kursor otomatis pindah ke field berikutnya jika karakter untuk field tsb sudah penuh
downshift Semua karakter dikonversi ke huruf kecil
upshift Semua karakter dikonversi ke huruf besar
comments Perform akan menampilkan pesan dibawah layar ketika kursor pindah ke field yg diberi argumen comments.
Contoh :
F001 = t_master.alamat,comments=’Alamat harus lengkap’;

include Menentukan nilai-nilai yg diperbolehkan masuk dalam field ini.
Contoh :
F002 = t_master.agama,include=(‘1’,’2’,’3’,’4’,’5’);
F003 = t_master.jns_kel,include=(‘1’,’2’);

default Memberikan nilai dasar bila field tidak diisi
Contoh :
F004 = t_master.ket,default=’T’;

noentry Mencegah pemasukan data
picture Menspesikasikan pola data masukan
A  huruf , #  numerik , x  alfanumerik
Contoh :
F005 = t_krs.kd_mk,picture =’AA-######’;
F006 = t_biaya.jml,picture =’Rp ##.###.###,##’;

required Memaksa pemasukan nilai pada field tsb.
Contoh :
F007 = t_master.kode_pos,required;

reverse Mengganti warna karakter kebalikan dengan warna background.
right Agar data rata kanan
verify Memaksa pemasukan nilai sebanyak dua kali
zerofill Agar field rata kanan dan dimulai dengan angka 0, berguna untuk data bertipe numerik


LATIHAN !!!

Diketahui : nama database yg digunakan adalah  mahasiswa
Nama tabel yg digunakan adalah  t_biodata

Struktur filenya sbb.:
Npm char 8
Nama char 25
Agama char 1
Alamat char 30
Kode_pos char 5
Jenis_kel char 1

Buatlah program untuk membuat form, dengan ketentuan :
- npm harus diisi & jika field telah penuh, maka kursor berpindah secara otomatis
- nama yang dimasukkan dengan huruf kecil harus berubah menjadi huruf besar
- agama hanya berisi kode 1,2,3,4,5
- kode_pos harus diisi
- jenis_kel hanya berisi kode 1 dan 2













MENU QUERY-LANGUAGE dalam ISQL

SQL adalah bahasa query interaktif, yg merupakan sistem dasar komputer untuk pemeliharaan record.
Sebagai sebuah sistem manajemen database SQL berisi program yg handal untuk mengerjakan tugas-tugas manajemen data, yg secara nyata mengurangi jumlah waktu untuk mengorganisasi, menyimpan dan mengakses informasi.

Informix-SQL: Form Report Query-language User menu Database Table Exit
……………………………
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -





SQL : New Run Modify Use-editor Output Choose save Info Drop Exit
Enter new SQL statement using the SQL editor
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




NEW : ESC = Done editing CTRL-A = Type over/insert
CTRL-x = Delete character CTRL-D = Delete rest of line
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




MODIFY: ESC = Done editing CTRL-A = Type over/insert
CTRL-x = Delete character CTRL-D = Delete rest of line
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




OUTPUT : Printer New-file Append-file To-pipe Exit
Send query results to a printer
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




CHOOSE >>
Choose a command file with the Arrow Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -
Cek_npm load_data
Ins_biodata unload_dt


SAVE >>_
Enter the name you want to assign to the command file
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -




INFO FOR TABLE >>
Choose a table with the Arrow Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -
informix.t_biaya
informix.t_coba
infromix.t_master


DROP COMMAND FILE>> _
Enter the nama of the sql command file you wish to drop from the database
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -
Cek_npm load_data
Ins_biodata unload_dt


Contoh-contoh statement sql
NEW : ESC = Done editing CTRL-A = Type over/insert
CTRL-x = Delete character CTRL-D = Delete rest of line
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

Select npm,nama,telpon,kelas,ipk from t_master where ipk>3.00
Order by kelas,ipk


Setelah mengetik statement tsb, tekan tpmbol ‘Esc’ maka akan tampil menu SQL. Jika ingin menampilkan output dari statement tsb, maka pilih ‘Run’ pada menu sql, dan hasilnya akan tampak sbb :

RUN : Next Restart Exit
Display the next page of query results
- - - - - - - - - - - - - - - - - - - -filkom - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -

Npm nama telpon kelas ipk

10197348 Evita Adjani 8727541 4KA02 3,52
10197521 Sheila 4212817 4KA02 3,47
10197634 Indra 7342882 4KA03 3,61
10197867 Hendrawan 8727538 4KA06 3,25
10197491 Febrian 7321455 4KA07 3,28


Catatan untuk pengajar:
Berikan contoh data pada tabel : t_master, t_uang_klh, t_pelanggan.
Jelaskan artinya & tampilkan output dari contoh-contoh statement.

• SELECT npm,nama,telpon,kelas,ipk FROM t_master WHERE ipk>3.00 ORDER BY kelas,ipk DESC


• SELECT * FROM t_pelanggan


• SELECT no_pel,nama,telpon FROM t_pelanggan WHERE no_pel[1]=’B’


• SELECT npm,nama,kelas
FROM t_master
WHERE npm[1]=’1’ and npm[4,5]=’97’
ORDER BY kelas,nama


• SELECT npm,nama,kelas FROM t_master WHERE npm[4,5] matches’[97]’


• SELECT npm,nama FROM t_master WHERE npm[1] matches’[1234]’


• SELECT npm,nama,kelas FROM t_master WHERE nama matches’*ari*’


• SELECT * FROM t_master WHERE kelas[1] BETWEEN ‘1’ and ‘3’


• SELECT * FROM t_master WHERE kelas BETWEEN ‘4KA05’ and ‘4KA06’


• SELECT UNIQUE kelas FROM t_master WHERE kelas[1]=’4’


• SELECT COUNT(*) FROM t_master WHERE kelas=’4KA06’


• SELECT npm,nama,MONTH(tgl_lahir) FROM t_master


• SELECT npm,jml_bayar,tgl_bayar,ket_bayar from t_uang_klh
WHERE npm IN (SELECT npm from t_master WHERE kelas[1,3]=’4KA’)


• SELECT t_master.npm,nama,kelas,jml_bayar,tgl_bayar,ket_bayar
FROM t_master,t_uang_klh
WHERE t_master.npm=t_uang_klh.npm


• SELECT no_pel,nama,alamat
INTO nomor,nama_pel,almt_pel
FROM t_pelanggan
• INSERT INTO t_pelanggan
VALUES (‘B1504’,’Bambang’,’Merpati III’)

• INSERT INTO t_pelanggan (no_pel,alamat)
VALUES (‘C2503’,’Camar II’)

• INSERT INTO t_master(npm,nama,kelas)
VALUES(‘10197348’,’Evita’,’4KA02’)

• SELECT np,nm_mhs,kls_mhs FROM t_percobaan
INSERT INTO t_master(npm,nama,kelas)



• UPDATE t_pelanggan SET keterangan = null

• UPDATE t_pelanggan SET kode_pos =’10510’
WHERE alamat = ‘Jakarta Pusat’

• UPDATE t_uang_klh SET ket_bayar=’L’
WHERE npm IN (SELECT npm FROM t_master where periode=’1’)

• UPDATE t_uang_klh SET ket_bayar=’L’
WHERE npm IN
(SELECT npm FROM t_master WHERE periode matches’[123]’)

• UPDATE t_pelanggan SET alamat = ‘Akses Kelapa Dua’
WHERE alamat = ‘Akses UI’



• DELETE FROM t_pelanggan

• DELETE FROM t_pelanggan WHERE no_pel = ‘A1054’

• DELETE FROM t_master WHERE ipk < 0,50 AND kelas[1]=’5’

• DELETE FROM t_master WHERE ket_lulus = ‘K’


• CREATE DATABASE filkom

• CREATE TABLE t_master
( npm char(8),
nama char(25),
alamat char(40),
kelas char(5) )




MENU REPORT dalam ISQL


Informix-SQL: Form Report Query-language User menu Database Table Exit
Run , modify , generate, new , compile , drop
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - -- - Press CTRL-W for help - - - -






REPORT : Run Modify Generate New Compile Drop Exit
Run a report





Run : Run a report
Modify : modify a report specification
Generate : generate a default report
New : create a new report specification
Compile : compile a report
Drop : drop a report from the database

Ada 2 cara membuat report, yaitu dengan menggunakan ‘Generate’ atau ‘New’

Jika pilih ‘Generate’  pada menu REPORT, ketik tombol ‘G’ (huruf pertama
dari Generate)
maka tampilan di layar akan berubah seperti berikut ini :

Generate Report >>  (ketik nama report)
Enter the name you want to assign to the report, then press Return
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -




Contoh : nama reportnya adalah ‘r_coba’

Choose TABLE >>  (ketik nama table atau pilih table-table dibawah)
Choose the table to be used in the default report
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -

informix.t_biaya
informix.t_master
informix.t_uang_klh

Contoh : nama table yang dipilih adalah ‘t_master’
Setelah anda memilih table, maka tampilan layar akan kembali ke menu REPORT, sbb.:
REPORT : Run Modify Generate New Compile Drop Exit
Run a report
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -




Pilih ‘Run’ untuk menampilkan hasilnya, kemudian layar akan berubah sbb.:

Run REPORT >>  (ketik nama report atau pilih report² dibawah)
Choose a report with Arrow Keys, or enter a name
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -

r_awal
r_coba
lap_akhir


Akan tampil output sbb.:

Run REPORT >> r_coba
Choose a report with Arrow Keys, or enter a name
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -

The reading of the database will now …………
……………………………………………………………………………..
npm nama alamat
10197234 Niken Anwar Margonda Raya
10197575 Irwan Salemba
10197871 Vera Anita Akses UI


Output tersebut diatas dibuat oleh informix, jika anda ingin melihat programnya atau ingin mengubah tampilan outputnya, maka pada menu REPORT, pilihlah ‘Modify’

MODIFY REPORT >> _
Choose a report with the Arrow Keys, or enter a name, then press Return
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -

r_awal
r_coba
lap_akhir


Setelah memilih nama report, muncul editor ‘vi’ yang menampilkan program sbb.:
Database filkom end
Select npm,
nama,
alamat
From informix.t_master end
Format every row end

Program diatas dapat dimodifikasi (menggunakan editor ‘vi’, pelajari tentang editor ‘vi’ ) seperti dibawah ini :


Sintaks REPORT spect

DATABASE
Nama database mutlak ada
END

DEFINE
VARIABLE var_name data_type tidak mutlak
END

INPUT
PROMPT FOR tidak mutlak
END

OUTPUT
REPORT TO (‘file.name’| Printer)
LEFT MARGIN
RIGHT MARGIN
TOP MARGIN tidak mutlak
BOTTOM MARGIN
PAGE LENGTH
END

SELECT
Statement query language mutlak ada
END

FORMAT
PAGE HEADER control block
PAGE TRAILER control block
FIRST PAGE HEADER control block
ON EVERY ROW control block mutlak ada
ON LAST ROW control block
BEFORE GROUP OF control block
AFTER GROUP OF control block
END

PAGE HEADER :
Pencetakan judul pada tiap halaman
PAGE TRAILER :
Dicetak pada baris terakhir tiap halaman
FIRST PAGE HEADER :
Pencetakan judul hanya pada halaman pertama saja
ON EVERY ROW :
Mencetak setiap baris informasi yg dikirim menggunakan looping
ON LAST ROW :
Dicetak setelah seluruh informasi selesai dicetak
BEFORE GROUP OF / AFTER GROUP :
Dicetak sebelum / sesudah pengelompokkan

Database filkom end
Output
Report to ‘/dev/lp9’
End
Select npm,nama,alamat from informix.t_master
Order by npm
End
Format
Page header
Print column 20,”BIODATA MAHASISWA”
Skip 2 lines
Print ‘------------------------------------------------------‘
Print ‘ N P M N a m a Alamat ‘
Print ‘------------------------------------------------------‘
On every row
Print column 2,npm,column 15,nama,column 35, alamat
Print ‘------------------------------------------------------‘
End

Setelah selesai diubah programnya maka tampilan berikutnya adalah

MODIFY REPORT : Compile Save-and-exit Discard-and-exit
Compile the report specification
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -




Jika anda ingin melihat hasil yang telah di’compile’ , maka pilih menu ‘Run’ pada Report, dan akan tampil outputnya sbb.:
Run REPORT >> r_coba
Choose a report with Arrow Keys, or enter a name
- - - - - - - - - - - - - - - - - - - - filkom - - - - - - - - - - - - - Press Ctrl W – for Help - - - - - - -

The reading of the database will now …………
……………………………………………………………………………..

…………………………………………………………………………….

---------------------------------------------------------

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Enterprise Project Management