Sabtu, 22 September 2012

Struktur Division Pada Cobol

Secara keseluruhan pada intinya struktur program COBOL dibagi menjadi 4 bagian yang disebut DIVISION*, yaitu :
1. IDENTIFICATION DIVISION
2. ENVIRONMENT DIVISION
3. DATA DIVISION
4. PROCEDURE DIVISION

1.1 IDENTIFICATION DIVISION

Tujuan dari IDENTIFICATION DIVISION adalah memberikan informasi mengenai program yang dibuat.

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 membeca Bentuk Umum :
Garis Bawah                  =    Bentuk yang digaris bawahi harus ditulis
         persis bila digunakan.
            Tanda “[ ]”  (bracket)     =    Bentuk yang ada diantara tanda ini sifatnya
         optional, boleh ditulis / tidak.
            Huruf kecil                     =    nama yang dibentuk oleh programmer.

Jadi pada IDENTIFICATION DIVISION yang WAJIB ditulis :

              IDENTIFICATION DIVISION.
               PROGRAM-ID. nama program.


*Catatan :

Penulisan semua divisi dan paragraphnya dimulai dari area A yaitu kolom 8

1.2 ENVIRONMENT DIVISION

Tujuan dari ENVIRONMENT DIVISION adalah memberikan informasi mengenai peralatan yang digunakan dalam program.


Divisi ini dibagi menjadi 2 section yaitu CONFIGURATION SECTION dan INPUT-OUTPUT SECTION.      

Bentuk Umum ENVIRONMENT DIVISION :


                ENVIRONMENT DIVISION .
                     CONFIGURATION SECTION .
