Yaitu suatu record dengan field
yang bisa berubah pada saat program berjalan. Hal yang perlu diperhatikan
adalah bahwa beberapa field yang berada dalam record tidak pernah muncul dalam
serempak, hanya akan ada satu field yang terpakai dalam satu saat.
Record varian akan memberikan
fasilitas untuk menentukan field yang diperlukan pada saat program berjalan
(RUN-TIME), berdasarkan keperluannya.
Bentuk umum Record Varian :
TYPE namarecord = RECORD
Nama_field_1 : jenis;
Nama_field_2 : jenis;
……………………..
nama_field_n : jenis;
Case Tagfield:jenis Of
nama_tagfield : (Nama_field:jenis);
nama_tagfield : (Nama_field_1,
Nama_field_2:jenis);
……………………..
nama_tagfield :
(Nama_field_n:jenis);
END;
Contoh :
Type status=(T,P,J);
gaji=RECORD
napeg :string[25];
nopeg :string[10];
bagian :string[15];
CASE stat :status OF
T:(gaji:integer);
P:(gajiperjam,jmlmax:integer);
J:(upahperjam,lembur:integer);
end;
program contoh_record_bervariasi;
uses crt;
type
status_karyawan = (lajang,menikah,cerai);
data_karyawan = record
nama : string[15];
alamat : string[20];
gaji : integer;
case status :
status_karyawan of
lajang :();
menikah :(anakm :
0..20);
cerai :(anakc :
0..20; lagi :char);
end;
var
karyawan : array [1..10] of data_karyawan;
i,banyak : integer;
sts : char;
begin
clrscr;
write('Jumlah data record :');readln(banyak);
for i := 1 to banyak do
begin
with karyawan[i] do
begin
write('Nama
=');readln(nama);
write('Alamat
=');readln(alamat);
write('Gaji
=');readln(gaji);
write('status M=menikah
L=lajang C=cerai');readln(sts);
if upcase(sts)='L'
then
begin
status:=lajang;
end;
if upcase(sts)='M'
then
begin
status:=Menikah;
write('Jumlah anak=
');readln(anakm);
end;
if upcase(sts)='C'
then
begin
status:=Cerai;
write('Jumlah anak =
');readln(anakc);
write('Kawin lagi
(Y/T) = ');readln(lagi);
end;
end;
end;
{ tampil}
for i := 1 to banyak do
begin
with karyawan[i] do
begin
write(nama);
write(alamat);
write(gaji);
case status of
lajang : writeln('lajang');
menikah : writeln('menikah',' ',anakm:4);
cerai : writeln('cerai ', ' ',anakc:4,'
',lagi);
end;
end;
end;
readln;
end.
Tidak ada komentar:
Posting Komentar