arsip beruntunsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/bab-iv...rekaman adalah head. posisi...

47
ARSIP BERUNTUN BAB IV

Upload: dothuan

Post on 27-May-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

ARSIP BERUNTUN

BAB IV

Page 2: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

DEFENISI

Arsip (File) adalah struktur penyimpanan

data didalam memori sekunder seperti

disk

Data disimpan didalam arsip agar

sewaktu-waktu dapat diakses kembali

Setiap item data yang direkam didalam

arsip disebut rekaman (record)

Page 3: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Lanjutan…

Rekaman tersebut diorganisasikan

penyimpanannya

Ada 2 metode pengorganisasian :

Arsip Beruntun (sequential)

Arsip Acak (random) / Direct Access

Page 4: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Arsip Beruntun

Penyimpanan rekaman secara berurutan, rekaman yang satu setelah rekaman yang lainnya

Untuk mengakses data tertentu, program harus mengakses mulai dari rekaman pertama sampai rekaman yang diinginkan

Pengaksesan arsip jenis ini, biasanya sangat lambat, khususnya bila arsip berukuran besar, Namun arsip beruntun mudah dibuat dan dipelihara

Page 5: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Arsip Acak

Rekaman diakses secara langsung, tanpa

memulai dari awal.

Keuntungan jenis arsip ini, pengaksesan

data individual lebih cepat daripada arsip

beruntun, tetapi arsip acak lebih sulit

dibuat dan dipelihara.

Page 6: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Defenisi Arsip Beruntun

Sekumpulan rekaman bertipe sama yang

diakses secara beruntun mulai dari rekaman

pertama sampai rekaman yang terakhir

Rekaman pada arsip beruntun diakses satu

persatu secara searah

Rek 1 Rek2 ….. RekN

Urutan Akses (satu-per Satu)

Rekaman 1 Rekaman 2

Page 7: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Tanda Akhir Arsip Beruntun Pada arsip beruntun akhir file ditandai

dengan menambahkan sebuah rekaman fiktif yang berfungsi sebagai “penanda” akhir arsip.

Bila pembacaan arsip menemui tanda tersebut, maka pemrosesan arsip dihentikan,

Rekaman fiktif tersebut dinamakan “mark” Fungsi mark pada arsip sama dengan fungsi karakter “.”

Page 8: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Pendeklarasian Arsip didalam

Algoritma

Deklarasi

NamaArsip : SeqFile of TipeRekaman

Cara deklarasi arsip beruntun sebagai tipe

bentukan :

type ArsipBeruntun : SeqFile of TipeRekaman

NamaArsip : ArsipBeruntun

Page 9: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Contoh :

Arsip bil berisi sekumpulan bilangan bulat

Deklarasi

bil : seqfile of integer {nama arsip bilangan bulat}

Mendefinisikan arsip bilangan bulat sebagai tipe bentukan

Deklarasi

type ArsipBil : seqfile of integer

bil : ArsipBil

Page 10: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Lanjutan…

Arsip MHS yang berisi data mahasiswa (NIM, Nama, dan IPK)

Deklarasi

Type datamhs : record <NIM : integer,

Nama : string,

IPK : real>

MHS : seqfile of datamhs

Mendefinisikan arsip diatas sebagai tipe baru

tipe arsipmhs : seqfile of datamhs

Mhs : arsipmhs

Page 11: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Arsip KAR yaitu arsip yang berisi data bertipe

karakter. Setiap rekaman bertipe karakter

Deklarasi :

KAR : Seqfile of char ;

Page 12: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Contoh Arsip

1.

2.

3.

359601 ' Adi Purwanto ' 3,82

359604 ' Fitria Handini ' 2,97

359605 ' Dewi Kurniati ' 2,74

359606 ' Andrie Irwansyah ' 3,02

359608 ' Cahyo Kumolo ' 2,05

359610 ' Anton Previanto ' 3,99

999999 x' 9,99

345 78 120 0 26 698 125 237

999

9

'h' 'a' 'I' 'o' 'k' 'a' 'w' 'a' 'n' ' '

Page 13: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Instruksi Baku untuk arsip beruntun

Instruksi baku tersebut berupa prosedur

atau fungsi yang dianggap sudah

tersedia sehingga apat langsung dipakai

tanpa perlu mendefinisikan prototypenya.

Instruksi baku dilakukan dengan