[    SOURCE -COMPUTER . nama-komputer [ WITH DEBUGGING MODEL .]           
                [    OBJECT-COMPUTER. nama-komputer. ]
                    SPECIAL – NAMES .
                                                [   PRINTER IS nama-mnemonik ]
                                                [   CURRENCY SIGN IS literal ]
                                                [    DECIMAL – POINTS IS COMMA  ] .

                      INPUT-OUTPUT SECTION.
                      FILE-CONTROL .
                                                {    file control entry } .
                                   

1.2.1    CONFIGURATION SECTION
Segala informasi mengenai jenis komputer yang digunakan dalam rangka                   pembuatan, pengkompilasian dan pemrosesan program dijelaskan di seksi ini.

1.2.2    SOURCE COMPUTER
Digunakan untuk menunjukkan nama komputer yang digunakan dalam     membuat dan mengkompilasi program.
Bila clause WITH DEBUGGING MODE disertakan maka baris pada source program yang mengandung karakter ‘D’ di kolom ke 7 bukan dianggap sebagai komentar, Sebaliknya bila clause WITH DEBUGGING MODE tidak disertakan maka statement yang mengandung karakter ‘D’ di kolom 7 dianggap sebagai komentar.   

1.2.3    OBJECT-COMPUTER

            Sama seperti Source Computer, yang sifatnya sebagai dokumentasi

1.2.4    SPECIAL-NAMES
Bersifat optional, digunakan untuk membuat nama khususnya menghubungkan nama –mnemonik implementor dengan nama mnemonic yang dibuat programmer.

·         PRINTER IS

Digunakan untuk menghubungkan nama-mnemonik yang dibuat programmer dengan alat pencetak Printer.

·         CURRENCY SIGN IS               

Digunakan untuk menunjukkan tanda mata uang. Bila tidak disebutkan maka Currency Sign adalah $.

·         DECIMAL POINT IS COMMA

Dalam COBOL titik desimal dituliskan dengan bentuk karakter “.“ atau titik. Bila diinginkan bukan karakter titik tetapi koma dapat ditulis   DECIMAL POINT IS COMMA.  

1.2.5    INPUT – OUTPUT SECTION

Seksi ini menerangkan peralatan yang digunakan untuk memproses file baik sebagai media peralatan input atau media peralatan output.

1.2.6    FILE-CONTROL

Bila akan dipergunakan file dengan media simpanan sekunder, maka paragraph File-Control harus ditulis.
File-Control Entry bisa terdiri 3 bentuk, tergantung dari organisasi file yang digunakan :  Organisasi file secara sequential, indexed, dan relative (dibahas pada bab berikutnya)

1.3 DATA DIVISION

Divisi ini memberikan penjelasan tentang input data dan output yang dipergunakan. Isi dari divisi ini adalah semua keterangan tentang file, record, nama-data, serta bentuk format yang akan digunakan di Procedure  Division.

1.3.1    FILE SECTION

Digunakan untuk menjelaskan file yang dipergunakan dalam program. File Section ini ada bila dipergunakan file dalam bentuk simpanan sekunder yaitu disk atau printer dan mempunyai hubungan dengan Input-Output Section dalam Environment Division.

Bentuk Umum :



1.3.3.1              FD nama-file

            Judul FD ditulis di area A dan diikuti nama filenya yang harus sama dengan nama-file yang disebutkan di Input-Output Section dalam Environment Division. 

·         BLOCK CONTAINS
Menunjukkan ukuran dari record di dalam file untuk tiap blocknya. Clause ini digunakan pada file yang berupa tape magnetik, sehingga clause ini tidak berfungsi pada COBOL tetapi boleh ditulis, dan penulisannya harus benar.

·         RECORD CONTAINS
Menunjukkan banyak karakter tiap-tiap record dalam file. Record Contains clause ini bisa tidak ditulis, karena nantinya termasuk dalam record description entry, tetapi jika ditulis dapat mempermudah pengerjaan kompilasi oleh komputer.                   

·         LABEL RECORD atau LABEL RECORDS
Bila File Section ada maka clause ini harus ditulis. LABEL RECORD IS OMITTED digunakan untuk card-file (file yang berupa kartu plong) atau print-file (berupa cetakan di printer) yang tidak mempunyai     label.LABEL RECORD IS STANDARD untuk disk-file (file yang disimpan di disk) yang mempunyai label.
·         VALUE OF FILE-ID
Menunjukkan informasi mengenai informasi file yang mempunyai label di disk. Label di disk ini berupa suatu nama-file yang berisi data yang direkammkan tersebut. Nama file di label dapat ditulis di antara tanda petik tunggal atau petik ganda.

Contoh :
            LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS ‘RELASI.DAT’.

·         DATA RECORD atau DATA RECORDS
Data Record atau Data Records clause menunjukkan nama-record di dalam file. Clause ini bersifat optional, hanya sebagai dokumentasi saja, boleh tidak ditulis karena nama record ini sudah ditunjukkan pada record-description-entry. 

·         LINAGE
Linage clause menunjukkan jumlah baris yang akan dicetak perhalaman, jumlah dari baris kosong paling atas ( top margins ) dan jumlah dari baris kosong paling bawah ( bottom margins ).

1.3.2    WORKING-STORAGE SECTION

Sifatnya optional, ada bilamana diperlukan pemesanan tempat di internal memori yang diperlukan oleh pekerjaan proses program.

Pemesanan tempat biasanya digunakan untuk :
1.  Data yang diperlukan oleh proses tetapi tidak berhubungan dengan file.
Misalnya data yang dimasukkan lewat layar terminal, data yang diterima dari lokasi storage yang lain, atau data yang dihasilkan dari hasil perhitungan matematika.
2. Persiapan penulisan judul yang nantinya di Procedure Division bila akan dicetak dapat dilakukan dengan statement Display atau Write.
3.  Untuk data output yang akan ditampilkan.

Bentuk Umum :
           
            [ WORKING-STORAGE SECTION ]
                [ 77-level data description entry ]
                [ record description                      ] ………….]


1.3.3    SCREEN SECTION

Seksi ini berguna untuk menunjukkan bentuk format dari layar terminal untuk menampilkan data atau memasukkan data.
Bentuk Umum :



