Modul
Cobol
BAB I PENDAHULUAN COBOL singkatan dari COmmond Business Oriented Language adalah suatu bahasa komputer awam (High Level Language)
yang berorientasi
langsung pada permasalahan bisnis. Cobol hampir dapat digunakan pada semua komputer bila tersedia compiler Cobolnya. Cobol dikembangkan mulai tahun 1959, oleh suatu kelompok yang disebut CODASYL (Conference On DAta SYstem Language). Versi pertama diberi nama COBOL 60 dan dikeluarkan pada tahun 1960. Sejak saat itu bermunculanlah sejumlah versi COBOL diberbagai mesin. Pada tahun 1968, ANSI (American National Standards Institute) yang menangani masalah standarisasi industri di Amerika Serikat mengeluarkan versi COBOL yang diberi nama ANS COBOL. Pada tahun 1974 dikembangkan menjadi ANSI COBOL 1974. Versi inilah yang selanjutnya dipakai sebagai acuan perkembangan COBOL, hingga ANSI mengeluarkan standard yang baru yaitu ANSI COBOL 1985. ANSI COBOL 1985 menyajikan
fenomena
pemrograman
yang
terstruktur
mengikuti
gaya
pemrograman terstruktur pada bahasa Pascal dan C. Pemrograman bahasa COBOL merupakan program terstruktur, yaitu program yang strukturnya jelas, mudah dibaca, dan mudah dipelajari, dan baik untuk dokumentasi. Struktur utama dari suatu program COBOL terdiri dari 4 divisi yaitu : • • • •
IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION PROCEDURE DIVISION
1.1 KEUNTUNGAN BAHASA COBOL Penggunaan
bahasa
cobol
mempunyai
beberapa
keuntungan,
diantaranya : 1.
Program Cobol dibuat dalam instruksi bahasa Inggris, sehingga lebih mudah dipelajari dan dibuat.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 1
Modul
Cobol
2. Program Cobol sesuai untuk pengolahan data, yang banyak diterapkan pada permasalahan bisnis. 3. Program Cobol sifatnya standard, sehingga dapat dipergunakan pada komputer-komputer yang berbeda, tanpa banyak perbedaan. 4. Struktur program Cobol jelas, sehingga dapat dimengerti oleh orang seperti akuntan,
auditor
atau
manajer-manajer
yang
hanya
mempunyai
pengetahuan pengolahan data yang sedikit. 5. Cobol menyediakan fasilitas listing program, bilamana perlu dapat diperiksa oleh orang lain selain programmernya. 6. Mudah didokumentasikan dan dikembangkan bilamana perlu.
1.2 ATURAN PENULISAN PROGRAM COBOL Kolom yang tersedia untuk menulis program Cobol (source program) adalah mulai dari kolom 1 sampai dengan kolom 80 dengan aturan sebagai berikut : olom 1-6 : digunakan untuk nomor urut bilamana diperlukan, sifatnya optional (boleh ditulis boleh tidak). Nomor yang diberikan harus urut dari kecil ke besar. Kolom 7 : digunakan untuk : a.
Tanda
baris
sambungan
dari
baris
sebelumnya
dengan
memberikan tanda hypen (-). Baris sambungannya ditulis mulai dari area B. b. Bila kolom ini diisi dengan tanda (*), maka apa yang ditulis pada baris ini dianggap sebagai komentar saja. c.
Bila kolom ini diisi dengan slash (/), maka baris yang ada tandanya ini dianggap sebagai komentar dan akan dicetak mulai halaman baru teratas, bila source program dicetak diprinter.
d.
Bila kolom ini diisi dengan karakter "D", baris ini juga akan dianggap
sebagai
komentar.
Tetapi
bila
pada
Environment Division dalam paragraph source-computer JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 2
Modul
Cobol disebutkan With Debugging Mode, maka akan berguna untuk tujuan debugging (penelusuran kesalahan).
Kolom 8-11
: disebut dengan Area A. Semua judul divisi, judul seksi, nama paragraph, judul file description (FD), level number 01 dan level number 77 ditulis mulai kolom ke 8 ini.
Kolom 12-72 : disebut dengan area B. Semua elemen program selain yang ditulis di area A, ditulis pada area A ini. Kolom 73-80 :
Merupakan kolom yang tidak bisadiisi
dengan
diproses
catatan-catatan
apa
oleh saja
komputer, hanya
jadi untuk
dokumentasi progam.
Bentuk Data Bentuk dari data dapat dibedakan menjadi dua golongan, yaitu : 1• Data variabel ( disebut dengan variabel ). data yang nilainya dapat berubah-ubah selama eksekusi program. Misalnya data yang berasal dari keyboard sewaktu program dieksekusi 2• Data konstanta ( disebut dengan konstanta atau literal ) Sedangkan data konstanta adalah data yang bersifat tetap selama eksekusi berlangsung. Contoh : Add 2 to x Keterangan : 2 adalah tipe data konstanta x adalah tipe data variabel x = 5 Sebelum Add 2 to x Data Konstanta / Literal : 1. Numerik JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 3
hasil
:
7
Sesudah Add 2 to x
Modul
Cobol
2. Non-numerik 3. Figuratif Konstanta
Literal Numerik/Konstanta numerik Literal numerik menyatakan suatu konstanta bilangan. Sayarat penulisan literal numerik : • • • •
Maksimal mengandung 18 digit Jika mengandung tanda + (plus) atau - (minus), tanda + atau - harus berada di sebelah kiri Tidak boleh ada karakter spasi Tanda pecahan boleh berada di mana saja selain pada posisi terkanan.
Jika suatu literal numerik tidak mengandung tanda plus atau minus akan dianggap sebagai bilangan positif. Contoh penulisan literal yang benar : +1234567 23456.77 -19.45 1000 .25 (identik dengan 0.25) Contoh penulisan literal yang salah : 45. Rp 6000 $ 500 - 100 1,6000.00
Tanda pecahan di bagian terkanan tidak diperkenankan Suatu literal numerik tidak boleh diawali dengan huruf Simbol khusu tidak diperbolehkan Penulisan literal numerik tidak boleh mengandung spasi Tidak boleh mengandung pemisah ribuan
Literal Non-Numerik Literal non-numerik adalah konstanta yang bisa mengandung baik huruf, digit maupun simbol khusus ( sering disebut dengan string ). Syarat penulisan literal non-numerik : • •
Bisa terdiri sampai 120 karakter, dan diapit oleh karakter delimiter ( berupa petik-ganda atau petik-tunggal ). Kalau tanda pengapit berupa petik-tunggal dan literal mengandung tanda petik-tunggal, tanda petik-tunggal dalam literal perlu ditulis sekali lagi disampingnya.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 4
Modul •
Cobol
Kalau tanda pengapit berupa petik-ganda dan literal mengandung tanda petik-ganda, tanpa petik-ganda dalam literal perlu ditulis sekali lagi di sampingnya.
Contoh penulisan literal non-numerik : "Faizal Amri" ( Boleh ditulis menjadi : 'Faizal Amri' ) Latihan 1 : 1. Mengapa Bahasa Cobol perlu diterjemahkan terlebih dahulu. 2. Jelaskan pengertian - pengertian dibawah ini : - Source Program - Objek Program - Syntax error - Logis error - Execution error 3. Sebutkan software yang dapat digunakan cobol serta cara kerjanya.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 5
untuk menulis source program
Modul
Cobol
Bab II STRUKTUR PROGRAM COBOL Pada umumnya inti dari struktur program Cobol dibagi menjadi 4 bagian yang disebut dengan Division, dimana masing-masing divisi dimulai dengan suatu judul divisi. Program cobol terdiri dari 4 divisi, dimana setiap divisi memiliki beberapa seksi. Dimana urutan divisi tersebut dalam Cobol adalah sebagai berikut : IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION. Masing-masing divisi terdiri dari urut-urutan susunan bagian, tersusun secara hirarki (jenjang), secara umum sebagai berikut : Division. Region. Section. Paragraph Sentence/Entry Statement/Clause Phrase/Option Istilah region, sentence, statement dan phrase/option digunakan pada PROCEDURE DIVISION, sedangkan istilah entry dan clause digunakan pada ke 3 divisi yang lain.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 6
Modul
Cobol
DIVISION. Adalah bagian utama dari suatu program Cobol. Suatu divisi harus diawali dengan suatu judul divisi.
REGION Adalah suatu kumpulan bagian tertentu di dalam procedure division. Region ini diawali dengan judul declaratives dan diakhiri
dengan judul
END DECLARATIVES. SECTION Seksi (section) adalah satu kumpulan dari paragraph atau entry. Suatu seksi harus diawali dengan suatu judul seksi, contohnya CONFIGURATION SECTION. PARAGRAPH Adalah suatu group dari kalimat (sentences) di dalam PROCEDURE DIVISION. Suatu paragraph harus selalu diawali dengan nama-paragrahp atau judul paragraph. ENTRY Suatu entry adalah sesuatu yang harus dituliskan pada tempat-tempat di dalam suatu program COBOL. Suatu entry dapat juga dikatakan sebagai suatu set (kumpulan) dari clause (anak kalimat), yang diakhiri dengan titik. Entry adalah istilah yang terdapat pada IDENTIFICATION DIVISION, ENVIRONMENT DIVISION dan DATA DIVISION. Sedang pada PROCEDURE DIVISION istilah ini disebut dengan sentence. SENTENCE Kalimat (sentence) adalah suatu kumpulan dari satu atau lebih statement (pernyataan). Akhir dari sentence harus diakhiri dengan titik. Sentence adalah istilah dalam PROCEDURE DIVISION. CLAUSE JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 7
Modul
Cobol
Anak kalimat (clause) adalah kumpulan dari kata (word) yang membentuk suatu arti. Clause adalah bagian dari entry. Suatu entry dapat terdiri dari beberapa clause.
STATEMENT Pernyataan (statement) adalah perintah pengerjaan untuk komputer. Semua statement, kecuali statement COPY dapat terletak di mana saja, selain di PROCEDURE DIVISION. PHRASE Suatu group kata yang merupakan bagian dari statement atau clause.
Latihan 2 : 1. Buatlah contoh masing-masing bagian atau hirarki dari program cobol untuk masing-masing divisi. 2. Sebutkan paragraf yang harus ada dalam sebuah program Cobol, jelaskan fungsinya. 3. Jelaskan fungsi masing-masing divisi dalam program Cobol.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 8
Modul
Cobol
Bab III IDENTIFICATION DIVISION
Identification division merupakan divisi pertama dalam program cobol dan yang paling sederhana. Division ini merupakan keterangan (Identification) tentang program yang dibuat. Identification division terdiri dari beberapa paragraph.
Bentuk Umum dari Identification division.
IDENTIFICATION DIVISION PROGRAM-ID. nama program. [ AUTHOR. nama programmer. ] [ INSTALLATION. nama instalasi. ] [ DATE-WRITTEN. tanggal program dibuat. ] [ DATE-COMPILED. tanggal program dikompilasi. ] [ SECURITY. sifat program. ]
Keterangan bentuk umum : <*> Tanda _________ (garis bawah) merupakan bentuk yang harus ditulis JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 9
Modul
Cobol
persis, bila ada. <*> Tanda [ ] (bracket) merupakan bentuk yang ada diantara tanda tersebut,sifatnya optional, boleh ditulis, boleh tidak. <*> Huruf kecil adalah nama yang dibentuk oleh programmer. Judul divisi dan semua judul paragrap harus dimulai pada kolom 8 dan harus diakhiri dengan tiitk. Apabila programmer ingin mencantumkan namanya didalam program, karena nama paragraph AUTHOR walaupun digaris bawahi, maka kata ini harus ditulis persis seperti diatas. Program-id menunjukkan identitas dari program, setiap program harus diberi nama supaya unik dapat dibedakan dari program yang lainnya. Penulisan nama program bebas, tetapi mempunyai aturan tertentu, hanya khusus nama program, panjangnya hanya boleh 6 karakter. Bila lebih dari 6 karakter, boleh tetapi yang dianggap unik hanya 6 karakater pertama, selebihnya diabaikan (maksimum 30 karakter panjangnya). Contoh : Identification Division. Program-d. Barang. Author. Team-cobol. Installation. YPTK-Padang. Date-written. 30-Juni-1997. Date-compiled. 01-Juli-1997. Security. Rahasia. Atau cukup ditulis sebagai berikut : Identification Division. Program-id. Barang.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 10
Modul
Cobol
BAB IV ENVIRONMENT DIVISION Environment division, sebagai divisi ke-2 menyediakan informasi mengenai peralatan yang dipergunakan didalam program. Divisi ini dibagi menjadi 2 seksi (section ) yaitu CONFIGURATION SECTION dan INPUT-OUTPUT SECTION. Environment Division ditulis pada area A. Bentuk umum dari Environment Division :
CONFIGURATION SECTION Pada seksi ini diterangkan mengenai jenis-jenis komputer yang digunakan dalam rangka pembuatan, pengkompilasian dan pemrosesan program. Bentuk Umumnya adalah :
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 11
Modul
Cobol
ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. nama komputer [WITH DEBUGGING MODE ] OBJECT-COMPUTER. nama komputer. SPECIAL-NAMES. DECIMAL POINT IS COMMA
Contoh dalam program : Environment division. Configuration section. Source-computer. IBM-PC. (Untuk menunjukkan nama komputer yang digunakan) Object-computer. IBM-PC. ( Menunjukkan nama komputer yang digunakan untuk menjalankan program ) yang telah dikompilasi, yang sifatnya sebagai dokumentasi saja. Special-names. Decimal-point is comma. (Titik desimal dituliskan dengan bentuk karakter "." atau titik (period). Bila diinginkan karakter lain lain, misalnya koma, dapat ditulis perintah diatas) Input-Output Section. (Bila digunakan file dengan media simpanan sekunder, maka paragraph filecontrol dalam seksi ini harus ditulis. Sebaliknya tidak ditulis file-control kalau tidak menggunakan media penyimpanan). File-control entry bisa terdiri dari 3 bentuk, tergantung dari organisasi file yang akan dipergunakan. Organisasi file dapat berupa sequential file, indexed file dan relative file. Input-output section untuk sequential file. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 12
Modul
Cobol
Organisasi file secara sequential adalah organisasi file yang sifatnya urut. Data direkamkan di record pada file secara urut dan urutan ini tidak berubah. Kalau ada data baru maka akan direkamkan pada record urutan terakhir di file. Demikian juga kalau akan membaca data di file, maka akan dibaca urut dari record pertama. Bentuk Umum paragraph FILE-CONTROL untuk organisasi file secara sequential adalah sebagai berikut :
INPUT-OUTPUT SECTION FILE-CONTROL SELECT nama-file ASSIGN to [ DISK
]
[ PRINTER ] [ ORGANIZATION IS [ LINE SEQUENTIAL ] [ ACCESS MODE IS SEQUENTIAL ] [ FILE STATUS IS nama-data ]
Input-output section untuk Indexed file. Organisasi indexed adalah organisasi file yang datanya dapat dimbil langsung di posisi record yang mempunyai nilai kunci tertentu yang unik. Bentuk Umum paragraph FILE-CONTROL untuk organisasi file secara sequential adalah sebagai berikut :
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 13
Modul
Cobol
INPUT-OUTPUT SECTION FILE-CONTROL SELECT nama-file ASSIGN to DISK ORGANIZATION IS INDEXD [ ACCESS MODE IS SEQUENTIAL RANDOM DYNAMIC RECORD KEY IS nama-data-1 [ FILE STATUS IS nama-data ]
Input-output section untuk Relative file. Organisasi secara relative adalah organisasi file yang tiap-tiap recordnya dibedakan dengan suatu nomer record relatip. Organisasi relative file hanya pada disk. Bentuk umum paragraph FILE-CONTROL untuk organisasi file secara relative adalah : INPUT-OUTPUT SECTION FILE-CONTROL SELECT nama-file ASSIGN to DISK ORGANIZATION IS RELATIVE [ ACCESS MODE IS SEQUENTIAL [, RELATIVE KEY IS nama-data-1 RANDOM DYNAMIC
, RELATIVE KEY IS nama-data-1
[ FILE STATUS IS nama-data-2 ]
BAB V DATA DIVISION Fungsi dan Tujuan
:
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 14
Modul 1.
Cobol
Memberikan
penjelasan
tentang
input
data
dan
output
yang
dipergunakan. 2. Menjelaskan bagaimana data disimpan dan diorganisasikan, juga bagaimana sifat dari data tersebut. 3. Berisi keterangan tentang file, record, nama-data serta bentuk format yang akan digunakan di dalam PROCEDURE DIVISION. DATA DIVISION dapat terdiri dari beberapa seksi, diantaranya yaitu : - FILE SECTION - WORKING-STORAGE SECTION - SCREEN SECTION FILE SECTION Didalam seksi ini terdapat semua keterangan mengenai file-file yang dipakai didalam program. Keterangan ini meliputi nama-file, cara perekaman, jumlah record per block dan jumlah karakter per record, bagaimana labelnya serta nama dari record tersebut. FILE SECTION ini ada bila dipergunakan file dalam bentuk simpanan sekunder yaitu disk atau printer dan mempunyai hubungan dengan INPUTOUTPUT SECTION dalam ENVIRONMENT DIVISION. Syntax : DATA DIVISION. FILE SECTION. FD nama-file LABEL RECORDS ARE OMITTED VALUE OF FILE-ID IS nama-file di label RECORD IS DATA
nama-record-1 [, nama-record-2] RECORDS ARE
Judul FD ditulis pada area A dan diikuti oleh nama-filenya yang harus sama dengan nama-file yang disebutkan pada INPUT-OUTPUT SECTION dalam ENVIRONMENT DIVISION. LABEL RECORD ATAU LABEL RECORDS clause JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 15
Modul
Cobol
LABEL RECORD atau LABEL RECORDS clause menunjukan apah file yang dipergunakan mempunyai label atau tidak. Bentuknya : RECORD IS STANDARD LABEL RECORDS ARE OMITTED LABEL RECORD IS OMITTED digunakan untuk card-file ( file yang berupa kartu plong ) atau print-file ( file yang berupa cetakan di printer ) yang tidak mempunyai label. Untuk disk-file ( file yang disimpan di disk ) yang mempunyai label, maka ditulis LABEL RECORD IS STANDARD. VALUE OF FILE-ID clause VALUE OF FILE-ID clause menunjukan informasi mengenai file yang mempunyai label di disk. Label di disk ini berupa suatu nama-file yang berisi data yang direkamkan tersebut. Jadi, jika suatu file berada di disk, maka harus disebutkan LABEL RECORD IS STANDARD dan VALUE OF FILE-ID diikuti oleh namafilenya. Syntax : VALUE OF FILE-ID IS nama-file di label Contoh : INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT REKAMAN ASSIGN TO DISK. DATA DIVISION. FILE SECTION. FD REKAMAN RECORD CONTAINS 48 CHARACTERS LABEL RECORD IS STANDARD VALUE OF FILE-ID IS "RELASI.DAT". Nama-file di label dapat ditulis di antara tanda petik tunggal atau di antara tanda petik dua. Nama-file di label tidak sama dengan nama-file yang disebutkan pada judul FD dan pada SELECT clause. "RELASI.DAT" adalah nama-file di label. DATA RECORD atau DATA RECORDS clause DATA RECORD atau DATA RECORDS clause menunjukan nama-record di dalam file. Bentuknya : JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 16
Modul
Cobol RECORD IS
DATA
nama-record-1 [, nama-record-2] RECORDS ARE
Clause ini sifatnya optional, hanya sebagai dokumentasi saja, boleh tidak ditulis, karena nama-record ini sudah ditunjukan pada record-description-entry. Contoh : Sebuah program COBOL dengan nama program PROG menggunkan file di disk untuk merekam datanya dengan nama-file MHS-FILE dan nama-file di label dengan nama "DAFMHS.DAT", nama recordnya adalah MHS-REC, mempunyai struktur record sebagai berikut : Karakter Ke
Keterangan
Jenis
Nama-Data
1-6
Nomor Mahasiswa
Numerik
Nomor-Mhs
7 - 27
Nama Mahasiswa
Alphanumerik
Nama-Mhs
28 - 68
Alamat Mahasiswa
Alphanumerik
Nama-Mhs
Program Cobol ini juga menggunakan printer untuk mencetak hasil outputnya. Print-file ini diberi nama Cetak dan nama recordnya adalah baris-cetak, maka ditulis : IDENTIFICATION DIVISION. PROGRAM-ID. PROG. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT MHS-FILE ASSIGN TO DISK SELECT CETAK ASSIGN TO PRINTER. DATA DIVISION. FILE SECTION. FD MHS-FILE RECORD CONTAINS 68 CHARACTERS LABEL RECORD IS STANDARD JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 17
Modul
Cobol
VALUE OF FILE-ID IS "DAFMHS.DAT" DATA RECORD IS MHS-REC. 01 MHS-REC. 02 NOMOR-MHS PIC 9(6). 02 NAMA-MHS PIC X(20). 02 ALAMAT-MHS PIC X(40). FD CETAK LABEL RECORD IS OMITTED DATA RECORD IS BARIS-CETAK. 01 BARIS CETAK PIC X(80). Penjelasan : Karena dipergunakan dua buah file ( disk dan printer ), maka ada 2 buah FD ( file description ). Nama-file pada masing-masing SELECT clause harus sama dengan nama-file pada judul FD. - FD (file-description) yaitu keterangan mengenai file yang dipergunakan - Record Description Entry adalah keterangan terhadap record yang digunakan di file mengenai nama record, nama-data item, bentuk dari data item, panjang dari data item, nilai data item serta level dari masing-masing data item tersebut. WORKING-STORAGE SECTION Sebagai seksi yang ke dua didalam DATA DIVISION, seksi ini berfungsi untuk pemesanan tempat di internal memory ( Storage ) yang diperlukan oleh pekerjaan ( Working ) proses program. Pemesanan tempat ini biasanya digunakan untuk : 1. Bentuk, nilai dan nama data yang diperlukan di dalam proses, yang terpisah dan belum disebutkan pada FILE SECTION. Data yang disebutkan pada FILE SECTION adalah data yang akan diambil dari disk-file, atau data yang akan direkamkan pada disk-file, atau yang akan dicetak pada print-file. Jadi yang disebutkan pada FILE SECTION adalah data yang berhubungan dengan file. Sedang data lain yang diperlukan oleh proses tetapi tidak berhubungan dengan file disebutkan pada WORKING-STORAGE SECTION. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 18
Modul
Cobol
misalnya data yang akan dimasukan lewat layar terminal dengan perintah ACCEPT, atau data yang diterima dari lokasi storage yang lain dengan perintah MOVE atau data yang dihasilkan dari hasil suatu perhitungan arithmatika dengan statement COMPUTE, dan lainnya. 2. Persiapan Penulisan Judul Bentuk judul dipersiapkan terlebih dahulu pada WORKING-STORAGE SECTION, yang nantinya di dalam PROCEDURE DIVISION bila akan dicetak judul tersebut, dapat dilakukan oleh statement DISPLAY atau WRITE. 3. Pemesanan tempat untuk data output yang akan ditampilkan. Secara garis besar, seksi ini mengandung 2 golongan data, yaitu data item individu dan group data item ( membentuk suatu record ). Bentuknya : Working-storage section. 77-level data description entry record description entry Data item individu, disebut juga dengan noncontigous elementary items atau stand-alone items, ditunjukan oleh level number 77, sedang group data item diawali dengan level number 01. Contoh : Working-storage section. 77 total pic 9(5) value 0. 77 gaji-kar pic 9(6). 77 nomor-hal pic 999 value zero. 77 garis pic x(80) value all '-'.
Pada contoh ini, terlihat bahwa ada pemesanan tempat di memory ( storage ) untuk data item individu. Data item pertama yang dipesankan tempat adalah dengan nama total bentuknya adalah numerik ( ditunjukan oleh karakter JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 19
Modul
Cobol
picturenya ) sepanjang 5 digit yang nilai awalnya dipasang nol oleh value clause. Nomor 77 adalah level number untuk data-description data item individu ( harus nomor 77 ). Pemesanan tempat kedua
untuk nama-data gaji-kar juga numerik
sepanjang 6 digit tanpa nilai awal. Yang ketiga adalah dengan nama-data nomor-hal numerik 3 digit bernilai awal nol ( zero berarti sama dengan nol, figurative konstant ). Yang keempat dengan nama-data garis, berbentuk alphanumerik bernilai karakter "-" sebanyak 80 karakter. All
'-'
juga figurative
konstant. Contoh : Akan dicetak sebuah judul sebagai berikut : LAPORAN PENJUALAN UNTUK DAERAH SUMBAR Maka pada working-storage section dapat dituliskan : Working-storage section. 01 judul. 02 filler pic x(15) value spaces. 02 filler pic x(40) value "Laporan Penjualan Untuk Daerah Sumbar". 02 filler pic x(25) value spaces. Contoh ini adalah untuk group data item dengan nama-record Judul yang berisi data -item data-item yang ditunjukan oleh level number yang lebih besar (02). Keterangan : 1. Level number 01 ditulis pada area A yaitu kolom ke 8, untuk mengawali keterangan nama-record (harus 01). 2. Nama-record untuk level number 01 ditulis pada kolom ke 12 area B
3. Level number 02 ditulis mulai pada area B kolom 12 (tidak harus 02, bisa bervariasi sampai 49). JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 20
Modul
Cobol
4. Nama datanya ditulis dengan diberi jarak paling sedikit 1 spasi 5. Filler digunakan untuk menyatakan suatu nilai yang tidak akan ditunjuk lagi pada procedure division. 6. Bila 1 baris tidak cukup dapat disambung pada baris selanjutnya dengan memberikan tanda '-' (hypen) pada kolom 7 pada baris sambungan, dan sambungan baris berikutnya ditulis pada area B. Contoh : Akan dimasukkan data lewat layar terminal, dengan susunan data tiap recordnya sebagai berikut : Item NAMA
Jenis
Panjang
alphabetik
20
- nomor jalan
alphanumerik
20
- kota
alphabetik
15
- negara
alphabetik
15
SEX
alphabetik
1
ALAMAT
Pada working-storage section akan tampak : Working-storage section. 01 DAFTAR-PRIBADI. 02 NAMA
pic x(20).
02 ALAMAT. 03 nomor-jalan pic x(20). 03 kota
pic x(15).
03 negara 02 SEX
pic x(15).
pic x.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 21
Modul
Cobol
Screen Section. Seksi ini berguna untuk menunjukkan bentuk format dari layar terminal untuk menampilkan data atau memasukkan data. Data item yang digunakan dapat berupa group data item atau data item individu, dengan level number 01 sampai 49, yang sudah disebutkan pada FILE SECTION atau pada WORKINGSTORAGE SECTION. Screen section berhubungan dengan statement DISPLAY dan ACCEPT dalam PROCEDURE DIVISION. Statement display dipergunakan untu menampilkan format yang telah dibentuk di screen section pada layar terminal. Sedangkan statement ACCEPT digunakan untuk memasukkan nilai data item lewat layar terminal dengan format yag dibentuk pada screen section tersebut. Diantara clause yang digunakan pada screen section adalah sebagai berrkut : BLANK SCREEN clause Blank
screen
clause
digunakan
untuk
membersihkan
layar
dan
menempatkan cursor pada posisi kiri atas (baris 1, kolom 1). LINE clause Line clause digunakan untuk menempatkan cursor pada posisi baris tertentu di layar. Bila tidak disebutkan nilai posisi barisnya, berarti LINE PLUS 1, yaitu akan ditampilkan bergeser 1 baris dari baris sebelumnya. Kalau akan ditampilkan bergeser sebanyak 3 baris dari baris sebelumnya, maka ditulis LINE PLUS 3. COLUMN clause Column clause digunakan untuk menempatkan cursor pada posisi kolom tertentu di layar. Bila tidak disebutkan posisi kolomnya, maka akan ditempatkan pada kolom 1. BLANK LINE clause Blank line clause digunakan untuk menghapus tampilan pada baris tertentu di layar. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 22
Modul
Cobol
BELL clause Bell clause digunakan untuk menimbulkan suara bel UNDERLINE, REVERSE-VIDEO, HIGHLIGHT dan BLINK clause Clause diatas digunakan untuk memberi garis bawah pada tampilannya. UNDERLINE clause digunakan untuk memberi garis bawah pada tampilannya. REVERSE-VIDEO clause digunakan untuk membalik warna dari tampilannya, warna dasar menjadi warna tampilannya dan sebaliknya. HIGHLIGHT clause digunakan untuk menampilkan tampilan dengan bentuk yang lebih terang. BLINK clause digunakan untuk membuat kedap-kedip bentuk tampilannya. FROM, TO dan USING clause FROM, TO dan USING clause digunakan untuk menampilkan atau menerima data yang bentuk data-itemnya dihubungkan ditempat lain di luar Screen Section ini, misalnya pada Working-storage section, File section atau Linkage section. From clause digunakan untuk menampilkan isi data. Contoh program dari statemen pada screen section diatas : Identification division. Program-id. Team-cobol. Environment division. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 23
Modul
Cobol
Data division. Working-storage section. 01 Data-karyawan. 02 Nama pic x(20)
value "KAMU".
02 Jabatan
pic x(10)
value "SALESMAN".
02 Gaji
pic 9(5)
value 75000
Screen section. 01 Layar-tampilan. 02 Blank screen. 02 Line 4 value "NAMA KARYAWAN
:"
02 column plus 1 pic x(20) from nama. 02 Line 5 value "JABATAN
:"
02 column plus 1 pic x(10) from jabatan. 02 line 6 value "GAJI
: Rp ".
02 column plus 1 pic 9(5) from gaji. procedure division. display layar-tampilan. stop run. Bila program ini dijalankan, akan mendapat hasil : NAMA KARYAWAN : BADU JABATAN
: SALESMAN
GAJI
: Rp 75000
Penjelasan : Hasil yang ditampilkan, untuk data-itemnya, nilai tersebut diambilkan dari ( From ) working-storage section, yang sudah diisi nilainya dengan Value Clause. TO Clause digunakan untuk menerima isi data. Identification division. Program-id. Team-cobol. Environment division. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 24
Modul
Cobol
Data division. Working-storage section. 01 Data-karyawan. 02 Nama pic x(20) value space. 02 Jabatan
pic x(10) value space.
02 Gaji
pic 9(5) value space.
Screen section. 01 Layar-tampilan. 02 Blank screen. 02 Line 4 value "NAMA KARYAWAN
:"
02 column plus 1 pic x(20) to nama. 02 Line 5 value "JABATAN
:"
02 column plus 1 pic x(10) to jabatan. 02 line 6 value "GAJI
: Rp ".
02 column plus 1 pic 9(5) to gaji. procedure division. display layar-tampilan. accept layar-tampilan. stop run. Bila program ini dijalankan, pertama kali di layar akan berbentuk : NAMA KARYAWAN : ................... JABATAN
: ..........
GAJI
: Rp .....
Kemudian data dimasukan dengan mengetikan lewat keyboard sebagai berikut NAMA KARYAWAN : Faizal Amri JABATAN
: Personalia
GAJI
: Rp 750000
Penjelasan :
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 25
Modul
Cobol
Pada procedure division, pertama kali bentuk dari layar-tampilan ditampilkan. Nilai dari data item nama, jabatan dan gaji yang diberi nilai space pada workingstorage section, tidak turut ditampilkan karena menggunakan To clause dalam screen section. Baru setelah perintah Accept, nilai-nilai data diketik, dimasukan ke ( To ) masing-masing data item yang bersangkutan. From dan To clause dapat dipergunakan bersama-sama. Bila From dan To clause dipergunakan
bersama-sama,
penggunaan
ini
dimasukan
untuk
tujuan
menampilkan terlebih dahulu nilai dari ( From ) data item sebelumnya, yang langsung kemudian dimasukan nilai data baru ke ( To ) tempat lokasi data item tersebut. Contoh : Identification division. Program-id. Team-cobol. Environment division. Data division. Working-storage section. 01 Data-karyawan. 02 Nama pic x(20) value "Faizal Amri". 02 Jabatan
pic x(10) value "Personalia".
02 Gaji
pic 9(5) value 750000.
Screen section. 01 Layar-tampilan. 02 Blank screen. 02 Line 4 value "NAMA KARYAWAN
:"
02 column plus 1 pic x(20) from nama to nama. 02 Line 5 value "JABATAN
:"
02 column plus 1 pic x(10) from jabatan to jabatan. 02 line 6 value "GAJI
: Rp ".
02 column plus 1 pic 9(5) from gaji to gaji. procedure division. display layar-tampilan. accept layar-tampilan. stop run. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 26
Modul
Cobol
Bila program ini dijalankan, pertama kali akan ditampilkan terlebih dahulu nilai sebelumnya dari data-item bersangkutan, sebagai berikut : NAMA KARYAWAN : Faizal Amri JABATAN
: Personalia
GAJI
: Rp 750000
Kemudian nilai dari data item tersebut dimasukan : NAMA KARYAWAN : Muhammad JABATAN
: Administrasi
GAJI
: Rp 500000
LEVEL NUMBER Level number atau nomor jenjang adalah suatu nomor yang menunjukkan jenjang dari data item dalam suatu record. Makin besar nomor levelnya, makin rendah jenjang tingkatannya. Level number yang dipakai terdiri dari : •
Level Number 01 : Mendefenisikan variabel induk contoh : Data Division. Working-storage Section. 01 Record-Mahasiswa. 02 Nama pic x(15). 02 Nobp pic x(8). 02 Nilai
•
pic 9(3).
Level number 77 Digunakan untuk mendefenisikan item yang berdiri sendiri (independent item) contoh :
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 27
Modul
Cobol
Working-Storage section. 77 penjualan pic 9(8).
•
77 Harga
pic 9(6).
77 Stock
pic 9(4).
Level number 02, 03, 04, ............., 49 Mengawali keterangan dari data item ( bagian dari level number 01 ) contoh : 01 Record-penjualan 02 no-faktur pic x(5). 02 tgl-penjualan. 03 Tanggal pic 9(2).
•
03 Bulan
pic 9(2).
03 Tahun
pic 9(2).
Level number 88 Mengawali suatu nama kondisi contoh : Working-storage section. 01 Jenis-Kelamin pic x. 88 laki-laki value "L" , "l". 88 Perempuan value "P" , "p".
PICTURE Picture digunakan untuk menjelaskan bentuk ( type ) serta ukuran dari data yang akan digunakan. •
PICTURE UNTUK DATA YANG TIDAK DIEDIT digunakan untuk data yang akan disimpan di dalam memori yang nantinya dapat diolah menjadi bentuk yang lebih informatif.
Picture 9
Pemakaian Numerik
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 28
Modul
•
Cobol A
Alphabetik
X
ALphanumerik
V
Titik Desimal Anggapan
P
Faktor Penyekala Desimal
S
Bilangan Bertanda (Positif / Negatif )
PICTURE UNTUK DATA YANG TIDAK DIEDIT digunakan untuk merobah bentuk data yang telah tersimpan di memori sehingga informasi yang disajikan lebih mudah dibaca.
Picture
Pemakaian
Z
Mengganti nol yang tak berarti dengan space
$
Tanda Mata uang
*
Memberi tanda *
'
Memberi tanda ' (koma)
.
Tanda titik desimal
+/DB/CR
Tanda + dan Tanda Debit dan Credit
B
Penyisipan Spasi
/
Penyisipan tanda '/'
contoh : Nama
Picture
Data-item
Data
Di Memori
Di Prose
Masukan
KODE
X(5)
2045
2
0
4
5
NAMA
X(8)
COBOL
C
O
B
O
UNIT
9(4)
25
0
0
2
5
HARGA
9(6)V99
15500.75
1
5
5
0
KAS
9(4)
16798
1
6
7
9
SALDO
S999
-25
0
2
5
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 29
L 0
.
7
5
2
0
4
5
C
O B
O L
0
0
2
5
0
1
5
5
1
6
7
9
0
2
5
0
0
7
5
Modul
Cobol
VALUE Berfungsi untuk memberi nilai awal dari suatu data item. Pemberian nilai awal dilakukan dengan menyertakan value setelah picture. Contoh : Working-storage section. 77 Harga
pic 9(5) value 5000
77 Jumlah
pic 9(4) value 0
Konstanta figurative (seperti : zero, space, high value dll ) juga dapat digunakan dalam pemberian nilai awal. Contoh : Working-storage section 77 Jumlah
pic 9(4) value zero
77 Jawaban pic x value space
FILLER Digunakan untuk menampilkan atau membuat bentuk tampilan dengan format yang diinginkan. Contoh : Bentuk tampilan sebagai berikut : DAFTAR NAMA-NAMA MAHASISWA AMIK YPTK PADANG Program : Identification division. Program-id. contoh-filler. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 30
Modul
Cobol
Environment division. Data division. Working-storage section. 77 Garis pic x (60) value all "-" 01 Judul-1. 02 Filler pic x (40) value "DAFTAR NAMA-NAMA MAHASISWA". 01 Judul-2. 02 Filler pic x (40) value " YPTK PADANG Procedure Division. Mulai. Display garis. Display judul-1, judul-2. Display garis. Stop run.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 31
".
Modul
Cobol
BAB VI PROCEDURE DIVISION Pada divisi sebelumnya sudah dipersiapkan semua sarana yang nantinya dibutuhkan dalam suatu pekerjaan proses. Divisi ini merupakan inti dari pemrograman COBOL. Statement yang ada di PROCEDURE DIVISION diantaranya adalah sebagai berikut : ~ MOVE ~ DISPLAY ~ ACCEPT MOVE Verb ini berguna untuk memindahkan data dari satu field ke lokasi field yang lain, sehingga input data dapat dimanipulasi untuk menghasilkan output. Bentuk umum :
MOVE
nama-data-1 TO nama-data-2 [, nama-data-3 ] ..... literal
Contoh : Move unit to unit-out
( memindahkan nilai data dari field unit ke field unit-
out ) JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 32
Modul
Cobol
Move zero to kuantitas
( memindahkan karakter nol ke record kuantitas )
DISPLAY Statement display dipergunakan untuk menampilkan hasil di layar ataupun di printer. Kalau dipergunakan statement Write untuk menampilkan hasil di printer, maka print-file harus disebutkan terlebih dahulu di environment division pada filecontrol dan select clause, tetapi dengan statement display, tidak perlu menyebutkannya. Ada 3 bentuk dari statement display : Bentuk statement display ke 1 : Display nama-layar Contoh : identification division. program-id. display1. environment division. data division. screen section. 01 hapus-layar. 02 blank screen. procedure division. mulai. display hapus-layar. stop run. Bentuk statement display ke 2: Display nama-data-literal contoh : JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 33
Modul
Cobol
identification division. program-id. display2. environment division. data division. working-storage section. 01 nilai-celcius. 02 celcius pic 9(5) value 50. 01 nilai-hasil. 02 celcius-out pic 9(5). 02 fahrenheit pic zzz.99. procedure division. hitung. compute fahrenheit = 1.8 * celcius +32. tampilkan. move celcius to celcius-out. display "Perhitungan :". display celcius-out,'Derajad celcius adalah :'. display fahrenheit,'Derajat Fahrenheit'. selesai. stop run. Bentuk statement display ke 3: Display (posisi-tampilan) nama-data literal. Contoh : identification division. program-id. display3. environment division. data division. screen section. 01 hapus-layar. 02 blank screen. procedure division. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 34
Modul
Cobol
tampilkan. display hapus-layar. display (2, 5) "Bahasa Cobol". stop run.
ACCEPT Statement accept digunakan untuk memasukan data lewat layar sewaktu program tersebut dijalankan ( pada waktu run time ). Ada 3 bentuk statement accept yang tersedia : Bentuk statement accept ke 1 : Accept nama-data Data yang dimasukan, akan ditempatkan pada nama-data setelah accept, yang bentuk, jenis dan panjangnya sudah ditentukan dalam Data Division. Contoh : identification division. program-id. accept1. environment division. data division. working-storage section. 01 variabel. 02 nobp pic x(8). 02 nama pic x(20). screen section. 01 hapus-layar. 02 blank screen. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 35
Modul
Cobol
procedure division. tampilkan. display hapus-layar. display (5, 10) "Nobp Mahasiswa :". accept nobp. display (6, 10) "Nama Mahasiswa :". accept nama. stop run.
Bentuk statement accept yang ke 2 : Accept nama-layar. contoh : identification division. program-id. accept1. environment division. data division. working-storage section. 01 variabel. 02 nobp pic x(8). 02 nama pic x(20). screen section. 01 hapus-layar. 02 blank screen. 01 layar-data. 02 line 5 column 10 value "Nobp Mahasiswa
:".
02 column plus 1 pic x(8) to nobp. 02 line 6 column 10 value "Nama Mahasiswa 02 column plus 1 pic x(20) to nama. procedure division. tampilkan. display layar-data. accept layar-data. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 36
:".
Modul
Cobol stop run.
Bentuk statement accept yang ke 3 : Accept (posisi-layar) nama-data identification division. program-id. accept1. environment division. data division. working-storage section. 01 variabel. 02 nobp pic x(8). 02 nama pic x(20). screen section. 01 hapus-layar. 02 blank screen. procedure division. tampilkan. display hapus-layar. display (5, 10) "Nobp Mahasiswa :". accept (5, 30) nobp. display (6, 10) "Nama Mahasiswa :". accept (6, 30) nama. stop run. Statement Arithmatik Cobol mempunyai 4 verb dasar untuk membentuk statement operasi arithmatika yaitu : - Add ( penjumlahan ) - Subtract ( Pengurangan ) - Multiply ( mengali ) - Divide ( membagi ). ADD JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 37
Modul
Cobol
Verb ini digunakan untuk menambahkan 2 atau lebih operand numerik dan menyimpan hasilnya. Suatu operand adalah suatu data item atau suatu literal numerik ( konstanta ). Operand yang digunakan untuk verb ini harus berupa nilai numerik. Ada 2 bentuk dari statement Add, yaitu :
Bentuk 1 :
ADD
nama-data-1 Literal-1
nama-data-2 ,
... TO nama-data-3 {ROUNDED}
literal-2 { ON SIZE ERROR statement-imperatif }
Bentuk 2 :
ADD
nama-data-1
nama-data-2
nama-data-3
Literal-1
literal-2
GIVING nama-data-4 {ROUNDED} { ON SIZE ERROR statement-imperative }
contoh : add a, b to c JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 38
c <= c + a + b
Modul
Cobol
add a, b to c, d pernyataan diatas identik dengan add a, b t c add a, b to d
SUBTRACT verb Verb ini digunakan untuk membentuk statement operasi arithmatika pengurangan suatu nilai operand numerik.
SUBTRACT
nama-data-1
nama-data-2
Literal-1 FROM
nama-data-n
nama-data-3
literal-2 GIVING nama-data-m
literal-n [ ROUNDED ] [; SIZE ERROR imperative-statemen ]
Contoh : * Subtract A From B On Size Error * Subtract A From B Giving C Rounded On Size Error Goto .....
MULTIPLY Verb JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 39
Modul
Cobol
Verb ini digunakan untuk membentuk statement guna instruksi perkalian dua nilai numerik dan menyimpan hasilnya. Bentuk -1
MULTIPLY
nama-data-1
BY
Literal-1 {; ON SIZE ERROR statement-imperative }
Bentuk -2 :
MULTIPLY
nama-data-1
BY
nama-data-2
Literal-1
Literal-2
GIVING nama-data-3 {ROUNDED} { ON SIZE ERROR statement-imperative }
Bila hasil perkalian akan disimpan pada salah satu field dari numerik data pengali, maka digunakan bentuk BY. Bila hasil perkalian akan disimpan di tempat yang lain, maka digunakan bentuk BY dan bentuk optional GIVING bersama-sama. Contoh : Multiply A By B Multiply A By 5 Giving B Multiply A By B Giving C DIVIDE
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 40
Modul
Cobol
Verb ini digunakan untuk membentuk statement operasi pembagian. Bentuk-1 :
DIVIDE
{ nama-data-1 } INTO { Literal-1
nama-data-2 [ROUNDED ]
}
{; ON SIZE ERROR statement-imperative }
COMPUTE Pada statement arithmatik sebelumnya, lebih cocok untuk perhitungan arithmatika tunggal dan sederhana. Dengan digunakan COMPUTE verb di dalam ungkapan matematik yang rumit akan menyederhanakan statement tersebut. Contoh : Untuk perhitungan sebagai berikut : Y=A+B- C
xE D
Jika digunakan arithmatika sebelum, akan digunakan banyak statement untuk memecahkannya, sebagai berikut : Add A To B Divide D Into C Multiply C By E Subtract E From B giving Y Dengan menggunakan COMPUTER : JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 41
Modul
Cobol
COMPUTE Y = A + B - ( C/D ) * E Statement Percabangan GO TO Verb Statement Go to akan membawa proses program menuju ke suatu paragraph tertentu. Bentuk Umum : GO TO nama-paragraph
contoh : Identification division. Program-id. Contoh Go-To Envirenment Division. Data Division. Working-storage section. 77 nmb pic A(10). 77 jmb pic 9(5). 77 hrg pic 9(6). 77 tot-penj pic 9(8). Procedure Divison. paragraf-1. Display (10, 10) "Data Penjualan " Display (12, 10) "Nama Barang Accept (12, 28) nmb. go to paragraf-3. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 42
: ".
Modul
Cobol
paragraf-2. compute tot-penj = penj * hrg. Display (18, 10) " Total Penjualan : " , tot-penj. stop run. paragraf-3. Display (14, 10) "Jumlah Barang Accept (14, 28) jmb. Display (16, 10) "Harga Barang Accept (16, 28) hrg. go to paragraf-2.
: ". : ".
Bentuk 2 :
GO TO nama-paragraph-1, nama-paragraph-2, ....... nama-paragraph-n DEPENDING ON nama-data
contoh : Identification division. Program-id. Go to Depending ON. Environment Division. Data Division. Working-storage section. 77 fakultas pic 9. Procedure Division.. par-1. Display (10, 10) "Fakultas Anda ( (1)STMIK/(2)AMIK/(3)STIE/(4)AAMPK ) ? : " Accept fakultas. Display (1, 1) erase. go to fak1, fak2, fak3, fak4 depending on fakultas Display "Fakultas Anda tidak Ada Lho ........ !" Go to par-1. fak1. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 43
Modul
Cobol
Display (10, 10) "Fakultas Anda adalah "STMIK" " Go to Selesai. fak2. Display (10, 10) "Fakultas Anda adalah "AMIK" " Go to Selesai. fak3. Display (10, 10) "Fakultas Anda adalah "STIE" " Go to Selesai. fak4. Display (10, 10) "Fakultas Anda adalah "AAMPK" " Go to Selesai. Selesai. Stop run. PERFORM Berfungsi
untuk membawa proses dari
program meloncat ke suatu paragraf
tertentu, mengerjakan seluruh isi paragraph tersebut dan setelah selesai kembali lagi ke statement setelah statement perform. Bentuk 1 :
PERFORM nama-paragraph-1
THROUGH THRU
contoh : Identification division. Program-id. Contoh-perform. Environment division. Data Division. Working-Storage section. par-a. Display "STMIK-AMIK-STIE-AAMPK" JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 44
nama-paragraph-2
Modul
Cobol
perform par-b. stop run. par-b. Display " "YPTK" PADANG". hasil : STMIK-AMIK-STIE-AAMPK "YPTK" Padang Bentuk 2 :
PERFORM nama-paragraph-1
THROUGH THRU
UNTIL
kondisi
contoh : Identification division. Program-id. Contoh perform-kondisi. Environment Division. Data Division Working-storage section. 77 saldo pic S9(7). 77 jml-tr pic 9(5). 01 jenis pic x. 88 ambil value "1". 88 setor value "2". 77 jawab pic x. Screen Section. 01 masukan. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 45
nama-paragraph-2
Modul
Cobol
02 line 10 column 20 "Entri Transaksi ". 02 line 12 column 20 "Saldo Tabungan : ". 02 column plus 1 pic S9(7) from saldo. 02 line 14 column 20 "Jenis Transaksi : ". 02 column plus 1 pic x to jenis. 02 line 16 column 20 "Jumlah Transaksi : ". 02 column plus 1 pic 9(5) to jml-tr. 01 hasil. 02 line 16 column 20 "Sisa saldo : ". 02 column plus 1 pic S9(7) from saldo. Procedure division. proses-1. move 0 to ambil, setor, saldo move "Y" to Jawab perform proses-lagi until jawab = "T" or "t" stop run. proses-lagi. display masukan accept masukan if jenis = "1" compute tsaldo = saldo - jml-tr move tsaldo to saldo, sisa-saldo else compute tsaldo = saldo + jml-tr. move tsaldo to saldo, sisa-saldo. display hasil.
Bentuk 3 :
PERFORM nama-paragraph-1
THROUGH THRU
nama-data numerik-integer JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 46
TIMES
nama-paragraph-2
Modul
Cobol
contoh : Identification Division. Programi-d. perform... times. Environment Division. Data Division. Procedure Division. awal. display (1, 1) erase perform tampilkan 10 times. stop run. tampilkan. display "SAYA BELAJAR BAHASA COBOL ".
Hasil : "SAYA BELAJAR BAHASA COBOL " akan ditampilkan sebanyak 10 kali.
PERFORM nama-paragraph-1
THROUGH
nama-paragraph-2
THRU nama-data-1 VARYING
nama-index-1
nama-data-2 FROM
integer-1
nama-index-2 nama-data-3 BY
integer-2
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 47
UNTIL
kondisi-1
Modul
Cobol
STATEMENT IF Dalam suatu permasalahan yang memerlukan pengambilan sebuah keputusan terhadap sejumlah alternatif. Misalnya, untuk menentukan seorang pembeli akan diberi korting atau tidak berdasarkan total pembelian, besarnya komisi yang diterima oleh seorang penjual berdasarkan kriteria. Dalam
bahasa
Cobol,
persoalan
yang
memerlukan
pengambilan
keputusan dapat diselesaikan dengan menggunakan kalimat IF. Bentuk Umum :
IF kondisi ( pernyataan-1 ) .... [ ELSE ( pernyataan-2 ) .... ]
Kondisi Hubungan Kondisi Hubungan melibatkan operator hubungan (Relational Operator) yang terdiri atas : Relational Operator
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 48
Makna
Modul
Cobol
IS <
Kurang dari
IS GREATER THAN
IS >
Lebih dari
IS EQUAL TO
IS =
Sama dengan
IS NOT LESS THAN
IS NOT <
Tidak Kurang dari
IS NOT GREATER THAN
IS NOT >
Tidak lebih dari
IS NOT EQUAL TO
IS NOT =
Tidak sama dengan
IS LESS THAN
atau
contoh : Identification Division. Program-id. Contoh-If. Environment Division. Configuration section. Special-names. Decimal-point is comma. Data Division. Working-storage section. 77 gb pic 9(8). 77 lb pic 9(2). 77 hn pic 9(6). 77 jawab pic x. 01 Data-masukan. 02 nik pic x(7). 02 nmk pic x(20). 02 jk pic 9(3). 02 gp pic 9(6). Screen section. 01 layar-masuk. 02 line 2 column 20 "Perhitungan Gaji "PT. COBA-COBA" ". 02 line 4 column 20 "Nomor Induk Karyawan : ". 02 column plus 1 pic x(7) to nik. 02 line 6 column 20 "Nama Karyawan 02 column plus 1 pic x(20) to nmk. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 49
: ".
Modul
Cobol
02 line 8 column 20 "Jam Kerja
: ".
02 column plus 1 pic 9(3) to jk. 02 line 10 column 20 "Gaji Pokok
: ".
02 column plus 1 pic 9(6) to gp. 01 layar-tampil. 02 line 12 column 20 "Gaji Bersih
:"
02 Column pus 1 pic zzz.zzz. 01 layar-tanya. 02 line 14 column 20 "Ada data lagi (Y/T) : ". 02 column plus 1 pic x to jawab. Procedure Division. proses-1. display (1, 1) erase move "Y" to jawab. perform masuk until jawab = "T" or "t" stop run. masuk. display layar-masuk. accept layar-masuk. if jk < 40 move 0 to lb else compute lb = jk - 40 if lb < 5 compute hn = lb * 1000 else if lb not < 5 and lb not > . Display layar-tampil. Accept layar-tampil. Display layar-tanya Accept layar-tanya.
Disk layar Kasus JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 50
Modul
Cobol
Dengan mempergunakan kasus yang sama pada modul sambungan
disk
layar (sambungan 1), akan dibuat program untuk menentukan bentuk tampilan sbb : LAPORAN PAJAK Departemen
: xxxxxxxxxxxx
-----------------------------------------------------------------NO
NIP
NAMA PEGAWAI GJ.BERSIH PAJAK
-----------------------------------------------------------------99 xxxxxx xxxxxxxxxxxxxxx 9999999 999999
99 xxxxxx xxxxxxxxxxxxxxx 9999999 999999 ----------------------------------------------------------------Total Departemen
99999999 9999999
..... ..... dst Departemen
: xxxxxxxxxxxx
-----------------------------------------------------------------NO
NIP
NAMA PEGAWAI GJ.BERSIH PAJAK
-----------------------------------------------------------------99 xxxxxx xxxxxxxxxxxxxxx 9999999 999999 99 xxxxxx xxxxxxxxxxxxxxx 9999999 999999 ----------------------------------------------------------------Total Departemen Total Seluruhnya
99999999 9999999 999999999 99999999
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 51
Modul
Cobol
Untuk membuat laporan diatas data pada file Pegawai tersusun secara SEQUENTIAL (terurut) berdasarkan departemen / bagian, mulai dari departemen / bagian HUMAS s/d PERSONALIA. Sebelum anda membuat program ini, bukalah program MASUK-2.COB (program memasukkan data pd file PEGAWAI) tukarlah OPEN EXTEN PEGAWAI dengan OPEN OUTPUT PEGAWAI, kompilasi program MASUK-2.COB kemudian entrikanlah data misalkan sbb : -------------------------------------------------------------------------------------record 1 HUMAS
921871
FRANSISCA
75
5000
2 HUMAS
921872
ELVIRA
70
4500
3 HUMAS
921873
TOMMY AREA
70
5000
4 SECURITY
922874
ZULIMANSYAH
80
1500
5 SECURITY
922075
HENDRA
85
2000
6 ADMINISTRASI
923076
TATI TITI
65
2500
7 ADMINISTRASI
923077
ITA FITRIA
70
2500
8 ADMINISTRASI
923078
JEJET
60
2000
9 STAFF
924064
FADHLI
45
7500
10 STAFF
924065
ZAKI
50
7000
11 PERSONALIA
925045
FITRI YANDI
60
4500
12 PERSONALIA
925034
CHANDRUSAX
45
4000
.
.
.
Berdasarkan data yang tersimpan tersebut diatas, kalau program yang akan anda buat berikut ini di jalankan, maka akan tampil di layar monitor anda sbb : LAPORAN PAJAK Departemen : HUMAS -----------------------------------------------------------------NO
NIP
NAMA PEGAWAI GJ.BERSIH PAJAK
-----------------------------------------------------------------1
921871
FRANSISCA
337500
37500
2
921872
ELVIRA
283500
31500
3
921873
TOMMY AREA
315000
35000
-----------------------------------------------------------------Total Departemen JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 52
936000
104000
Modul
Cobol
Departemen : SECURITY -----------------------------------------------------------------NO
NIP
NAMA PEGAWAI GJ.BERSIH PAJAK
-----------------------------------------------------------------1 922874
ZULIMANSYAH
108000
12000
2 922075
HENDRA
153000
17000
-----------------------------------------------------------------Total Departemen
251000
29000
....... ..dst.. ....... Departemen : PERSONALIA -----------------------------------------------------------------NO
NIP
NAMA PEGAWAI GJ.BERSIH PAJAK
-----------------------------------------------------------------1 925045
FITRI YANDI
2 925034
CHANDRUSAX
243000 162000
27000 18000
------------------------------------------------------------------Total Departemen
405000
45000
Total seluruhnya
2622500
292500
Untuk Membuat program tersebut di atas, bukalah program LAPOR-2D.COB yang harus anda lakukan adalah : 1.
Pelajari dan fahami cara pendefenisian variabel / data di DATA DIVISION ( baik di FILE SECTION maupun di WORKING-STORAGE SECTION)
2. Pelajari dan fahami perancangan bentuk output laporan yang dirancang di WORKING-STORAGE section. 3. Lengkapi program dengan memperhatikan logika program yang ter gambar pada FLOWCHART tersebut adalah : JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 53
Modul
Cobol
************************** * program * ************************** identification division. program-id. modul-laporan. environment division. input-output section file-control. select PEGAWAI assign to disk organization is sequential access mode is sequential. data division. file section. fd PEGAWAI label record are standard value of file-id is "B:peg.dat". 01 record-gaji-pegawai. 02 dept-peg pic x(12). 02 nip-peg pic x(6). 02 nama-peg pic x(15). 02 jam-kerja pic 9(3). 02 gaji-jam pic 9(4). working-storage section. 77 ph-b pic 9(7). 77 ph-k pic 9(7). 77 pjk pic 9(6). 77 tpjk pic 9(8). 77 eof pic x. 77 dep-sbl pic x(12). 77 tpjk-dep pic 9(8). 77 tphb-dep pic 9(8). 77 tpjk-sel pic 9(10). 77 tphb-sel pic 9(10). 01 judul-utama. 02 filler pic x(30) value spaces. 02 filler pic x(25) value 'LAPORAN PAJAK KARYAWAN'. 01 judul-utama-2. 02 filler pic x(15) value spaces. 02 filler pic x(20) value 'Departemen : '. 02 dep-out pic x(12). 01 judul-spasi. 02 filler pic x(80) value spaces. 01 garis. 02 filler pic x(15) value spaces. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 54
Modul
Cobol
02 filler pic x(55) value all '~'. 01 isi-tabel. 02 filler pic x(15) value spaces. 02 filler pic x(3) value spaces. 02 NIP-OUT pic x(6). 02 filler pic x(3) value spaces. 02 NM-OUT pic x(15). 02 filler pic x(5) value spaces. 02 PHB-OUT PIC Z(8). 02 filler pic x(4) value spaces. 02 PJK-OUT pic Z(6). 01 total-dep. 02 filler pic x(16) value spaces. 02 filler pic x(12) value 'Total Dept'. 02 dep-c pic X(12). 02 filler pic x(6) value spaces. 02 tphb-dep-c pic z(8). 02 filler pic x(2) value spaces. 02 tpjk-dep-c pic z(8). 01 total-seluruh. 02 filler pic x(16) value spaces. 02 filler pic x(25) value 'Total Seluruh '. 02 filler pic x(3) value spaces. 02 tphb-sel-c pic z(10). 02 tpjk-sel-c pic z(10). screen section. 01 hapus-monitor. 02 blank screen. KASUS 2 Perusahaan Penerbangan Bondo Air Lines yang melayani penerbangan untuk 3 daerah tujuan yaitu Jakarta, Medan dan Batam dalam melakukan pengolahan data penumpang yang tersimpan dalam file TIKET ( nama file dilabel TIKET.DAT), dengan organisasi dan access file secara sequential dengan data-data sebagai berikut : ---------------------------------------------------------------------------------------Nama data item Type Panjang Keterangan ---------------------------------------------------------------------------------------NO-TKT N 4 Nomor Tiket NM-PNP AN 15 Nama Penumpang AL-PNP AN 20 Alamat Penumpang TUJUAN AN 8 Tujuan penerbangan JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 55
Modul
Cobol
STAT-PNP AN 9 Status Penumpang ----------------------------------------------------------------------------------------Dari data yang tersimpan dalam file TIKET.DAT akan dilakukan pengolahan data yang nantinya akan menghasilkan suatu laporan dalam bentuk tabel, dengan ketentuan pemprosesan sebagai berikut - Jika Tujuan = 'Jakarta' , maka harga tiket Rp. 225000 Jika Tujuan = 'Batam' , maka harga tiket Rp. 175000 Jika Tujuan = 'Medan' , maka harga tiket Rp. 125000 - Jika Status = 'Mahasiswa' , maka potongan 10 % dari harga Jika Status = 'Anak' , maka potongan 50 % dari harga Jika Status = 'Dewasa' , maka tidak dapat potongan - Pembayaran = harga - potongan Tampilan yang diinginkan sbb : BONDO AIR LINES Jl. Burung, 20 Padang ----------------------------------------------------------------------------------------------------------| NO | NO.TIKET | NAMA MAHASISWA | TUJUAN| HARGA | DISKON | BAYAR| ----------------------------------------------------------------------------------------------------------| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ----------------------------------------------------------------------------------------------------------| Total | | | | ----------------------------------------------------------------------------------------------------------Jumlah Penumpang Jakarta Jumlah Penumpang Medan Jumlah Penumpang Batam
= ... Orang = ... Orang = ... Orang
PROGRAM UNTUK MEMASUKKAN DATA ----------------------------------------------------Dari kasus di atas, sebelum mencetak tabel yang diinginkan tersebut maka harus dimasukkan / dientrikan terlebih dahulu, oleh sebab itu dibuat terlebih dahulu program untuk memasukkan datanya ke dalam file tiket ( tiket.dat ). JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 56
Modul
Cobol
Logika / Flowchart program ------------------------------------identification division. program-id. contoh-1. environment division. data division. working-storage section. 77 nm-kar pic x(20). 77 nip-kar pic x(8). 77 gol-kar pic x. 77 stat-kar pic x(5). 77 jam-k pic 9(3). 77 gj pic 9(6). 77 tunj pic 9(5). 77 gj-bersih pic 9(7). screen section. 01 bersih-layar. 02 blank screen. procedure division. baru-mulai. move 0 to jam-k, gj, tunj, gj-bersih display bersih-layar display(5, 25) 'PT. ABC Padang' display(6, 25) '--------------' display(8, 5) 'N a m a : '. accept (8, ) nm-kar display(9, 5) 'N i p : '. accept (9, ) nip-kar display(10, 5) 'Golongan : '. accept (10, ) gol-kar display(11, 5) 'Status : '. accept (11, ) stat-kar display(12, 5) 'Jam Kerja : '. accept (12, ) jam-k if gol-kar = 'A' move 1500 to gj else if gol-kar = 'B' move 3000 to gj else move 4500 to gj. if stat-kar = 'KAWIN' move 75000 to tunj else JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 57
Modul
Cobol
move 25000 to tunj. compute gj-bersih = (gj * jam-k) + tunj display(15, 15) 'Gaji bersih Rp. ', gj-bersih stop run.
PENGGUNAAN TABEL / DIMENSI Tabel : merupakan daftar data yang mempunyai type yang sama dan diakses dengan menggunakan nama data yang sama. Daftar data tersebut tersimpan di memori secara berurutan. Kegunaan : Untuk memudahkan / menyederhanakan penulisan program. Pendefinisian Tabel Tabel didefinisikan dalam DATA DIVISION pada Working Storage Section dan File Section dengan menggunakan OCCURS clause. OCCURS : clause yang digunakan untuk melakukan pengulangan terhadap data item beberapa kali dalam suatu record, yang membentuk suatu tabel (daftar). Bentuk Syntax : OCCURS integer TIMES Ascending Descending
Key
is
nama-data-1, nama-data-2
Indexed by nama-index-1, nama-index-2 Syarat Penggunaan : 1. Occurs tidak boleh digunakan pada level number 01 atau 77 2. Integer Times menunjukkan beberapa kali dilakukan pengulangan item di dalam suatu record. 3. Ascending atau descending , menunjukkan bagaimana data tersebut diatur, tergantung dari nilainya apakah descending(urutan menurun) atau ascending(menaik). 4. Key is dan Indexed by menunjukkan nama kunci yang dipergunakan pada statement search untuk mencari data yang ada di tabel. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 58
Modul
Cobol
contoh : 01 Tabel-nilai-siswa. 02 Nilai pic 999 occurs 5 times Keterangan : Defenisi tersebut menyatakan bahwa variabel nilai dapat menampung 5 data numeric. Identik dengan : 01 Tabel-nilai-siswa. 02 Nilai1 pic 9(3). 02 Nilai2 pic 9(3). 02 Nilai3 pic 9(3). 02 Nilai4 pic 9(3). 02 Nilai5 pic 9(3). Mengisi tabel & Mengambil isi tabel 1. Untuk menuju ke suatu elemen tabel digunakan suatu penunjuk / pointer yang disebut "SUBSCRIPT". 2. Nilai subscript berupa literal numerik / berupa bilangan bulat positif 3. Pengisian tabel dan pengambilan isi tabel dilakukan dengan menggunakan statement "PERFORM-VARYING". Syntax : Perform nama-paragraph Varying By
THROUGH THRU
nama-data-1 nama-data-3 integer-2
FROM
nama-paragraph-2 nama-data-2 integer-1 UNTIL
kondisi
OCCURS ............... DEPENDING ON Digunakan jika elemen di dalam tabel bervariasi jumlahnya. Syntax : OCCURS
integer-1 TO integer-2 TIMES DEPENDING ON nama-data
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 59
Modul
Cobol
contoh : 01 rec-mhs. 02 Jumlah-mhs pic 9(3). 02 Data occurs 1 to 500 TIMES depending on jumlah-mhs. 03 nobp pic x(8). 03 nama pic x(20). Contoh pemakaian tabel : Identification Division. Program-id. Tabel-dim-1. Environment Division. Data Division. Working-storage section. 77 i pic 99 01 Tabel-nilai-siswa. 02 nilai-siswa pic 9(3) occurs 5 times Screen section. 01 Hapus-layar. 02 Blank screen. Procedure Division. Proses. Perform masukan-nilai varying i from 1 by 1 until i > 5 Display hapus-layar. Perform tampilan-nilai-siswa varying i from 1 by 1 until i > 5 stop run. Masukan-nilai. Display( , ) 'nilai : '. Accept ( , ) nilai-siswa(i) Display spaces. Tampilan-nilai-siswa. Display ( , ) ' Nilai ke ', i , ' : ' , nilai-siswa(i) Display space. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 60
Modul
Cobol
PENGGUNAAN FILE UNTUK TABEL DIMENSI SATU 1. Program Entry Data Identification division. Program-id. Dimensi-1. Environment Division. Input-output section. File-control select matakuliah assign to disk organization is sequential access mode is sequential. Data division. File section. FD matakuliah label record is standard value of file-id is "a"siswa.dat" data record is rec-siswa. 01 Rec-siswa. 02 nobp pic x(8). 02 nama pic x(20). 02 data-mata-kuliah occurs 6 times. 03 kdmtk pic x(5). 03 nmtk pic x(12). 03 sks pic 9. Working-storage section. 77 i pic 9 value 0. 77 mad pic x. 77 dsb pic x. 01 var-bantu. 02 kd-m pic x(5). 02 nmtk-m pic x(15). 02 sks-m pic 9. Screen section. 01 Entri-1. 02 Line 4 column 10 " Nobp : ". 02 Column plus 1 pic x(8) to nobp. 02 Line 5 column 10 " Nama : ". 02 Column plus 1 pic x(15) to nama. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 61
Modul
Cobol
01 Entri-2. 02 Line 7 column 10 "Entri Mata Kuliah ". 02 Line 8 column 10 "Kode Mtk : ". 02 Column plus 1 pic x(5) to kd-m. 02 Line 9 column 10 " Nama Mtk : ". 02 Column plus 1 pic x(15) to nmtk-m. 02 Line 10 column 10 " Sks : ". 02 Column plus 1 pic x(8) to sks-m. Procedure Division. Mulai. Open output matakuliah move 0 to i move space to nobp, nama move space to kd-m, nmtk-m move 0 to sks-m Perform masuk-1 until mad = "T" or "t" close matakuliah stop run. Masuk-1. move "T" to dsb perform masuk-2 until dsb = 'Y' or 'y' dispaly (12, 10) "Ada data lagi (Y/T) :' Accept mad. Masuk-2. display entri-1 accept entri-1 perform ambil-data varying i from 1 by 1 until i = 6 write rec-siswa display (11, 10) " Data Benar (Y/T) :" accept dsb. Ambil-data. display entri-2 accept entri-2 move kd-m to kd(i) move nmtk-m to nmtk(i) move sks-m to sks(i). PROGRAM MENAMPILKAN DATA (DIMENSI 1) Lay-out : KARTU RENCANA STUDY MAHASISWA SEMESTER III BP : xxxxxxxx NAMA : xxxxxxxxxxxxxxxx ------------------------------------------------------------------------------| No | Kd-mtk | Nama-mtk | Sks | JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 62
Modul
Cobol
------------------------------------------------------------------------------xx xxxxx xxxxxxxxxxxx 99 xx xxxxx xxxxxxxxxxxx 99 ------------------------------------------------------------------------------Total sks 99 ------------------------------------------------------------------------------BP : xxxxxxxx NAMA : xxxxxxxxxxxxxxxx ------------------------------------------------------------------------------| No | Kd-mtk | Nama-mtk | Sks | ------------------------------------------------------------------------------xx xxxxx xxxxxxxxxxxx 99 xx xxxxx xxxxxxxxxxxx 99 ------------------------------------------------------------------------------Total sks 99 ------------------------------------------------------------------------------2. Program Informasi Tabel Dimensi - 1. Identification Division. Program-id. Dimensi-1. Environment Division. Input-output section. File-control select matakuliah assign to disk organization is sequential access mode is sequential. Data division. File section. FD matakuliah label record is standard value of file-id is "a"siswa.dat" data record is rec-siswa. 01 Rec-siswa. 02 nobp pic x(8). 02 nama pic x(20). 02 data-mata-kuliah occurs 6 times. 03 kdmtk pic x(5). 03 nmtk pic x(12). 03 sks pic 9. Working-storage section. 77 eof pic x. 77 tot-sks pic 9(2). 77 i pic 9. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 63
Modul
Cobol
01 judul-1. 02 f pic x(10) value space. 02 f pic x(20) value "KARTU RENCANA STUDY MAHASISWA". 01 judul-2. 02 f pic x(20) value space. 02 f pic x(15) value "SEMESTER III". 01 judul-garis. 02 f pic x(50) value all "-". 01 judul-tabel. 02 f pic x(50) value "| NO | KODE MTK | NAMA MTK | SKS |". 01 judul-isi-1. 02 f pic x(7) value "NOBP : ". 02 nobp-t pic x(8). 02 f pic x(20) value space. 02 f pix x(7) value "NAMA : ". 02 nama-t pic x(20). 01 judul-isi-2. 02 f pic x value "|". 02 nu-t pic 99. 02 f pic x(3) value " | ". 02 kdmtk-t pic x(5). 02 f pic x(3) value " | ". 02 nmtk-t pic x(12). 02 f pic x(3) value " | ". 02 sks-t pic 9. 02 f pic xx value " |". 01 judul-total 02 f pic x(20) value "| T O T A L : ". 02 f pic x(10) value space. 02 f pic x value "|". 02 tot-sks-t pic 9(2). Procedure Division. Awal. Open Input matakuliah. move "T" to eof move 0 to nu Display judul-1 Display judul-2 perform baca-data until eof = "Y" close matakuliah. stop run. Baca-data. Read matakuliah record At End move "Y" to EOF. If EOF = "T" move 0 to tot-sks move nobp to bp-t JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 64
Modul
Cobol move nama to nama-t display judul-isi-1 dislapy judul-garis display judul-garis display judul-tabel display judul-garis perform ambil-data varying i from 1 by 1 until i > 6 display judul-garis display judul-total display judul-garis. stop " Tekan enter .........!".
Ambil-data. add 1 to nu move nu to nu-t move kdmtk (i) to kdmtk-m move nmtk(i) to nmtk-t move sks(i) to sks-t compute tot-sks = tot-sks + sks(i) move tot-sks to tot-sks-t Display judul-isi-2. TABEL DIMENSI 2 Program Entry Data dimensi 2 Identification division. Program-id. Dimensi-1. Environment Division. Input-output section. File-control select matakuliah assign to disk organization is sequential access mode is sequential. Data division. File section. FD matakuliah label records are standard value of file-id is "A:mtk.dat" data record is rec-mtk. 01 rec-mtk 02 bp pic x(8). 02 nm pic x(20). 02 semester occurs 2 times. 03 sem pic 9. 03 matakul occurs 7 times. 04 kdmt pic x(5). 04 nmtk pic x(15). JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 65
Modul
Cobol
04 sks pic 9. 04 nl pic 99. working-storage section. 77 mad pic x. 77 dsb pic x. 77 a pic x. 77 b pic x. 01 var-input. 02 sem-m pic 9. 02 kdmt-m pic x(5). 02 nmtk-m pic x(15). 02 sks-m pic 9. 02 nl-m pic 99. screen section. 01 entri-1. 02 line 2 column 10 "Nomor BP : ". 02 column plus 1 pic x(8) to bp. 02 line 3 column 10 "Nama Mahasiswa : ". 02 column plus 1 pic x(20) to nm. 01 entri-2. 02 line 5 column 10 "Semester : ". 02 column plus 1 pic 9 to sem-m. 01 entri-3. 02 line 6 column 10 "Kode matakuliah : ". 02 column plus 1 pic x(5) to kdmt-m. 02 line 7 column 10 "Nama matakuliah : ". 02 column plus 1 pic x(20) to nmtk-m. 02 line 8 column 10 "Sks : ". 02 column plus 1 pic 9 to sks-m. 02 line 9 column 10 "Nilai : ". 02 column plus 1 pic 99 to nl-m. Procedure division. Mulai. open input matakuliah. move "Y" to mad move 0 to sem-m, sks-m, nl-m move space to kdmt-m, nmtk-m perform masuk-1 until mad = ''T" or "t" close matakuliah stop run. Masuk-1. move "T" to dsb perform masuk-2 until dsb = "Y" or "y" display (12, 10) "Masih Ada Data (Y/T) :" accept(12, 45) mad. Masuk-2 JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 66
Modul
Cobol
Display entri-1. Accept entri-1. perform masuk-sem varying a from 1 by 1 until a > 2 display(11, 10) "Data sudah benar (Y/T)? :" accept(11, 45) dsb. Masuk-sem. display entri-2. Accept entri-2. move sem-m to sem(i). perform masuk-matakuliah varying b from 1 by 1 until b > 7. Masuk-matakuliah. display entri-3. Accept entri-3. move kdmt-m to kdmt(a, b). move nmtk-m to nmtk(a, b). move sks-m to sks(a, b). move nl-m to nl(a, b). Lay-out : (dimensi-2) DAFTAR NILAI MAHASISWA BP : xxxxxxxxx SEMESTER : xx No KODE MATAKULIAH 9
xxxxx
Total Tiap Semester SEMESTER : xx No KODE MATAKULIAH 9
xxxxx
NAMA : xxxxxxxx NAMA MATAKULIAH xxxxxxx
NILAI
9
99
SKS
NILAI
9
99
99 NAMA MATAKULIAH xxxxxxx
Total Tiap Semester Total Seluruh Semester
Program Informasi Tabel Dimensi - 2. Identification division. Program-id. Dimensi-2. Environment Division. Input-output section. File-control select matakuliah assign to disk organization is sequential access mode is sequential. Data division. File section. JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 67
SKS
99 99
Modul
Cobol
FD matakuliah label records are standard value of file-id is "A:mtk.dat" data record is rec-mtk. 01 rec-mtk. 02 bp pic x(8). 02 nm pic x(20) 02 semester occurs 2 times. 03 sem pic 9. 03 matakul occurs 7 times. 04 kdmt pic x(5). 04 nmtk pic x(15). 04 sks pic 9. 04 nl pic 99. working-storage section. 77 a pic 9. 77 b pic 9. 77 eof pic x. 77 nu pic 9. 77 tot-sks pic 9(3). 77 tot-s pic 9(3). 01 judul-atas. 02 f pic x(10) value space. 02 f pic x(20) value "DAFTAR NILAI MAHASISWA ". 01 judul-1. 02 f pic x(15) value "| BP : ". 02 bp-c pic x(8). 02 f pic x(10) value space. 02 f pic x(15) value "| NAMA : ". 02 nm-c pic x(20). 02 f pic x value "|". 01 judul-2. 02 f pic x(15) value "| Semester : ". 02 sem-c pic 9. 01 judul-tabel. 02 f pic x(65) value "| NO | KODE MATAKULIAH | NAMA MATAKULIAH | SKS | NILAI |". 01 judul-garis. 02 f pic x(65) value all "-". 01 judul-isi. 02 f pic x value "|". 02 no-c pic 9(2). 02 f pic x value "|". 02 kdmtk-c pic x(5). 02 f pic x value "|". 02 nmtk-c pic x(15). 02 f pic x value "|". JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 68
Modul
Cobol
02 sks-c pic 9. 02 f pic x value "|". 02 nl-c pic 9(2). 01 judul-total-1. 02 f pic x(25) value "Total tiap semester :" 02 tot-sks-c pic 9(3) 01 judul-total-2. 02 f pic x(25) value "Total seluruh semester :" 02 f pic x(20) value space.. 02 tot-s-c pic 9(3). 02 f pic x value "|". Procedure division. P-awal. open input matakuliah. move "T" to eof. move 0 to nu, tot-s. display judul-atas perform baca-data until eof='Y' close matakuliah stop run. Baca-data read matakuliah record into rec-mtk at end move "Y" to eof. if eof = "T" move bp to bp-c move nm to nm-c display judul-1 display judul-garis perform ambil-sem varying a from 1 by 1 until a > 2 display judul-garis. display judul-total-2. display judul-garis. if eof = "Y" display(24, 10)"Data habis, tekan enter ! " accept tekan. Ambil-sem. move sem(a) to sem-c display judul-2 display judul-garis display judul-tabel display judul-garis perform ambil-matakuliah varying b from 1 by 1 until b > 7 display judul-total-1 display judul-garis. Ambil-matakuliah. move 0 to tot-sks add 1 to nu JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 69
Modul
Cobol
move nu to nu-c move kdmtk(a, b) to kdmtk-c move nmtk(a, b) to nmtk-c move sks(a, b) to sks-c move nl(a, b) to nl-c perform cari display judul-isi. Cari. compute tot-sks = tot-sks + sks(a, b). move tot-sks to tot-sks-c compute tot-s = tot-s + tot-sks move tot-s to tot-s-c.
JUFRIADIF NA’AM Universitas Putra Indonesia “YPTK” 70