so…bukan karena saya eager dan extra tidak sabar, namun saya lebih curious kenapa COBOL bisa menjadi sebuah momok. dan terutama tentu saja pertanyaan.
“kenapa semua mainframe masih menggunakan COBOL?”
there are lot of language yang bisa di deploy kesana toh? kenapa harus memilih COBOL? so I decided to try it, sebelum saya benar-benar merasakan the real sensation nanti di BNI.
halangan yang pertama datang dari Compiler COBOL sendiri, which is ketika saya googling banyak sekali di provided oleh Fujitsu dan sekarang sudah berganti menjadi Alchemy software, dan salah satu yang terkenal adalah Net COBOL…which is integrated COBOL dengan .NET technology! wew…such an interesting idea, namun sayang…saya bingung ketika menginstall-nya.
entah karena tingkat kedodolan tahap tinggi dari saya yang tidak mengerti COBOL, atau memang COBOL such a difficult things!
jadi akhirnya pilihan saya jatuh kepada yang pertama yaitu Open Cobol! dan untuk menginstallnya mau tidak mau saya harus menginstall CygWin untuk melakukan emulasi shell Linux pada Windows. and after several tries, akhirnya si COBOL bisa sukses di install! yay!
lalu saya pun mencari-cari referensi dan buku yang bisa saya jadikan pegangan, misalnya 24 Hours Learn COBOL dari SAMS Publishing, which is you could get about 2 bucks! dalam keadaan yang cukup bagus pada bursa buku bekas di Amazon! nice deal right?
namun saya lebih memilih Internet Resource saat ini, jadi saya pun mencari-cari site yang bisa membantu saya, dan saya mendapatkan tutorial COBOL dari situs University of Limerick. quite good actually, dan setidaknya ini bisa memberikan anda pemahaman dasar terhadap COBOL.
dan berbekal hal-hal itu, akhirnya saya coba untuk memulai membuat sebuah aplikasi sederhana menggunakan COBOL, dan pilihan saya jatuh kepada Kalkulator.
okay…pertama-tama yang harus di ketahui mengenai COBOL adalah, COBOL di bagi menjadi 4 bagian penting, yaitu:
- Identification
- Environment
- Data
- Procedure
setiap bagian (divisi) memiliki sub-divisi masing-masing, misalnya pada bagian Identification maka akan ada sub divisi yaitu : Program-Id, dan Author. bingung? oke…I’ll give some example, then:
IDENTIFICATION DIVISION.
PROGRAM-ID. test1.
AUTHOR. I Gede Adi Martha AP.
selain itu ada banyak attributes lain yang bisa di tambah di dalamnya.
setelah itu ada Environment (which is umumnya digunakan untuk menjelaskan source target dari aplikasi ini ketika selesai di compile, dll. dan biasanya saya biarkan bagian ini kosong melompong!)
lalu ada Data, yang digunakan untuk sumber data. baik yang berasal dari File (file section), ataupun Variable (working storage section) didalam memory.
lalu ada Procedure yang merupakan main logic dari setiap aplikasi COBOL. the best things is, there’s no “main” function yang pasti di jalankan setiap program dijalankan. karena semua user-defined function yang di taruh tepat di bawah procedure section, secara default menjadi fungsi yang paling pertama di jalankan.
oke…enough for the theory. jadi saya pun coding dan ternyata saya mendapatkan ERROR!! bukan permulaan yang baik memang, ketika kita baru pertama kali memegang bahasa pemrograman yang baru. namun error yang satu ini benar-benar membuat saya curious dan bingung, karena code yang saya buat tidak memiliki kesalahan secara tidak langsung. namun ketika saya baca-baca kembali, ternyata oh ternyata.
“count of space…adalah matter di dalam COBOL!!!”
yap…jangan heran, karena ketika saya mulai coding saya menggunakan tab untuk membuatnya terlihat rapi. namun ternyata yang digunakan adalah SPASI, dan yang terpenting adalah…setiap divisi harus di mulai dari kolom nomr 7! jangan coba-coba untuk mulai dari kolom 8, apalagi kolom 6! it must be 7!
hal ini membuat saya berpikir…
“COBOL isn’t tough…it just WEIRD!”
yap…akhirnya dengan sedikit adjustment pada kepala saya, dan style of code saya. akhirnya saya bisa menyelesaikan aplikasi kalkulator dan setelah some trial and error, finally it finish. walaupun tidak bagus, tidak sempurna…but I’m quite proud of it!
…
so here’s the screen shoot.