1.3.3.1              FD nama-file

Judul FD ditulis di area A dan diikuti nama filenya yang harus sama dengan nama-file yang disebutkan di Input-Output Section dalam Environment Division. 

·         BLOCK CONTAINS
Menunjukkan ukuran dari record di dalam file untuk tiap blocknya. Clause ini digunakan pada file yang berupa tape magnetik, sehingga clause ini tidak berfungsi pada COBOL tetapi boleh ditulis, dan penulisannya harus benar.

·         RECORD CONTAINS
Menunjukkan banyak karakter tiap-tiap record dalam file. Record Contains clause ini bisa tidak ditulis, karena nantinya termasuk dalam record description entry, tetapi jika ditulis dapat mempermudah pengerjaan kompilasi oleh komputer.                   

·         LABEL RECORD atau LABEL RECORDS
Bila File Section ada maka clause ini harus ditulis. LABEL RECORD IS OMITTED digunakan untuk card-file (file yang berupa kartu plong) atau print-file (berupa cetakan di printer) yang tidak mempunyai     label.LABEL RECORD IS STANDARD untuk disk-file (file yang disimpan di disk) yang mempunyai label.
·         VALUE OF FILE-ID
Menunjukkan informasi mengenai informasi file yang mempunyai label di disk. Label di disk ini berupa suatu nama-file yang berisi data yang direkammkan tersebut. Nama file di label dapat ditulis di antara tanda petik tunggal atau petik ganda.

Contoh :
            LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS ‘RELASI.DAT’.

·         DATA RECORD atau DATA RECORDS
Data Record atau Data Records clause menunjukkan nama-record di dalam file. Clause ini bersifat optional, hanya sebagai dokumentasi saja, boleh tidak ditulis karena nama record ini sudah ditunjukkan pada record-description-entry. 

·         LINAGE
Linage clause menunjukkan jumlah baris yang akan dicetak perhalaman, jumlah dari baris kosong paling atas ( top margins ) dan jumlah dari baris kosong paling bawah ( bottom margins ).

1.3.2    WORKING-STORAGE SECTION

Sifatnya optional, ada bilamana diperlukan pemesanan tempat di internal memori yang diperlukan oleh pekerjaan proses program.

Pemesanan tempat biasanya digunakan untuk :
1.  Data yang diperlukan oleh proses tetapi tidak berhubungan dengan file.
Misalnya data yang dimasukkan lewat layar terminal, data yang diterima dari lokasi storage yang lain, atau data yang dihasilkan dari hasil perhitungan matematika.
2. Persiapan penulisan judul yang nantinya di Procedure Division bila akan dicetak dapat dilakukan dengan statement Display atau Write.
3.  Untuk data output yang akan ditampilkan.

Bentuk Umum :
           
            [ WORKING-STORAGE SECTION ]
                [ 77-level data description entry ]
                [ record description                      ] ………….]


1.3.3    SCREEN SECTION

Seksi ini berguna untuk menunjukkan bentuk format dari layar terminal untuk menampilkan data atau memasukkan data.
Bentuk Umum :



PICTURE karakter 9
  Digunakan untuk data item yang berbentuk numerik

PICTURE karakter V
  Menunjukkan  letak anggapan dari titik desimal

PICTURE karakter P
  Digunakan bersama dengan PICTURE karakter V untuk menimbulkan angka f
  Contoh :
            Misal : nilai data 5

PIC 9PPV berarti di prosedur 5ff^   
 Tanda ^ (caret) menunjukkan posisi dari letak anggapan titik desimal

PICTURE karakter S
  Digunakan untuk menempatkan angka negatif pada lokasi field, sehingga  
  komputer akan menyimpan tanda tsb.
  Karakter S tidak dihitung sebagai panjang field.


PICTURE karakter A
   Digunakan untuk menyimpan nilai data huruf (alphabetik)           

PICTURE karakter X
   Digunakan untuk menyimpan gabungan angka, huruf atau karakter khusus 
   (alphabetik)