memanggil prosedur yang dimaksud

Page 14: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

1. OPEN

Fungsi :

Membuka arsip beruntun untuk siap dibaca / ditulis. Setelah memanggil fungsi ini pointer pembacaan/penulisan akan menunjuk ke awal rekaman pertama

Keterangan :

Piranti keras yang melakukan operasi baca/tulis rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer

Page 15: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Prosedur OPEN

Procedure OPEN( Input NamaArsip :

ArsipBeruntun, Input kode :Integer)

{Membuka arsip beruntun nama arsip siap dibaca/ditulis, kode 1 artinya

dibuka untuk dibaca, kode 2 artinya dibuka untuk direkam }

Contoh :

OPEN (MHS, 1) {Arsip MHS dibuka untuk dibaca}

OPEN (BIL, 2) {Arsip BIL dibuka untuk ditulis}

OPEN (KAR, 1) {Arsip KAR dibuka untuk dibaca}

Page 16: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

2. FREAD

Fungsi :

Membaca rekaman yang sekarang sedang

ditunjuk oleh pointer pembacaan.

Contoh :

FREAD (MHS, RekMhs)

FREAD (BIL, I)

FREAD (KAR, ch)

Page 17: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

3. FWRITE

Fungsi

Menulis rekaman kedalam arsip beruntun

Procedure FWRITE :

FWRITE (MHS, <456901, “Ida Bagus Adi

Sudewa‟, 4.23>)

FWRITE (BIL,765) {menambah 765 ke arsip BIL}

FWRITE (KAR,‟R‟) {menambah R pada KAR}

Page 18: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

4. Close

Fungsi

Menutup arsip yang telah dibuka untuk

pembacaan atau dibuka untuk perekaman

Contoh :

Close (MHS)

Close (BIL)

Close (ArsipKar)

Page 19: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Mark

Fungsi Mark mengembalikan nilai true jika tanda

akhir arsip dicapai atau false jika tidak

Contoh :

Function Mark (input x : integer)

Deklarasi

{tidak ada}

Deskripsi

return (x = 9999)

Page 20: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

- Function Mark (input M : DataMhs)

Deklarasi

{tidak ada}

Deskripsi

return (M.nim = 9999 and M.nama = „x‟ and M.IPK = 9.99)

- Function Mark (input c : char)

Deklarasi

{tidak ada}

Deskripsi

return (c = „.‟)

Page 21: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Membuat Arsip Beruntun

Arsip hanya dapat di proses jika sudah

terdefinisi isinya. Langkah-langkah :

1. Menyiapkan arsip untuk perekaman

(gunakan perintah OPEN dengan Kode=2)

2. Membaca file yang direkam

3. Menulis data yang akan direkam ke dalam

arsip (dgn perintah FWRITE)

4. Jika arsip sudah selesai,arsip ditutup

dengan perintah CLOSE

Page 22: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Contoh :

Algoritma IsiArsipBilangan_1

Deklarasi :

BIL : Seqfile of integer

N : integer

k : integer

Deskripsi

OPEN (BIL,2)

read(N)

for k 1 to N do

FWRITE (BIL,k)

endfor

Write (BIL, 9999)

CLOSE (BIL)

Page 23: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Algoritma IsiArsipBilanganBulat_2

Deklarasi :

FINT : Seqfile of integer

N : integer

k : integer

x : integer

Deskripsi

OPEN (FINT,2) { buka arsip FINT untuk perekaman }

read (N)

for k 1 to N do

read (x)

FWRITE (FINT,k)

endfor

Write (FINT, 9999)

CLOSE (FINT)

Page 24: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Membaca Arsip Beruntun

Langkah pertama adalah menyiapkan

arsip untuk pembacaan (OPEN dengan

kode=1)

Langkah kedua ada 2 yaitu :

Menangani arsip kosong secara khusus

Tidak menangani

Pemakaian langkah ke 2 tergantung dari

spesifikasi persoalan

Page 25: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Deklarasi :

BIL : Seqfile of integer

N : integer

x : integer

Function MARK (input x : integer) boolean

{Mengembalikan nilai true jika x adalah rekaman tanda akhir arsip atau false jika tidak}

Deskripsi

OPEN (BIL,1) {buka arsil BIL untuk membaca}

FREAD (BIL,x)

if MARK (x)

write („Arsip kososng”)

