Common
Business Oriental Language
Versi
Cobol 85
-
Penggunaan untuk tujuan
pengurusan
à Empat bahagian (Division)
-
Identification
Division – pengenalan aturcara
-
Environment Division
– perkakasan dan fail
-
Data Division
– istihar pembolehubah
-
Procedure Division
– logik aturcara
à Didalam division terdapat
section
à Didalam section
terdapat perenggan
à Didalam perenggan terdapat ayat
à Didalam ayat terdapat arahan-arahan
1.
Panjang maksima 30
aksara.
2.
Aksara terdiri daripada
alfabetik, nombor dan tanda –
3.
Dimulai/diakhiri dengan
alfabetik/nombor
contohnya nama-..?, ?..-nama, nama-kolej.
*alfabetik è A-Z, a-z, 0-9.
1.
Pemalar figuratif (ada
nama dan nilai)
-
Zero (es) contoh: pic 9…numerik
-
Space (es) – ruang
kosong contoh: pic X – alfanumerik
-
Quote iaitu tanda “”, ‘’. A - alfabetik
*pemalar è Sesuatu yang tidak b oleh diubah (tetap).
2.
Literal numerik
-
Bil. Digit maksima 18 termasuk
tanda +, -. Cth 8,140,1800…
3.
Literal bukan numerik
-
Bil. Maksima 120 aksara
-
2 margin/arca
A
– Lajur 8-11
-
Division, section,
perenggan.
-
Paras nombor 01, 77 dan
78.
B-
Lajur 72.
-
Semua ayat
-
Paras nombor selain
diatas. (02-49,66 dan 88)
identification
division. *pada baris ini bermula
pada lajur 8-11
Program-id.
Mula.
Environment
division
Data
division.
Working-storage
section.
77
nom pic 99 value zero(s).
procedure
division.
Mula
“ “.
Display
“Selamat Datang”. *pada baris ini bermula
pada lajur 12-32
Display
“nombor” nom.
Compute
nom=nom+3.
Display
“Nombor Baru”, nom.
Tamat.
Stop
run.
-
Menggunakan carta
hirarki iaitu antara modul yang menunjukkan tugas yang digunakan oleh sesuatu
aturcara bagi menyelesaikan masalah
|
A |
|
|
||||||||||||||||
|
|
|
|||||||||||||||||
|
|
|
|
|
|
||||||||||||||
|
B |
|
C |
|
D |
|
E |
||||||||||||
|
|
|
|
Gelung
(flag) |
|
||||||||||||||
|
|
|
|
|
|||||||||||||||
|
|
F |
|
G |
|
||||||||||||||
-
Model A mengawal modul B, c, D, E, F dan G.
-
Modul D mengawal modul F dan G
-
Dibaca dari atas dan
kiri ke kanan
*IPO ialah Input, Proses, Output
|
Kawal |
00 |
||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||
|
10 |
I 20 |
P 30 |
O |
|
|||||||||||||||||||||
Set nilai awal |
|
Baca input |
|
proses |
|
Cetak ringkasan |
|
|||||||||||||||||||
|
|
|
||||||||||||||||||||||||
|
31 |
32 |
3n |
3+n |
20 |
|
||||||||||||||||||||
P1 |
|
P2 |
|
Pn |
|
Cetak terperinci |
|
Baca input seterusnya |
|
|||||||||||||||||
-
menpapatkan bayaran
apabila dimasukkan kuantiti dan harga seunit.
-
Input kuantiti, harga
seunit.
-
Output: bayaran
-
Formula. Bayaran =
kuantiti x harga seunit.
*contoh arahan input: accept è baca arahan secara terus
*arahan output: display
|
Kawal |
|
|||||||||||||||||||||
|
|
||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||
Set penilai |
|
Baca input |
|
Proses |
|
Pamer jum. Bayaran |
|||||||||||||||||
|
|
||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||
Kira bayaran |
|
Tambah bayaran |
|
Pamer bayaran |
|
Baca input seterusnya |
|||||||||||||||||
-
kuantiti
-
harga bayar
-
jumlah dalam
data division diistihar pembolehubah
-
flag è sebagai kawal gelung
-
nama
identification
division.
program-id.
Buah.
data
division.
Working-storage
section.
·
pic = format/picture ·
01 = wakil/record ·
9 = numeric ·
(3) = digit ·
v = titik perpuluhan, membolehkan kita buat pengiraan ·
pic x = satu aksara, bukan numeric/alfanomerik ·
jika terdpat pic A = alfabetik cth nama orang (hanya
a-z shj)
01 ws-input
03 kuantiti pic 9(3).
03 harga pic 9(3)v99.
03 bayar pic 9(3)v99.
03 jumlah pic 9(3)v99.
03 flag pic x.
03 nama pic x (30.
01 ws-output
03 bayar-0 pic 9(3).99.
o3 kuantiti-0 pic z9(4).
03 jumlah-0pic 9(3).99.
procedure
division.
00-kawal.
perform 10-set-nilai-awal.
perform 20-baca. mesti tersusun
perform 30-proses until flag = ”t” à until = berlaku pergelungan
perform 40-jumlah-bayar
stop run.
10-set-nilai-awal.
move 0 to jumlah.
Move 0 to kuantiti.
Move “y” to flag.
20-baca.
display “nama buah”.
accept nama.
display “bil unit nak beli”.
accept “kuantiti”.
display “harga seunit”.
accept harga.
30-proses.
Perform 31-kira.
Perform 32-tambah.
Perform 33-pamer.
Display “nak beli lagi y/t”.
Accept flag.
If flag = “y”
Perform
20-baca
End-if.
31-kira.
Multiply kuantiti by harga
giving bayar.
32-tambah.
Add 1 to jumlah.
Add 1 to kuantiti.
33-pamer.
move bayar to bayar-0.
display “buah dibeli: ” nama.
Display “bayaran RM: ” bayar-0.
40-jumlah-bayar.
Move jumlah to jumlah-0.
Display “bayaran keseluruhan RM”
jumlah-0.
Identification
division
Program-id.
Nama a/c (8aksara)
Author.
Komen.
Installation.
Komen.
Date-written.
Komen. *cth dd/mm/yy
Date-compile.
*komen à sebarang pernyataan boleh ditulis di sini
environment
division.
Configuration
section. *menyatakan perkakasan
Object-computer. *tempat run a/c
Input-output
section. *perisian/fail
File-control.
Select name fail logikal design assign to n.f. fizikal
*terdapat
5 section
file section. *perlu apabila input output section / format fail.
Working-storage section. ßpembolehubah
Linkage section. ß sub a/c.
Screen section. ß paparan
Report section. *arahan ini akan diserap ke
working-storage section di atas
Struktur data.
Data asas cth:
tarikh lahir. Mesti ada pic dan titik. Jika ada titik bermakna
| ada lagi sub fail
atau a/c
data gubahan à seperti 02
|
rekod à seperti 01 *berbeza antara nombor cth:
01 dengan 02.
|
fail à tidak ada nombor paras. Tetapi ada fd decryption cth:
fd finfut.
1.
data asas: struktur data
yang tidak boleh dipecahkan lagi. Cth: gred, jantina.
2.
Data gubahan, gabungan
data-data asas. Cth: tarikh lahir. hh, bb, tt.
3.
Rekod gabungan data
gubahan dan data asas. Cth: rekod
pelajar.
4.
Fail gabungan
rekod-rekod. Cth: fail pelajar
File section.à select fail finfut..seperti (Select name fail logikal desingn assingn to
n.f. fizikal)
Fd. Finput. à seperti pelajar. (gabungan rekod membentuk pail)
01. rekod-pelajar.
02. nama pic x(40).
02. alamat pic x(50).
02. markah pic 9(3). à 93bit.
77
bil pic 9(3) value 0. à “0” boleh diisi nombor lain
77
flag pic. X value “Y”
78 nom. Value 10. à nom. Ialah pemalar. Untuk memperkenalkan literal yg
ada nama cth: (define/include).
01. ws-inp.
02….
02….
Pembinaan format campuran (working storage section).
Working storage section
77…
77…
78…
01. ws-inp.
:
:
:
01 T1.
02 filler pic x(30).
02. fil
pic x(12 )value
“syarikat ABC”.
01. T2.
02 fil pic x (15) value spaces.
02 fil pic x (20)
value “senarai nama pelanggan”.
02 fil pic x (10) value spaces.
02
Tarikh-system pic 99/99/99.
01.
T3.
02 fil pic x (3) value “bil”
02 fil pic x (4) value
spaces.
02 fil pic x (4) value “nama”.
02 fil pic x
(36) value spaces,
02 fil pic x (5) value “hutang”.
01. T4.
02 fil pic x
(50) value all “-“
01. data-pelajar.
02
bil-0 pic 99.
02 fil pic x (4) value spaces.
02
nama-0 pic x(40) spaces.
02 hutang-0 pic 9(4).99.
01.
T5. *berada satu baris dalam
baris yang sama
02 fil pic x(9) value “jumlah RM”.
02 jumlah-0 pic 9(5).99.
Masalah mempamirkan slip gaji.
-
apabila dimasukkan nama
-
gaji keluar dan potongan
-
dia akhir a/c pamerkan
-
bilangan pekerja
dimasukkan
input, nama, gaji, potongan
output
slip
gaji nama x(40) gaji bersih RM 9(4).99.
Pembolehubah
2.
gaji
3.
potongan
4.
gaji bersih
5.
flag
6.
bilangan pekerja
|
Kawal |
|
||||||||||||||||||
|
|
|||||||||||||||||||
|
|
|
|
|
||||||||||||||||
Set nilai awal |
|
Baca input |
|
Proses |
|
|||||||||||||||
|
|
|||||||||||||||||||
|
|
|
|
|
||||||||||||||||
Jumlah pekerja |
|
Kira gaji bersih |
|
Pamer gaji |
|
Input seterusnya |
||||||||||||||
Environment division.
Configuration section.
Source-computer. SALPC.
Objek-computer. SALPC.
Working-storage section.
01 ws-input.
02 Nama pic x(40)
02 gaji-kasar pic 9(4)v99.
02 Potongan pic 9(4)v99.
02
gaji-bersih pic 9(4)v99.
02 Flag pic x.
02
Bil-pekerja pic 9(3).
01 ws-out.
02 gaji-bersih-0 pic z(3)9.99.
02 bil-pekerja-0 pic zz9.
01 kawal.
Perform 10-set-nilai-awal.
Perform 20-baca.
Perform 30-proses until flag = “T”.
Perform 40-ringkasan.
Stop run.
10-set-nilai-awal.
Move 0 to bil-pekerja.
Move “Y” to flag.
20-baca.
Display “nama pekerja”.
Accept nama.
Display “gaji kasar”.
Accept gaji-kasar.
Display “jumlah potongan”.
Accept potongan.
30-proses.
Perform 31-tambah.
Perform 32-kira.
Perform 33-pamer.
Display “ada input lagi Y/T:”.
Accept flag.
If flag =
“Y”
Perform 20-baca
End-if.
31-tambah.
Add 1 to bil-pekerja.
32-kira.
subtract potongan from gaji-kasar giving gaji-bersih.
33-pamer.
Move gaji-bersih to gaji-bersih-0.
Display “
”.
Display “slip gaji”.
Display “…….”.
Display “nama pekerja”. Nama.
Display “gaji bersih RM:” gaji-bersih-0.
40-ringkasan.
Move bil-pekerja to bil-pekerja-0.
Display “jumlah pekerja dimasukkan:”. Bil-pekerja-0.
Bab 6.
Procedure Division.
è Keunikan item data.
è Penggunaan in atau of.
Contoh:
01 ws-rec1.
02 nama pic x(40).
02 gaji pic 9(4)v99.
02 noic pic x(12)
01
ws rec2.
02 nama pic x(40).
02 gaji pic 9(4)v99.
02 noic pic x(12).
·
contoh diatas akan
menyebabkab berlakunya perhubugan dianta rec1 dan rec2.
·
Luas kumpulan 40+6+12 =
58
è Didalam procedure division untuk membezakan nama medan yg sama adalah:
contoh:
add gaji of ws-rec1 to jum.
:
:
add gaji of ws-rec2 to total.
Move nama of ws-rec1 to
name-0.
à pemindahan data storan denan arahan move.
i)
move mudah.
Move nokp to noic.
Move bil to bil-0.
ii)
move dengan projek
(ada in/of) atau nama yang sama.
Move nama of ws-rec1 to nama
of ws-rec2.
Move gaji of ws-rec2 to
gaji-0.
iii)
move paras kumpulan
(data gubahan)
contoh:
01 rec-2.
:
:
:
02-data-1. à 9 bait.
03 a pic x(5) value “cukai”.
03 b pic x(4) value “lalu”.
02-data-2 à 6 bait.
03
c pic xx.
03 d pic x(x).
:
:
:
move
data –1 to data-2.
:
:
move
ws-rec1 to ws-rec2. à dalam baris ini rec-1 kan di move ke rec-2 semua
sekali.
*contoh
soalan.
Pakah
nilai c sekarang?
Nilai
c ialah menjadi cu apabila nilai a digabung dengan nilai contohnya nilai a dan
b 9 bait cukailalu di gabung menjadi 6 bait, cara membacanya ialah dari kiri ke
kanan menyebabkan beberapa huruf terpadam hingga menjadi cukail. : x(5) àmoveà xx.
iv)
move to berhubungan
yang terlibat dengan item yang nama sama
sahaja.
Contoh:
Move crr ws-rec-1 to rec-2. *crr ialah corresponding
Move nokp to noic.
Arahan
input-output.
à perbuatan cobol input/output.
1.
Open
2.
Close
3.
Read
4.
Write
5.
Accept
6.
display
·
1 hingga 4 adalah fail.
i)
open move nama fail.
Mode: input-baca à read only.
Ouput-tulis à write sahaja rec. pertama.
i-o –kemaskini à rewrite
extand-tambah à write last record.
Contoh: open input fdata.
Open output ftulis.
ii)
close nama fail.
Contoh: close fdata, ftulis.
iii)
read nama fail.
Read at end arahan
Contoh: read f pelajar
Read fdata at end move “T” to flag.
iv)
write nama record
write
nama record from ws-storage after advareng n lines *n ialah two.
Write
nama record from ws-storage before advereng n lines.
*nama
di ambil daripada ws-storage.
Contoh:
Write fil tulis-rec from
tajuk-1 after page.
Write fil tulis-rec from
tajuk-2 after 2.
Write fil tulis-rec from
tajuk-3 after 1.
Write fil tulis-rec from tajuk-4
after 3.
Write fil tulis-rec from
tajuk-5 after 2.
v)
accept nama pembolehubah
accept
pembolehubah from time
accept
pembolehubah from date.
Accept nama line 10 position 12.
·
jika ada soalan betanya
interaktif ialah accept dan display.
vi)
display pembolehubah
disply
‘literal’
disply
‘literal’ + pembolehubah.
* Contoh pembolehubah
5 x 2 = 10.
Syarikat ABC Lompat1
( Lompat2
( senarai pelanggan 2x
1x
( nama gaji potongan
pelajar ( ( 3x ( ( ( 3x ( tulis 5.
= n1 x n2 = n3.
Display n1 ‘x’ 02 = n3.
Contoh soalan:
Sediakan aturcara cobol bagi
menulis fail dimana input yang terlibat adalah nama, nokp dan markah, diakhir
carian paparan bil pelajar yang dimasukkan
Anilisis:
Input nama x(30)
Nokp x(12)
Markah x 9(3)
Output = fpelajar.dat.
Rajah hirarki:
Arahan Aritmatik data.
Hanya dapat dilaksanakan pada
item berjenis pic ‘9.v’ dan ‘s’ sahaja, aperasi yang ada ialah;
1.
ADD
Add 1 to i. à i=i+1.
Add x,y giving z . à z=z+x.
Add bil to jumlah . à jumlah=jumlah + bil
*operan = a, b, c manakala
operasi ialah * + / dan lain-lain.
01 ws-rec. à contoh nombor 23.65
03 m1
pin 99v99. M1= 23.61
03
m2 pic 99.v99. m2= +11.23
02
m3 pic 99v9 m3= 34.88 à yang terhasil pada m3 = 34.8.
*jika
9(3)v9(3). à 034.880.
add
m1,m2 giving m3. à 34.8
add
m1,m2 giving m3 rounded. à 34.9
add
m1, m2 giving m3 or size error
display “berkalu ralat saiz”. à jika tidak cukup saiz
2.
subtract.
Subtract
x from y . à y=y-x
Subtract
i from j giving k . à k=j-i
Subtract
i, j from k giving w. à w=k-y-x.
3.
multiply.
Multiply
x by y. à y=y*x.
Multiply
x by y giving k. à k=y*x.
4.
divide.
Divide
a into b. à b=b/a.
Divide
a into b giving c. à c=b/a.
Divide
a by b giving c. à c=a/b.
01
ws-rec2.
02 n1 pic 9 value 4.
02 n2 pic 99 value 22. à 22 / 4 = 5.4
03 jawapan pic 99v99. à 05.40 *jawapan pembahagian di atas.
03 beli pic 99.
Divide n1 into n2 giving jawapan reminder beli.
·
remind à adalah modulus, à jawapan=n2/n1 = 4/22 =05.40
5.
compute.
Menggabungkan
semua operasi. à +, -, *, / dan **.
Paras keutamaan operasi.
i. () à menunjukkan keutamaan.
ii. ** à gandaan
iii. * /
1v. + -
contoh : dalam ungkapan
algebra
k = (y2 + x)2
+ z
(x-y)2
Penentuan saiz bagi hasil.
Jika saiz.
X= 9(3)v9(3).
Y= 9(4)v9(3).
Z= 9(3)v9(5)
Maka = ?
· diantara x,y dan z pilih k yang paling sesuai. Iaitu yang paling besar nilainya. Oleh itu 9(4)v9(5). Supaya x dipangkas.
Contoh
kaedah pertukaran.:
Compute
k= ((y**2 + x) **3 + z) / ( x-y) **z
Jika:
K = m3
– j
x2-1
à compute k = ((m**3-j)
**0.5)/(x**2-1)
y =
x=x3 à
x**0.5.
k=(a+b)2
– j/4
à compute k= (a=b) **2 – (j/4)
Arahan
kawal aturcara.
Menggunakan arahan perform.
Perform membolehkan a/c berpindah sementara ke modul yang ingin dilaksanakan dan kemudian kembali semak kepada arahan berikutnya.
Jenis-jenis perform.
1. perform mudah.
Perform perenggan.
Contohnya: perform
10-set-nilai-awal.
Perform
20-tulis tajuk.
2.
perform
dengan times.
Perform perenggan n times.
Contohnya: perform
30-baca 100 times.
3.
perform
dengan thorough (thru)
arahan ini akan melaksanakan perenggan-1 hingga
perenggan-n dan perenggan antaranya.
Contohnya: perform 10-set-nilai-awal thru 40-baca
10-setnilai awal
20-buka-fail.
30-tulis-tajuk.
40-baca
4.
perform
dengan until.
Perform perenggan until syarat à with test before/ with test
after.
Perform 60-proses until bil>100 with test before[1]
5.
perform
blok.
Melaksanakan sebahagian perenggan dan dibuatkan
dengan end-perform. *sebahagian perenggan.
Contoh : 40-proses
Perform
41-semak.
Perform
42-kira
Move
1 to bil
Perform untuk bil[2]>50
Display
…..
:
add
1 to bil.
End
1 to bil.
End-perform. à hanya block sahaja ada end
perform.
Perform
43-tulis.
Penyatuan
if (keputusan)
1.
if
mudah
if syarat
p1
end-if.
2.
if
lengkap
if syarat
p1
else
p2
end-if.
3.
if
tersarang.
If s1
P1
Else if s2
P2
Else if s3
P3
Else
P4.
Arahan case
1. evaluate
x à seperti switch dalam c.
when 10
perform
p1
when 20
perform
p2
when other
perform
p3
end-evaluate.
2.
evaluate markah
when
80 thru 100
move
‘A’ to grade
when
70 thru 79
move
‘B’ to grade
when
50 thru 65
move
‘C’ to grade
when
40 to 49
move
‘D’ to grade
when
other
move
‘E’ to grade
end-evaluate.
Pelaksanaan
Jadual (table handling) à dalam c array /tatasusunan.
Objektif aturcara ini à supaya
tidak perlu banyak mengulangi input.
Diperlukan
apabila terdapat koleksi data mempunyai nama dan jenis data yang sama.
Menggunakan arahan ACCURS dan dinyatakan pada item paras 02 - 49.
Contoh:
01
jualan.
02 no-id pic x(5)
02 jualan-bulan pic 9(4)v99
occurs 12 *disini terdapat 12 p/u.
01
ws-rec.
02 nama pic x(10).
02 bulan occurs 12.
03 salesman pic
x (10).
03 amt pic
9(4)v99.
02 alamat pic x(40).
Dalam
prosedure division.
If
jualan bulan (I) > 50 *pengguanna
bahagian ini sama dengan gelung for.
Add jualan-bulan(I) to jum-A for (I=1; I<100; I++)
Else
Add jualan-bulan (I) to jum-B
End-if.
Contoh masalah
Selesaikan
a/c cobol bagi menerima sebanyak 100 rekod pelajar yang mengandungi nama dan
markah tm003. Kira purata markah dan dapatkan bilangan pelajar. Markahnya >=
purata dan bilangan pelajar markahnya < purata. Pamerkan purata, bil>=
purata dan bil < daripada purata.
Carta alir
00kawal
10-set-nilai-awal 20-baca 100 input 30-kira 40-proses 50-pamer
dan
jumlahkan purata
semak
>=purata / <purata.
Analisis
Nama
Markah
Pemboleh
ubah.
Jumlah-markah
Purata
Bil-lebih
Bil-kurangan
:
:
Output.
Hasil
Purata
Bil-lebih-purata.
Nil-kurang-purata.
Subaturcara.
Adalah
satu program yang dikawal dan dilaksanakan oleh satu program lain(utama).
Sifat
subaturcara.
Mengandungi.
1.
lingkage
section.
2.
Procedure
division using parameter1
3.
Exit
program.
Sifat
aturcara utama.
1.
call
“program id subaturcara” using parameter2 *berkongsi maklumat antara paremeter1dan 2(selepas exit
program).
2.
Stop
run.
A/C
main
|
| ß lingkage section.
|
sub
A/C
Contoh
soalan mei 99;
Tuliskan satu a/c cobol yang
mengira gaji kasar setiap pekerja. Input mengandungi no.id pekerja, kadar
bayaran sejam dan bilangan jam bekerja. Pekerja akan dibayar 1.5 kali ganda
bagi jam bekerja melebihi 40 jam. Ouputkan maklumat input dan gaji kasar. A/c
berupaya menerima bilangan pekerja tidak melebihi 30 orang.
Analisis.
Input.
Id pekerja
Kadar
bayaran
Bil-jam.
Output.
Gaji-kasar.
Maklumat
input.
Formula/kiraan.
Kes>40
jam gaji-kasar = 40 *kadar + (bil-sejam-40) * kadar * 1.5.
Kes <=40
jam gaji-kasar = bil-jam * kadar.
Pembolehubah.
Input
Output
Flag
Bil-pekerja.
Rrajah
hirarki.
00kawal
10-set-nilai baca proses.
Awal.
Tambahpekerja semak
kadar dan pamer hasil input seterusnya.
Kira
gaji-kasar