ƒ File bertipe record
„ -------------------
Pada file bertipe dapat diakses secara urut, dapat juga diakses
secara acak. Berarti komponen- komponen di dalam file bertipe
dapat dibaca atau direkamkan di manapun di dalam file, beda dengan
file text yang hanya dapat diakses secara sequential(urut).
dalam membuka file bertipe ada 2 cara yaitu dengan ,
Rewrite -> Untuk membuat dan sekaligus membuka file baru .
Reset -> Untuk membuka file yang sudah ada.
File bertipe dapat bertipe integer, real, char, string, array dan
record , namun disini akan dibahas file bertipe record.
Untuk file bertipe baik yang dibuka dengan procedure standard
rewrite ataupun reset mempunyai sifat read/write, yaitu dapat
membaca dan merekamkan data ke dalam file bertipe sekaligus.
Sedang pada file text hanya mempunyai satu keadaan yaitu read atau
write saja.
Untuk membuat suatu file yang dibuka menjadi read-only atau write-
only dapat digunakan variabel terdefinisi yaitu : filemode
secara default Filemode bernilai 2 yang berarti bisa read/write.
„ I. Procedure dan fungsi standard untuk file bertipe
Selain procedure dan fungsi standard yang dapat digunakan untuk
semua tipe file (dapat dilihat di modul file dan directory). Masih
terdapat beberapa procedure dan fungsi standard lainya yang dapat
digunakan di file bertipe, yaitu :
… I.1. Procedure standard write dan read
write digunakan untuk merekamkan satu atau lebih nilai ke dalam
file.
Read digunakan untuk membaca satu atau lebih nilai dari file.
Perbedaan penggunaan dari procedure ini adalah terletak pada
variabel file yang digunakan.
… I.2. Procedure standard Seek
Digunakan untuk mengarahkan penunjuk file ke suatu komponen ter
tentu di dalam file, sehingga memungkinkan untuk membaca komponen
atau menuliskan komponen secara acak.
sintak :
seek(f;n : logint);
f = variabel file
n = posisi record
komponen pertama record adalah adalah bernomor 0.
ex :
seek(filepeg,5);
read(filepeg,No_peg,Nama,Alamat);
menunjukkan komponen record ke 6 (nomor 5) di baca dari file.
… I.3. Procedure Standard Truncate
Digunakan untuk menghapus sejumlah komponen atau record mulai dari
posisi record tertentu.
Sintak :
Truncate(F);
ex :
seek(filepeg,5);
Truncate(filepeg);
Pada contoh diatas mulai no record ke 5 (komponen ke 6) sampai
terakhir akan dihapus dari file.
… I.4. Fungsi Standard Filepos
Fungsi standard ini digunakan untuk menghasilkan letak posisi
sekarang dari penunjuk file dengan sintak :
Filepos(f):longint;
Ex :
seek(filepeg,5);
Writeln(filepos(filepeg));
Pada contoh ini, penunjuk file diarahkan ke nomor record 5 dan
bila digunakan fungsi filepos maka akan dihasilkan nilai integer 5
, yang merupakan letak dari penunjuk file.
… I.5. Fungsi standard Filesize
Fungsi standard ini digunakan untuk menghasilkan jumlah dari
komponen atau record yang tersedia di file.
sintak :
Filesize(f):longint;
Fungsi ini harus digunakan setelah file dibuka dan tidak dapat
digunakan sebelum file dibuka.
Ex :
Assign(filepeg,'Pegawai.dat');
Reset(filepeg);
writeln('Jumlah record yang ada =',filesize(filepeg));
Contoh listing program dari penanganan file bertipe record seperti
membuat file baru, menambah data record di file, mengedit data
record, dan menampilkan data record.
Ex.1 :
Program membuat_file_baru_dan_isi;
uses crt;
type
mahasiswa=record
npm : string[10];
nama: string[25];
kls : string[4];
ipk : real;
end;
var
filesiswa : file of mahasiswa;
{deklarasi file siswa sebagai file record mahasiswa}
recordsiswa : mahasiswa;
lagi : char;
begin
assign(filesiswa,'siswa.dat');
{menghubungkan variabel file dgn external file}
rewrite(filesiswa);
{buka file baru filesiswa jika ada akan langsung tertimpa}
lagi := 'Y';
while upcase(lagi)='Y' do
begin
clrscr;
with recordsiswa do{menyertakan penyebut record}
begin
write('N P M =');readln(npm);
write('Nama =');readln(nama);
write('Kelas =');readln(kls);
write('I P K =');readln(ipk);
end;
write(filesiswa,recordsiswa);
{menulis isi recordsiswa ke file siwa}
write('ada data lagi =');readln(lagi);
end;
close(filesiswa); {tutup filesiswa}
end.
program tampildata;
uses crt;
type
mahasiswa = record
npm : string[10];
nama : string[25];
kls : string[4];
ipk : real;
end;
var
filesiswa : file of mahasiswa;
{filesiswa adalah file bertipe record mahasiswa}
recordsiswa : mahasiswa;
begin
assign(filesiswa,'siswa.dat');
{hubungkan varibel file dengan external file}
reset(filesiswa); {membuka file yang sudah ada }
clrscr;
while not eof(filesiswa) do begin
read(filesiswa,recordsiswa);
{membaca isi filesiswa lalu dimasukan ke recordsiswa}
with recordsiswa do
writeln(npm:10,nama:25,kls:4,ipk:3:2);
{menampilkan dilayar}
end;
close(filesiswa);{menutup file }
readln;
end.
Program mencari_record;
uses crt;
type
mahasiswa=record
npm : string[10];
nama: string[25];
kls : string[4];
ipk : real;
end;
var
filesiswa : file of mahasiswa;
recordsiswa : mahasiswa;
CariNpm : string[10];
ketemu : boolean;
lagi : char;
begin
assign(filesiswa,'siswa.dat');
{menghubungkan varibel file dgn external file}
reset(filesiswa);{buka file yang sudah ada}
lagi := 'Y';
while upcase(lagi)='Y' do
begin
ketemu := false;
write('Npm yang dicari =');readln(carinpm);
{masukan npm yang akan dicari}
while not eof(filesiswa) do
{baca selam isi filesiswa blm habis}
begin
read(filesiswa,recordsiswa);
{baca isi filesiswa lalu dimasukan ke recordsiwa}
if recordsiswa.npm =carinpm then
begin
ketemu := true;
with recordsiswa do
writeln(npm:10,nama:25,kls:4,ipk:3:2);
end;
end;
if ketemu=false then
writeln('data tidak ada');
write('cari lagi =');readln(lagi);
seek(filesiswa,0);
end;
close(filesiswa);
end.
program koreksi_data;
uses crt;
type
mahasiswa=record
npm : string[10];
nama : string[25];
kls : string[4];
ipk : real;
end;
var
filesiswa : file of mahasiswa;
recordsiswa : mahasiswa;
ketemu : boolean;
lagi : char;
npmcari:string[10];
jumrec,i : integer;
begin
assign(filesiswa,'siswa.dat');
{menghubungkan tipefile dengan external file}
reset(filesiswa);{buka file yang sudah ada }
jumrec := filesize(filesiswa);
{menghitung jumlah record di file}
lagi := 'Y';
while upcase(lagi)='Y' do
begin
write('NPM yang dicari =');readln(Npmcari);
for i:= 1 to jumrec do
begin
seek(filesiswa,i-1);
{Cari record di file siswa pada posisi i}
read(filesiswa,recordsiswa);{baca isi record di file}
if recordsiswa.npm=npmcari then
begin
ketemu:=true;
with recordsiswa do
begin
writeln('npm =',npm:10);
write('npm koreksi =');readln(npm);
writeln('nama =',nama:25);
write('nama koreksi =');readln(nama);
writeln('Kls =',kls:4);
write('Kls koreksi =');readln(kls);
writeln('Ipk =',ipk:3:2);
write('IPK koreksi =');readln(ipk);
end;
end;
seek(filesiswa,i-1);
write(filesiswa,recordsiswa);
end;
if not ketemu then
writeln('data tidak ada');
write('isi lagi =');readln(lagi);
end;
close(filesiswa);
end.
program tambah_data;
type
mahasiswa=record
npm : string[10];
nama: string[25];
kls : string[4];
ipk : real;
end;
var
filesiswa : file of mahasiswa;
recordsiswa : mahasiswa;
lagi:char;
begin
assign(filesiswa,'siswa.dat');
{i$-}
reset(filesiswa); {i$+}
if ioresult <> 0 then rewrite(filesiswa);
lagi :='Y';
seek(filesiswa,filesize(filesiswa));
while upcase(lagi)='Y' do
begin
with recordsiswa do
begin
write('Npm =');readln(npm);
write('nama =');readln(nama);
write('kelas =');readln(kls);
write('IPK =');readln(ipk);
end;
write(filesiswa,recordsiswa);
write('isi lagi =');readln(lagi);
end;
close(filesiswa);
end.
program menu_file;
uses crt;
type
mahasiswa=record
npm : string[10];
nama: string[25];
kls : string[4];
ipk :real;
end;
var
filesiswa : file of mahasiswa;
recordsiswa : mahasiswa;
procedure filebaru;
var
lagi : char;
begin
assign(filesiswa,'siswa.dat');
rewrite(filesiswa);
lagi := 'Y';
while upcase(lagi)='Y' do
begin
clrscr;
with recordsiswa do
begin
write('N P M =');readln(npm);
write('Nama =');readln(nama);
write('Kelas =');readln(kls);
write('I P K =');readln(ipk);
end;
write(filesiswa,recordsiswa);
write('ada data lagi =');readln(lagi);
end;
close(filesiswa);
end;
procedure tambahdata;
var
lagi:char;
begin
assign(filesiswa,'siswa.dat');
{i$-}
reset(filesiswa); {i$+}
if ioresult <> 0 then rewrite(filesiswa);
lagi :='Y';
seek(filesiswa,filesize(filesiswa));
while upcase(lagi)='Y' do
begin
with recordsiswa do
begin
write('Npm =');readln(npm);
write('nama =');readln(nama);
write('kelas =');readln(kls);
write('IPK =');readln(ipk);
end;
write(filesiswa,recordsiswa);
write('isi lagi =');readln(lagi);
end;
close(filesiswa);
end;
procedure koreksidata;
var
ketemu : boolean;
lagi : char;
npmcari:string[10];
jumrec,i : integer;
begin
assign(filesiswa,'siswa.dat');
reset(filesiswa);
jumrec := filesize(filesiswa);
lagi := 'Y';
while upcase(lagi)='Y' do
begin
ketemu := false;
write('NPM yang dicari =');readln(Npmcari);
for i:= 1 to jumrec do
begin
seek(filesiswa,i-1);
read(filesiswa,recordsiswa);
if recordsiswa.npm=npmcari then
begin
ketemu:=true;
with recordsiswa do
begin
writeln('npm =',npm:10);
write('npm koreksi =');readln(npm);
writeln('nama =',nama:25);
write('nama koreksi =');readln(nama);
writeln('Kls =',kls:4);
write('Kls koreksi =');readln(kls);
writeln('Ipk =',ipk:3:2);
write('IPK koreksi =');readln(ipk);
end;
end;
seek(filesiswa,i-1);
write(filesiswa,recordsiswa);
end;
if not ketemu then
writeln('data tidak ada');
write('isi lagi =');readln(lagi);
end;
close(filesiswa);
end;
procedure tampildata;
begin
assign(filesiswa,'siswa.dat');
reset(filesiswa);
clrscr;
while not eof(filesiswa) do
begin
read(filesiswa,recordsiswa);
with recordsiswa do
writeln(npm:10,nama:25,kls:4,ipk:3:2);
end;
close(filesiswa);
readln;
end;
procedure caridata;
var
CariNpm : string[10];
ketemu : boolean;
lagi : char;
begin
assign(filesiswa,'siswa.dat');
reset(filesiswa);
lagi := 'Y';
while upcase(lagi)='Y' do
begin
ketemu := false;
write('Npm yang dicari =');readln(carinpm);
while not eof(filesiswa) do
begin
read(filesiswa,recordsiswa);
if recordsiswa.npm =carinpm then
begin
ketemu := true;
with recordsiswa do
writeln(npm:10,nama:25,kls:4,ipk:3:2);
end;
end;
if ketemu=false then
writeln('data tidak ada');
write('cari lagi =');readln(lagi);
seek(filesiswa,0);
end;
close(filesiswa);
end;
{modul utama}
var
pil : char;
flag : boolean;
label awal;
begin
flag := true;
while flag = true do
begin
awal :
clrscr;
writeln('Pilihan menu file bertipe record');
writeln('1. file baru dan isi');
writeln('2. Tambah data ');
writeln('3. Koreksi data berdasar npm ');
writeln('4. Cari data berdasar npm ');
writeln('5. Tampil data ');
writeln('6. keluar');
writeln;
write('Pilihan anda =');readln(pil);
if not (pil in ['1'..'6']) then
begin
writeln(char(7));
writeln('Data tidak ada');
goto awal;
end;
case pil of
'1' : filebaru;
'2' : tambahdata;
'3' : koreksidata;
'4' : caridata;
'5' : tampildata;
'6' : halt;
end;
end;
end.

