Pengantar
i
Bab 1
Sambutan
iii
iv BAB 1. SAMBUTAN
dwi sakethi
dwijim@unila.ac.id
http://dwijim.staff.unila.ac.id
Daftar Isi
I Pengantar i
1 Sambutan iii
1.1 Kata Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
II Pengantar Clipper 3
IV Pemrograman Clipper 21
4 Program Dasar 23
4.1 Check List for Good Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Pemrosesan Program Clipper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3 Proses Kompilasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4 First Clipper Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.1 Perintah clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.2 Perintah say . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.3 Perintah wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
v
vi DAFTAR ISI
8 Pemrosesan Data 77
8.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2 Modifikasi Program Pemasukan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.3 Penghitungan Skor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9 Pencetakan Informasi 83
9.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.2 Perintah-perintah yang Digunakan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.2.1 Perintah set printer to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.2.2 Perintah set device to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.2.3 Perintah printer [on—off ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.2.4 Perintah append from ... sdf . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.2.5 Perintah dbedit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.2.6 Perintah zap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
9.3 Penting Diperhatikan ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
9.4 Structured English . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10 Integrasi Program 89
10.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
V Clipper Advanced 93
12 Penutup 107
12.1 Harapan dan Impian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
12.2 Bacaan Tambahan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
viii DAFTAR ISI
Daftar Tabel
ix
x DAFTAR TABEL
Daftar Gambar
xi
DAFTAR GAMBAR 1
Pengantar Clipper
3
Bab 2
2.1 Pendahuluan
Clipper adalah bahasa pemrograman yang lebih ditujukan untuk pengelolaan data. Clip-
per terkenal pada dekade tahun 80-an sampai pertengahan 90-an. Clipper dimasukkan ke dalam
kelompok keluarga Xbase, yaitu dBase, Clipper, Foxbase, FoxPro, dan lain-lain. Beberapa keun-
tungan Clipper di antaranya : tidak memerlukan perangkat keras yang tinggi (PC AT 286 pun bisa
digunakan, dan ingat di pelosok mungkin masih ada komputer PC AT 386), berbasis teks (tidak
grafis) sehingga cepat dalam pencetakan ke printer dan mudah dalam pemasukan data, kecepatan
pemasukan data (tentu disenangi oleh operator pemasukan data). Dalam pengembangan suatu sis-
tem informasi tentu saja dasarnya adalah kebutuhan sisten bukan keinginan pemakai. Jika cukup
dengan sistem xBase, maka tidak perlu menggunakan aplikasi grafis apalagi sampai web server.
Akan tetapi jika memang sistem membutuhkan sistem yang lebih dari sekedar xBase maka tentu
tidak xBase tidak dapat digunakan.
Masalah lain yang bisa menjadi perhatian adalah menggarisbawahi pernyataan yang disam-
paikan oleh Alfons Tanudjaya, spesialis antivirus dari Vaksincom, yang dimuat dalam detikINET,
Rabu (8/8/2007). Beliau menyatakan bahwa, ”Pengguna format dbf bisa lebih banyak dari format
yang lebih baru. Dan secara persentase jumlah perusahaan, pengguna database .dbf ini mencapai
lebih dari 50 % dan tersebar di seluruh Indonesia.” Memang untuk saat ini (September 2009) tentu
jumlahnya sudah semakin menurun akan tetapi setidaknya masih ada pasar yang membutuhkan
skill xBase ini.
Selain itu juga ada kelemahan- kelemahannya, seperti : Clipper tidak menerapkan konsep
basis data secara penuh (relasi antar file/entiti tidak didukung oleh manajemen Clipper, tapi harus
dilakukan oleh programmer, misal tentang referential integrity), tidak mendukung aplikasi internet
(kalau aplikasi jaringan, bisa memakai Novell Netware), segala sesuatu dikerjakan oleh programmer
(misal : tidak ada generate code secara otomatis oleh sistem).
Kemudian, dalam pemrogramannya bisa dikatakan struktur program dalam Clipper tidak
beraturan, tidak seperti Pascal. Ini dapat dipandang sebagai kekurangan tapi dapat juga diman-
faatkan oleh pemrogram sehingga menjadi kelebihan ... :)
Bagi para pemakai Linux, sudah ada proyek untuk melakukan porting Clipper ke Linux. Di
mana tempatnya ? Anda diyakini dapat mencari sendiri. Jika tidak, program xBase bisa juga
dijalankan dengan menggunakan DOS Emulator di GNU Linux. Aplikasi xBase bisa dijalankan
dengan baik pada DOS Emulator. Tetapi tentu saja untuk mencetak informasi ke printer meru-
pakan suatu tantangan tersendiri. Tetapi ini bisa diatasi misalnya dengan melakukan pencetakan
ke file, kemudian file ini dicetak dengan aplikasi di GNU Linux.
Pemilihan perangkat lunak tentu ditentukan oleh kebutuhan pemakai. Bagaimana kita
memahami masalah kualitas ini ? Perangkat lunak yang berkualitas bukanlah perangkat lunak
yang canggih dengan versi terbaru. Perangkat lunak yang berkualitas adalah perangkat lunak yang
memenuhi dan sesuai kebutuhan pemakai. Oleh karenanya, untuk membunuh seekor nyamuk, tidak
perlu memakai senjata AK-47, tapi cukup dengan sapu lidi ... :) Dan dalam satu contoh kasus, isi
data base dalam perangkat lunak Oracle, justru kemudian diproses dengan Clipper.
5
6 BAB 2. BASIS DATA DENGAN CLIPPER
Sebagai bahan studi kasus, pada materi Clipper ini, akan digunakan masalah PKAB. PKAB
secara singkat adalah salah satu model penerimaan mahasiswa baru tanpa tes tetapi melalui seleksi
prestasi di SLTA. Namun dalam dokumen ini, tidak akan dijelaskan analisa dan perancangan
program PKAB dimaksud. Jika Anda ingin mengetahui dokumentasinya, Anda dapat membaca
dokumentasi program PKAB.
• Kompilator (Compiler)
Untuk mencek tata aturan penulisan, suatu program harus dikompilasi. Proses kompilasi
dilakukan oleh kompilator (compiler), yang dalam Clipper diwakili oleh program clipper.exe.
Jika terdapat kesalahan penulisan, Clipper akan memberi tahu nomor baris dan jenis kesala-
hannya (di sinilah kelebihan QEdit terpakai, yaitu pindah ke suatu nomor baris dengan cepat).
Ada pun kesalahan logika tidak akan terdeteksi. Hasil dari proses kompilasi akan didapat file
obyek, yaitu file dengan ekstensi .obj. Untuk melakukan proses kompilasi, terkadang perlu
file- file lain, ini tergantung programnya. File-file lain yang diperlukan, biasanya tersimpan
di folder include.
• Linker
File obyek yang didapat dari proses kompilasi, untuk menjadi file yang bisa dijalankan (diek-
sekusi), harus di-link. Proses linking memakai program Blinker (blinker.exe) atau program
bawaan Clipper sendiri (rtlink.exe). Dalam proses linking, perlu file-file library (.lib) dan
mungkin file obyek tambahan lain (.obj). File hasil linking berekstensi .exe yang berarti file
tersebut dapat dijalankan. File .exe ini belum tentu bebas error.
2.3. PERINTAH DOS COMMAND 7
• Pencari tulisan
Untuk program-program yang besar apalagi jika sudah lama tidak, ada kemungkinan pemro-
gram atau pengelola sistem lupa letak suatu modul. Nah ... dengan adanya program pencari
tulisan, kita dapat mencari letak suatu modul. Hasil pencarian, kita akan mendapatkan file
dan nomor baris ditemukannya modul yang kita cari. Di sinilah kolaborasi antara QEdit
dengan program pencari ini. Program pencari yang akan digunakan adalah ts.exe. Program
ts.exe fungsinya hampir mirip dengan Find-File dalam Microsoft Office. Kelebihan ts.exe
adalah adanya nomor baris yang akan memudahkan perbaikan program.
Perlu ditekankan kembali tentang perlunya pemahaman DOS Command. Bagaimana men-
jalankan suatu file dari posisi direktori yang berbeda. Penggunaan tanda \ dalam menjalankan
suatu perintah. Hal ini penting karena ketidakpahaman tentang hal ini bisa menghambat proses
kompilasi, linking atau mengeksekusi file hasil akhir. Ini bisa membuat putus asa dan berfikir
bahwa program ini sama sekali tidak bisa diikuti dan dijalankan.
Bisa dikatakan bahwa semua perintah-perintah yang dijalankan, dilakukan dari posisi DOS
Prompt. Jadi tinggalkanlah kebiasaan memegang-megang mouse untuk sementara. Bahkan terkadang
juga penggunaan keyboard menjadi lebih cepat dibandingkan dengan mouse.
Program Foxbase tersedia dalam versi banyak pemakai multi user dan satu pemakai single user.
Untuk menjalankan program Foxbase ini, dari DOS Prompt (Start-Program-MS Dos Prompt),
ketikkan mfoxplus[enter]. Namun sebaiknya Anda pindah dulu ke direktori tempat file data Anda,
meskipun hal ini dapat dilakukan belakangan. Jika Anda berhasil, maka Anda akan mendapatkan
tampilan seperti ini :
Untuk membuat file data (tabel), gunakan perintah create nama-file. Contoh create
ipa2002. Untuk merekam, dari posisi create tadi, tekan tombol Ctrl-W. Dalam pengisian nama
atribut (field), cukup ketikkan huruf pertama dari namanya.
Buatlah file data dengan nama dan atribut seperti berikut :
Untuk keluar dari Foxbase, ketikan quit. Program Foxbase tersedia dalam versi banyak
pemakai multi user. Meskipun tujuan akhir adalah kemampuan membuat program dengan Clipper,
namun perintah-perintah dasar pengelolaan basis data (dalam konteks Clipper) tetap diperlukan.
Perintah-perintah dasar ini dikenal dengan sebutan itshape dot command, karena diawali oleh
tanda ’.’.
Perhatikan tanda ’.’ di atas tulisan Command. Perintah-perintah yang dijalankan di sini,
bersifat interaktif. Sistem akan langsung merespon dan menampilkan hasilnya di layar.
1. Fungsi : perintah create digunakan untuk membuat file data (tabel) beserta atribut-atributnya
field.
4. Tampilan :
5. Tindak Lanjut : Isi nama field (field nama), tipe (type), ukuran width, dan jumlah angka
desimal (dec).
1. Fungsi : perintah use digunakan untuk membuka file data yang telah dibuat dengan perintah
create. File data yang telah dibuat, untuk membukanya cukup dengan perintah use. Jika
digunakan lagi perintah create, maka data akan hilang.
2.4. MANAJEMEN BASIS DATA 9
.............. ....
... .. ..
.. . ..
.. ..
.. ..
.. .. ..... ..... .. .. ... .... ..
...... .. .. .. .. ... .. ... .. .. . .. ..
.. .. .. .. .. .. .. .. .. .. .. ..
.. .. .. .. . .. .. ... .... ........
.. .. .. .. .. .. ....... ..... ..
.. .. .. . .. .. .. ... .. ... ..
.. .. .. .. .. .. .. .. .. .. ... .
.. .. .. .. .. .. .. ... .... . .. ... ..
...... .. ..... .... ...... .... .. .... ...
.
Command Line<C:>
Multi-User FoxBASE+ 2.00 (c) 1987 Fox Software
Enter a FoxBASE+ command.
4. Tampilan :
5. Tindak Lanjut : Tergantung apa yang akan dilakukan, bisa menghapus data, melihat data,
menghapus data, merubah atribut, dan sebagainya.
1. Fungsi : perintah append digunakan untuk menambah data atau record ke dalam file data
(tabel).
2. Sintaks : append
3. Contoh : append
2.4. MANAJEMEN BASIS DATA 11
4. Tampilan :
1. Fungsi : Perintah append blank digunakan untuk menambahkan data atau record kosong
ke dalam file data (tabel).
4. Tampilan :
5. Tindak Lanjut : -
1. Fungsi : perintah edit digunakan untuk memperbaiki isi data atau record di dalam file data
(tabel). Data yang diperbaiki sesuai dengan posisi record sekarang.
2. Sintaks : edit
3. Contoh : edit
4. Tampilan :
5. Tindak Lanjut : Gantilah isi data-data sesuai dengan data-data yang ada.
12 BAB 2. BASIS DATA DENGAN CLIPPER
1. Fungsi : perintah browse merupakan perintah yang memiliki beberapa fungsi, yaitu : menampilkan
data, merubah data, menghapus data.
4. Tampilan :
5. Tindak Lanjut :
(a) Untuk menggantilah isi data-data, maka pada posisi kursor, data bisa langsung diganti.
(b) Untuk menghapus data, pada posisi kursor, tekan tombol del, maka data akan dihapus.
2.4. MANAJEMEN BASIS DATA 13
(c) Untuk menampilkan data, otomatis data sudah ditampilkan. Sedangkan untuk berpindah-
pindah record, bisa menggunakan tombol panah, pg-up, pg-dn. Untuk pindah ke samp-
ing, jika field terlalu banyak, gunakan tombol Ctrl-panah.
2.4.8 Perintah go
1. Fungsi : Fungsi go digunakan untuk mengarahkan petunjuk atau pointer ke record tertentu
di dalam file data (tabel).
2. Sintaks : go [nomor record]
3. Contoh : go 11
4. Tampilan : Perhatikan tulisan Rec:11/3324, yang artinya sekarang berada di record ke-11
dari 3324 record.
. go 11
.
Command Line<C:>IPA2002 Rec: 11/3324
5. Tindak Lanjut : Sesuai keperluan, mau memperbaiki data, menambah data, dan sebagainya.
1. Fungsi : Fungsi zap digunakan untuk menghapus seluruh data. Data akan terhapus tapi
struktur data masih ada.
2. Sintaks : zap
3. Contoh : zap
4. Tampilan : -
14 BAB 2. BASIS DATA DENGAN CLIPPER
1. Fungsi : Fungsi append from digunakan untuk memasukkan isi satu file tabel ke tabel aktif
(yang sedang di-use). File tabel yang akan dimasukkan diasumsikan sudah ada. Data yang
dimasukkan sesuai nama atribut field masing-masing.
2. Sintaks : append from [file data]
3. Contoh :
(a) use ipa2002
(b) append from ipa2001
4. Tampilan : -
1. Fungsi : Fungsi index digunakan untuk mengurutkan isi satu file tabel sesuai kebutuhan.
Dengan adanya index, maka manajemen data menjadi lebih mudah. Index ini urutannya
selalu dari kecil ke besar ascending. Oleh karena itu perlu menggunakan trik khusus, misalnya
memberi tanda ’-’ (minus) pada kunci index yang bertipe numerik.
2. Sintaks : index on [atribut] to [nama file]
3. Contoh :
(a) use ipa2002
(b) list nama siswa,skor
(c) index on -SKOR to hasil
(d) list nama siswa,skor
4. Tampilan : sebelum dan setelah di-index
2.4. MANAJEMEN BASIS DATA 15
1. Fungsi : Fungsi delete record digunakan untuk menghapus record tertentu. Data akan
terhapus tapi data masih ada selama belum ada perintah pack.
4. Tampilan : Perhatikan bahwa record ke 11 (dari 39 record) statusnya terhapus (ada tulisan
Del).
Gambaran Sistem
17
Bab 3
Pada materi ini, akan dicoba untuk membuat suatu model sistem penerimaan mahasiswa melalui
jalur PMDK (Penelusuran Minat dan Kemampuan). Pada proses ini, suatu perguruan tinggi akan
menerima mahasiswa baru. Kriteria penerimaan berdasarkan nilai-nilai raport di SLTA. Nilai-nilai
ini kemudian dibobot dan selanjutnya diranking menurut pilihan program studi masing-masing.
Untuk mempermudah proses, dalam hal ini nilai raport hanya akan dirata-rata yang kemudian
menjadi skor akhir untuk penentuan ranking.
19
20 BAB 3. SISTEM YANG AKAN DIBUAT
Bagian IV
Pemrograman Clipper
21
Bab 4
Program Dasar
Checklist for good programming This checklist should help you write high-quality programs.
Raphael Finkel, 8/17/2005
2. Bare literals : Avoid numbers other than 0 and 1 and strings other than ”” in your program
except when you define constants.
23
24 BAB 4. PROGRAM DASAR
(g) Don’t declare an identifier with a name denoting a literal, such as ”thirty”.
(a) Don’t put all your code into the main() routine.
(b) In fact, don’t make any routine do too much work. If it’s longer than about 50 lines, it
is maybe too long.
(c) If you duplicate code several times, consider whether a loop would work better, or
perhaps a subroutine.
(d) If you find you are indenting very deeply, you most likely aren’t using subroutines when
you should.
(e) Don’t reinvent library routines (unless your assignment requires it). Look in the manuals
to learn about sprintf() and atoi(), for instance.
(f) Use header files in C and C++ (header files have names ending .h) to define all constants
needed by multiple files and declare all subroutines exported between files. But don’t put
the body of subroutines in header files (with the rare exception of inline subroutines).
5. Coding : You want your coding to be clear, maintainable, and efficient, in that order. Some
of the rules here are very specific; others are more general.
(a) Don’t use a sequence of if statements that have no else if only one can match; use else
if.
(b) When you want to categorize text input, don’t enumerate the possible first characters.
(c) Use shift operators instead of multiplication for constructing bit patterns.
(d) In a switch statement, always check for the default case. Likewise, in a sequence of
if-then-else statements, use a final else.
(e) All system calls can fail. Always check the return code, and use perror() to report the
failure.
(f) Booleans should always use the boolean type in Java, bool in C++, and 0/1 integers in
C. Don’t use characters t and f, and don’t use -1 and 1.
(g) Use loops to initialize data structures if possible.
(h) Use each variable and each field of a structure for exactly one purpose. Don’t overload
them unless there is an excellent reason to do so.
4.1. CHECK LIST FOR GOOD PROGRAMMING 25
(i) Don’t use the same identifier for both a type, a variable, and a file name, even if you
change the capitalization. It’s too confusing.
(j) If you are modifying data with htonl() or a similar routine before network transmission,
don’t modify the data in place. Build a second data structure.
(k) Try not to use global or nonlocal variables. Declare each variable in the smallest scope
you can. There are legitimate uses of nonlocal variables, but make sure you really need
them.
(l) Shell and Perl programs should have their # ! line as the first line of the file; otherwise,
the line is just a comment.
(m) Try to avoid coding special cases. You can often use pseudo-data or other data-structure
methods that allow you to fold special cases into the regular cases.
6. Compilers : Let them help you find mistakes
(a) Always invoke compilers with all warnings enabled. For C and C++, use the -Wall flag;
for Java, use -Xlint:all -deprecation.
(b) All Perl programs should run with the -w flag and should have use strict. All Perl cgi-bin
scripts should have the -T flag, too.
7. The make utility : Use it, and use it well.
(a) A makefile should always have a ”clean” recipe, which should remove all files that can
be reconstructed by other recipes in the makefile, including object and executable files.
(b) If your project has multiple source files, the makefile should generate object (.o) files as
needed and link them together.
(c) The makefile should be written so that if you run make twice in a row, the second run
does no recompilation.
(d) Every recipe should create the file specified in its target.
(e) Every recipe should use every file specified in its prerequisite list.
(f) Learn to use rules for targets like .c.o to avoid repetitious makefiles.
(g) If you have just one C or C++ source file, the executable file should have the same name
(without the extension .c or .cpp).
(h) Make sure you list all .h files as prerequisites where they are needed. Consider using
makedepend to generate the prerequisite list for you.
8. Documentation : It’s not just just for the grader. It helps you as you write the program, too!
(a) Add documentation as you write the program. You can always modify it as your design
changes.
(b) Include external documentation : How does one compile and run the program, and what
is it meant to do ? The external documentation could be in a separate file; for small
projects, it can be a comment in the single source file.
(c) Include internal documentation : What algorithms and data structures are you using?
An overview can be in a separate file, but usually internal documentation is placed on
the specific routines, declarations, and steps that it describes.
(d) Check your whole program and documentation for spelling mistakes. It is impolite to
turn in misspelled work.
(e) Check all your documentation (and output messages) for grammar mistakes.
(f) Programs are much more readable if you put a short comment on closing braces. For
instance, the brace closing a conditional can have a comment like ”if value looks good”.
A brace closing a loop can have a comment like ”for each input line”. A brace closing a
procedure can have a comment just naming the procedure. A brace closing a class can
have a comment saying ”class” and then the name of the class.
26 BAB 4. PROGRAM DASAR
Proses kompilasi dilakukan untuk mencek sintaks penulisan program yang dibuat. Jika ada
penulisan yang tidak benar, Clipper akan memberi tahu baris yang salah. Proses kompilasi tidak
memberi tahu jika ada kesalahan lain seperti kesalahan logika, pembagian dengan nol, dan seba-
gainya. Jika tidak ada kesalahan akan dihasilkan file obyek (.obj). Jika masih ada kesalahan, maka
program dibetulkan lagi dengan menggunakan teks editor (QEdit : q.exe). Sedangkan proses linking
4.3. PROSES KOMPILASI 27
dilakukan untuk mencek kaitan antar program, keberadaan fungsi atau prosedur yang digunakan.
Jika tidak ada kesalahan akan dihasilkan program yang bisa dijalankan dari DOS Prompt (.exe).
Jika masih ada kesalahan pada program, maka program dibetulkan lagi dengan menggunakan teks
editor (QEdit : q.exe). Program yang sudah menjadi .exe bukan berarti bebas dari kesalahan dan
inilah keajaiban Clipper ... :)
Sebelum melakukan proses kompilasi dan linking ada variabel lingkungan (environment vari-
able) yang harus diatur. Untuk mengatur variabel lingkungan ini, harus diketahui terlebih dahulu
dimana program Clipper disimpan. Pengaturan ini dilakukan dari posisi DOS Prompt, jadi An-
da harus memilih Start-Program-DOS Prompt. Sebagai contoh dalam kasus ini, program Clipper
disimpan di partisi c: dengan subdirektori ca-52. Lebih jelasnya dapat dilihat pada gambar :
1. include, untuk menentukan letak direktori file-file include (.ch). Pada contoh ini, maka ketikan
set include = c : \ca − 52\include[enter].
2. obj, untuk menentukan letak direktori file-file obyek (.obj). Pada contoh ini, maka ketikan
set obj = c : \ca − 52\obj[enter].
3. lib, untuk menentukan letak direktori file-file pustaka (.lib). Pada contoh ini, maka ketikan
set lib = c : \ca − 52\lib[enter].
Nilai variabel lingkungan ini tentu saja bisa berbeda-beda tergantung Anda menyimpan program
Clipper pada komputer Anda.
Berarti kesalahan terletak pada perintah compiling atau linking bukan pada source code.
Misalkan kita memiliki program seperti berikut :
/* -----------------------------------------
file : si.prg
program untuk mencetak tulisan saja
----------------------------------------- */
clear
* menghapus layar
@ 0,0 to 24,79
* membuat kotak pada satu layar penuh
set color to
* mengembalikan pengaturan warna ke tulisan putih
* latar belakang hitam
wait ’’
* menghentikan program sampai pemakai menekan suatu tombol
return
* kembali ke sistem
C:\dwi\clipper>\ca-52\bin\clipper si
361K available
Compiling SI.PRG
SI.PRG(16) Error C2007 Unterminated string: ’Program Studi Sistem Informasi’
1 error
No code generated
Terlihat bahwa masih ada kesalahan pada baris 16. Pada baris 16, keterangannya Unterminated
string: ’Program Studi Sistem Informasi’, yang artinya kurang petik penutup. Maka pro-
gram lengkapnya, setelah diperbaiki menjadi :
/* -----------------------------------------
file : si.prg
program untuk mencetak tulisan saja
----------------------------------------- */
4.3. PROSES KOMPILASI 29
clear
* menghapus layar
@ 0,0 to 24,79
* membuat kotak pada satu layar penuh
set color to
* mengembalikan pengaturan warna ke tulisan putih
* latar belakang hitam
wait ’’
* menghentikan program sampai pemakai menekan suatu tombol
return
* kembali ke sistem
Jika program tersebut kita kompilasi ulang, maka hasilnya seperti berikut :
Z:\home\dwijim\kuliah\clipper>ca-52\bin\clipper si.prg
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling SI.PRG
Code size 130, Symbols 144, Constants 46
Karena sudah tidak ada keterangan error, maka proses dilanjutkan dengan proses linking. Maka
kita berikan perintah seperti berikut :
C:\dwi\clipper>\ca-52\bin\blinker file si
Jika proses linking dilakukan dengan DOS Prompt dari Microsoft Windows, tidak akan ada keteran-
gan apapun (meskipun mungkin ada kesalahan). Satu patokan saja, yaitu jika file .exe tidak di-
hasilkan, berarti masih ada kesalahan. Misal kita berikan perintah :
C:\dwi\clipper>si
Bad command or file name
Ini artinya file test.exe belum jadi. Penyebabnya bisa karena masih ada kesalahan dalam program
(misal menjalankan fungsi atau prosedur yang tidak ada, atau kita salah dalam memberikan per-
intah set lib). Untuk proses linking yang dilakukan dengan DOS Prompt murni atau dengan DOS
Emulator di GNU LINUX, bisa jadi akan terlihat suatu pesan kesalahan seperti berikut :
30 BAB 4. PROGRAM DASAR
Hal ini disebabkan karena environment variable set lib belum diatur atau sudah diatur tetapi
posisi direktori lib-nya salah. Untuk itu berilah pengaturan set lib sesuai dengan tempat di mana
file-file library Clipper disimpan (Lihat kembali catatan tentang environment variable). Jika sudah
benar, kita akan mendapatkan file-file berikut :
Directory of D:\KULIAH\CLIPPER
Sekarang kita bisa menjalankan program tersebut dengan nama si.exe. Jadi dari DOS Prompt
cukup tulisakan si [enter].
2. Sintaks : clear
3. Contoh : clear
3. Contoh :
(a) wait
(b) wait ’tekan tombol apa saja !’
4. Keterangan : pada contoh pertama, program akan berhenti sementara dan di layar dita-
mpilkan tulisan ’Press any key to continue’, sedangkan pada contoh kedua, akan ditampilkan
tulisan ’tekan tombol apa saja’.
3. Contoh : return
Berikut ini beberapa contoh program yang dapat dicoba dan dilihat hasilnya :
/* -----------------------------------------
file : dwi.prg
program untuk mencetak tulisan dwi
yang tersusun dari huruf-huruf d-w-i
----------------------------------------- */
clear
* menghapus layar
@ 0,0 to 24,79
* membuat kotak pada satu layar penuh
@ 05,20 say ’ d ’
@ 06,20 say ’ d iii ’
@ 07,20 say ’ d i i ’
@ 08,20 say ’ d iii ’
@ 09,20 say ’ d ’
@ 10,20 say ’ ddddd w w i ’
@ 11,20 say ’ d d w w i ’
@ 12,20 say ’ d d w w i ’
@ 13,20 say ’ d d w w i ’
@ 14,20 say ’ d d w w w i ’
@ 15,20 say ’ d d w w w i ’
@ 16,20 say ’ d d w w w i ’
@ 17,20 say ’ d d w w w w i ’
@ 18,20 say ’ dddddd w w iiii ’
32 BAB 4. PROGRAM DASAR
return
* kembali ke sistem
4.5 Praktikum I
1. Buatlah file .dbf bernama IPA2002.DBF dan SLTA.DBF. Kemudian isi dengan minimal 10
record untuk data siswa (dalam IPA2002.DBF) dan 15 record untuk kode dan nama-nama
SLTA (dalam SLTA.DBF). Struktur tabel SLTA.DBF tampak seperti berikut : Sedangkan
2. Buatlah program (tentu saja dengan Clipper) dengan hasil seperti pada tampilan berikut ini.
Bisa juga Anda membuat kreasi sendiri dan selamat mencoba.
1. String, dipakai untuk menyimpan suatu nilai yang terdiri dari campuran karakter huruf,
karakter angka, dan karakter lainnya. Tipe ini misal dipakai untuk menyimpan nama, alamat,
nama mata kuliah, keterangan jenis kelamin, dan sebagainya. Contoh :
2. Numeric, dipakai untuk menyimpan suatu nilai yang berupa angka dan akan diopersikan
secara matematis. Misalnya nomor KTP, meskipun isinya berupa nilai-nilai 0-9 akan tetapi
karena nomor KTP tidak akan pernah dioperasikan secara matematis maka tipenya bukan
numeric. Demikian juga halnya dengan nomor mahasiswa, NIP, nomor HP dan sebagainya.
Angka di sini bisa berupa nilai pecahan, nilai bulat, nilai positif atau pun negatif. Dalam
Clipper tidak dilakukan pembedaan jenis bilangan.
nomor = 0
nilai = 87.11
hasil := -11
store -27 to untung
3. Logical, dipakai untuk menyimpan nilai yang hanya terdiri dari nilai .t. (true) dan nilai .f.
(false). Misalnya untuk kondisi lulus tidak lulus, akhir file/tabel, dan sebagainya. Contoh :
lulus = .t.
jawaban = .f.
akhir := .t.
store .f. to boleh
35
36 BAB 5. PROGRAM INPUT DATA DAN MENU
4. Date, dipakai untuk menyimpan nilai yang berupa tanggal. Untuk menyimpan nilai tanggal
ini, bisa digunakan fungsi date() atau fungsi ctod(). Contoh :
Pendefinisian suatu variabel dilakukan dengan memberi harga awal variabel. Misal variabel urutan
ditentukan memiliki tipe numerik, maka cukup dengan memberikan perintah urutan = 0. Salah
satu kelebihan (kalau tidak mau dikatakan sebagai kekurangan) Clipper adalah ketidakberaturan
masalah variabel ini. Bagi yang pernah menggunakan bahasa Pascal atau C akan dapat merasakan-
nya. Misal suatu variabel semula ditentukan bertipe numerik, dengan perintah :
store 1 to baris
Jika tiba-tiba di bagian lain program tipe baris diubah ke string (misalnya), hal itu tidak akan
menyebabkan kesalahan program.
Demikian juga dengan hasil suatu fungsi, suatu fungsi bisa memberikan hasil dengan tipe yang
berbeda. Pada satu sisi, misal return .t. dan pada sisi lain return 1. Apakah ini keajaiban dunia
yang kesembilan ?
3. Contoh :
4. Keterangan : program akan menunggu pemakai memasukkan nama dan tanggal lahir. Nama
akan diubah langsung ke huruf besar karena ada perintah picture ’@!’. Posisi baris dan kolom
harus disesuaikan dengan letak baris dan kolom pada perintah say.
5.2. PERINTAH YANG DIGUNAKAN 37
2. Sintaks : read
3. Contoh :
3. Contoh :
3. Contoh :
4. Keterangan : Kondisi awal tahun, hanya disediakan sebanyak dua digit dalam pemasukan da-
ta. Meskipun demikian, sebenarnya di dalam tabel (file data base), tahun disimpan sebanyak
4 digit.
3. Contoh :
set century on
38 BAB 5. PROGRAM INPUT DATA DAN MENU
/* ------------------------------------------------------
nama file : harga.prg
program untuk menghitung harga satu item barang
------------------------------------------------------ */
clear
* menghapus layar
store 0 to jumlah,harga
store space(21) to nama_barang
store date() to tgl_beli
* memberi harga-harga awal ke variabel memori
read
* perintah get diakhiri dengan perintah read
return
* kembali ke sistem
• dwi.prg yaitu program untuk menampilkan tulisan dwi yang tersusun dari huruf-huruf d-w-i.
3. Contoh :
set wrap on
4. Keterangan : Harga awal set wrap off, oleh karenanya kita harus menggantinya jika dalam
program kita ingin agar menu bisa bergerak bebas. Dalam artian, jika penunjuk menu sudah
berada pada posisi paling bawah, kemudian kita dan kolom menekan panah ke bawah, maka
penunjuk menu akan pindah ke posisi paling atas. Demikian juga sebaliknya.
3. Contoh :
4. Keterangan : Untuk memilih menu, dapat menggunakan anak panah kemudian menggantinya
tombol Enter, atau huruf pertama masing-masing menu (a, b, c, x). Untuk membuat menu
yang menyamping, maka nomor baris harusa sama dan dan kolom kemudian nomor kolom
yang berbeda. Kalau pada contoh di atas, nomor baris sama dab nomor kolom berbeda.
40 BAB 5. PROGRAM INPUT DATA DAN MENU
3. Contoh :
4. Keterangan : makan akan bernilai 1 jika pemakai memilih ’a. Menu Sarapan menggantinya
Pagi’, akan bernilai 2 jika pemakai memilih ’b. Menu Makan Siang’, demikian seterusnya. Ni-
lai makan inilah yang kemudian diseleksi dan dan kolom kemudian dijalankan nama program
yang sesuai dengan pilihan yang yang dipilih oleh pemakai.
5.4.4 Perintah do
1. Fungsi : menjalan suatu program dari program lain, atau menjalankan suatu prosedur.
2. Sintaks : do [nama-program]
3. Contoh :
do logo
4. Keterangan : menjalankan program logo dari program lain. Hal ini berbeda dengan men-
jalankan program logo dari program logo itu sendiri ... :)
3. Contoh :
do while .t.
@ 07,20 prompt ’a. Menu Sarapan Pagi’
@ 08,20 prompt ’b. Menu Makan Siang ’
@ 09,20 prompt ’c. Menu Makan Malam ’
@ 10,20 prompt ’x. Keluar ’
menu to makan
enddo
4. Keterangan : bagian program yang menjalankan menu ini akan dijalankan berulang-ulang
(looping) sampai terpenuhi kondisi untuk selesai. Kalau contoh di atas, belum ada perintah
untuk berhenti. Perintah do while harus diakhiri dengan enddo.
5.5. CONTOH PROGRAM 41
2. Sintaks :
do case
case [kondisi-1]
\dots
case [kondisi-2]
\dots
endcase
3. Contoh :
do while .t.
@ 07,20 prompt ’a. Menu Sarapan Pagi’
@ 08,20 prompt ’b. Menu Makan Siang ’
@ 09,20 prompt ’c. Menu Makan Malam ’
@ 10,20 prompt ’x. Keluar ’
menu to makan
do case
case makan=1
do pagi
case makan=2
do siang
case makan=3
do malam
case makan=4
exit && keluar atau program selesai
endcase
enddo
4. Keterangan : bagian program yang menjalankan menu ini akan dijalankan berulang-ulang
(looping) sampai pemakai memilih menu ’x. Keluar’. Pada contoh di atas, maka dianggap
ada program pagi.prg, siang.prg, dan malam.prg. Perintah do case harus diakhiri dengan
endcase.
• dwi.prg yaitu program untuk menampilkan tulisan dwi yang tersusun dari huruf-huruf d-w-i.
Kita dapat membuat sebuah program yang menggabungkan keempar program tersebut. Contoh
lengkap program program tersebut adalah sebagai berikut :
42 BAB 5. PROGRAM INPUT DATA DAN MENU
/* -----------------------------------------------------------
nama program : gabung.prg
program menu yang akan menjalankan file-file sesuai
dengan menu yang dipilih
----------------------------------------------------------- */
set century on
* mengatur tahun dicetak 4 digit
set wrap on
* mengatur pilian menu supaya bisa membalik
do while .t.
* looping yang pasti akan dikerjakan
clear
* mengapus layar
menu to pilih
* nilai pilihan menu disimpan ke variabel pilih
do case
* penyeleksian kondisi
case pilih=1
do si
* jika pilih bernilai 1, akan menjalankan
* program si.prg demikian seterusnya
case pilih=2
do dwi
case pilih=3
do harga
case pilih=4
exit
endcase
wait ’’
enddo
* akhir looping do while
return
/* akhir program, kembali ke sistem */
5.6. TUGAS LATIHAN 43
Jika program gabung.prg kita kompilasi, terlihat bahwa kompilasi dilakukan juga terhadap program-
program yang dijalankan oleh program gabung.prg. Hal tersebut tampak seperti pada tampilan
berikut :
C:\dwi\clipper>\ca-52\bin\clipper gabung
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling GABUNG.PRG
Compiling SI.PRG
Compiling DWI.PRG
Compiling HARGA.PRG
Code size 1161, Symbols 656, Constants 1063
2. Gabungkanlah program menghitung umur pada latihan sebelumnya ke dalam program gabun-
gan.
44 BAB 5. PROGRAM INPUT DATA DAN MENU
Bab 6
6.1 Pendahuluan
Pada pembahasan sebelumnya, pemasukan data hanya dilakukan di memory. Akibatnya jika
komputer dimatikan data pun akan hilang. Pada bahasan berikut ini, akan dilakukan pemasukkan
data yang kemudian direkam ke suatu tabel (file data). Dengan adanya perekaman data ini,
data tidak akan hilang meskipun komputer dimatikan. Dan memang kondisi seperti inilah yang
sebenarnya dilakukan.
Kita merancang untuk membuat suatu menu yang terdiri atas beberapa menu seperti berikut :
1. Pemasukan/Editing Data, digunakan untuk memasukkan data baru atau mengedit data yang
sudah ada.
2. Penghapusan Data, digunakan untuk menghapus data yang tidak digunakan atau data yang
salah sehingga tidak akan dipakai.
3. Lihat Data, digunakan untuk melihat data-data yang sudah ada di dalam tabel/file data.
4. Selesai
Program untuk pemasukkan data ini sangat bervariasi tergantung perancangannya. Oleh kare-
nanya, boleh jadi kita akan menemukan perbedaan-perbedaan di antara beberapa program. Dalam
program pemasukkan data ini, kita akan membuat variabel memory yang berkaitan dengan atribut
(field). Untuk memudahkannya maka dibuat nama variabel memory sama dengan huruf m ditam-
bah nama atribut (field). Contoh : Ini perlu dilakukan karena dalam programnya nanti, kita akan
45
46 BAB 6. PROGRAM INPUT DATABASE
Hitung total
Set pajak penjualan sama dengan total dikalikan
bobot pajak penjualan
Set total sama dengan total ditambah pajak penjualan
Hitung diskon
Set total bersih sama dengan total dikurangi diskon
Cetak total bersih di faktur
DO WHILE (condition)
do block
English Structured untuk program pemasukan data ini kita buat seperti berikut :
1. Program Menu :
Hapus layar
Jika pilihan sama dg. 1 jalankan program input data
Jika pilihan sama dg. 2 jalankan program hapus data
Jika pilihan sama dg. 3 jalankan program browsing data
Jika pilihan sama dg. 4 keluar dari program
Kembalikan gambar tampilan
Selesai
3. Contoh :
do while .t.
@ 07,10 prompt ’1. Pemasukan/Editing Data ’
@ 08,10 prompt ’2. Penghapusan Editing Data’
@ 09,10 prompt ’3. Browsing Data ’
@ 10,10 prompt ’4. Selesai ’
menu to pilihan
save screen to lyr_menu
do case
case pilihan = 4 .or. lastkey()=K_ESC
exit
...
endcase
restore screen from lyr_menu
enddo
4. Keterangan : Tampilan menu akan direkam ke variabel lyr menu. Setelah masuk ke salah
satu menu yang dipilih, tampilan layar berubah. Ketika kembali ke menu, maka tampilan
dikembalikan ke bentuk semula.
3. Contoh :
4. Keterangan : Perintah ini sangat berhubungan dengan perintah . save screen to. Na-
ma variabel harus sesuai dengan nama variabel pada save screen to.
3. Contoh :
seek mNO_PKAB
if found()
...
endif
seek ’110668’
if found()
...
endif
4. Keterangan : Perintah seek ini biasanya dilanjutkan dengan perintah found() sebagai alat
pengecekan apakah pencarian mendapatkan hasil (ketemu) atau tidak mendapatkan hasil
(tidak ketemu). Dan sebaliknya, sebagai pendahulu, maka perintah ini harus diawali dengan
perintah index. Perintah index dapat dilihat pada tulisan sebelumnya.
2. Sintaks : found()
3. Contoh :
50 BAB 6. PROGRAM INPUT DATABASE
seek mNO_PKAB
if found()
...
endif
seek ’110668’
if found()
...
endif
if .not. found()
append blank
endif
if found()
mNAMA_SISWA = NAMA_SISWA
mNO_INDUK = NO_INDUK
mKODE_SMA = KODE_SMA
mKELAMIN = KELAMIN
else
mNAMA_SISWA = space(30)
mNO_INDUK = space(10)
mKODE_SMA = space(8)
mKELAMIN = space(1)
endif
4. Keterangan : Pada contoh pertama, hanya terdapat satu proses yang akan dikerjakan jika
kondisi terpenuhi. Yaitu jika data yang dicari tidak ada ( .not. found()) akan dilakukan
penambahan record kosong. Sedangkan pada contoh kedua, ada dua blok proses yang akan
dikerjakan tergantung kondisi. Jika ada ditemukan (ada di dalam data), variabel memory
akan diisi dengan data yang ada (atribut/field). Jika data tidak ada, variabel memory diisi
dengan nilai-nilai kosong.
2. Sintaks : lastkey()
3. Contoh :
4. Keterangan : Biasanya digunakan untuk mendeteksi apakah pemakai menekan tombol ESC
(misalnya) ketika pemasukan data atau di menu. File inkey.ch adalah file yang berisi definisi-
definisi tombol. Dengan disertakannya file inkey.ch ini, pembacaaan dan pembuatan program
menjadi lebih mudah. Sebagai contoh lihat tabel berikut : Dengan adanya file inkey.ch, kita
tidak perlu menghafal nilai-nilai suatu tombol. Untuk lebih jelasnya bisa buka file inkey.ch.
2. Sintaks : dbedit(baris1,kolom1,baris2,kolom2)
3. Contoh :
procedure lihat
use ipa2002
index on NO_PKAB to ipa2002
dbedit(0,0,24,78)
close index
close data
return
4. Keterangan : Baris1 dan kolom1 menunjukkan posisi kiri atas dan baris2 serta kolom2 me-
nunjukkan posisi kanan bawah. Untuk memindah-mindah penunjuk bisa digunakan tombol
panah, pg up, pg dn, home, dan sebagainya.
52 BAB 6. PROGRAM INPUT DATABASE
2. Sintaks : delete
3. Contoh :
seek mNO_PKAB
if found()
save screen to belum_hapus
@06,21 say KODE_SMA
@07,21 say KELAMIN
@08,21 say NO_INDUK
@09,21 say NAMA_SISWA
hapus = ’T’
@ 11,7 say "Mau dihapus [y/t] : " get hapus
read
if hapus=’Y’ .or. hapus=’y’ .and. lastkey()#K_ESC
delete
endif
restore screen from belum_hapus
else
@06,21 say ’Data tidak ada ... !’
wait ’’
@06,21 say ’ ’
endif
4. Keterangan : Perintah delete diawali dengan perintah seek untuk mengarahkan pointer ke
suatu record tertentu. Perintah ini berhubungan dengan perintah set delete on.
Contoh selengkapnya dari program untuk pemasukan, editing, penghapusan, dan browsing data
dapat dilihat seperti berikut.
6.3. PERINTAH YANG DIGUNAKAN 53
#include ’inkey.ch’
* menyertakan file definisi kode-kode tombol
* karena di dalam program ini ada K\_ESC
clear
* membersihkan layar
wall(0,0,24,79)
* membuat latar belakang seperti tembok bata merah
use ipa2002
* membuka file database ipa2002.dbf
mNO_PKAB = space(5)
* memberi harga awal ke variabel kunci index
do while .t.
* membuat looping pemasukan data
if lastkey()=K_ESC
exit
endif
* kalau menekan tombol ESC berarti sudah selesai
* dan keluar dari program pemasukan data
seek mNO_PKAB
* mencari no_pkab yang diinputkan
if found()
* jika ketemu maka isi variabel memori dengan fieldnya
* dengan demikian berfungsi untuk mengedit data yang sudah ada
mNAMA_SISWA = NAMA_SISWA
mNO_INDUK = NO_INDUK
mKODE_SMA = KODE_SMA
mKELAMIN = KELAMIN
else
* jika tidak ketemu berarti data baru
* maka variabel diisi dengan nilai-nilai kosong
mNAMA_SISWA = space(30)
mNO_INDUK = space(10)
mKODE_SMA = space(8)
mKELAMIN = space(1)
endif
if lastkey()#K_ESC
* jika tidak menekan tombol ESC artinya tidak
* melakukan pembatalan
seek mNO_PKAB
if .not. found()
append blank
* karena data baru maka ditambahkan record kosong
* ke dalam basis datanya
endif
replace NO_PKAB with mNO_PKAB
6.3. PERINTAH YANG DIGUNAKAN 55
endif
enddo
* akhir looping pemasukan data
close index
* menutup index
close data
* menutup file database
clear
* membersihkan layar kembali
return
* kembali ke sistem atau program sebelumnya
Kemudian program di-compile dan di-link sesuai dengan letak program Clipper. Jika belum
melakukan pengaturan environment variables akan ditemukan pesan kesalahan seperti berikut
Z:\home\dwijim\kuliah\clipper>ca-52\bin\clipper ent.prg
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling ENT.PRG
ENT.PRG(17) Fatal C3007 Can’t open #include file: ’inkey.ch’
Jika demikian maka berikan pengaturan seperti berikut :
Z:\home\dwijim\kuliah\clipper>set include=ca-52\include
Z:\home\dwijim\kuliah\clipper>set lib=ca-52\lib
Z:\home\dwijim\kuliah\clipper>ca-52\bin\clipper ent
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling ENT.PRG
Code size 656, Symbols 432, Constants 240
Sampai di sini program input sudah berhasil dikembangkan. Selanjutnya tinggal mencoba men-
jalankan program pemasukan data tersebut dan semoga bisa berjalan. Untuk menjalankan program
ini, cukup ketikkan perintah ent enter .
/* ---------------------------------------------------
file : hapus.prg
program untuk menghapus data
program ini memerlukan file ipa2002.dbf
#include ’inkey.ch’
* menyertakan file definisi kode-kode tombol
* karena di dalam program ini ada K\_ESC
clear
* membersihkan layar
wall(0,0,24,79)
* membuat latar belakang seperti tembok bata merah
use ipa2002
* membuka file database ipa2002.dbf
6.3. PERINTAH YANG DIGUNAKAN 57
mNO_PKAB = space(5)
* memberi harga awal ke variabel kunci index
set delete on
* supaya data yang sudah ditandai sebagai data yang dihapus
* tidak akan ikut diolah lagi
* karena data yang dihapus masih ada selama belum diberikan
* perintah pack (semacam empty recycle bin
do while .t.
* untuk looping penghapusan data
* penghapusan selesai jika pemakai menekan tombol ESC
if lastkey()=K_ESC
exit
* jika menekan tombol ESC berarti selesai dari proses
* penghapusan data dan kembali ke sistem atau program sebelumnya
endif
seek mNO_PKAB
* mencari berdasarkan field yang menjadi kunci index
* yaitu nomor PKAB
if found()
save screen to belum_hapus
* merekam tampilan layar ke suatu variabel
hapus = ’T’
* memberi nilai awal ke variabel yang di-GET
58 BAB 6. PROGRAM INPUT DATABASE
@ 11,7 say "Mau dihapus [y/t] : " get hapus pict ’@!’
read
* menanyakan untuk meyakinkan bahwa data akan dihapus
if hapus=’Y’
delete
pack
wait ’Data sudah dihapus’
* jika yakin maka data betul-betul dihapus
endif
restore screen from belum_hapus
* mengembalikan tampilan ke tampilan awal ketika layar
* masih belum terisi data-data apapun
else
wait ’’
* menunggu sampai suatu tombol ditekan
@06,21 say ’ ’
* menghapus pesan data tidak ada
endif
enddo
* akhir looping pemasukan data
close index
* menutup index
close data
* menutup file database
clear
* membersihkan layar kembali
return
* kembali ke sistem atau program sebelumnya
Hasil compile dan link :
Z:\home\dwijim\kuliah\clipper>ca-52\bin\clipper hapus.prg
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling HAPUS.PRG
Code size 631, Symbols 512, Constants 297
6.3. PERINTAH YANG DIGUNAKAN 59
Fasilitas tambahan yang biasanya diberikan adalah kemampuan untuk menampilkan data-
data yang sudah dimasukkan. Ini untuk meyakinkan bahwa data yang dimasukkan sudah disimpan
dengan benar. Untuk menampilkan data-data pada suatu basis data, sangat mudah dilakukan
dengan Clipper. Cukup dengan menggunakan satu fungsi dbedit() saja. Contoh program untuk
menampilkan data dapat dilihat seperti berikut :
/* ---------------------------------------------------
file : lihat.prg
program untuk menampilkan data pada suatu database
program ini memerlukan file ipa2002.dbf
clear
* membersihkan layar
wall(0,0,24,79)
* membuat latar belakang seperti tembok bata merah
use ipa2002
* membuka file database ipa2002.dbf
@ 4,6 to 21,76
* membuat kotak persis di luar area penampilan data
dbedit(5,7,20,75)
* menampilkan data pada area tertentu
return
* kembali ke sistem atau program sebelumnya
Hasil compile dan link
Z:\home\dwijim\kuliah\clipper>ca-52\bin\clipper lihat.prg
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling LIHAT.PRG
Code size 148, Symbols 176, Constants 44
#include ’inkey.ch’
* menyertakan file definisi kode-kode tombol
* karena di dalam program ini ada K\_ESC
tone(500,100)
*mengeluarkan suara
set wrap on
* membuat menu supaya bisa membalik dari
* atas ke bawah atau dari bawah ke atas
clear
* membersihkan layar
do while .t.
* membuat looping
wall (0,0,24,79)
* membuat latar belakang tembok
menu to pilihan
* hasil menu disimpan ke variabel bernama pilihan
if lastkey() = K\_ESC
exit
* jika menekan tombol ESC maka program keluar dan selesai
endif
do case
case pilihan =1
do ent
* menjalankan program pemasukan data
case pilihan = 2
do hapus
* menjalankan program penghapusan data
case pilihan = 3
do lihat
* menjalankan program menampilkan data
case pilihan = 4
tetris()
* menjalankan game tetris dan fast.lib
end case
enddo
* akhir looping menu
return
/* kembali ke sistem atau program sebelumnya */
Z:\home\dwijim\kuliah\clipper>ca-52\bin\clipper menux.prg
Clipper (R) Version 5.2
Copyright (c) 1985-1993, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.
307K available
Compiling MENUX.PRG
Compiling ENT.PRG
Compiling HAPUS.PRG
Compiling LIHAT.PRG
Code size 1793, Symbols 1168, Constants 911
7.1 Pendahuluan
Pada pembahasan sebelumnya, dalam proses pemasukan data tidak dilakukan proses validasi.
Proses validasi maksudnya adalah proses pengujian apakah data yang dimasukkan benar. Misalkan
pada saat pemasukan Jenis Kelamin, tidak dilakukan pengujian apakah pemakai memasukkan 1
atau 2, atau harus L atau P, dan sebagainya tergantung perancangan. Pemakai dapat mengisi den-
gan apapun tanpa ada peringatan dari sistem bahwa data yang dimasukkan salah. Juga misalkan
pada saat pemasukan kode SMA, pemakai masih dapat memasukkan kode SMA yang tidak ada
dalam data. Itulah yang dimaksud dengan belum adanya proses validasi di dalam sistem.
Semestinya sistem memberikan peringatan jika ada kesalahan dalam pemasukan data. Sebab
jika tidak dilakukan validasi, maka informasi yang didapat sebagai hasil pengolahan data menjadi
tidak akurat. Dengan demikian informasi tidak dapat digunakan dalam pengambilan keputusan.
Yang dimaksud dengan menguji apakah suatu data benar atau tidak adalah apakah data
sesuai dengan daerah asal dari data itu, bukan benar sesuai dengan realita. Misalnya jenis kelamin
boleh diisi dengan L untuk laki-laki dan P untuk perempuan. Maka jika suatu data diisi dengan L
ataukah dengan P akan dianggap benar. Apakah orang itu benar-benar L atau P, tentu saja tidak
bisa dideteksi dengan sistem ini.
65
66 BAB 7. VALIDASI INPUT DATA
Jika program kita jalankan, dan pada item Jenis Kelamin diisi dengan isian yang sembarang,
ternyata sistem tidak menolaknya. Apakah hal yang seperti ini akan dibiarkan terjadi ? Ingat bahwa
7.3. VALIDASI DENGAN KONDISI 67
’Garbage In Garbage Out. Dari gambar tersebut, terlihat bahwa Jenis Kelamin yang seharusnya
diisi dengan 1 untuk laki-laki dan 2 untuk perempuan, ternyata diisi dengan ’X’. Bukan hanya
dengan ’X’, diisi apa pun, sistem tidak akan menolaknya.
Karena pada pengisian jenis kelamin, hanya ditentukan bahwa jenis kelamin harus diisi dengan
laki-laki (1) atau perempuan (2), maka dapat dikatakan bahwa kondisi untuk syarat validasi sedikit
(hanya dua kondisi). Oleh karenya akan lebih mudah kalau validasi dilakukan dengan perintah valid
diikuti dengan kondisi.
3. Contoh :
4. Keterangan : perintah picture untuk membatasi tipe data yang bisa dimasukkan. Perin-
tah picture ’9’ artinya data yang bisa dimasukkan hanya data yang berjenis numeric dan
banyaknya satu digit. Sedangkan perintah valid mKELAMIN$’12’ artinya mKELAMIN
harus berupa karakter 1 atau 2. Arti sebenarnya adalah bahwa mKELAMIN harus meru-
pakan karakter yang terkandung dalam karakter atau string ’12’.
Setelah kita melakukan validasi, maka hasil dari sistem tampak seperti berikut. Dari gambar
terlihat bahwa jika attribute jenis kelamin diisi dengan data yang salah, sistem akan menolaknya.
Pada contoh, jenis kelamin diisi dengan ’9’, maka isian tidak dapat diteruskan ke isian berikutnya.
Kursor masih tetap pada isian jenis kelamin.
68 BAB 7. VALIDASI INPUT DATA
Hasil running program jika kode SMA yang dimasukkan salah, tampak seperti berikut : Sedangkan
jika kode SMA-nya benar, maka pemasukkan data dapat dilanjutkan ke proses berikutnya.
7.5. LATIHAN 69
7.5 Latihan
Buatlah program untuk memasukkan data-data peserta PKAB sesuai dengan atribut pada tabel
yang telah dibuat. Semestinya di sana terdapat pemasukan data program studi pilihan satu dan
pilihan dua. Lakukan validasi terhadap pilihan yang dimasukkan ke dalam sistem.
function cari_SMA
parameter kode_cari,baris,kolom
select b
if kode_cari=space(7)
@ 6,23 clear to 23,74
@ 6,23 to 23,74
dbedit(7,24,22,73)
if lastkey()=K_ENTER
kode_cari = KODE_SMA
endif
endif
seek kode_cari
if found()
@ baris,kolom say NAMA_SMA
hasil = .t.
else
@ baris,kolom say ’Kode salah ... ! ’
hasil = .f.
endif
return hasil
1. Tampilan layar yang mengganggu. Jika kita mencoba menampilkan layar tabel kode help,
semestinya setelah selesai, layar kembali ke tampilan sebelumnya. Contoh tampak seperti
berikut :
Kemudian jika kode SMA diisi dengan isian kosong, maka akan ditampilkan tabel kode SMA
seperti berikut :
Setelah selesai pemakai memilih kode SMA yang benar, maka posisi layar mestinya kem-
bali seperti semula Gambar 7.5, namun pada kenyataannya tampilan malah menjadi seperti
berikut :
2. Posisi tabel aktif data base semestinya juga kembali ke posisi tabel aktif sebelumnya. Kalau
dilihat contoh, maka diawal fungsi tabel aktif adalah IPA2002 dengan nama area select a
7.6. APA RESIKONYA ? 71
pada akhir fungsi juga harus kembali seperti semula. Pada contoh, memang area kembali ke
select a. Masalah akan timbul jika area terakhir bukan select a.
Adanya masalah-masalah tersebut maka posisi area dan tampilan layar harus disimpan dan pada
akhir fungsi dikembalikan lagi. Fungsi masih sama dengan sebelumnya, hanya pada awal dan akhir
dimodifikasi dengan memberikan perintah untuk menyimpan nilai area dan tampilan layar.
3. Contoh :
do while .t.
@ 07,10 prompt ’1. Pemasukan/Editing Data ’
@ 08,10 prompt ’2. Penghapusan Editing Data’
@ 09,10 prompt ’3. Browsing Data ’
@ 10,10 prompt ’4. Selesai ’
menu to pilihan
72 BAB 7. VALIDASI INPUT DATA
4. Keterangan : Tampilan menu akan direkam ke variabel lyr menu. Setelah masuk ke salah
satu menu yang dipilih, tampilan layar berubah. Ketika kembali ke menu, maka tampilan
dikembalikan ke bentuk semula.
3. Contoh :
function cari_SMA
parameter kode_cari,baris,kolom
save screen to layar_akhir
select_akhir = select()
select b
if kode_cari=space(7)
@ 6,23 clear to 23,74
@ 6,23 to 23,74
dbedit(7,24,22,73)
if lastkey()=K_ENTER
kode_cari = KODE_SMA
endif
endif
go top
restore screen from layar_akhir
seek kode_cari
if found()
@ baris,kolom say NAMA_SMA
hasil = .t.
else
@ baris,kolom say ’Kode salah ... ! ’
hasil = .f.
endif
select(select_akhir)
return hasil
4. Keterangan : Perintah ini sangat berhubungan dengan perintah . save screen to. Na-
ma variabel harus sesuai dengan nama variabel pada save screen to.
3. Contoh :
function cari_SMA
parameter kode_cari,baris,kolom
select_akhir=select()
select b
seek kode_cari
if found()
@ baris,kolom say NAMA_SMA
hasil = .t.
else
@ baris,kolom say ’Kode salah ... ! ’
hasil = .f.
endif
select(select_akhir)
74 BAB 7. VALIDASI INPUT DATA
return hasil
4. Keterangan : Perintah ini sangat berhubungan dengan perintah use. Lihat juga contoh fungsi
cari sma pada bagian sebelumnya.
select a
use IPA2002
index on NO_PKAB to ipa2002
mNO_PKAB = space(5)
do while .t.
@ 3,7 say ’Pemasukan/Editing Peserta PKAB’
@ 5,7 say ’No. PKAB : ’
@ 6,7 say ’Kode SMA : ’
@ 7,7 say ’Kelamin : [1:Laki-laki 2:Perempuan]’
@ 8,7 say ’No. Induk : ’
@ 9,7 say ’Nama Siswa : ’
@05,21 get mNO_PKAB
read
if lastkey()=K_ESC
exit
endif
seek mNO_PKAB
if found()
mNAMA_SISWA = NAMA_SISWA
mNO_INDUK = NO_INDUK
mKODE_SMA = KODE_SMA
mKELAMIN = KELAMIN
else
mNAMA_SISWA = space(30)
mNO_INDUK = space(10)
mKODE_SMA = space(8)
mKELAMIN = space(1)
endif
@06,21 get mKODE_SMA pict ’99999999’ valid cari_sma(@mKODE_SMA,06,31)
@07,21 get mKELAMIN pict ’9’ valid mKELAMIN$’12’
@08,21 get mNO_INDUK
@09,21 get mNAMA_SISWA
read
if lastkey()#K_ESC
seek mNO_PKAB
if .not. found()
append blank
endif
7.6. APA RESIKONYA ? 75
function cari_SMA
parameter kode_cari,baris,kolom
save screen to layar_akhir
select_akhir = select()
select b
if kode_cari=space(7)
@ 6,23 clear to 23,74
@ 6,23 to 23,74
dbedit(7,24,22,73)
if lastkey()=K_ENTER
kode_cari = KODE_SMA
endif
endif
go top
restore screen from layar_akhir
seek kode_cari
if found()
@ baris,kolom say NAMA_SMA
hasil = .t.
else
@ baris,kolom say ’Kode salah ... ! ’
hasil = .f.
endif
select(select_akhir)
return hasil
76 BAB 7. VALIDASI INPUT DATA
Bab 8
Pemrosesan Data
8.1 Pendahuluan
Apa yang telah dipelajari dalam bagian-bagian terdahulu, masih berhubungan dengan masalah
pemasukan data (entry). Pembahasan bagian-bagian tersebut dimulai dari persiapan wadah peny-
impanan berupa pembuatan tabel (file .dbf) sampai kepada masalah validasi pemasukan data. Pada
bahasan berikut, kita akan membicarakan masalah pemrosesan data.
Sebagaimana telah disampaikan pada awal buku ini, bahwa masalah yang dibahas dalam buku
ini berkaitan dengan simulasi masalah PKAB. Tentu saja apa yang dibahas tidak semuanya sama
persis dengan realita. Terutama dalam masalah pemrosesan data ini. Untuk penyederhanaan,
penghitungan skor hanya dilakukan dengan menghitung rata-rata mata pelajaran. Skor akhir
diperoleh dengan menjumlahkan skor beberapa mata pelajaran kemudian dihitung rata-ratanya.
Lantas dimana letak perbedaan dengan kasus sebenarnya ? Dapat dijelaskan di sini, bahwa nilai
mata pelajaran yang sama untuk sekolah yang berbeda tentu memiliki bobot yang berbeda pula.
Nah ... dalam simulasi ini, tidak dilakukan pembobotan antar sekolah. Hal ini perlu dipahami agar
kita dapat membedakan antara simulasi pada materi ini dengan proses yang sebenarnya.
77
78 BAB 8. PEMROSESAN DATA
mKELAMIN = KELAMIN
mINA_1 = INA_1
mINGG_1 = INGG_1
mMAT_1 = MAT_1
mFIS_1 = FIS_1
mKIM_1 = KIM_1
mBIO_1 = BIO_1
else
mNAMA_SISWA = space(30)
mNO_INDUK = space(10)
mKODE_SMA = space(8)
mKELAMIN = space(1)
mINA_1 = 0
mINGG_1 = 0
mMAT_1 = 0
mFIS_1 = 0
mKIM_1 = 0
mBIO_1 = 0
endif
@06,21 get mKODE_SMA pict ’99999999’ valid cari_sma(@mKODE_SMA,06,31)
@07,21 get mKELAMIN pict ’9’ valid mKELAMIN$’12’
@08,21 get mNO_INDUK
@09,21 get mNAMA_SISWA
@10,21 get mINA_1 pict ’999.9’
@11,21 get mINGG_1 pict ’999.9’
@12,21 get mMAT_1 pict ’999.9’
@13,21 get mFIS_1 pict ’999.9’
@14,21 get mKIM_1 pict ’999.9’
@15,21 get mBIO_1 pict ’999.9’
read
if lastkey()#K_ESC
seek mNO_PKAB
if .not. found()
append blank
endif
80 BAB 8. PEMROSESAN DATA
function cari_SMA
parameter kode_cari,baris,kolom
save screen to layar_akhir
select_akhir = select()
select b
if kode_cari=space(7)
@ 6,23 clear to 23,74
@ 6,23 to 23,74
dbedit(7,24,22,73)
if lastkey()=K_ENTER
kode_cari = KODE_SMA
endif
endif
go top
restore screen from layar_akhir
seek kode_cari
if found()
@ baris,kolom say NAMA_SMA
hasil = .t.
else
@ baris,kolom say ’Kode salah ... ! ’
hasil = .f.
endif
select(select_akhir)
return hasil
Selanjutnya kita tinggal merangking peserta berdasarkan pilihan masing- masing dan skornya.
82 BAB 8. PEMROSESAN DATA
Bab 9
Pencetakan Informasi
9.1 Pendahuluan
Pencetakan informasi menjadi bagian yang sangat penting. Mengapa ? Bagaimana pun rumit
dan canggihnya suatu sistem informasi, tetapi manakala sistem itu sendiri tidak dapat memberikan
informasi (tentu saja dalam bentuk cetakan), apalah artinya. Seringkali informasi dalam bentuk
cetakan menjadi dokumen yang sangat lebih komunikatif bagi pemakai dan itulah yang menjadi
bahan pengambilan keputusan.
Sebagaimana umumnya proses pencetakan, pencetakan bisa dilakukan ke printer atau ke layar.
Pencetakan ke layar berfungsi semacam preview sebelum dicetak langsung ke printer.
3. Contoh :
4. Keterangan : Sedangkan untuk membatalkan pencetakan ke file, cukup dengan perintah set
printer to tanpa tambahan apa-apa. Pencetakan ke file diperlukan manakala kita akan
mencetak ke layar. Sebab pencetakan ke layar, pada hakekatnya adalah pencetakan ke suatu
file teks dan kemudian file teks tersebut di- import ke suatu tabel file data base. Dari file data
base kemudian ditampilkan ke layar dengan perintah dbedit().
83
84 BAB 9. PENCETAKAN INFORMASI
3. Contoh :
4. Keterangan : Rangkaian perintah di atas akan mengarahkan pencetakan ke file teks bernama
hasil.txt. dbedit().
3. Contoh :
4. Keterangan : Rangkaian perintah di atas akan mengarahkan pencetakan ke file teks bernama
hasil.txt.
1. Fungsi : Fungsi append from ... sdf digunakan untuk memasukkan isi satu file teks ke tabel
aktif (yang sedang di-use). File teks yang akan dimasukkan diasumsikan sudah ada sebagai
hasil pencetakan ke file. Data yang dimasukkan sesuai nama atribut field masing-masing.
3. Contoh :
2. Sintaks : dbedit(baris1,kolom1,baris2,kolom2)
3. Contoh :
do case
case alat=1
set device to screen
set printer off
set printer to
use layar
zap
append from hasil.txt sdf
dbgotop()
dbedit(0,0,24,79)
case alat=2
9.3. PENTING DIPERHATIKAN ! 85
4. Keterangan : Baris1 dan kolom1 menunjukkan posisi kiri atas dan baris2 serta kolom2 me-
nunjukkan posisi kanan bawah. Untuk memindah-mindah penunjuk bisa digunakan tombol
panah, pg up, pg dn, home, dan sebagainya.
1. Fungsi : Fungsi zap digunakan untuk menghapus seluruh data. Data akan terhapus tapi
struktur data masih ada.
2. Sintaks : zap
3. Contoh : zap
4. Tampilan : -
endcase
do case
case alat=1
set device to screen
set printer off
set printer to
use layar
zap
append from hasil.txt sdf
dbgotop()
dbedit(0,0,24,79)
case alat=2
set device to screen
set printer off
endcase
enddo
return
Jika program ini dijalankan, kita dapat memilih cetak ke layar atau printer. Seandainya ter-
dapat printer dan kita memilih cetak ke printer, maka hasil pencetakan akan langsung ke printer.
Untuk dapat menjalankan program ini, maka kita harus memiliki file data IPA2002.DBF seba-
gaimana telah dibuat diawal dan file data LAYAR.DBF. File data LAYAR.DBF memiliki struktur
seperti berikut :
Integrasi Program
10.1 Pendahuluan
Meskipun kita sudah membahas pembuatan menu, namun dapat dikatakan bahwa program
yang dibuat masih terpisah-pisah. Pada aplikasi yang dipakai oleh pelanggan, sebaiknya aplikasi su-
dah terintegrasi. Oleh karena itu, pada bagian ini kita akan membahas bagaimana menggabungkan
program-program yang sudah dibuat.
Jika Anda mengikuti secara runut dan mengerjakan setiap latihan dengan baik, Anda akan
memiliki file data dan program seperti berikut :
Directory of C:\dwi\clipper
89
90 BAB 10. INTEGRASI PROGRAM
Clipper Advanced
93
Bab 11
clear
wall(0,0,24,79)
use ipa2002
dbedit(5,7,20,75)
return
Jika file ipa2002.dbf tidak ada, maka program akan timbul error. Error yang muncul tampak
seperti berikut :
95
96 BAB 11. OPTIMASI DAN IMPROVISASI
11.3 Perintah-Perintah
Perintah baru yang digunakan untuk improvisasi program adalah :
2. Sintaks : file(’nama-file.ext’)
3. Contoh : file(’ipa2002.dbf’)
4. Keterangan : Fung file(’ipa2002.dbf’) akan menghasilkan nilai .t. jika file ipa2002.dbf ada
dan sebaliknya.
#include ’inkey.ch’
do while .t.
wall(0,0,24,79)
use ipa2002
@ 09,10 clear to 17,65
@ 10,11 prompt ’ A. Cetak Daftar Peserta Urut Nama ’
@ 11,11 prompt ’ B. Cetak Daftar Peserta Urut Skor ’
@ 12,11 prompt ’ X. Selesai ... ’
menu to cetak
...
...
...
do case
case cetak=1
index on NAMA_SISWA to nama
count to jumlah_data
...
...
...
case cetak=2
index on PILIHAN_1+str(1000-SKOR) to skor
...
...
...
endcase
...
...
...
enddo
return
11.4. OPTIMASI INDEKS 97
Untuk membuat satu file bisa berisi beberapa kunci indeks, diperlukan pustaka (library) tambahan
SIXCDX. Pustaka ini bukan pustaka standar, sehingga belum ada pada program Clipper.
#include "sixcdx.ch"
#include "machsix.ch"
#include "inkey.ch"
dbgotop()
dbedit(1,1,23,77)
enddo
return
prosedur tersendiri. Fungsi penting yang harus diperhatikan ada tiga, yaitu :
1. nget init(jumlah get), perintah ini digunakan untuk menentukan jumlah pemasukan data
yang ada (nget()).
#include "box.ch"
#include "inkey.ch"
#include "setcurs.ch"
Tblcol[7] = ’GR’
Tblcol[8] = ’W’
For Chus = 9 To 16
Tblcol[Chus] = Tblcol[Chus-8]+’+’
Next
READEXIT(.T.)
* bagian sebelum ini tidak boleh dihapus
mssn = space(11)
mnama = space(21)
malamat = space(41)
nget_init(3)
nget(10,19,"mssn","")
nget(11,19,"mNAMA","")
nget(12,19,"malamat","")
nread(.f.)
FUNCTION NREAD
PARAMETER PermitUP, StartGet
* Belum Pake Awal Get
CLEAR GETS
NUM_NREADS = NUM_NREADS + 1
STR_READ = LTRIM(STR(READ_NUM))
NUM_GETS = LEN(ROWS&STR_READ)
MORE_GETS = .T.
NRD_KEY = 0
NRD_Keyhome = 0
SKURSOR(.T.)
DO WHILE MORE_GETS
CUR_NAME = VARS&STR_READ[CUR_GET]
NRD_OK = .F.
NRD_X = ROWS&STR_READ[CUR_GET]
NRD_Y = COLS&STR_READ[CUR_GET]
NRD_LONG = LEN ( IIF( LEN(PICS&STR_READ[CUR_GET]) = 0, ;
TRANS(&CUR_NAME, ""), TRANS(&CUR_NAME, PICS&STR_READ[CUR_GET]) ) )
DO WHILE (! NRD_OK)
@NRD_X, NRD_Y GET &CUR_NAME PICTURE PICS&STR_READ[CUR_GET]
READ
NRD_KEY = Lastkey()
NRD_OK = .T.
CUR_VALID = VALIDS&STR_READ[CUR_GET]
IF ! Empty(CUR_VALID)
IF (NRD_KEY = K_UP .AND. CUR_GET != 1) .OR. NRD_KEY=K_ESC
NRD_OK = .T.
Exit
Elseif (NRD_KEY = K_UP) .AND. (CUR_GET = 1)
NRD_OK = .F.
Else
NRD_Kers = SKURSOR()
SKURSOR(.F.)
@NRD_X, NRD_Y Say ’’
If Valtype(CUR_VALID)==’B’
NRD_OK = Eval(CUR_VALID)
Else
NRD_OK = (&CUR_VALID)
11.5. MODIFIKASI BENTUK GET 101
Endif
SKURSOR(NRD_Kers)
IF TYPE(’NRD_OK’)=’C’
If NRD_OK=’OUT’
MORE_GETS = .F.
Exit
Endif
Elseif TYPE(’NRD_OK’) != ’L’
NRD_OK = .T.
Else
If NRD_OK
Exit
Endif
Endif
Endif
Endif
Enddo
DO CASE
CASE NRD_KEY = K_DOWN .OR. NRD_KEY = K_ENTER
IF CUR_GET != NUM_GETS
CUR_GET = CUR_GET + 1
ELSE
MORE_GETS = .F.
ENDIF
CASE NRD_KEY = K_UP
IF CUR_GET != 1
CUR_GET = CUR_GET - 1
ENDIF
CASE NRD_KEY = K\_ESC .OR. NRD_KEY = K_PGUP .OR. NRD_KEY = K_PGDN
MORE_GETS = .F.
OTHERWISE
IF CUR_GET != NUM_GETS
CUR_GET = CUR_GET + 1
ELSE
MORE_GETS = .F.
ENDIF
ENDCASE
ENDDO
SKURSOR(.F.)
READ_NUM = READ_NUM - 1
RETURN NRD_Keyhome
FUNCTION NGET_INIT
PARAM MAX_GETS
PRIVATE STR_READ
READ_NUM = READ_NUM + 1
STR_READ = LTRIM(STR(READ_NUM))
GET_NUM = 0
PUBLIC ROWS&STR_READ[MAX_GETS],COLS&STR_READ[MAX_GETS]
PUBLIC VARS&STR_READ[MAX_GETS]
PUBLIC PICS&STR_READ[MAX_GETS],VALIDS&STR_READ[MAX_GETS]
RETURN.T.
FUNCTION NGET
PARAM ROW_NUM, COL_NUM, VAR_NAME, PIC_STR, VALID_STR
PRIVATE STR_READ
GET_NUM = GET_NUM + 1
STR_READ = LTRIM(STR(READ_NUM))
ROWS&STR_READ[GET_NUM] = ROW_NUM
COLS&STR_READ[GET_NUM] = COL_NUM
VARS&STR_READ[GET_NUM] = VAR_NAME
PICS&STR_READ[GET_NUM] = PIC_STR
VALIDS&STR_READ[GET_NUM] = VALID_STR
RETURN.T.
Procedure Transcol
Parameter Strcolx, Ret1, Ret2
Private Cari, Dum,dumx
Dum = Alltrim(Strcolx)
Cari = AT(’,’, Dum)
If Cari = 0
Dumx = setcolor()
Ret1 = Subdata(Dumx, 1, Len(Dumx))
Ret1 = If(Empty(Ret1), "W/N", Ret1)
Ret2 = "W/N"
Else
Ret1 = Subdata(Dum, 1, Cari-1)
Ret2 = Subdata(Dum, Cari+1, Len(Dum))
Endif
Return
Function Subdata
Parameter Sumber, Dari, akhir
if VALTYPE(sumber)=’N’
hom=’’
else
hom=Substr(Sumber, Dari, akhir-Dari+1)
endif
11.5. MODIFIKASI BENTUK GET 103
Return hom
FUNCTION DRAWGET
PARAMETER NUM_GETS, ROWS, COLS, VARS, PICS
PRIVATE D_I, CUR_NAME
FOR D_I = 1 TO NUM_GETS
CUR_NAME=VARS[D_I]
@ROWS[D_I], COLS[D_I] SAY &CUR_NAME PICTURE PICS[D_I]
NEXT
CLEA GETS
RETURN .T.
Function Forecol
Parameter Strcol
Private Cari, Dum, Hom := ’W’
Dum = Alltrim(Strcol)
Cari = AT(’/’, Dum)
If Cari <> 0
Hom = Subdata(Dum, 1, Cari-1)
Endif
Cari = AT(’,’, Hom)
If Cari != 0
Hom = Subdata(Hom, 1, Cari-1)
Endif
Return Hom
FUNCTION SKURSOR
PARAMETER SETIN
IF PCOUNT()=1
IF SETIN
SET CURSOR ON
If St_Ins
Setcursor(SC_NORMAL)
Else
Setcursor(SC_SPECIAL1)
Endif
ELSE
SET CURSOR OFF
ENDIF
ST_KURSOR = SETIN
ENDIF
RETURN ST_KURSOR
FUNCTION Kotakx
Parameter X, Y, X1, Y1, Pesen
Return EXBOX(X, Y, X1, Y1, 4, 5,,.T., Pesen)
Penutup Buku
105
Bab 12
Penutup
Apa-apa yang disampaikan dalam buku ini masih sangat sederhana alias apa adanya. Seba-
gai contoh, dalam suatu proses tidak dilakukan optimalisasi algoritma. Hal-hal tersebut mudah-
mudahan akan dibahas pada kesempatan lain (Insyaa Allah) jika ada. Mengapa ? Buku ini memang
ditujukan untuk pembaca yang baru belajar pemrograman Clipper.
Kalau para pembaca yang budiman pernah memiliki pengalaman buruk mencoba contoh-contoh
program tetapi ternyata program tersebut tidak dapat dieksekusi, maka mudah-mudahan semua
contoh yang ada pada buku ini dapat dicoba dengan baik dan memberi pelajaran kepada kita
semua. Contoh-contoh yang ada sudah dikompilasi dan dieksekusi dan kemudian tidak ada yang
disembunyikan.
Dengan penggunaan perangkat lunak LATEXdalam penulisan buku ini, maka semoga ini men-
jadi inspirasi pemakaian perangkat lunak yang legal. Selain memang features yang tersedia dan
perangkat LATEXyang powerfull. Kapan bangsa ini akan terlepas dari predikat ’pembajak perangkat
lunak’ dan koruptor ?
Kami mengucapkan terima kasih jika Anda berkenan memberi masukan-masukan dalam penulisan
buku ini. Semoga bermanfaat . . . meskipun nampaknya buku ini hanyalah sebutir pasir di padang
pasir nan luas.
Bagi pembaca yang ingin mencari sumber referensi tambahan, dapat melihat-lihat situs berikut
:
1. Panduan lengkap tentang perintah-perintah yang ada di dalam sistem Clipper. Informasi ini
dapat diakses di Advantage CA Clipper Guide v5.5, The Guide To Clipper 5.2 :
http://www.clipx.net/norton.php.
2. Petunjuk penggunaan Dbase III sebagai pedoman dalam penggunaan perintah-perntah dot
prompt. Informasi ini bisa diakses di Dbase III User Guide :
http://www.csuhayward.edu/ics/walab/u guides/db3guide.htm.
Mudah-mudahan situs-situs tersebut masih aktif dan bisa diakses sampai sekarang.
107
Indeks
.dbf, 7 ascending, 14
.or., 87 ASCII, 6
#include, 87, 89 atribut, 7
LATEX, iii, 107
append from, 14 bahasa pemrograman, 5
browse, 16 basis data, 5, 7, 8
delete, 16 blinker, 6
go, 13
cetak, 87
index, 15
CETAK.PRG, 89
list, 13
clear, 87, 89
zap, 13
clear to, 87, 89
executable file, 26
Clipper, iii, 5, 6, 8, 107
Editor, 6
copy, 6
Insyaa Allah, 107
Structured English, 86 database, 45
append blank, 11 dBase, 6
append, 10 dbedit, 51, 86, 87
browse, 11 dbedit(), 59
compiler, 6 dbgotop(), 86, 87
create, 7, 8 dbskip(), 87
dot command, 8 delete, 51
download, iii desimal, 8
edit, 11 detikINET, 5
features, 107 do, 89
field, 7 do case, 86, 87, 89
multi user, 7 do while .t., 87, 89
porting, 5 DOS Command, 7
printer, 5, 88 DOS Prompt, 7
programmer, 5 Dos Prompt, 7
record, 11 dwi sakethi, iii
referential integrity, 5
single user, 7 edit.com, 6
tools, 6 else, 50
use, 8 ENT FUL.PRG, 89
error, 6, 7
AK-47, iii, 5 exe, 6
alat, 86 exit, 87, 89
Alfons Tanudjaya, 5
algoritma, 107 field, 8
Allah, iii Field Name, 7
Allah swt., iii file data, 7
analisa, 6 file obyek, 6
aplikasi, 86, 89 find, 6
append, 59 Find-File, 7
append blank, 52 Finkel, 25
append from, 86, 87 found, 49, 59
108
INDEKS 109
FoxBase, 7 mfoxplus, 7
Foxbase, 7, 8 Microsoft Word, 6
Foxplus, 6 mouse, 7
mySQL, 6
get, 36, 59
GNU Linux, 5 nomor baris, 7
Notepad, 6
hapus data, 59 Novell Netware, 5
HAPUS.PRG, 89 nyamuk, iii
if, 50 obj, 6
include, 6, 50 operator, 5
index, 87 Oracle, 5
inkey.ch, 50
input, 45 Pascal, 5
integrasi, 89 PC AT, 5
interaktif, 8 PC AT 286, 5
internet, 5 pelanggan, 89
IPA2002.DBF, 88, 89 pencari tulisan, 7
pencetakan, 85
jaringan, 5 perancangan, 6
perangkat bantu, 6
K ESC, 87, 89
perangkat lunak, 5
kebutuhan pemakai, 5
picture, 36
keluar, 8
PKAB, 6
kesalahan, 6
PostGre SQL, 6
keyboard, 36
printer, 5
kompilasi, 6
programming, 25
kualitas, 5
prompt, 59, 85, 87, 89
lastkey, 50 PROSES.PRG, 89
lastkey(), 87, 89 prow(), 87
layar, 8, 88 PS.DBF, 89
LAYAR.DBF, 88, 89
QEdit, 6
legal, 107
lib, 6 Rasulullah saw., iii
library, 6 read, 59
lidi, iii record, 52
LIHAT.PRG, 89 replace, 6
link, 6 restore screen from, 48
linking, 6 rtlink, 6
Linux, iii
LOGO.PRG, 89 save screen to, 48
say, 59, 87, 89
Made Wiryana, iii sdf, 86, 87
manajemen basis data, 7 seek, 49, 59
memory, 45 set device, 86, 87
memperbaiki, 11 set printer, 86, 87
menambah data, 10 set wrap on, 87, 89
menampilkan data, 11 sholawat, iii
menghapus data, 11 SLTA.DBF, 89
menu, 43, 87, 89
menu to, 85, 87, 89 tabel, 7
merekam, 7 tetris(), 89
merubah data, 11 TexMaker, 6
message, 62 tipe, 8
110 INDEKS
tone, 89
ts.exe, 7
Type, 7
Ubuntu, 6
ukuran, 8
use, 86, 87
valid, 36, 65
validasi, 65
wall, 89
Width, 7
Word Perfect, 6
Word Star, 6
xbase, 5
zap, 86, 87
Buku Panduan
Pemrograman Clipper
Oleh :
http://dwijim.staff.unila.ac.id
Jurusan Matematika
Universitas Lampung