PROCEDURE DIVISION (lanjutan)
Statement PERFORM ...THROUGH/THRU
Bentuk statement ini akan membawa proses menuju ke paragraf yang dituju kemudian
melanjutkan sampai ke paragraf yang disebutkan setelah THROUGH/THRU.
Misal :
PAR-A
PERFORM PAR-D THRU PAR-E.
PAR-B.
....
PAR-C.
....
PAR-D.
....
PAR-E.
....
CONDITIONAL STATEMENT
Perintah kondisi dipergunakan untuk menyeleksi suatu kondisi. Perbedaan conditional
statement dengan imperative statement yang sering dijumpai adalah :
Conditional statement adalah suatu statement yang dipergunakan untuk menyeleksi
suatu kondisi/syarat dan akan mengerjakan suatu operasi tergantung dari nilai
kondisinya
Imperative statement adalah statement yang langsung mengerjakan operasi tanpa ada
penyeleksian suatu kondisi.
Seluruh perintah kondisi dalam COBOL diawali dengan IF Verb. Ada beberapa jenis perintah
kondisi dalam COBOL.
Kondisi sederhana (Simple condition)
Kondisi tanda (Sign condition)
Kondisi kelas (class condition)
Kondisi bersarang (Nested condition)
Kondisi kompleks/jamak (Complex condition/Compound condition)
KONDISI SEDERHANA
Perintah ini digunakan untuk menyeleksi kondisi tunggal, yaitu membandingkan suatu
hubungan antara 2 item yang ditunjukkan oleh tanda operasi (Operational operator). Relatiional
operator dalam COBOL yaitu :
TANDA DALAM KATA
< LESS THAN
> GREATER THAN
= EQUAL TO
NOT< NOT LESS THAN
NOT > NOT GREATER THAN
NOT= NOT EQUAL TO
Bentuk umum :
IF IMPERATIVE
STATEMENT
KONDISI TANDA
Perintah ini digunakan untuk menentukan apakah suatu data/perumusan ekspresi aritmatika
mempunyia nilai sama dengan nol, positif, atau negative. Bentuk umum :
IF IS [NOT] IMPERATIVE
STATEMENT
KONDISI KELAS
Perintah ini memungkinkan untuk penyeleksian apakah isi suatu field termasuk kelas
numerik atau alphabetik. Bentuk umum :
IF Nama-Data IS [NOT] IMPERATIVE STATEMENT
KONDISI BERCABANG
Perintah ini memungkinkan untuk penyeleksian bercabang, bila kondisi terpenuhi maka
akan menjalankan blok statement-1 dan bila tidak terpenuhi akan menjalankan next statement
setelah ELSE. Bentuk umum :
IF kondisi
KONDISI DARI NAMA-KONDISI
Suatu nama kondisi dimulai dengan level number 88 (harus dideklarasikan pada DATA
DIVISION). Pada PROCEDURE DIVISION, statement kondisi dari nama-kondisi adalah suatu
statement kondisi yang menyeleksi isi dari nilai data yang di kandung oleh nama-kondisi
tersebut. Misal :
Pada DATA DIVISION tertulis
01 Mutu PIC 9.
88 Mutu-Rendah VALUE 3.
88 Mutu-Sedang VALUE 2.
88 Mutu-Tinggi VALUE 1.
Maka pada PROCEDURE DIVISION penyeleksian kondisi akan :
IF Mutu-Rendah
PERFORM Kelompok-Rendah.
IF Mutu-Sedang
PERFORM Kelompok-Sedang.
IF Mutu-Tinggi
PERFORM Kelompok-Tinggi..
AP3/TI/Ayuliana/2009 2
Nama-data-1
Literal-1
Ungkapan-aritmatika-1
IS [NOT] <
IS [NOT] =
IS [NOT] >
Nama-data-2
Literal-2
Ungkapan-aritmatika-2
Nama-data-1
Ungkapan-aritmatika-1
POSITIVE
NEGATIVE
ZERO
NUMERIC
ALPHABETIC
Statement-1
NEXT SENTENCE
ELSE statement-2
ELSE NEXT SENTENCE
KONDISI JAMAK
Kondisi jamak (compound conditions) adalah kondisi yang mempunyai lebih dari 1
kondisi, merupakan gabungan dari kondisi tunggal/ sederhana dengan penggunaan operator
logika OR, AND, atau NOT.
OCCURS Clause
Digunakan untuk tujuan mengulang data item didalam record beberapa kali, yang akan
membentuk table. Bentuk Umum :
[; OCCURS integer TIMES.
OCCURS Clause tidak boleh digunakan pada level number 01 atau 77. Digunakan pada
FILE SECTION, WORKING-STORAGE SECTION, atau LINKAGE SECTION.
Integer TIMES, menunjukkan berapa kali data-item akan diulang dalam suatu record
ASENDING atau DECENDING, menunjukkan bagaimana data tersebut diatur tergantung
dari nilainya
KEY IS dan INDEXED BY, menunjukkan nama kunci yang dipergunakan untuk statemenr
SEARCH.
TABEL DIMENSI SATU
Mempunyai nilai-nilai data yang bertipe sama berbentuk array. Misal :
01 TABEL-GAJI.
02 GAJI OCCURS 5 TIMES PIC 9(5)V99.
Maka akan terbentuk table dimensi satu yang bila di ilustrasikan
TABEL-GAJI
GAJI(1) GAJI(2) GAJI(3) GAJI(4) GAJI(5)
TABEL DIMENSI DUA
Merupakan sekumpulan data yang membentuk tabel, yang elemen masing-masing data
ditunjukkan oleh dua buah subscipt. Misal :
01 TABEL-PENJUALAN.
02 SALESMAN OCCURS 3 TIMES.
03 BULAN OCCURS 3 TIMES PIC 9(6).
Total data yang di berikan ada 3*3 = 9 data.
TABEL DIMENSI TIGA
Merupakan sekumpulan data yang membentuk tabel, yang elemen masing-masing data
ditunjukkan oleh tiga buah subscipt. Misal :
01 TABEL-MAHASISWA.
02 FAKULTAS OCCURS 5 TIMES
03 JURUSAN OCCURS 4 TIMES.
04 NAMA OCCURS 10 TIMES PIC X(15).
Total data yang di berikan ada 5*4*10 = 200 data NAMA.
KEY IS nama-data-1[, nama-data-2]
ASCENDING
DESCENDING
INDEXED BY nama-indeks-1[, nama-indeks-2]…
FILE
FILE URUT
Organisasi file secara urut (sequential) memungkinkan pengaksesan record di file secara
berurutan.
ENVIRONMENT DIVISION
Informasi mengenai organisasi file urut disebutkan pada INPUT-OUTPUT SECTION.
ASSIGN clause menunjukkan bentuk dari file yang akan dipergunakan yaitu disk-file atau printfile.
ORGANIZATION IS LINE SEQUENTIAL atau SEQUENTIAL boleh dipilih salah satu, jika
tidak disebutkan dianggap (default) SEQUENTIAL.
FILE STATUS clause digunakan untuk menunjukan jenis kesalahan yang terjadi dari
suatu hasil operasi. Jenis kesalahan ini ditunnjukan oleh suatu nilai sepanjang karakter yang
disimpan pada nama data yang disebutkan pada clause ini dan sudah disebutkan terlebih
dahulu pada WORKING-STORAGE SECTION atau pada LINKAGE SECTION.
Nilai status organisasi file urut
Nilai Status Jenis Kesalahan
00 Tidak terjadi kesalahan
10 Akhir dari file ( End Of File )
30 File tidak ada ( File Not Found )
34 Disk Penuh ( Disk space full )
91 Struktur file rusak
Bentuk Umum :
ENVIRONMENT DIVISION
INPUT-OUTPUT SECTION
FILE CONTROL.
SELECT nama-file ASSIGN TO DISK
PRINTER
[;ORGANISATION IS [LINE] SEQUENTIAL]
[;ACCESS MODE IS SEQUENTIAL]
[;FILE STATUS IS nama-data]
DATA DIVISION
Bentuk umum :
LABEL RECORD IS STANDARD
RECORD ARE OMITTED
[;VALUE OF FILE-ID IS nama-file di label]
PROCEDURE DIVISION
Statement khusus yang dipergunakan dalam PROCEDURE DIVISION yaitu OPEN,
CLOSE, READ, WRITE, dan REWRITE.
•OPEN verb digunakan untuk membuka file yang akan diakses, dengan bentuk umum :
INPUT nama-file1 [,nama-file2]…
OUTPUT nama-file3 [,nama-file4]…
OPEN I-O nama-file5 [,nama-file6]…
EXTEND nama-file7 [,nama-file8]…
•CLOSE verb digunakan untuk menutup file yang digunakan setelah selesai melaksanakan
operasi file untuk mecegah rusaknya struktur file, dengan bentuk umum :
CLOSE nama-file1 [WITH LOCK] [,nama-file2 [WITH LOCK] ]
•WRITE verb digunakan untuk merekamkan data pada record tertentu difile yang telah
dibuka, dengan bentuk umum :
WRITE nama-record [FROM nama-data1]
nama-file2 [LINE]
BEFORE ADVANCING integer [LINES]
AFTER PAGE
•READ verb digunakan untuk membaca record yang ada di file, dengan bentuk umum :
READ nama-file RECORD [INTO nama-data] [;AT END statement imperatif]
•REWRITE verb digunakan untuk merekam ulang record yang sudah pernah direkam /
update record, dengan bentuk umum :
REWRITE nama-record [FROM nama-data]
FILE INDEKS
Organisasi file secara indeks adalah jika file tersebut mempunyai indeks atau table yang
berisi daftar alamat-alamat dari record di disc, yang disebut dengan control index.
Control index berfungsi sebagai penunjuk/pointer dari posisi record tertentu yang berisi
data, sehingga memungkinkan untuk menuju kesuatu lokasi record tertentu dengan cepat. File
index ini disimpan terpisah dari file datanya. Pada COBOL organisasi file indeks akan
menciptakan 2 file, yaitu file data (yang berisikan data tersimpan) dan file kunci(yang berisikan
control indeks).
Agar kedua file tersebut saling berhubungan, maka harus dihubungkan dengan suatu
field kunci yang ada pada file data. Field kunci ini ditentukan sendiri oleh pemrogram dan harus
unik (setiap data dipastikan mempuyai nilai yang berbeda). Hal ini dideklarasikan pada
RECORD KEY clause didalam FILE-CONTROL section.
ENVIRONMENT DIVISION
Hampir sama seperti file urut, informasi mengenai organisasi file pada clause SELECT
harus disebutkan ORGANIZATION IS INDEXED. Untuk file yang diorganisasikan secara
indexed, dapat di akses secara acak (RANDOM), dan secara DINAMIC (dapat mengakses file
tersebut secara random maupun sequential secara berurutan) , sedangkan akses SEQUENTIAL
akan dilaksanakan secara berurutan dari kecil ke besar berdasarkan field kuncinya.
RECORD KEY clause menunjukkan nama-data yang dipergunakan sebagai field kunci,
yang sudah dideklarasikan terlebih dahulu pada file description entry.
FILE STATUS clause digunakan untuk menunjukan jenis kesalahan yang terjadi dari
suatu hasil operasi. Jenis kesalahan ini ditunjukan oleh suatu nilai sepanjang karakter yang
disimpan pada nama data yang disebutkan pada clause ini dan sudah disebutkan terlebih
dahulu pada WORKING-STORAGE SECTION atau pada LINKAGE SECTION.
Nilai status organisasi file indeks
Nilai Status Jenis Kesalahan
00 Tidak terjadi kesalahan
10 Akhir dari file ( End Of File )
21 Tidak bias merekam pada sequential
acces mode, nilai kunci tidak urut
22 Nilai kunci tidak unik
23 Record tidak ketemu
24 Disk Penuh
30 File tidak ada
91 Struktur file rusak
Bentuk umum :
ENVIRONMENT DIVISION
FILE CONTROL.
SELECT nama-file ASSIGN TO DISK
;ORGANISATION IS INDEXED
SEQUENTIAL
;ACCESS MODE IS RANDOM
DYNAMIC
;RECORD KEY IS nama_data1
;FILE STATUS IS nama_data2
DATA DIVISION
Bentuk umum :
;LABEL RECORD IS STANDARD
[;VALUE OF FILE-ID IS nama-file di label]
PROCEDURE DIVISION
Statement khusus yang dipergunakan dalam PROCEDURE DIVISION yaitu OPEN,
CLOSE, READ, WRITE, REWRITE, START dan DELETE
•OPEN verb digunakan untuk membuka file yang akan diakses, dengan bentuk umum :
INPUT nama-file1 [,nama-file2]…
OPEN OUTPUT nama-file3 [,nama-file4]…
I-O nama-file5 [,nama-file6]…
•CLOSE Verb, digunakan untuk menutup file yang digunakan setelah selesai melaksanakan
operasi file untuk mecegah rusaknya struktur file, dengan bentuk umum :
CLOSE nama-file1 [WITH LOCK] [,nama-file2 [WITH LOCK] ]
•WRITE Verb, digunakan untuk merekamkan data pada record tertentu difile yang telah
dibuka, dengan bentuk umum :
WRITE nama-record [FROM nama-data1]
[;INVALID KEY statement-imperatif]
•READ Verb, digunakan untuk membaca record yang ada di file, dengan bentuk umum :
BU 1 :
READ nama-file [NEXT] RECORD [INTO nama-data] [;AT END statement imperatif]
BU 2 :
READ nama-file RECORD [INTO nama-data] [;KEY IS nama-data-2]
[;;INVALID KEY statement imperatif]
•REWRITE Verb, digunakan untuk merekam ulang record yang sudah pernah direkam/
update record, dengan bentuk umum :
REWRITE nama-record [FROM nama-data] [;INVALID KEY statement imperatif]
•START Verb, digunakan untuk menempatkan pembacaan record mulai record yang
mengandung nilai field kunci tertentu, dengan bentuk umum :
IS EQUAL TO
IS =
IS GREATER THAN
START nama-file KEY IS > nama-data
IS NOT LESS THAN
IS NOT <
[;INVALID KEY statement-imperatif]
•DELETE Verb
DELETE nama-file RECORD [;INVALID KEY statement-imperatif]
FILE RELATIF
Organisasi file relatif adalah file yang recordnya dibedakan berdasarkan nomor
record relatif. Nomor record relatif berkisar dari 1 – 32767. Nomor relatif tidak terekam dalam
file. File relatif mempunyai panjang record yang tetap.
ENVIRONMENT DIVISION
Pada divisi ini, entry pada clause SELECT harus disebutkan ORGANIZATION IS
RELATIVE. Organisasi file secara relatif dapat diakses secara urut, acak, maupun dinamik.
Pada mode akses urut (sequential access mode) record diakses dengan urutan record relatif
dari kecil ke besar.
Pada mode akses acak (random access mode) pengaksesan record diakses tidak
diurutkan, tetapi diatur oleh pemrogram. Pada mode akses dinamik (dynamic access mode)
pengaksesan record dilakukan dengan terurut dan acak.
RELATIVE KEY clause menunjukan nama-data yang dipergunakan sebagai kunci relatif,
yang sudah harus disebutkan terlebih dahulu pada record description entry dalam DATA
DIVISION. Clause RELATIVE KEY harus disebutkan untuk mode akses acak dan dinamik,
sedangkan pada mode akses urut dapat disebutkan bila akan mempergunakan perintah
START.FILE STATUS clause dipergunakan untuk menunjukan jenis kesalahan yang terjadi dari
suatu operasi.Jenis kesalahan ini ditunjukan oleh suatu nilai sepanjang karakter yang disimpan
pada nama data yang disebutkan pada clause ini dan sudah disebutkan terlebih dahulu pada
WORKING-STORAGE SECTION atau pada LINKAGE SECTION. Untuk nilai status organisasi
file relatif lihat tabel file indeks.
Bentuk umum :
ENVIRONMENT DIVISION
FILE CONTROL.
SELECT nama-file ASSIGN TO DISK
;ORGANISATION IS RELATIVE
SEQUENTIAL [,RELATIVE KEY IS nama-data-1]
[;ACCESS MODE IS RANDOM
DYNAMIC , RELATIVE KEY IS nama-data-1
[;FILE STATUS IS nama_data2]
DATA DIVISION
Bentuk umum :
;LABEL RECORD IS STANDARD
[;VALUE OF FILE-ID IS nama-file di label]
PROCEDURE DIVISION
Statement khusus yang dipergunakan dalam PROCEDURE DIVISION yaitu OPEN,
CLOSE, READ, WRITE, REWRITE, START dan DELETE
•OPEN verb digunakan untuk membuka file yang akan diakses, dengan bentuk umum :
INPUT nama-file1 [,nama-file2]…
OPEN OUTPUT nama-file3 [,nama-file4]…
I-O nama-file5 [,nama-file6]…
•CLOSE Verb, digunakan untuk menutup file yang digunakan setelah selesai melaksanakan
operasi file untuk mecegah rusaknya struktur file, dengan bentuk umum :
CLOSE nama-file1 [WITH LOCK] [,nama-file2 [WITH LOCK] ]
•WRITE Verb, digunakan untuk merekamkan data pada record tertentu difile yang telah
dibuka, dengan bentuk umum :
WRITE nama-record [FROM nama-data1] [;INVALID KEY statement-imperatif]
•READ Verb, digunakan untuk membaca record yang ada di file, dengan bentuk umum :
BU 1 :
READ nama-file [NEXT] RECORD [INTO nama-data] [;AT END statement imperatif]
BU 2 :
READ nama-file RECORD [INTO nama-data] [;INVALID KEY statement-imperatif]
•REWRITE Verb, digunakan untuk merekam ulang record yang sudah pernah direkam/
update record, dengan bentuk umum :
REWRITE nama-record [FROM nama-data] [;INVALID KEY statement imperatif]
•DELETE Verb
DELETE nama-file RECORD [;INVALID KEY statement-imperatif]
•START Verb, digunakan untuk menempatkan pembacaan record mulai record yang
mengandung nilai field kunci tertentu, dengan bentuk umum :
IS EQUAL TO
IS =
IS GREATER THAN
START nama-file KEY IS > nama-data
IS NOT LESS THAN
IS NOT <
[;INVALID KEY statement-imperatif]
Contoh-contoh program
Contoh 1: (GOTODEP.cob)
IDENTIFICATION DIVISION.
PROGRAM-ID. GOTODEP.
AUTHOR. JOGIYANTO HM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 Jabatan PIC 9.
PROCEDURE DIVISION.
TANYA-JABATAN.
DISPLAY 'KODE JABATAN ANDA [1-4] : '
ACCEPT Jabatan.
DISPLAY SPACE.
GO TO TUNJ1, TUNJ2, TUNJ3, TUNJ4 DEPENDING ON Jabatan.
DISPLAY 'TIDAK ADA KODE JABATAN TERSEBUT...!!! ULANGI'
GO TO TANYA-JABATAN.
TUNJ1.
DISPLAY 'TUNJANGAN ANDA RP 1.000.000,-'
GO TO SELESAI.
TUNJ2.
DISPLAY 'TUNJANGAN ANDA RP 750.000,-'
GO TO SELESAI.
TUNJ3.
DISPLAY 'TUNJANGAN ANDA RP 500.000,-'
GO TO SELESAI.
TUNJ4.
DISPLAY 'TUNJANGAN ANDA RP 250.000,-'.
SELESAI.
STOP RUN.
Contoh 2: (ARRAY2.cob)
IDENTIFICATION DIVISION.
PROGRAM-ID. DIMEN2.
AUTHOR. JOGIYANTO HM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA-KEMEJA.
02 KEMEJA OCCURS 3 TIMES.
03 UNIT OCCURS 4 TIMES PIC 99.
03 HARGA OCCURS 4 TIMES PIC 9(4).
01 HASIL.
02 HASIL-KEMEJA OCCURS 4 TIMES.
03 NILAI OCCURS 5 TIMES PIC 9(8).
01 HASIL-OUT.
02 HASIL-KEMEJA-OUT OCCURS 4 TIMES.
03 NILAI-OUT OCCURS 5 TIMEC PIC Z(7)9.
77 I PIC 9.
77 J PIC 9.
SCREEN SECTION.
01 HAPUS-LAYAR.
02 BLANK SCREEN.
PROCEDURE DIVISION.
MULAI.
DISPLAY HAPUS-LAYAR
PERFORM MASUKAN-DATA VARYING I FROM 1 BY 1 UNTIL I > 3
AFTER J FROM 1 BY 1 UNTIL J > 4
PERFORM HITUNG-NILAI VARYING I FROM 1 BY 1 UNTIL I > 3
AFTER J FROM 1 BY 1 UNTIL J > 4
PERFORM NILAI-AWAL-TOTAL-UKURAN VARYING I FROM 1 BY 1 UNTIL I > 3
PERFORM HITUNG-TOTAL-UKURAN VARYING I FROM 1 BY 1 UNTIL I > 3
AFTER J FROM 1 BY 1 UNTIL J > 4
PERFORM NILAI-AWAL-TOTAL-WARNA VARYING J FROM 1 BY 1 UNTIL J > 4
PERFORM HITUNG-TOTAL-WARNA VARYING J FROM 1 BY 1 UNTIL J > 4
AFTER I FROM 1 BY 1 UNTIL I > 3
PERFORM NILAI-AWAL-GRAND-TOTAL
PERFORM HITUNG-GRAND-TOTAL VARYING J FROM 1 BY 1 UNTIL I > 4.
CETAK-HASIL.
DISPLAY HAPUS-LAYAR
PERFORM PINDAH-HASIL-OUT VARYING I FROM 1 BY 1 UNTIL I > 4
AFTER J FROM 1 BY 1 UNTIL J > 5
DISPLAY ' LAPORAN PERSEDIAAN BARANG '
DISPLAY ' JENIS BARANG KEMEJA'
DISPLAY SPACE
DISPLAY '----------------------------------------------'
DISPLAY ' MERAH PUTIH KUNING BIRU TOTAL'
DISPLAY '----------------------------------------------'
DISPLAY 'KECIL ', HASIL-KEMEJA-OUT (1)
DISPLAY 'SEDANG ', HASIL-KEMEJA-OUT (2)
DISPLAY 'BESAR ', HASIL-KEMEJA-OUT (3)
DISPLAY '----------------------------------------------'
DISPLAY 'TOTAL ', HASIL-KEMEJA-OUT (4)
DISPLAY '----------------------------------------------'.
SELESAI.
STOP RUN.
MASUKAN-DATA.
DISPLAY ' UNIT : 'I ', 'J
ACCEPT UNIT (I, J)
AP3/TI/Ayuliana/2009 10
DISPLAY ' HARGA : 'I ', 'J
ACCEPT HARGA (I, J)
DISPLAY SPACE.
NILAI-AWAL-TOTAL-UKURAN.
MOVE 0 TO NILAI (I, 5).
NILAI-AWAL-TOTAL-WARNA.
MOVE 0 TO NILAI (4, J).
NILAI-AWAL-GRAND-TOTAL.
MOVE 0 TO NILAI (4, 5).
HITUNG-NILAI.
COMPUTE NILAI (I, J) = UNIT(I, J) * HARGA(I, J).
HITUNG-TOTAL-UKURAN.
COMPUTE NILAI (I, 5) = NILAI (I, 5) + NILAI (I, J).
HITUNG-TOTAL-WARNA.
COMPUTE NILAI (4, J) = NILAI (4, J) + NILAI (I, J).
HITUNG-GRAND-TOTAL.
COMPUTE NILAI (4, 5) = NILAI (4, 5) + NILAI (4, J).
PINDAH-HASIL-OUT.
MOVE NILAI (I, J) TO NILAI-OUT (I, J).
Minggu, 20 Maret 2011
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar