Rabu, 21 Desember 2011

Mengakses File Random di Basic


Keuntungan mengakses data melalui akses random adalah kita bisa langsung menuju ke record yang akan kita akses tanpa harus melalui record-record sebelumnya sebagaimana harus dilakukan untuk akses secara sequential. Namun demikian, organisasi file random dapat juga diakses secara sequential (berurut dari record pertama ke record-record sesudahnya). Bila diilustrasikan, kita juga dapat mendengar lagu yang direkam di CD secara berurut dari awal hingga akhir.
Kesulitannya, jika kita akan mengakses secara langsung (direct) ke record tertentu, maka kita harus tahu nomor recordya (ilustrasi : bila kita akan mendengarkan lagu tertentu di CD, maka kita harus tahu judulnya, lalu kita lihat daftar isinya, baru kita pilih lagu itu).
Pada contoh program memasukkan data random di atas, di sana digunakan nilai i dari perintah FOR-NEXT sebagai nomor recordnya. Mungkin kita bisa hafal siapa-siapa saja yang menempati nomor record 1 sampai 10 tersebut, tapi, jika jumlah datanya sudah ratusan atau ribuan, bisakah kita menghafalnya ?.
Inilah pentingnya manipulasi terhadap nilai m ketika kita akan melakukan proses perekaman data PUT #n, m. Berdasarkan teori, m tersebut akan diaplikasikan sebagai key field (kunci field).
Misalkan kunci field seorang mahasiswa ada pada nomor pokok mahasiswa (NPM)nya,  maka kita harus memanipulasi angka-angka dari NPM tersebut agar kita bisa tahu bahwa NPM tertentu ada di nomor record sekian. Bagaimana jika nomor NPM dijadikan m saja ?. Bisa saja, tapi terjadi pemborosan karena nomor record (address) 1 hingga sekian juta menjadi kosong (misalkan NPM terkecil adalah 10000001, maka nomor record 1 hingga 10000000 akan kosong). Pembahasan hal ini selengkapnya ada di buku-buku yang bertemakan “file and access.”
 Menampilkan Data
Berikut contoh program untuk menampilkan data yang telah kita masukkan tadi (program 1), dan untuk menampilkan record nomor 5 saja (program 2).
Contoh Menampilkan Data yang Sudah Dimasukkan (1)
CLS                                                                      
TYPE  Temanku
         nama AS STRING * 25
         nama AS STRING * 40
         notelp AS STRING * 7
END TYPE                                                                  
DIM ambil AS Temanku                                                  
OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(ambil)                         
FOR i = 1 TO 10                                                     
  GET #1, i, ambil
        PRINT "Nama   :", ambil.nama                                                
        PRINT "Alamat :", ambil.alamat
        PRINT "No.Telp:", ambil.notelp                                              
     NEXT                                                                    
CLOSE #1                       
Contoh  Menampilkan Data yang Sudah Dimasukkan (2)
CLS                                                                       
TYPE  Temanku
         nama AS STRING * 25
         alamat AS STRING * 40
         notelp AS STRING * 7
END TYPE                                                                 
DIM ambil AS Temanku                                                  
OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(ambil)                         
INPUT “Nomor Record yang Akan Ditampilkan : “; nr                                                     
  GET #1, nr, ambil
        PRINT "Nama   :", ambil.nama                                                
        PRINT "Alamat :", ambil.alamat                                               
        PRINT "No.Telp:", ambil.notelp                                              
CLOSE #1                       
Catatan :
1.               Nama variabel boleh sama, dan boleh berbeda ketika menulis data dan membaca data, tetapi jenis dan panjang nilai datanya harus sama.
2.               GET #n,m, adalah perintah untuk mengambil (menyalin) data dari file (nomor record  m) dan menyimpannya di buffer memori utama komputer.