Pascal - FileRecord.txt - Notepad.pdf

  • 1.
    ƒ File bertiperecord „ ------------------- Pada file bertipe dapat diakses secara urut, dapat juga diakses secara acak. Berarti komponen- komponen di dalam file bertipe dapat dibaca atau direkamkan di manapun di dalam file, beda dengan file text yang hanya dapat diakses secara sequential(urut). dalam membuka file bertipe ada 2 cara yaitu dengan , Rewrite -> Untuk membuat dan sekaligus membuka file baru . Reset -> Untuk membuka file yang sudah ada. File bertipe dapat bertipe integer, real, char, string, array dan record , namun disini akan dibahas file bertipe record. Untuk file bertipe baik yang dibuka dengan procedure standard rewrite ataupun reset mempunyai sifat read/write, yaitu dapat membaca dan merekamkan data ke dalam file bertipe sekaligus. Sedang pada file text hanya mempunyai satu keadaan yaitu read atau write saja. Untuk membuat suatu file yang dibuka menjadi read-only atau write- only dapat digunakan variabel terdefinisi yaitu : filemode secara default Filemode bernilai 2 yang berarti bisa read/write. „ I. Procedure dan fungsi standard untuk file bertipe Selain procedure dan fungsi standard yang dapat digunakan untuk semua tipe file (dapat dilihat di modul file dan directory). Masih terdapat beberapa procedure dan fungsi standard lainya yang dapat digunakan di file bertipe, yaitu : … I.1. Procedure standard write dan read write digunakan untuk merekamkan satu atau lebih nilai ke dalam file. Read digunakan untuk membaca satu atau lebih nilai dari file. Perbedaan penggunaan dari procedure ini adalah terletak pada variabel file yang digunakan. … I.2. Procedure standard Seek Digunakan untuk mengarahkan penunjuk file ke suatu komponen ter tentu di dalam file, sehingga memungkinkan untuk membaca komponen atau menuliskan komponen secara acak.
  • 2.
    sintak : seek(f;n :logint); f = variabel file n = posisi record komponen pertama record adalah adalah bernomor 0. ex : seek(filepeg,5); read(filepeg,No_peg,Nama,Alamat); menunjukkan komponen record ke 6 (nomor 5) di baca dari file. … I.3. Procedure Standard Truncate Digunakan untuk menghapus sejumlah komponen atau record mulai dari posisi record tertentu. Sintak : Truncate(F); ex : seek(filepeg,5); Truncate(filepeg); Pada contoh diatas mulai no record ke 5 (komponen ke 6) sampai terakhir akan dihapus dari file. … I.4. Fungsi Standard Filepos Fungsi standard ini digunakan untuk menghasilkan letak posisi sekarang dari penunjuk file dengan sintak : Filepos(f):longint; Ex : seek(filepeg,5); Writeln(filepos(filepeg)); Pada contoh ini, penunjuk file diarahkan ke nomor record 5 dan bila digunakan fungsi filepos maka akan dihasilkan nilai integer 5 , yang merupakan letak dari penunjuk file. … I.5. Fungsi standard Filesize Fungsi standard ini digunakan untuk menghasilkan jumlah dari komponen atau record yang tersedia di file. sintak : Filesize(f):longint; Fungsi ini harus digunakan setelah file dibuka dan tidak dapat digunakan sebelum file dibuka. Ex : Assign(filepeg,'Pegawai.dat'); Reset(filepeg); writeln('Jumlah record yang ada =',filesize(filepeg)); Contoh listing program dari penanganan file bertipe record seperti membuat file baru, menambah data record di file, mengedit data record, dan menampilkan data record.
  • 3.
    Ex.1 : Program membuat_file_baru_dan_isi; usescrt; type mahasiswa=record npm : string[10]; nama: string[25]; kls : string[4]; ipk : real; end; var filesiswa : file of mahasiswa; {deklarasi file siswa sebagai file record mahasiswa} recordsiswa : mahasiswa; lagi : char; begin assign(filesiswa,'siswa.dat'); {menghubungkan variabel file dgn external file} rewrite(filesiswa); {buka file baru filesiswa jika ada akan langsung tertimpa} lagi := 'Y'; while upcase(lagi)='Y' do begin clrscr; with recordsiswa do{menyertakan penyebut record} begin write('N P M =');readln(npm); write('Nama =');readln(nama); write('Kelas =');readln(kls); write('I P K =');readln(ipk); end; write(filesiswa,recordsiswa); {menulis isi recordsiswa ke file siwa} write('ada data lagi =');readln(lagi); end; close(filesiswa); {tutup filesiswa} end. program tampildata; uses crt; type mahasiswa = record npm : string[10]; nama : string[25]; kls : string[4]; ipk : real; end; var filesiswa : file of mahasiswa; {filesiswa adalah file bertipe record mahasiswa}
  • 4.
    recordsiswa : mahasiswa; begin assign(filesiswa,'siswa.dat'); {hubungkanvaribel file dengan external file} reset(filesiswa); {membuka file yang sudah ada } clrscr; while not eof(filesiswa) do begin read(filesiswa,recordsiswa); {membaca isi filesiswa lalu dimasukan ke recordsiswa} with recordsiswa do writeln(npm:10,nama:25,kls:4,ipk:3:2); {menampilkan dilayar} end; close(filesiswa);{menutup file } readln; end. Program mencari_record; uses crt; type mahasiswa=record npm : string[10]; nama: string[25]; kls : string[4]; ipk : real; end; var filesiswa : file of mahasiswa; recordsiswa : mahasiswa; CariNpm : string[10]; ketemu : boolean; lagi : char; begin assign(filesiswa,'siswa.dat'); {menghubungkan varibel file dgn external file} reset(filesiswa);{buka file yang sudah ada} lagi := 'Y'; while upcase(lagi)='Y' do begin ketemu := false; write('Npm yang dicari =');readln(carinpm); {masukan npm yang akan dicari} while not eof(filesiswa) do {baca selam isi filesiswa blm habis} begin read(filesiswa,recordsiswa); {baca isi filesiswa lalu dimasukan ke recordsiwa} if recordsiswa.npm =carinpm then begin ketemu := true; with recordsiswa do
  • 5.
    writeln(npm:10,nama:25,kls:4,ipk:3:2); end; end; if ketemu=false then writeln('datatidak ada'); write('cari lagi =');readln(lagi); seek(filesiswa,0); end; close(filesiswa); end. program koreksi_data; uses crt; type mahasiswa=record npm : string[10]; nama : string[25]; kls : string[4]; ipk : real; end; var filesiswa : file of mahasiswa; recordsiswa : mahasiswa; ketemu : boolean; lagi : char; npmcari:string[10]; jumrec,i : integer; begin assign(filesiswa,'siswa.dat'); {menghubungkan tipefile dengan external file} reset(filesiswa);{buka file yang sudah ada } jumrec := filesize(filesiswa); {menghitung jumlah record di file} lagi := 'Y'; while upcase(lagi)='Y' do begin write('NPM yang dicari =');readln(Npmcari); for i:= 1 to jumrec do begin seek(filesiswa,i-1); {Cari record di file siswa pada posisi i} read(filesiswa,recordsiswa);{baca isi record di file} if recordsiswa.npm=npmcari then begin ketemu:=true; with recordsiswa do begin writeln('npm =',npm:10); write('npm koreksi =');readln(npm); writeln('nama =',nama:25); write('nama koreksi =');readln(nama);
  • 6.
    writeln('Kls =',kls:4); write('Kls koreksi=');readln(kls); writeln('Ipk =',ipk:3:2); write('IPK koreksi =');readln(ipk); end; end; seek(filesiswa,i-1); write(filesiswa,recordsiswa); end; if not ketemu then writeln('data tidak ada'); write('isi lagi =');readln(lagi); end; close(filesiswa); end. program tambah_data; type mahasiswa=record npm : string[10]; nama: string[25]; kls : string[4]; ipk : real; end; var filesiswa : file of mahasiswa; recordsiswa : mahasiswa; lagi:char; begin assign(filesiswa,'siswa.dat'); {i$-} reset(filesiswa); {i$+} if ioresult <> 0 then rewrite(filesiswa); lagi :='Y'; seek(filesiswa,filesize(filesiswa)); while upcase(lagi)='Y' do begin with recordsiswa do begin write('Npm =');readln(npm); write('nama =');readln(nama); write('kelas =');readln(kls); write('IPK =');readln(ipk); end; write(filesiswa,recordsiswa); write('isi lagi =');readln(lagi); end; close(filesiswa); end. program menu_file;
  • 7.
    uses crt; type mahasiswa=record npm :string[10]; nama: string[25]; kls : string[4]; ipk :real; end; var filesiswa : file of mahasiswa; recordsiswa : mahasiswa; procedure filebaru; var lagi : char; begin assign(filesiswa,'siswa.dat'); rewrite(filesiswa); lagi := 'Y'; while upcase(lagi)='Y' do begin clrscr; with recordsiswa do begin write('N P M =');readln(npm); write('Nama =');readln(nama); write('Kelas =');readln(kls); write('I P K =');readln(ipk); end; write(filesiswa,recordsiswa); write('ada data lagi =');readln(lagi); end; close(filesiswa); end; procedure tambahdata; var lagi:char; begin assign(filesiswa,'siswa.dat'); {i$-} reset(filesiswa); {i$+} if ioresult <> 0 then rewrite(filesiswa); lagi :='Y'; seek(filesiswa,filesize(filesiswa)); while upcase(lagi)='Y' do begin with recordsiswa do begin write('Npm =');readln(npm); write('nama =');readln(nama);
  • 8.
    write('kelas =');readln(kls); write('IPK =');readln(ipk); end; write(filesiswa,recordsiswa); write('isilagi =');readln(lagi); end; close(filesiswa); end; procedure koreksidata; var ketemu : boolean; lagi : char; npmcari:string[10]; jumrec,i : integer; begin assign(filesiswa,'siswa.dat'); reset(filesiswa); jumrec := filesize(filesiswa); lagi := 'Y'; while upcase(lagi)='Y' do begin ketemu := false; write('NPM yang dicari =');readln(Npmcari); for i:= 1 to jumrec do begin seek(filesiswa,i-1); read(filesiswa,recordsiswa); if recordsiswa.npm=npmcari then begin ketemu:=true; with recordsiswa do begin writeln('npm =',npm:10); write('npm koreksi =');readln(npm); writeln('nama =',nama:25); write('nama koreksi =');readln(nama); writeln('Kls =',kls:4); write('Kls koreksi =');readln(kls); writeln('Ipk =',ipk:3:2); write('IPK koreksi =');readln(ipk); end; end; seek(filesiswa,i-1); write(filesiswa,recordsiswa); end; if not ketemu then writeln('data tidak ada'); write('isi lagi =');readln(lagi); end; close(filesiswa);
  • 9.
    end; procedure tampildata; begin assign(filesiswa,'siswa.dat'); reset(filesiswa); clrscr; while noteof(filesiswa) do begin read(filesiswa,recordsiswa); with recordsiswa do writeln(npm:10,nama:25,kls:4,ipk:3:2); end; close(filesiswa); readln; end; procedure caridata; var CariNpm : string[10]; ketemu : boolean; lagi : char; begin assign(filesiswa,'siswa.dat'); reset(filesiswa); lagi := 'Y'; while upcase(lagi)='Y' do begin ketemu := false; write('Npm yang dicari =');readln(carinpm); while not eof(filesiswa) do begin read(filesiswa,recordsiswa); if recordsiswa.npm =carinpm then begin ketemu := true; with recordsiswa do writeln(npm:10,nama:25,kls:4,ipk:3:2); end; end; if ketemu=false then writeln('data tidak ada'); write('cari lagi =');readln(lagi); seek(filesiswa,0); end; close(filesiswa); end; {modul utama} var
  • 10.
    pil : char; flag: boolean; label awal; begin flag := true; while flag = true do begin awal : clrscr; writeln('Pilihan menu file bertipe record'); writeln('1. file baru dan isi'); writeln('2. Tambah data '); writeln('3. Koreksi data berdasar npm '); writeln('4. Cari data berdasar npm '); writeln('5. Tampil data '); writeln('6. keluar'); writeln; write('Pilihan anda =');readln(pil); if not (pil in ['1'..'6']) then begin writeln(char(7)); writeln('Data tidak ada'); goto awal; end; case pil of '1' : filebaru; '2' : tambahdata; '3' : koreksidata; '4' : caridata; '5' : tampildata; '6' : halt; end; end; end.