BAB 8 PENGOLAHAN FILE DATA Tujuan Pelajaran : Setelah mempelajari bab ini , diharapkan mahasiswa • Memahami penggunaan perform dalam pemrograman dan mengetahui perpedaan dengan GO TO • Dapat menggunakan PERFORM dalam pemrograman dan dapat menerangkan perbedaan dengan GO TO • Memahami pengertian pengolahan file data • Mengerti berbagai perintah untuk pengolahan file data • Dapat menyusun program untuk pengolahan file data. Dalam pengolahan data, sering kali suatu file berisi data untuk diproses menjadi suatu laporan . Bagaimana menulis program untuk pengolahan file data akan dijelaskan pada bagian ini. Bentuk umum program cobol untuk pengolahan file data : IDENTIFICATION DIVISION. PROGRAM-ID. Nama-Program. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. Nama-Komputer. OBJECT-COMPUTER. Nama-Komputer. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT Input-File-Name ASSIGN TO DISK ORGANIZATION IS [LINE ] SEQUENTIAL. DATA DIVISION. FILE SECTION FD Input-File-Name LABEL RECORDS ARE STANDART VALUE OF FILE-ID “Nama File Data”. 01 Input-Record-Name 02 data-Item-name PIC ------------. ……………. ……………. WORKING-STORAGE SECTION. 77. Independent-Item PIC .-----------. 01 Judul-1 02 Filler PIC --------------. ………………. ………………. 01 Nama-record-out 02 Nama-field-out
PIC --------.
SCREEN SECTION. 01. Nama-record. 02. Statement. PROCEDURE DIVISION. Paragraph Headers. Statements. Catatan : Yang berhuruf Kapital adalah COBOL Reserved Words Yang berhuruf kecil adalah User Defined Words.
SPESIFIKASI MEMBUAT PROGRAM INPUT / FILE BARANG.DAT Buatlah Program Input dengan nama Brg.cob dalam bahasa Cobol untuk membuat File Barang.dat OUTPUT : Nama File
: barang.Dat Metode Access: Line Sequential Struktur Data : - Kode Barang PIC X(5) - Nama Barang PIC X(15) - Harga Barang PIC 9(6)
Kode Barang Nama Barang Harga Barang
: ………. : ………. : ……….
KETENTUAN PROSES : Akan terbentuk File Nama File : barang.Dat Metode Access: Line Sequential Struktur Data : - Kode Barang PIC X(5) - Nama Barang PIC X(15) - Harga Barang PIC 9(6) Setiap penampilan satu record program menanyakan : SUDAH BENAR (Y/T ) ? Jika “Y” atau ‘y’ maka akan memasukkan data tersebut ke Barang.Dat Jika “T” atau ‘t” maka akan memasukan data kembali dan data sebelumnya tidak tersimpan. ADA LAGI ( Y/T)? Jika “Y” atau ‘y’ maka akan membaca Data Berikutnya (Y/T) Jika “T” atau ‘t” maka akan selesai prosesnya LISTING PROGRAM IDENTIFICATION DIVISION. PROGRAM-ID. BRG-COB. AUTHOR. TITIN. SECURITY. PROGRAM MEMASUKKAN DATA ORGANISASI FILE INDEKS MODE AKSES URUT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-BARANG ASSIGN TO DISK ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE-BARANG LABEL RECORD IS STANDARD VALUE OF FILE-ID IS 'BARANG.DAT'. 01 RECORD-BARANG. 02 KODE-BARANG PIC X(5). 02 NAMA-BARANG PIC X(15). 02 HARGA-BARANG PIC 9(6).
WORKING-STORAGE SECTION. 01 BENAR-SALAH PIC X. 88 BENAR VALUE 'Y' , 'y'. 88 SALAH VALUE 'T' , 't'. 01 LAGI-SUDAH PIC X. 88 LAGI VALUE 'Y' , 'y'. 88 TIDAK VALUE 'T' , 't'. SCREEN SECTION. 01 HAPUS-LAYAR. 02 BLANK SCREEN. 01 LAYAR-BETUL-SALAH. 06 LINE 20 COLUMN 10 VALUE ' SUDAH BENAR (Y/T)?'. 06 COLUMN PLUS 1 PIC X TO BENAR-SALAH. 01 LAYAR-LAGI-SUDAH. 06 LINE 23 COLUMN 10 VALUE 'ADA LAGI (Y/T) ?'. 06 COLUMN PLUS 1 PIC X TO LAGI-SUDAH. 01 LAYAR-DATA. 02 LINE 6 COLUMN 5 'KODE BARANG :'. 02 COLUMN PLUS 1 PIC X(5) TO KODE-BARANG. 02 LINE 8 COLUMN 5 'NAMA BARANG :'. 02 COLUMN PLUS 1 PIC X(15) TO NAMA-BARANG. 02 LINE 10 COLUMN 5 'HARGA BARANG :'. 02 COLUMN PLUS 1 PIC 9(6) TO HARGA-BARANG. PROCEDURE DIVISION. RUTIN-UTAMA SECTION. BUKA-FILE. OPEN OUTPUT FILE-BARANG. MASUKKAN-DATA. DISPLAY HAPUS-LAYAR. DISPLAY LAYAR-DATA. ACCEPT LAYAR-DATA. DISPLAY LAYAR-BETUL-SALAH. ACCEPT LAYAR-BETUL-SALAH. IF SALAH GO TO MASUKKAN-DATA. WRITE RECORD-BARANG. DISPLAY LAYAR-LAGI-SUDAH. ACCEPT LAYAR-LAGI-SUDAH. IF LAGI GO TO MASUKKAN-DATA. CLOSE FILE-BARANG. STOP RUN.
MODIFIKASI PROGRAM INPUT DIATAS : Buatlah program dalam bahasa Cobol dengan nama bab8.cob, untuk menghitung jumlah bayar dengan membuat tampilan masukan dan keluaran melalui screen section. Memesankan variable di Working-Storage section dan inputnya dengan membaca file data. INPUT : Nama File : barang.Dat Metode Access: Line Sequential Struktur Data : - Kode Barang - Nama Barang - Harga Barang OUTPUT : Kode Barang Nama Barang Harga Barang Unit Barang Jumlah Bayar
: ………. PIC X(5) : ………. PIC X(15) : ………. PIC ZZZ.ZZ9 : ………. PIC ZZ.ZZ9 Æ diinput dari keyboard : ………. PIC Z.ZZZ.ZZ9
KETENTUAN PROSES : File data dibaca per record kemudian diproses untuk ditampilkan, dan proses ini diulang sampai semua data habis dibaca. Penampilan dimulai baris ke 8 dan kolom ke 10.
JUMLAH BAYAR = Harga Barang * Unit Barang Setipa penampilan satu record program menanyakan : Data Berikutnya (Y/T) ? Jika “Y” atau ‘y’ maka akan membaca record berikutnya Jika “T” atau ‘t” maka akan selesai prosesnya Pada akhir data ( end of File), program menginformasikan: Maaf data sudah habis. Listing program untuk menghitung Jumlah bayar. IDENTIFICATION DIVISION. PROGRAM-ID. BAB8-COB. AUTHOR. TITIN. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-BARANG ASSIGN TO DISK ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE-BARANG LABEL RECORDS ARE STANDARD VALUE OF FILE-ID "BARANG.DAT". 01 RECORD-BARANG. 05 KODE-BARANG PIC X(5). 05 NAMA-BARANG PIC X(15). 05 HARGA-BARANG PIC 9(6). WORKING-STORAGE SECTION. 77 END-OF-FILE PIC X VALUE SPACES. 77 UNIT-BARANG PIC 9(8)V99 VALUE 0. 77 JUMLAH-BAYAR PIC 9(8)V99 VALUE 0. 01 JAWAB PIC X VALUE SPACES. 88 LAGI VALUE "Y", "y". 88 SUDAH VALUE "T", "t". SCREEN SECTION. 01 LAYAR-LAGI-SUDAH. 02 LINE 15 COLUMN 10 VALUE " DATA BERIKUTNYA (Y/T)?" HIGHLI GHT, REVERSE-VIDEO. 02 COLUMN PLUS 1 PIC X USING JAWAB. 01 LAYAR-TAMPIL. 05 BLANK SCREEN. 05 LINE 3 COLUMN 10 VALUE "KODE BARANG :". 05 COLUMN PLUS 1 PIC X(5) FROM KODE-BARANG. 05 LINE 5 COLUMN 10 VALUE "NAMA BARANG :". 05 COLUMN PLUS 1 PIC X(15) FROM NAMA-BARANG. 05 LINE 7 COLUMN 10 VALUE "HARGA BARANG :". 05 COLUMN PLUS 1 PIC ZZZ.ZZ9 FROM HARGA-BARANG. 05 LINE 9 COLUMN 10 VALUE "UNIT BARANG :". 05 COLUMN PLUS 1 PIC ZZ.ZZ9 USING UNIT-BARANG REQUIRED, AUTO. 01 LAYAR-HASIL. 05 LINE 11 COLUMN 10 VALUE "JUMLAH BAYAR :". 05 COLUMN PLUS 1 PIC ZZZ.ZZZ.ZZ9 USING JUMLAH-BAYAR. 01 PESAN. 06 LINE 20 COLUMN 10 VALUE " MAAF DATA SUDAH HABIS". PROCEDURE DIVISION. 100-BUKA-FILE. OPEN INPUT FILE-BARANG. 200-BACA-RECORD. READ FILE-BARANG AT END MOVE "Y" TO END-OF-FILE.
300-PENGOLAHAN. IF END-OF-FILE="Y" DISPLAY PESAN GO TO 400-TUTUP-FILE. DISPLAY LAYAR-TAMPIL. ACCEPT LAYAR-TAMPIL. MULTIPLY HARGA-BARANG BY UNIT-BARANG GIVING JUMLAH-BAYAR. DISPLAY LAYAR-HASIL. DISPLAY LAYAR-LAGI-SUDAH. ACCEPT LAYAR-LAGI-SUDAH. IF LAGI GO TO 200-BACA-RECORD. 400-TUTUP-FILE. CLOSE FILE-BARANG. STOP RUN.
SPECIAL-NAMES [Decimal-Point Is Comma ]. Decimal-Point Is Comma clause digunakan untuk menggantikan titik desimal yang semula ditulis dengan bentuk karakter”.” ( titik) dengan bentuk karakter “,” ( Koma ). INPUT-OUTPUT SECTION. Definisi awal dari semua jenis file terletak pada paragraph FILE-CONTROL pada INPUT-OUTPUT Section Bentuk Umum dari FILE CONTROL adalah : FILE –CONTROL. SELECT nama-file ASSIGN TO DISK [organization is [LINE] SEQUANTIAL]. Empty pada select digunakan untuk: Menyatakan bahwa file ditujukan ke DISK ( ASSIGn TO DISK] Menentukan ORGANISATION IS SEQUANTIAL). Bentuk defaultnya sequential. FILE SECTION Dalam File section berisi semua keterangan file yang berhubungan dalam program. Keterangan dalam File Section meliputi nama file, cara perekaman, jumlah record per blok dan jumlah karakter setiap record, label serta nama dari record tersebut. FILE SECTION ini bila dipergunakan file dalam bentuk simpanan sekunder yaitu disk atau printer dan mempunyai hubungan dengan INPUT-OUTPUT SECTION dalam ENVORONMENT DIVISION. LABEL RECORD Atau LABEL RECORDS Clause Label RECORD atau Label RECORDS CLAUSE ini menunjukkan apakah suatu file yang dipergunakan mempunyai label atau tidak. Bentuknya : LABEL
RECORD IS Æ RECORDs ARE Æ
STANDARD OMITTED
LABEL RECORDS ARE OMITTED digunakan untuk print File ( File yang berupa cetakan di printer ) yang tidak mempunyai label. Untuk yang emmepunyai label atau File yang disimpan di disk maka, ditulis LABEL RECORD IS STANDARD. Clause ini harus ditulis bila FILE SECTION digunakan. VALUE OF FILE-ID Clause VALUE OF FILE-ID Clause menunjukkan 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 dengan nama Filenya. Contoh : VALUE OF FILE-ID IS “ Barang.dat” Aturan penulisan nama-file di label dapat dilihat pada buku manual DOS. NAMA-FILE Nama-file(File-Name ) adalah nama yang dibuat untuk menunjukkan suatu file dipergunakan sebagai media simpanan sekunder di dalam program . Nama-file tampak dalam DATADIVISION pada paragraph FD ( FD mempunyai arti File description ). Nama –file juga dipakai dalam PROCEDURE DIVISION pada statement CLOSE, OPEN dan READ dan juga pada SELECT clause. Catatan :
Nama File di Label tidak sama dengan nama file yang idsebutkan pada judul FD , Select , Close, Open dan read. PERFORM Nama-Paragraph Digunakan untuk membuat suatu statement yang akan membawa proses dari program meloncat ke suatu paragraph tertentu, mengerjakan seluruh isi paragraph tersebut dan setelah selesai kembali lagi ke statement setelah statement PERFORM. PARAGRAPH-1 PERFORM PARAGRAPH-2 PERFORM PARAGRAPH-3 PARAGRAPH-2
PARAGRAPH-3
SOAL LATIHAN : 1. Apa perbedaan dan persamaan PERFORM 100-Mulai dan GO TO 100-Mulai 2. Tulislah dalam statement Cobol di procedure DIVISION untuk permasalahan ini : Kode Konsumen A B C
Jenis Rumah Tangga Industri Umum / Yayasan
Standart Pemakaian 150 500 750
Harga per M3 20 30 40
- Jumlah Pemakaian = pemakaian Bulan ini – Pemakaian Bulan Lalu - Kelebihan Pemakaian dihitung sebagai berikut : - Jika ( jumlah pemakaian ) > Standart Pemakaian - Maka Kelebihan Pemakaian = Jumlah Pemakaian – Standart Pemakaian Jika tidak, maka kelebihan Pemakaian = 0 - Total Bayar = Jumlah Pemakaian X Harga per M3 + ( Kelebihan Pemakaian x 10 % x Harga per M3 ) 3. Bagaimana Output statement di bawah ini ? ………………….. PERFORM 100-Mula-Mula. PERFORM 300-Coba-terka UNTIL Times-Counter Is Not Less Than Penghitung. STOP RUN. 100-Mula-Mula. Move 10 To Penghitung. Move Penghitung to times-counter. Subtract 1 From Times-counter. 300-Coba-terka. Multiply 1 by penghitung Giving times-counter. ADD 1 to times-counter. Display Times-counter, Penghitung. 4 Bagaimana Hasil output dari Bagian program di bawah ini, Jika diketahui Nilai : AKHIR-BERKAS = 12 NILAI-DATA = 7 INPUT-AWAL=3 TOTAL-INPUT = 2 …………… PERFORM 100-PERMULAAN. PERFORM 200-PENGOLAHAN UNTIL AKHIR-BERKAS = 16 DISPLAY TOTAL-INPUT. STOP RUN.
100-PERMULAAN. ADD 1 TO INPUT-AWAL. MOVE ZERO TO AKHIR-BERKAS. MULTIPLY INPUT-AWAL BY AKHIR-BERKAS GIVING TOTAL-INPUT. MOVE INPUT-AWAL TO NILAI-DATA. 200-PENGOLAHAN. MOVE NILAI-DATA TO AKHIR-BERKAS IF AKHIR-BERKAS=12 SUBTRACT 3 FROM AKHIR-BERKAS ELSE NEXT SENTENCE. MOVE AKHIR-BERKAS TO TOTAL-INPUT. ADD AKHIR-BERKAS TO TOTAL-INPUT. MOVE TOTAL-INPUT TO NILAI-DATA. DISPLAY AKHIR-BERKAS. 5. Dari file barang dengan Nama File “ barang.Dat “ dan organisasi File adalah Line Sequential dengan susunan sbb: Nama Field Kode Barang Nama Barang Jumlah barang Status
Jenis Numerik Alphabetik Numerik Numerik
Harga Satuan
Numerik
Panjang 5 20 4 1 Æ 1 = Import 2 = Lokal 6
Tulislah Potongan program dari struktur File tersebut diatas dalam program Cobol untuk File Control dan Data Division.