Keterangan :
tanda [ ] bentuk yg ada diantara tanda tsb bersifat optional.
huruf kecil mrp nama yg dibentuk oleh programmer.
* IDENTIFICATION DIVISION *
Identification division mrp divisi yg pertama dari COBOL & yg paling sederhana.
Divisi ini tidak dibagi dalam beberapa section, tetapi langsung terdiri dari beberapa
paragraph. Untuk IDENTIFICATION DIVISION yang harus dituliskan adalah judul divisi
dan paragraf PROGRAM-ID. PROGRAM-ID menunjukkan identitas dari program.
Setiap program harus diberikan nama unik supaya dapat dibedakan dengan program
lainnya. Penulisan nama program yang dianggap unik hanya 6 karakter pertama,
selebihnya diabaikan (maksimal 30 karakter).
Bentuk umum :
IDENTIFICATION DIVISION.
PROGRAM-ID. nama-program.
[AUTHOR. nama-instalasi.]
[INSTALLATION. nama-instalasi.]
[DATE-WRITTEN. tanggal program dibuat.]
[DATE-COMPILED. tanggal program dikompilasi.]
[SECURITY. sifat program.]
* ENVIRONMENT DIVISION *
Bentuk umum :
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
[SOURCE-COMPUTER. nama komputer.]
[OBJECT-COMPUTER. nama komputer.]
SPECIAL-NAMES.
PRINTER IS nama-mnemonik
CURRENCY SIGN IS literal
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
{ file-control entry }
* Divisi ini mempunyai 2 seksi (section), yaitu :
· CONFIGURATION SECTION
· INPUT-OUTPUT SECTION
I. CONFIGURATION SECTION.
Section ini menerangkan mengenai jenis-jenis komputer yg digunakan untuk
pembuatan, pengkompilasian & pemrosesan program.
CONFIGURATION SECTION terdiri dari paragraph-paragraph :
1. SOURCE-COMPUTER
Paragraph ini digunakan untuk menunjukkan nama komputer yg digunakan
untuk membuat & mengkompilasi program.
2. OBJECT-COMPUTER
Paragraph ini menunjukkan nama komputer yg digunakan untuk menjalankan
program yg telah dikompilasi.
3. SPECIAL-NAMES
Paragraph ini dibuat untuk menghubungkan nama-mnemonik implementer dg
nama mnemonik yg dibuat oleh programmer.
SPECIAL-NAMES dg clause-clause :
PRINTER IS clause
Digunakan untuk menghubungkan nama mnemonik yg dibuat oleh programmer
dg alat pencetak PRINTER, & digunakan pd statement DISPLAY yg
menggunakan UPON pd PROCEDURE DIVISION.
CURRENCY SIGN IS clause
Digunakan untukmenunjukkan tandamatauang selain yg telah ditetapkan dalam
COBOL.
DECIMAL-POINT IS COMMA clause
Digunakan untuk menuliskan titik desimal dalam bentuk karakter ‘ , ‘
II. INPUT-OUTPUT SECTION
Berisi paragraph FILE-CONTROL yg akan memberikan nama, serta menghubungkan
file-file yg digunakan sbg peralatan penyimpanan sekunder.
Bentuk umum :
INPUT-OUTPUT SECTION.
FILE-CONTROL.
{ file-control entry }
FILE-CONTROL entry dapat terdiri dari 3 bentuk, tergantung dari organisasi file yg
digunakan. Organisasi file dapat berupa:
· Sequential file
· Indexed file
· Relative file
Bentuk umum paragraph FILE-CONTROL untuk organisasi file secara :
1. SEQUENTIAL
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT nama-file ASSIGN TO { DISK / PRINTER }
ORGANIZATION IS [ LINE ] SEQUENTIAL
ACCES MODE IS SEQUENTIAL
FILE STATUS IS nama-data.
Keterangan :
SELECT
Digunakan untuk memberi nama tiap file yg akan dipakai oleh program.
ASSIGN clause
Digunakan untuk menunjukkan bentuk dari file yg akan digunakan.
Dapat berupa disk-file (data direkam dan dibaca dari file yg ada di disk ) atau print-
file ( data dicetak pada printer ).
ORGANIZATION IS [LINE] SEQUENTIAL
Bila organisasi file tidak disebutkan, maka organisasinya dianggap sequential
(ORGANIZATION IS SEQOENTIAL ) dan clause ACCES MODE IS SEQUENTIAL
boleh tidak disebutkan.
FILE STATUS clause
Digunakan untuk menunjukkan kesalahan yg terjadi dari suatu proses operasi file.
II. INDEXED
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT nama-file ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCES MODE IS { SEQUENTIAL / RANDOM / DYNAMIC }
RECORD KEY IS nama-data-1
FILE STATUS IS nama-data-2.
Keterangan :
Untuk file indexed, organisasinya harus disebutkan yaitu ORGANIZATION IS
INDEXED.
ACCES MODE
File yg diorganisasikan secara indeks dapat diakses secara :
· SEQUENTIAL urut dari record kecil ke besar berdasarkan field kunci.
· RANDOM record file tidak urut, pengaksesan record diatur oleh
programmer.
· DYNAMIC file dapat digunakan bergantian secara random ataupun
sequential
RECORD KEY clause
Menunjukkan nama data yg digunakan sbg field kunci, dapat berupa goup data item
ataupun elementary data item yg berbentuk alphanumerik.
FILE STATUS clause
Digunakan untuk menunjukkan jenis kesalahan yg terjadi dari hasil proses operasi file.
III. RELATIVE
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT nama-file ASSIGN TO DISK
ORGANIZATION IS RELATIVE
ACCES MODE IS SEQUENTIAL [ , RELATIVE KEY IS nama-data-1]
{RANDOM/DYNAMIC}, RELATIVE KEY IS nama-data-1
[ FILE STATUS IS nama-data-2 ]
Keterangan :
RELATIVE KEY clause
Menunjukkan nama data yg digunakan sbg kunci relatif, yg sudah harus disebutkan
terlebih dahulu pd record description entry pd DATA DIVISION. Nama data ini dapat
berupa group data item atau elementary data item yg berbentuk numerik.
FILE STATUS clause
Digunakan untuk menunjukkan jenis kesalahan yg terjadi dari suatu hasil operasi file.
* DATA DIVISION *
Divisi ini menjelaskan tentang input & output data yg digunakan serta semua
keterangan ttg file, record, nama data serta bentuk format yg akan digunakan dalam
PROCEDURE DIVISION.
DATA DIVISION terdiri dari beberapa section :
¨ FILE SECTION
¨ WORKING-STORAGE SECTION
¨ LINKAGE SECTION
¨ REPORT SECTION
¨ SCREEN SECTION
I. FILE SECTION
Menerangkan tentang file yg dipakai dalam program, meliputi nama-file, cara
perekaman, jumlah record per block, jumlah karakter per record, label serta nama dari
record tersebut.
Bentuk umum :
DATA DIVISION.
FILE SECTION.
FD nama-file
[ BLOCK CONTAINS [ int1 TO int2 ] { CHARACTERS/RECORDS } ]
[ RECORD CONTAINS [ int1 TO int2 ] CHARACTERS ]
LABEL {RECORD IS/RECORDS ARE} {STANDARD/OMITTED}
[VALUE OF FILE-ID IS nama-file-di-label ]
[DATA {RECORD IS/RECORDS ARE} nama-rec1 [ , nama-rec2] ]
Keterangan :
BLOCK CONTAINS clause
Menunjukkan ukuran record dalam file untuk tiap blocknya. Clause ini biasanya
digunakan untuk file yg berupa tape magnetik, sifatnya optional. Bila tidak ditulis
maka dianggap setiap block berisi 1 record.
RECORD CONTAINS clause
Menunjukkan banyaknya karakter untuk tiap record dalam file. Jika clause ini
tidak ditulis, maka panjang record diambil dari record description entry. Jika
panjang record tetap, maka panjang record ini ditunjukkan oleh nilai dari int1.
VALUE OF FILE-ID clause
Berisi informasi mengenai file yg mempunyai label di disk. Label di disk ini
berupa nama-file yg berisi data yg direkam di dalam disk tsb.
LABEL RECORD atau LABEL RECORDS clause
Menunjukkan apakah file yg digunakan mempunyai label atau tidak.
OMMITED digunakan untuk card-file atau print-file
STANDARD digunakan untuk disk-file yg mempunyai label
Clause ini harus ditulis jika file Section ada.
DATA RECORD atau DATA RECORDS clause
Menunjukkan nama-record di dalam file, sifatnya optional.
II. WORKING-STORAGE SECTION
Section ini digunakan untuk pemesanan tempat di internal memori (storage) yg
diperlukan pd proses program. Pemesanan tempat ini biasanya digunakan untuk :
· Bentuk, nilai dan nama data yg diperlukan di dalam proses yg belum disebutkan pd
FILE-SECTION
· Persiapan penulisan judul. Format judul dipersiapkan terlebih dahulu pd WORKING-
STORAGE SECTION yg nantinya jika akan dicetak atau ditampilkan pd
PROCEDURE DIVISION menggunakan perintah WRITE atau DISPLAY.
· Pemesanan tempat untuk data output yg akan ditampilkan.
Bentuk umum :
WORKING-STORAGE SECTION.
[ 77 level data description entry ]
[ record description entry ]
Keterangan :
Þ Data item individu ditunjukkan oleh level number 77 (hanya ada pd WORKING-
STORAGE SECTION), penulisan mulai dari margin A.
Þ Group data item (yg membentuk suatu record) diawali dg level number 01
III. SCREEN SECTION
Section ini digunakan untuk menunjukkan bentuk format dari layar terminal untuk
menampilkan atau memasukkan data.
Bentuk umum :
SCREEN SECTION.
01 [ nama-layar ]
[ BLANK SCREEN ]
[ LINE NUMBER IS [ PLUS ] int1 ]
[ COLUMN NUMBER IS [ PLUS ] int2 ]
Keterangan :
BLANK SCREEN
Digunakan untuk membersihkan layar dan menempatkan cursor pd posisi kiri
atas ( baris1, kolom1 )
LINE NUMBER IS PLUS int1
Digunakan untuk menempatkan cursor pd posisi baris tertentu di layar.
COLUMN NUMBER IS PLUS int2
Digunakan untuk menempatkan cursor pd posisi kolom tertentu di layar.
* PROCEDURE DIVISION *
PROCEDURE DIVISION merupakan gambaran logika yg digunakan untuk
menyelesaikan masalah, sehingga divisi ini merupakan inti dari program COBOL.
Adapun statement yg sering digunakan pd divisi ini antara lain :
OPEN, READ, MOVE, WRITE, DISPLAY, ACCEPT, REWRITE, CLOSE, STOP
Bentuk umum :
PROCEDURE DIVISION.
[ buka-file ]
[ cetak-judul ]
[ alur proses ]
[ tutup file ]
OPEN verb
Digunakan untuk membuka file yg akan diakses.
Bentuk umum :
INPUT nama-file1 [ , nama-file2 ] ....
OUPUT nama-file3 [ , nama-file4 ] ....
OPEN I-O nama-file5 [ , nama-file6 ] ....
EXTEND nama-file7 [ , nama-file8 ] ....
Keterangan :
- OPEN INPUT
Menunjukkan file yg akan dibuka sbg file input, atau data yg akan dibaca ( READ )
dari file ini.
- OPEN OUTPUT
Menunjukkan file yg akan dibuka sbg file output atau data yg akan direkam
( WRITE ) pd file ini. Jika sudah ada data sebelumnya, maka data baru akan
direkam & data yg lama akan terhapus.
Jika akan menambahkan data ke file yg sudah berisi data, maka file harus dibuka
dengan OPEN EXTEND
- OPEN I-O
Menunjukkan file yg dibuka sebagai file-input dan juga sebagai file-output, yaitu
file yg dibuka untuk tujuan sbg input & output sekaligus dapat dibaca &
dimodifikasi.
READ verb
Digunakan untuk membaca record yg ada pd file.
Bentuk umum :
READ nama-file RECORD [ INTO nama-data ]
[ ; AT END statement imperatif ].
Keterangan :
- INTO option
Digunakan bila data record yg dibaca akan dipindahkan secara langsung ke
nama-data tertentu.
- AT END clause
Digunakan untuk mengetahui apakah data yg dibaca sudah habis.
contoh :
PROCEDURE DIVISION.
-----------------
-----------------
-----------------
BUKA-FILE.
OPEN INPUT NILAI.
BACA-DATA.
READ NILAI INTO NILAI1 AT END GO TO SELESAI.
TAMPILKAN.
DISPLAY NILAI.
GO TO BACA-DATA.
SELESAI.
CLOSE NILAI.
STOP RUN.
WRITE verb
Digunakan untuk menampilkan output ke printer atau merekam data ke file yg ditunjuk.
Bentuk umum :
WRITE nama-record [ FROM nama-data1 ]
BEFORE ADVANCING { nama-data2 / int } [ LINE ]
AFTER PAGE [ LINES ]
[ ; AT { END OF PAGE/EOP } statement imperatif ]
Keterangan :
- statement WRITE
Penulisan statement WRITE harus diikuti oleh nama-record dg level-number 01
pd FD di dalam DATA DIVISION yg dihubungkan dg suatu file yg dibuka.
Jika file yg dibuka berupa disk-file, maka statement WRITE berfungsi untuk
merekam data ke dalam file tersebut. Jika file yg dibuka berupa print-file, maka
data akan dicetak pd printer.
- BEFORE option
Menunjukkan banyaknya spasi baris pencetakan antara baris yg sedang dicetak
pd kertas printer dg baris pencetakan selanjutnya.
- AFTER option
Menunjukkan banyaknya spasi baris pencetakan yg digunakan oleh BEFORE
atau AFTER yg ditunjukkan oleh nilai integer atau nama-data2.
integer 0 tanpa spasi
integer 1 1 spasi baris
integer 2 2 spasi baris
integer 3 3 spasi baris
Jika BEFORE atau AFTER tidak digunakan, maka pencetakan diprinter akan
dianggap sebagai AFTER ADVANCING 1 LINES
- PAGE option
Digunakan bila data yg dicetak sebelum atau sesudah printer menempati posisi
pd halaman baru selanjutnya.
- END OF PAGE atau EOP phrase
Menunjukkan baris yg terakhir dalam 1 halaman pencetakan diprinter.
REWRITE verb
Digunakan untuk merekam ulang record yg sudah pernah direkam. Biasanya digunakan
untuk memodifikasi atau memperbaiki data. Record yg direkam ulang adl record
terakhir yg dibaca.
Bentuk umum :
REWRITE nama-record [ FROM nama-data ]
Keterangan :
· Pada waktu REWRITE dilaksanakan, maka file sudah harus dibuka sebagai input-
output file (OPEN I-O)
· Nama record setelah perintah REWRITE adl nama record yg sudah dijelaskan
dalam DATA DIVISION pd FILE SECTION
· Jika digunakan FROM, record akan direkam ulang dg nilai data yg ada pd nama
data setelah perintah FROM tersebut
DISPLAY verb
DISPLAY digunakan untuk menampilkan hasil di layar atau di printer.
Jika digunakan untuk menampilkan hasil di printer, maka pd ENVIRONMENT
DIVISION dalam SPECIAL- NAMES dituliskan clause PRINTER IS nama-mnemonik.
Bentuk umum :
1. DISPLAY nama-layar
2. DISPLAY { nama-data / literal } [ nama-data / literal ] ... [ UPON nama-mnemonik ]
Keterangan :
- nama-data
nama-data dari data-item yg telah disebutkan pd DATA DIVISION
- literal
bentuk yg akan ditampilkan
- UPON clause
digunakan bila uotput tidak ingin ditampilkan di layar, melainkan dicetak di printer.
contoh :
ENVIRONMENT DIVISION.
SPECIAL-NAMES.
PRINTER IS CETAK.
PROCEDURE DIVISION.
-------------
-------------
TAMPILAN.
DISPLAY ‘ Tampilan yang tercetak ‘ UPON CETAK.
ACCEPT verb
Digunakan untuk pemasukan data menggunakan keyboard (pada layar monitor) pada
saat program dijalankan.
Bentuk umum :
1. ACCEPT nama-data
(data yg dimasukkan akan ditempatkan pd nama data setelah ACCEPT )
contoh :
IDENTIFICATION DIVISION.
PROGRAM-ID. CONTOH.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 usia PIC 99 VALUE 0.
77 nama PIC X(20) VALUE SPACE.
PROCEDURE DIVISION.
INPUT-DATA.
DISPLAY ‘ Inputkan nama anda = ‘
ACCEPT nama.
DISPLAY ‘ Inputkan usia anda = ‘
ACCEPT usia.
SELESAI.
STOP RUN.
Bila program tersebut dijalankan :
Inputkan nama anda =
IRMA
Inputkan usia anda =
23
2. ACCEPT nama-layar [ ON ESCAPE statement-imperatif ]
· Digunakan untuk menerima & mengirim data menggunakan field yg disebutkan
pd nama-layar di SCREEN SECTION
· Jika tombol ESC (escape) ditekan sewaktu pemasukan data, maka pengerjaan
statementt ACCEPT ini akan berhenti dan statement-imperatif setelah ON
ESCAPE akan dijalankan
3. ACCEPT nama-data FROM { DATE / DAY / TIME / ESCAPE KEY }
- ACCEPT nama-data FROM DATE
Digunakan untuk memperoleh tanggal dari sistem saat program dijalankan. Nama-
data merupakan suatu field dg panjang 6 digit, dua digit pertama adalah tahun, dua
digit berikutnya berupa bulan & dua digit terakhir berisi tanggal.
- ACCEPT nama-data FROM DAY
Digunakan untuk mendapatkan tahun & posisi tanggal terhadap tahun saat program
dijalankan.
- ACCEPT nama-data FROM TIME
Digunakan untuk memperoleh tanggal sistem. Nama-data berupa suatu field dg
panjang 8 digit dg format JJMMDDSS.
JJ = jam (2 digit) MM = menit (2 digit)
DD = detik (2 digit) SS = Seperseratus detik (2digit)
- ACCEPT nama-data FROM ESCAPE KEY
Digunakan untuk memperoleh kode dari tombol yg mengakhiri pernyataan ACCEPT
MOVE verb
Digunakan untuk memindahkan data dari satu field ke field yg lain, sehingga input data
dapat dimanipulasi untuk menghasilkan output.
Bentuk umum :
1. MOVE { nama-data1 / literal } TO nama-data2 [ , nama-data3 ]
contoh : ( pd DATA DIVISION)
01 KIRIM.
02 UNIT PIC 9(3).
02 HARGA PIC 9(5).
01 TERIMA.
02 UNIT-OUT PIC 9(3).
02 HARGA-OUT PIC 9(7).
Pada PROCEDURE DIVISION :
MOVE UNIT TO UNIT-OUT
Maka nilai data dari field UNIT akan dipindahkan ke field UNIT-OUT
2. MOVE CORRESPONDING nama-data1 TO nama-data2
Digunakan untuk memindahkan data dari group data-item ke group lain.
Contoh :
01 RECORD-1.
02 AA PIC 99.
02 BB PIC XXX.
02 CC PIC 99.
01 RECORD-2.
02 AA PIC 99.
02 FILLER PIC X(5).
02 BB PIC XXX.
02 DD PIC 99.
MOVE CORRESPONDING RECORD-1 TO RECORD-2.
Statement MOVE CORRESPONDING tersebut akan memindahkan group data item
RECORD-1 ke group data item RECORD-2 yg mempunyai nama data yg sama.
Dalam pemindahan data dari sati field ke field yg lainnya perlu diperhatikan bagaimana
data tersebut diorganisasikan dari field pengirim ke field penerima.
CLOSE verb
Setelah operasi file selesai, maka semua file yg digunakan atau file yg masih terbuka
harus ditutup kembali guna mencegah rusaknya struktur dari file.
Bentuk umum :
CLOSE nama-file1 [ WITH LOCK ][ , nama-file2 [ WITH LOCK ] ]
LOCK digunakan bila file yg sudah ditutup tidak dapat dibuka pd saat proses
berlangsung, tetapi bila proses sudah dihentikan dan program dijalankan lagi file dapat
dibuka kembali.
STOP verb
Digunakan untuk menghentikan program baik secara permanen maupun sementara
saja.
Bentuk umum :
STOP { RUN / literal }
Keterangan :
- STOP RUN
Akan menyebabkan proses program berhenti secara permanen
- STOP literal
Menyebabkan proses program berhenti sementara, kemudian literal akan
ditampilkan pd layar, untuk melanjutkan program dapat dilakukan dg menekan
sembarang kunci.
contoh :
DATA DIVISION.
WORKING-STORAGE SECTION.
77 BATAS PIC 99 VALUE 0.
PROCEDURE DIVISION.
PERIKSA.
ADD 1 TO BATAS.
IF BATAS = 3 GO TO SELESAI.
ELSE DISPLAY ‘ Tampilan ’, BATAS.
ULANG-PROSES.
STOP ‘ Tekan sembarang tombol ... ‘.
GO TO PERIKSA.
SELESAI.
STOP RUN.