Cobol - Compiling and Running

Cobol - Running The Application

Cobol - Running The Application - 2
and beside the WEIRD things…COBOL tetap sebuah BAHASA, dan yang paling penting adalah mengerti how to talk with that language, karena bukan bahasa-nya yang terpenting namun esensi yang ingin disampaikan oleh bahasa itu. dan dalam bahasa COBOL, esensinya adalah:
“I’m a weird language!”
oh iya…for some reason of narcistic. maka saya sediakan source nya…even it might be won’t help you at all, atau mungkin can give you a slightest idea about how to learn COBOL.
IDENTIFICATION DIVISION.
PROGRAM-ID. test1.
AUTHOR. I Gede Adi Martha AP.
environment division.
data division.
working-storage section.
01 num1 pic 9(9).
01 num2 pic 9(9).
01 result pic 9(10).
01 opt pic x.
88 optnow1 values "X".
88 optnow2 values "x".
01 d pic x.
Screen Section.
01 clrscr.
05 blank screen.
01 ScrName.
05 Column 10
Line 3
Value "Cobol Calculator v.1.0".
05 column 10
line plus 1
value "----------------------".
05 column 10
line plus 1
value "Pilih opsi:".
05 column 10
line plus 1
value "+ -> tambah".
05 column 10
line plus 1
value "- -> minus".
05 column 10
line plus 1
value "X -> exit".
05 column 10
line plus 1
value "Insert Your Choice : ".
05 column plus 2
pic x
using opt.
01 InputChar1.
05 column 10
line 3
value "Masukan Nomor 1 : ".
05 column plus 2
pic 9(9)
using num1.
01 InputChar2.
05 column 10
line 5
value "Masukan Nomor 2 : ".
05 column plus 2
pic 9(9)
using num2.
01 DisplayResult.
05 column 10
line 8.
procedure division.
mainline.
perform until optnow1 or optnow2
display clrscr
display ScrName
accept ScrName
if(opt = "+" or opt = "-") then
display clrscr
display InputChar1
accept InputChar1
display InputChar2
accept InputChar2
if(opt = "+") then
compute result = num1 + num2
else
compute result = num1 - num2
end-if
display DisplayResult
display "Hasil dari " num1 " " opt " " num2 " = " result
accept D
end-if
end-perform
stop run.
End Program test1.
that’s all folks!
…
IDENTIFICATION DIVISION.
PROGRAM-ID. test1.
AUTHOR. I Gede Adi Martha AP.
environment division.
data division.
working-storage section.
01 num1 pic 9(9).
01 num2 pic 9(9).
01 result pic 9(10).
01 opt pic x.
88 optnow1 values “X”.
88 optnow2 values “x”.
01 d pic x.
Screen Section.
01 clrscr.
05 blank screen.
01 ScrName.
05 Column 10
Line 3
Value “Cobol Calculator v.1.0″.
05 column 10
line plus 1
value “———————-”.
05 column 10
line plus 1
value “Pilih opsi:”.
05 column 10
line plus 1
value “+ -> tambah”.
05 column 10
line plus 1
value “- -> minus”.
05 column 10
line plus 1
value “X -> exit”.
05 column 10
line plus 1
value “Insert Your Choice : “.
05 column plus 2
pic x
using opt.
01 InputChar1.
05 column 10
line 3
value “Masukan Nomor 1 : “.
05 column plus 2
pic 9(9)
using num1.
01 InputChar2.
05 column 10
line 5
value “Masukan Nomor 2 : “.
05 column plus 2
pic 9(9)
using num2.
01 DisplayResult.
05 column 10
line 8.
procedure division.
mainline.
perform until optnow1 or optnow2
display clrscr
display ScrName
accept ScrName
if(opt = “+” or opt = “-”) then
display clrscr
display InputChar1
accept InputChar1
display InputChar2
accept InputChar2
if(opt = “+”) then
compute result = num1 + num2
else
compute result = num1 – num2
end-if
display DisplayResult
display “Hasil dari ” num1 ” ” opt ” ” num2 ” = ” result
accept D
end-if
end-perform
stop run.
End Program test1.