1.3.3.8  PICTURE EDITING

Picture editing berguna untuk perubahan bentuk dari data yang tersimpan di storage.
Dengan adanya perubahan data yang dicetak pada output akan tampak lebih mudah dibaca, mudah dimengerti dan mempunyai susunan yang lebih baik dibanding bentuk data asli yang ada di storage.
PICTURE editing karakter Z
  Digunakan untuk mengganti angka f dimuka tidak tampak pada waktu
  pencetakan
PICTURE editing karakter $
  Dengan adanya tanda $, maka pada pencetakan, karakter $ akan tampak
PICTURE editing karakter “ . ” dan “ , ”
  Karakter “ . ” digunakan untuk menunjukkan letak posisi dari titik desimal pada
  Pencetakkan. Hanya sebuah karakter “ . ” yang boleh digunakan pada PICTURE
  editing 
  Karakter “ , ” berfungsi memberikan bentuk koma pada tempat – tempat tertentu
  tanpa merubah nilai datanya. Karakter “ , ” boleh digunakan lebih dari sekali

PICTURE editing karakter “ - “  (minus)
  Jika sebuah tanda minus dipakai pada permulaan atau pada karakter terakhir dari
  PICTURE editing, maka tanda minus akan tampak pada pencetakan bila data
  aslinya negatif. Jika data tidak negatif, tanda minus diganti dengan blank.
PICTURE editing karakter “ + “
  Jika sebuah tanda plus dipakai pada permulaan atau pada karakter terakhir dari
  PICTURE editing, maka tanda plus akan tampak pada hail edit bila data
  aslinya positif. Jika data negatif, yang akan tampak tanda minus. Untuk data
  yang tidak bertanda, dianggap bernilai positif.
PICTURE editing karakter DB dan CR
  Pada aplikasi akuntasi dibutuhkan keterangan nilai debit atau kredit. COBOL 
  menyediakan fasilitas ini dengan PICTURE editing karakter DB atau CR.
PICTURE editing karakter B
  Digunakan untuk mengedit nilai data bukan numerik. Karakter B akan
  menyebabkan blank disisipkan pada posisi dimana karakter B tersebit berada.

PICTURE editing karakter “ * “ (asterik)
  Digunakan untuk mengganti nilai 0 pada nilai data disebelah kanan dengan tanda
  asterik (*). Untuk maksud pencegahan terhadap penambahan angka yang tidak
  diinginkan di suatu nilai.

1.4 PROCEDURE DIVISION

Procedure Division merupakan tempat instruksi-instruksi dimana dilakukan prosedur pekerjaan proses dari input data menjadi output data. Dengan kata lain divisi ini merupakan inti dari program Cobol. Dan statement-statement yang ada di prosedur division dibentuk dari verb.

MOVE verb

    MOVE verb adalah statement yang ada di prosedur division yang digunakan 
    untuk memindahkan data dari satu field ke lokasi field yang lain, sehingga
    input data dapat dimanipulasi untuk menghasilkan output.

    Bentuk Umum :

 


Kamis, 20 September 2012

Teknik Pemrograman Terstruktur ( Konsep Dasar Program Cobol )






1.1  SEKILAS PROGRAM COBOL


COBOL (Common Business Oriented Language) adalah Bahasa Tingkat Tinggi (High Level Language) yang dirancang untuk menyelesaikan persoalan Bisnis.

 Perkembangan COBOL
- Tahun 1959 : Pertama kali diciptakan oleh CODASYL.
- Tahun 1960 : Versi COBOL-60, Versi pertama.
- Tahun 1968 : ANS COBOL menggunakan standar ANSI.
- Tahun 1974 : ANSI COBOL 1974. Sebagai acuan perubahan.
- Tahun 1985 : ANSI COBOL 1985.

→ Ms. COBOL versi 2.2 mengikuti ANSI COBOL ’74.
→ Ms. COBOL versi 3.0 mengikuti ANSI COBOL ’85, diluncurkan tahun 1988.