else

repeat

WRITE (x)

FREAD(BIL,x)

Until MARK(x)

endif

CLOSE (BIL)

Page 26: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Deklarasi :

BIL : Seqfile of integer

N : integer

x : integer

Function MARK (input x : integer) boolean

{Mengembalikan nilai true jika x adalah rekaman tanda akhir arsip atau false jika tidak}

Deskripsi

OPEN (BIL,1) {buka arsil BIL untuk membaca}

FREAD (BIL,x)

While not MARK (x)

WRITE (x)

FREAD(BIL,x)

endwhile

CLOSE (BIL)

Page 27: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Contoh :

Pengelolaan Arsip pegawai

135001 ' Laila ' ' IIIa ' ' Asisten Ahli ' 1150000

135002 ' Raihan ' ' IIIa ' ' Asisten Ahli ' 1150000

135003 ' Namira ' ' IIIb ' ' Lektor ' 1500000

135004 ' Naila ' ' IIIa ' ' Asisten Ahli ' 1150000

135005 ' Az_zahra ' ' IIIa ' ' Asisten Ahli ' 1150000

135006 ' Nania ' ' IVa ' ' Lektor Kepala ' 1750000

999999 „xxxxxx‟ „xxxxx‟ „xxxx‟, 9999999

NIRP Nama Gol Pangkat Gaji

Page 28: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Contoh Program_rekam_data_pegawai

Deklarasi

Type DataPeg : record < nirp : integer, nama : string, gol : string, pangkat : string, gaji : integer >

Type ArsipPeg : SeqFile of DataPeg

Pegawai : ArsipPeg

Function Mark (input : RekPeg : DataPeg)

Procedure Rekam_data_pegawai

Deklarasi :

KelolaPeg : DataPeg

Page 29: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Deskripsi :

OPEN (pegawai, 2) {buka arsip Pengelolaan untuk perekaman}

read (kelolaPeg.nirp) {baca data nirp pertama, mungkin 9999}

While (kelolaPeg.nirp <>9999)

read (kelolaPeg.Nama)

read (kelolaPeg.gol)

read (kelolaPeg.pangkat)

read (kelolaPeg.gaji)

FWRITE (Pegawai, kelolaPeg) {rekaman kelolapeg kedalam arsip Pegawai)

read (kelolaPeg.nirp)

EndWhile

{kelolapeg.nirp = 99999)

FWRITE (Pegawai, < 999999, „xxxxxx‟, „xxxxx‟, „xxxx‟, 9999999 >

CLOSE (pegawai)

Page 30: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Contoh

Procedure Tampilkan_data_pegawai

Deklarasi :

kelolaPeg : DataPeg

Deskripsi :

OPEN (pegawai, 1)

{buka arsip Pegawai untuk dibaca}

FREAD (kelolaPeg.nirp)

{baca data nirp pertama, mungkin 9999}

While (KelolaPeg.nirp <>

9999)

FREAD (pegawai,

kelolapeg)

Write (‘nirp = ‘)

Write (kelolapeg.nirp)

Write (‘nama = ‘)

Write (kelolapeg.nama)

Write (‘gol = ‘)

Write (kelolapeg.gol)

Page 31: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Write („pangkat = „)

Write (kelolapeg.pangkat)

Write („gaji = „)

Write (kelolapeg.gaji)

FREAD (kelolaPeg.nirp)

End while;

{kelolaPeg.nirp = 9999}

CLOSE (pegawai)

Page 32: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Menyalin Arsip

Menyalin arsip artinya mengkopi arsip ke

arsip lain

Penyalinan dapat dilakukan terhadap

seluruh rekaman atau hanya rekaman

tertentu saja

Page 33: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

type DataMhs : record <NIM : integer, Nama : string, IPK : real>

ArsipMhs : SeqFile of DataMhs :

MHSl, MHS2 : ArsipMhs

function MARK (input RekMHS : DataMhs) ->boolean

{ Mengembalikan nilai true jika RekMHS adalah rekaman tanda akhir arsip; atau false jika tidak) .

Page 34: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Menyalin seluruh rekaman di dalam

arsip MHS1 ke arsip baru MHS2

procedure SalinArsip ( Menyalin seluruh isi arsip MHS1 ke arsip MHS2. }

{ K.Awal : sembarang }

( K.Akhir: MHS2 berisi salinan seluruh rekaman dari arsip MHS1 )

DEKLARASI

RekMHS : DataMhs

Page 35: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

DESKRIPSI:

OPENIMHS1, 1) { buka arsip MHS1 untuk pembacaan } OPEN(MHS2, 2) { buka arsip MHS2 untuk penulisan } FREAD(MHS1, RekMHS) { baca rekaman pertama, mungkin TANDA }

