Berkas Data Masup Acak (Random Access File) |
Pada berkas data (file) masup acak, akses terhadap record data dapat dilakukan secara acak (random), tanpa harus membaca record satu per satu mulai dari posisi awal record. Keuntungannya adalah kecepatan proses lebih tinggi dibandingkan berkas data masup urut.
Berikut adalah prosedur penyimpanan data ke dalam berkas data masup acak :
- Buka file
- Siapkan buffer data
- Untuk data numeric harus dikonversi ke alfabetik/string
- Simpan data ke dalam buffer
- Lakukan penulisan ke dalam file
Membuka File
Perintah yang diperlukan adalah : OPEN
Bentuk Umum :
|
atau
|
Dimana:
nomfile : bilangan bulat antara 1 sampai 255. Digunakan untuk menyatakan nomor file yang akan dibuka
namafile : ekspresi string untuk menunjukkan nama file
reclen : bilangan bulat antara 1 sampai 32.676. Digunakan untuk menyatakan jumlah byte setiap record. Parameter ini bersifat pilihan, jika tidak dipakai, maka jumlah byte per record dianggap 512 byte.
akses : Parameter yang menyatakan bentuk operasinya, berupa :
READ : menyebabkan file untuk pembacaan saja.
WRITE : menyebabkan file untuk penulisan saja.
READWRITE : menyebabkan file untuk pembacaan dan penulisan.
Parameter ini bersifat pilihan. Jika tidak ditulis, maka diasumsikan file random digunakan untuk membaca dan menulis.
Contoh-contoh :
OPEN “R”, #1, “B:DataNama”
OPEN “R”, #2, “DataMhs”, 250
OPEN “DataMhs” FOR RANDOM AS #2 LEN 250
OPEN “B:DataMhs” FOR RANDOM ACCESS READ AS #2 LEN 50
Penyediaan Buffer Data
Dalam file random, perlu disiapkan suatu area penampungan sementara untuk data yang akan diakses dari file tersebut, yang disebut dengan “RANDOM BUFFER”. Untuk membentuknya digunakan statement FIELD.
Bentuk Umum :
|
Dimana:
nomfile : bilangan sesuai dengan nomor file yang dibuka dengan statement OPEN
lebarfield,
lebarfield1 : bilangan yang menyatakan panjang variabel (data) yang akan disimpan
varstring,
varstring1 : nama variabel string yang akan digunakan untuk data yang akan diakses.
Berikut ini penjelasan mengenai lebar field yang dibutuhkan untuk setiap tipe data.
Tabel 1 – Ketentuan Lebar Field
Tipe data | Lebar Field |
Alpanumerik | 1 byte untuk 1 karakter |
Numerik Integer | 2 byte |
Numerik Single Precission | 4 byte |
Long Integer | 4 byte |
Numerik Double Precission | 8 byte |
Catatan:
Data yang disimpan ke dalam file harus dalam bentuk string.
Contoh :
Data Mahasiswa akan disimpan ke dalam file random, dengan item-item sebagai berikut :
Item | Tipe | Jumlah karakter |
NPM | Alpanumerik | 8 karakter |
NAMA | Alpanumerik | 20 karakter |
ALAMAT | Alpanumerik | 25 karakter |
NILAI | Numerik | 1 digit |
Total jumlah byte yang diperlukan berdasarkan tabel 1 di atas adalah 55 byte meliputi, 8 byte untuk NPM, 20 byte untuk NAMA, 25 byte untuk ALAMAT dan 2 byte untuk NILAI.
Penyediaan buffer yang diperlukan adalah :
OPEN “R”, #1, “DataMHS”, 55
FIELD #1, 8 AS NPM$, 20 AS NAMA$, 25 AS ALAMAT$, 2 AS NILAI
Konversi Data
Berikut ini adalah tabel fungsi konversi data.
Konversi Numerik ke Karakter
Nama | Fungsi | Bentuk Umum |
MKI$ | Konversi numerik integer | MKI$(ekspresi integer) |
MKL$ | Konversi numerik Long integer | MKL$(ekspresi long integer) |
MKS$ | Konversi numerik single precission | MKS$(ekspresi single prec.) |
MKD$ | Konversi numerik Double precission | MKL$(ekspresi double prec.) |
Konversi Karakter ke Numerik
Nama | Fungsi | Bentuk Umum |
CVI | Konversi karakter 2 byte ke integer | CVI(2-byte string) |
CVL | Konversi karakter 4 byte ke long integer | CVL(4-byte string) |
CVS | Konversi karakter 4 byte ke single precission. | CVS(4-byte string) |
CVD | Konversi karakter 8 byte ke double precission. | CVD(8-byte string) |
Penyimpanan Data ke Buffer
Ada dua bentuk perintah untuk meletakkan data ke dalam buffer :
LSET : meletakkan data ke dalam buffer dengan posisi merapat ke kiri
RSET : meletakkan data ke dalam buffer dengan posisi merapat ke kanan
Bentuk Umum :
| ||
|
dimana,
varstring : nama variabel yang telah didefinisikan dengan FIELD
ekspstring : variabel string atau ekspresi string yang akan ditempatkan dalam buffer
Contoh :
OPEN “R”, #1, “DataMHS”, 55
FIELD #1, 8 AS NPM$, 10 AS Nama$
LSET Nama$ = “Andi”
RSET NPM$ = “5523”
Hasil dalam buffer:
A | N | D | I | | | | | | |
| | | | 5 | 5 | 2 | 3 |
Penulisan Data ke Dalam File
Untuk menuliskan data ke dalam file digunakan statement PUT.
Bentuk Umum :
|
dimana,
nomFile : nomor file yang akan digunakan untuk menyimpan data
nomRec : bilangan bulat antara 1 sampai 2.147.483.647 yang menyatakan nomor record tempat data disimpan
Contoh :
Menyimpan data pada posisi record ke-2
PUT #1, 2
Contoh Aplikasi 1
Pembuatan file random untuk menyimpan data mengenai nama, alamat, dan nomor telepon. Nama filed yang akan dibuata adalah TELEPON.DTA. Isi record file adalah :
Item Jenis Jumlah karakter
Nama Alpanumerik 20 karakter
Alamat Alpanumerik 30 karakter
Telepon Numerik 7 digit
‘====================================================
‘Program : RANDOM1.BAS
‘Keterangan : Contoh penulisan data ke file random
‘====================================================
‘
OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57
FIELD #1, 20 AS Nama$, 30 AS Alamat$, 7 AS Telepon$
Nm$ = “ “
NoRec = 1
WHILE Nm$ <> ““
CLS
LOCATE 5, 10: PRINT “Nama : “
LOCATE 6, 10: PRINT “Alamat : “
LOCATE 7, 10: PRINT “Telepon : “
LOCATE 5, 19: LINE INPUT Nm$
IF Nms = “” THEN END
LOCATE 6, 19: LINE INPUT Alm$
LOCATE 7, 19: LINE INPUT Tlp$
LSET Nama$ = Nm$
LSET Alamat$ = Alm$
LSET Telepon$ = Tlp$
PUT #1, NoRec
NoRec = NoRec + 1
WEND
CLOSE
END
Penggunaan Statement TYPE .. END TYPE
Statement TYPE .. END TYPE digunakan untuk mendefinisikan suatu variabel record. Dengan menggunakan variabel record, data dapat disimpan ke dalam file random tanpa memerlukan proses konversi data.
Untuk membentuk variabel record dari contoh aplikasi di atas, maka pendefinisian yang harus dilakukan adalah :
TYPE JenisData
Nama AS STRING * 20
Alamat AS STRING * 30
Telepon AS LONG
END TYPE
Pernyataan yang tertulis di dalam blok statement TYPE .. END TYPE merupakan definisi untuk tiap-tiap variabel dan hanya menentukan jenis dan ukuran variabel. Untuk membentuk variabel record yang akan digunakan untuk menampung data digunakan statement DIM.
DIM ContohRec AS JenisData
Dengan menggunakan statement TYPE .. END TYPE, maka bentuk umum statement PUT adalah :
|
Dimana,
varRecord : variabel record yang telah didefinisikan dengan statement DIM
Contoh Aplikasi 2
Pembuatan program yang identik dengan Contoh Aplikasi 1 dengan menggunakan statement TYPE .. END TYPE
‘====================================================
‘Program : RANDOM2.BAS
‘Keterangan : Contoh penulisan data ke file random
‘====================================================
‘
OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57
TYPE Data1
Nama AS STRING * 20
Alamat AS STRING * 30
Telepon AS LONG
END TYPE
DIM DataNama AS Data1
Nm$ = “ “
NoRec = 1
WHILE Nm$ <> ““
CLS
LOCATE 5, 10: PRINT “Nama : “
LOCATE 6, 10: PRINT “Alamat : “
LOCATE 7, 10: PRINT “Telepon : “
LOCATE 5, 19: LINE INPUT Nm$
IF Nms = “” THEN END
DataMhs.Nama = Nm$
LOCATE 6, 19: LINE INPUT DataMhs.Alamat
LOCATE 7, 19: LINE INPUT DataMhs.Telepon
PUT #1, NoRec, DataMhs
NoRec = NoRec + 1
WEND
CLOSE
END
Pembacaan Data
Untuk membaca data yang tersimpan di dalam file random, maka gunakan statement GET.
|
atau jika record didefinisikan dengan statement TYPE .. END TYPE
|
Contoh-1 :
Mengambil data pada posisi record ke-3
OPEN “Kartu” FOR RANDOM AS #1 LEN = 22
FIELD #1, 20 AS Nama$, 2 AS Usia
GET #1, 3
END
Contoh-2 :
TYPE JenisData
Nama AS STRING * 20
Usia AS INTEGER
END TYPE
DIM RecData AS JenisData
OPEN “Kartu” FOR RANDOM AS #1 LEN = 22
GET #1, 3, RecData
END
Contoh Aplikasi 3
Membuat program untuk mencetak record-record yang tersimpan dalam file TELEPON.DTA
‘======================================================
‘Program : RANDOM3.BAS
‘Keterangan : Contoh pembacaan data dari file random
‘======================================================
‘
OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57
FIELD #1, 20 AS Nama$, 30 AS Alamat$, 7 AS Telepon$
noRec = 1
CLS
PRINT “NAMA ALAMAT TELEPON”
PRINT “----------------------------------------”
WHILE NOT EOF(1)
GET #1, noRec
Telp& = CVL(Telepon$)
PRINT Nama$, Alamat$, Telp&
noRec = noRec + 1
WEND
CLOSE
END
Contoh Aplikasi 4
Membuat program untuk mencetak record-record yang tersimpan dalam file TELEPON.DTA. Pembacaan record menggunakan variabel record yang didefinisikan oleh statement TYPE .. END TYPE.
‘======================================================
‘Program : RANDOM4.BAS
‘Keterangan : Contoh pembacaan data dari file random
‘======================================================
‘
OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57
TYPE Data1
Nama AS STRING * 20
Alamat AS STRING * 30
Telepon AS LONG
END TYPE
DIM DataMhs as Data1
noRec = 1
CLS
PRINT “NAMA ALAMAT TELEPON”
PRINT “----------------------------------------”
WHILE NOT EOF(1)
GET #1, noRec, DataMhs
PRINT DataMhs.Nama, DataMhs.Alamat, DataMhs.Telepon
noRec = noRec + 1
WEND
CLOSE
END
Tidak ada komentar:
Posting Komentar