1.2  STRUKTUR PROGRAM COBOL 

Secara keseluruhan pada intinya struktur program COBOL dibagi menjadi 4 bagian yang disebut DIVISION*. Masing – masing divisi dimulai dengan judul divisi. Struktur program COBOL adalah sebagai berikut :
           
            IDENTIFICATION DIVISION.
            ENVIRONMENT DIVISION.
            DATA DIVISION.
            PROCEDURE DIVISION.

Berikut secara singkat kegunaan dari masing – masing divisi :
1. IDENTIFICATION DIVISION
    Berisi informasi tentang identitas program bersangkutan (nama program, nama pembuat,  
    tanggal program dibuat, dll). IDENTIFICATION DIVISION  tidak mempunyai pengaruh  
    terhadap proses program, hanya sebagai identifikasi.
2. ENVIRONMENT DIVISION
Berisi informasi tentang keadaan komputer dan alat – alat yang digunakan. Divisi ini terdiri atas 2 section yaitu :
CONFIGURATION SECTION 
  Berisi informasi mengenai komputer yang digunakan.        
INPUT – OUTPUT SECTION
  Menerangkan peralatan yang digunakan untuk memproses file, baik
  peralatan input juga peralatan output
3. DATA DIVISION.
    Divisi ini terdiri dari beberapa section yaitu :
            FILE SECTION
              Digunakan untuk menjelaskan masing – masing file (nama file, nama
  record dalam file, jenjang item dalam record dan ukuran data item) yang
  digunakan dalam program.
            WORKING – STORAGE SECTION
              Digunakan untuk mendeklarasikan variabel – variabel yang diperlukan
  dalam program beserta tipe dari variabel tsb.
            SCREEN SECTION
              Digunakan untuk merancang tampilan input data maupun output program.
            LINKAGE SECTION
  Digunakan untuk menerangkan data yang mempunyai hubungan dengan program lain.
            REPORT SECTION.
              Digunakan untuk menggambarkan bentuk dan laporan yang akan dicetak.
4. PROCEDURE DIVISION
    Divisi ini adalah inti dari pemrograman COBOL karena semua prosedur
    pekerjaan proses dari input data menjadi output.

*Catatan :
Dalam pembuatan program COBOL ke-4 judul divisi tersebut HARUS DITULIS.

1.3  BENTUK DATA

Bentuk Data dibedakan menjadi 2, yaitu :
1. DATA VARIABEL
    Data Variabel adalah data yang nilainya dapat berubah didalam program.
    Contoh :
            ACCEPT nil-tugas     

    Statement ACCEPT tsb digunakan untuk memasukkan nilai data (nil-tugas) ke
    dalam suatu storage. Nilai data ini akan selalu berubah bila dibaca nilai data
    yang lain dengan nama data (nil-tugas) yang sama.

Nama data : nil-tugas
(1)
(2)
(3)
(4)
(5)
(6)
(7)
70
65
60
65
80
75
65


2. DATA KONSTANTA      
    Data Konstanta adalah bentuk dari data yang dibutuhkan untuk pengolahan,    
    dimana nilainya tidak tergantung dari input yang dibaca.
    Contoh :
            MULTIPLY jam-kerja BY 500 GIVING gaji-out

    Nilai 500 adalah data konstanta, karena nilainya akan selalu tetap tidak berubah
    oleh proses.
§  Konstanta Numerik
      Aturan konstanta numerik :
  1. Maksimum panjang 18 digit
  2. Boleh ada tanda plus atau minus yang letaknya pada posisi terkiri tanpa adanya spasi dengan angka pertama
  3. Boleh ada titik decimal dimana saja kecuali pada posisi terkanan.
    Contoh : 556, -15.5, +78.54, 9470

