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 :
|
|
OPEN “R”,
#nomfile, namafile, reclen
|
|
atau
|
|
OPEN namafile FOR RANDOM ACCESS akses AS #nomfile LEN =
reclen
|
|
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 :
|
|
FIELD #nomfile,
lebarfield AS varstring [, lebarfield1 AS varstring 2, …]
|
|
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 :
|
|
|
LSET varstring =
ekspstring
|
|
|
|
RSET varstring =
ekspstring
|
|
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:
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 :
|
|
PUT #nomFile [, nomRec],
varRecord
|
|
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.
Bentuk Umum :
atau jika record didefinisikan
dengan statement TYPE .. END TYPE
|
|
GET #nomFile [,
nomRec], varRecord
|
|
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