while (not MARK(RekMHS)) do

FWRITE(MHS2, RekMHS) { salin RekMHS ke arsip MHS2 } FREAD(MHS1, RekMHS) { baca RekMHS dari arsip MHS1 }

endwhile

{ MARK (RekMHS! }

FWRITE(MHS2, <999999, 'X', 99.9>) { tulismark }

CLOSE(MHS1)

CLOSE(MHS2)

Page 36: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Menyalin data mahaiswa yang IPK-nya di

atas 2.0 dari arsip MHS1 arsip baru MHS2 procedure SalinYangLulusSaja

{ Menyalin data mahasiswa yang IPK-nya di atas 2.0. Data mahasis

dibaca dari arsip MHS1. }

{ K.Awal : sembarang }

{ K.Akhir: MHS2 berisi data mahasiswa yang lulus dengan IPK > 2.0. )

DEKLARASI

RekMHS : DataMhs

DESKRIPSI:

OPEN(MHS1, 1) { buka arsip MHS1 untuk pembacaan )\

OPEN(MHS2, 2) { buka arsip MHS2 untuk penulisan }

FREAD(MHS1, RekMHS) { baca rekaman pertama, mungkin TANDA }

Page 37: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

while not MARK(RekMHS) do

if RekMHS.IPK > 2.0 then

FWRITE(MHS2, RekMHS)

endif

FREAD(MHS1, RekMHS) { baca rekaman selanjutnya }

endwhile { MARK tRekMHS) }

FWRITE(MHS2, <999999, 'X', 99.9>) { tulismark }

CLOSE(MHS1)

CLOSE(MHS2)

Page 38: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Penggabungan Arsip

Penggabungan dua buah arsip dengan

penyambungan

Menyalin isi dua buah arsip kedalam sebuah

arsip baru. Arsip-arsip yang akan digabung

mungkin belum terurut (berdasarkan field

tertentu) atau mungkin sudah terurut

Cara penggabungannya adalah dengan

penyambungan (concatenation)yaitu menyalin

arsip kedua setelah arsip pertama.

Page 39: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur
Page 40: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

DEKLARASI

type DataMhs : record <NIM : integer, Nama : string, IPK : real>

type ArsipMhs : SeqFile of DataMhs

MHS1, MHS2, MHS3 : ArsipMhs

function MARK(input RekMHS : DataMhs) boolean

{Mengembalikan nilai true jika RekMHS adalah rekaman tanda akhir

arsip; atau false jika tidak}.

Page 41: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Prosedur penggabungan arsip : procedure GabungArsipl

{ Menggabungkan dua buah arsip, MHS1 dan MHS2, menjadi sebuah arsip baru MHS3, dengan cara menyambung isi arsip MHS1 dengan isi arsip MHS2 kedalam arsip MHS3. }

{ K.Awal : sembarang. }

( K.Akhir: arsip MHS3 berisi hasil penggabungan MHS1 dan MHS2 }

DEKLARASI

RekMHS : DataMHS

DESKRIPSI

OPEN(MHS1, 1) { buka arsip MHS1 untuk pembacaan }

OPEN(MHS2, 1) { buka arsip MHS2 untuk pembacaan }

OPEN(MHS3, 2) { buka arsip MHS3 untuk penulisan }

FREAD(MHS1, RekMHS)

Page 42: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