§  Konstanta Non Numerik
            Adalah konstanta yang bukan digunakan untuk operasi aritmatika. 
            Aturan penngunaan konstanta non numeric:
  1. Panjang maksimum 120 karakter. 
  2. Boleh terdiri dari kumpulan karakter kecuali karakter petik, karena konstanta non numeric harus dibatasi dengan tanda petik. 
          Contoh : ‘Budi’, ‘Nasi Goreng’, ‘123’

1.4  COBOL RESERVED WORD

COBOL reserved word adalah kata yang telah didefinisikan yang mempunyai arti dan kegunaan tertentu dalam bahasa COBOL.

Programmer tidak boleh menggunakan kata – kata tersebut untuk membentuk nama data atau nama paragraph, kecuali dalam bentuk yang telah ditentukan oleh COBOL.

Berikut beberapa dari COBOL Reserved Word :

ACCEPT         ACCESS        ADD               AFTER           AND  
BOTTOM       BY                  CALL             CANCEL        DECIMAL-POINT
IN                    INPUT           OUT                OUTPUT        UNTIL

1.5  USER DEFINED WORD

User Defined Word adalah kata - kata yang digunakan oleh programmer untuk membuat dan mendefinisikan :
nama-program        nama - indek dan nama-data-index 
nama-alat                nama - kondisi
nama-file                 nama prosedur
nama-record            nama - seksi
nama-data                nama - kualifikasi

Pemberian nama ini bebas dengan mengingat syarat – syarat sbb :
1.      Maksimum panjangnya 30 karakter
2.      Paling sedikit harus mengandung 1 huruf
3.      Tidak boleh mengandung karakter khusus kecuali hypen (-), yang harus diletakkan pada tengah – tengah nama.
4.      Tidak boleh menggunakan COBOL reserved word
5.      Tidak boleh ada blank atau spasi.

1.6  ATURAN PENULISAN SOURCE PROGRAM & LEVEL NUMBER

Kolom yang tersedia untuk menulis program COBOL dimulai dari kolom 1 sampai dengan kolom 80. 
Kolom 1-6       : Digunakan untuk nomor urut (bilamana diperlukan) sifatnya optional. Nomor yang diberikan harus urut dari kecil ke besar
Kolom 7          : Digunakan untuk : 
  1. Tanda baris sambungan dari baris sebelumnya dengan memberikan tanda hypen (-). Baris sambungan ditulis mulai dari area B (kolom 12-72).
  2. Bila diisi dengan karakter (*), maka apa yang ditulis pada baris ini dianggap sebagai komentar. 
  3. Bila diisi dengan slash (/), maka baris yang ada tandanya dianggap sebagai komentar . Dan akan dicetak mulai halaman baru teratas, bila source program dicetak di printer. 
  4. Bila diisi dengan karakter (D), beris ini dianggap sebagai komentar. Tetapi bila pada ENVIRONMENT DIVISION dalam paragraph SOURCE-COMPUTER disebutkan WITH DEBUGGING MODE maka berguna untuk tujuan debugging.
Kolom 8-11     :  Disebut dengan area A
Semua judul divisi, judul seksi, nama paragraph, judul file description, level number 01 dan level number 77 ditulis mulai di kolom ini.

Kolom 12-72   : Disebut dengan area B  
Semua elemen program selain yang ditulis di area A, ditulis pada area B ini.

Kolom 73-80   :  Merupakan kolom yang tidak diproses oleh komputer, bisa diisi dengan catatan apa saja hanya untuk dokumentasi program. 

LEVEL NUMBER

Adalah suatu nomor yang menunjukkan jenjang dari data item dalam suatu record.

Level number yang dipakai terdiri dari :
1)      Level number 01 untuk mengawali keterangan dari record.
2)   Level number 02 -49 digunakan untuk mengawali keterangan dari data item, boleh dipilih dari nomor level tersebut.
3)      Level number 66 digunakan untuk RENAMES.
4)      Level number 77 digunakan untuk mengawali data item yang berdiri sendiri.
5)      Level number 88 digunakan untuk mengawali suatu nama kondisi.