( baca rekaman pertama dari MHS1, mungkin mark

while (not MARK(RekMHS} do

FWRITE(MHS3, RekMHS)

FREAD(MHS1, RekMHS)

endwhile { MARK (RekMHS) }

{ Sambung MHS2 setelah MHS1 }

FREAD(MHS2, RekMHS) { baca rekaman pertama dari MHS2, mungkin mark

while (not MARK(RekMHS) do

FWRITE(MHS3, RekMHS)

FREAD(MHS2, RekMHS) endwhile { MARK (RekMHS) }

FWRITEIMHS3, <999999, 'X', 99.9>) { tulis mark }

CLOSE(MHS1)

CLOSE(MHS2)

CLOSE(MHS3)

Page 43: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Penggabungan Arsip

Penggabungan arsip terurut

Cara penggabungan sama seperti

concatenation

Page 44: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Pemutakhiran Arsip

Pemuktakhiran (updating adalah proses yang dilakukan untuk mengubah nilai suatu rekaman didalam arsip. Arsip dimutakhirkan dengan nilai baru yang dibaca dari piranti masukan atau dibaca dari arsip transaksi lain

sebuah arsip beruntun tidak dapat dibaca sekaligus ditulisi. Sebuah arsip hanya dapat dibuka untuk pembacaan saja atau untuk penulisan saja. Jadi, tidak mungkin membaca rekaman di dalam arsip, mengubahnya, dan kemudian menuliskannya kembali ke arsip tersebut.

keterbatasan ini menyebabkan pemutakhiran arsip merupakan proses yang rumit. Pemutakhiran arsip memerlukan dua buah arsip. Satu arsip (arsip master} adalah arsip asaI yang akan dimutakhirkan, dibuka untuk pembacaan. Arsip kedua (arsip temporer), yang dibuka untuk penulisan, berisi rekaman dari arsip lama plus rekaman yang sudah dimutakhlirkan. Jadi, arsip master merupakan arsip masukan, sedangkan arsip temporer merupakan arsip keluaran. Setelah pemutakhiran, isi arsip temporer disalin kembali, ke arsip master.

Page 45: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

Deklarasi arsip data mahasiswa

(untuk pemutakhiran) type ArsipMHS record <NIM : integer, Nama : string, IPK : real>

type ArsipMHS : SeqFile of DataMHS

MAST : ArsipMHS { natna arsip master }

TEMP : ArsipMHS { nanta arsip temporer }

function MARK(input RekMHS : DataMhs) boolean { Mengembalikan nilai true jika RekMHS adalah rekaman tanda akhir arsip; atau false jika tidak}.

Page 46: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

misalkan arsip MAST menyimpan data mahasiswa (NIM, Nama, IPK) arsip MAST mungkjn kosong.

Jika akan menambah isi arsip MAST(setelah rekaman terakhir) dengan sejumlah data baru yang dibaca dari piranti masukan. Pembacaan data berakhir jika NIM yang dimasukan adalah 9999. Langkah-langkahnya adalah:

(i). buka arsip MASTuntuk pembacaan

(ii) buka arsip TEMP untuk penulisan

(iii) baca seluruh rekaman dari arsip MAST, lalu tuliskan ke arsip

TEMP

(iv) baca data baru dari piranti masukan, tulis ke arsip TEMP

(v) buka arsip TEMP untuk pembacaan

(vi) buka arsip MAST untuk penulisan

(vii) baca seluruh rekaman dari arsip TEMP, lalu tuliskan ke arsip

TEMP

Page 47: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur

procedure TambahDataMahasiswa

{ Menambah sejumlah data baru ke arsip MAST; data dibaca dari piranti masukan, proses penambahan data berhenti jika NIM yang dibaca = 9999 { K.Awal : arsip MAST mungkin kosong. } ( K.Akhir: arsip MAST berisi da,ta plus data yang baru. }

DEKLARASIRekMHS DataMhs

DESKRIPSI:OPEN(MAST, 1) OPEN(TEMP, 2) { buka arsip MAST untuk pembacaan } { buka arsip TEMP untuk penulisan }

{ baca seluruh rekaman dari MAST, tulis ke TEMP }

FREAD(MAST, RekMHS) ( baca rekaman pertama dari MAST, mungkin

while not MARK(RekMHS) do

FWRITE(TEMP, RekMHS)

FREAD(MAST, RekMHS) endwhile { MARK(REkMHS) }

read (RekMHS. NIM) (baca data NIM pertama dari piranti masu

mungkin 9999 } while(RekMHS.NIM * 9999) do {baca data field lainnya}

read(RekMHS.Nama)

read(RekMHS.IPK)

FWRITEIKULIAH, KuliahMHS) {rekam KuliahMHS ke dalam arsip KULItt

read(KuliahMHS.NIM) endwhile { KuliahMHS.NIM = 9999}

FWRITEfKULIAH, <9999999, 99.9>)

CLOSE(KULIAH)