Minggu, 23 November 2014

File Sequential (COBOL)

A.      Apa itu File Sequential?

Sebelumnya saya telah menjelaskan tentang File Index dan File Relatif. Kali ini saya ingin menjelaskan sedikit tentang File Sequential. Berikut ini sedikit penjelasan mengenai File Sequential :

·         Organisasi file secara urut (sequential file) memungkinkan pengaksesan record di file secara berurutan.
·         Urutan data record yang direkamkan di file sama dengan urutan sewaktu data itu direkamkan.
·         Urutan tidak berubah walaupun data baru ditambahkan.
·         Data baru yang direkamkan akan menempati urutan record selanjutnya setelah record terakhir yang telah ada.
·         Ada 2 macam organisasi file secara urut, yaitu :
o   Sequential à mempunyai panjang record yang tetap.
o   Line Sequential à bisa berbeda-beda, setiap record terdapat pembatas berupa carriage return (CR) dan line feed (LF).

B.      Program File Sequential

Setelah mengetahui apa itu File Sequential. Kita akan membuat program pada bahasa pemrograman COBOL yaitu program menu untuk menginput data. Berikut listing programnya :

      IDENTIFICATION DIVISION.
      PROGRAM-ID. FileSequential.
      SECURITY. PROGRAM MEMASUKAN DATA ORGANISASI FILE SEQUENTIAL
           MODE AKSES URUT.
      ENVIRONMENT DIVISION.
      INPUT-OUTPUT SECTION.
      FILE-CONTROL.
            SELECT PEGAWAI ASSIGN TO DISK
            ORGANIZATION IS SEQUENTIAL
            ACCESS MODE IS SEQUENTIAL.
            SELECT CETAK ASSIGN TO PRINTER.
      DATA DIVISION.
      FILE SECTION.
      FD PEGAWAI
            LABEL RECORD IS STANDARD
            VALUE OF FILE-ID IS 'DFTRPEG.DAT'
            DATA RECORD IS REC-PEG.
      01 REC-PEG.
            02 NAMA PIC X(10).
            02 ALAMAT PIC X(20).
            02 UMUR PIC 99.
      FD CETAK
            LABEL RECORD IS OMITTED
            LINAGE IS 52 LINES
            WITH FOOTING AT 48
            LINES AT TOP 7
            LINES AT BOTTOM 7
            DATA RECORD IS BARIS-CETAK.
      01 BARIS-CETAK PIC X(80).
      WORKING-STORAGE SECTION.
      77 NOMER PIC 999 VALUE 0.
      01 SWITCH-BACA-RECORD PIC X VALUE ' '.
            88 HABIS-DIBACA-SEMUA VALUE 'Y'.
      01 JUDUL-1.
            02 FILLER PIC X(18) VALUE SPACES.
            02 FILLER PIC X(15) VALUE 'LAPORAN PEGAWAI'.
      01 JUDUL-2.
            02 FILLER PIC X(6) VALUE 'NOMER'.
            02 FILLER PIC X(10) VALUE 'NAMA'.
            02 FILLER PIC X(20) VALUE 'ALAMAT'.
            02 FILLER PIC X(4) VALUE 'UMUR'.
      01 GARIS PIC X(40) VALUE ALL '-'.
      01 REC-PEG-O.
            02 NOMER-O PIC 999.
            02 NAMA-O PIC X(10).
            02 ALAMAT-O PIC X(20).
            02 UMUR-O PIC 99.
      PROCEDURE DIVISION.
      BUKA-FILE.
            OPEN INPUT PEGAWAI
            OUTPUT CETAK.
      MULAI.
            PERFORM CETAK-JUDUL
            PERFORM CETAK-ISI-TABEL UNTIL HABIS-DIBACA-SEMUA
            PERFORM CETAK-GARIS.
      SELESAI.
            CLOSE PEGAWAI CETAK
            STOP RUN.
      CETAK-JUDUL.
            WRITE BARIS-CETAK FROM JUDUL-1 AFTER ADVANCING PAGE
            WRITE BARIS-CETAK FROM GARIS AFTER ADVANCING 3 LINES
            WRITE BARIS-CETAK FROM JUDUL-2
            WRITE BARIS-CETAK FROM GARIS.
      CETAK-ISI-TABEL.
            PERFORM BACA-DATA
            IF NOT HABIS-DIBACA-SEMUA
            PERFORM CETAK-ISI-TABELNYA
            ELSE
            PERFORM CETAK-TOTAL.
      BACA-DATA.
            READ PEGAWAI
            AT END MOVE 'Y' TO SWITCH-BACA-RECORD.
      CETAK-ISI-TABELNYA.
            ADD 1 TO NOMER
            MOVE NOMER TO NOMER.
            MOVE NAMA TO NAMA.
            MOVE ALAMAT TO ALAMAT.
            MOVE UMUR TO UMUR.
            WRITE BARIS-CETAK FROM REC-PEG.
      CETAK-GARIS.
            WRITE BARIS-CETAK FROM GARIS.
      CETAK-TOTAL.
            WRITE BARIS-CETAK FROM GARIS.
            MOVE SPACE TO NAMA.
            MOVE 'TOTAL JUMLAH PEGAWAI : ' TO ALAMAT.
            MOVE NOMER TO UMUR.
      WRITE BARIS-CETAK FROM REC-PEG-O AFTER 2 LINES.


C.      Output

Compile terlebih dahulu program tersebut (gambar 1.1). Jika tidak terjadi kesalahan atau tidak ada error, kemudian run program :

Gambar 1.1



File Relatif (COBOL)

A.      Apa itu File Relatif?

Sebelumnya saya telah menjelaskan tentang File Index. Pada kesempatan kali ini sebelum membuat program File Relatif, saya ingin menjelaskan sedikit tentang File Relatif. Berikut ini sedikit penjelasan mengenai File Relatif :

·         Merupakan file yang recordnya dibedakan berdasarkan nomor record relatif. Nomor record relatif berkisar dari 1-32767.
·         Nomor relatif tidak terekam didalam file.
·         File relatif mempunyai panjang record yang tetap.
·         Organisasi file secara relatif dapat diakses secara urut, acak, maupun dinamik.
·         Pada mode akses urut (sequential access mode) record diakses dengan urutan record relatif dari kecil ke besar.
·         Pada mode akses acak (random access mode) record diakses tidak diurutkan, tetapi diatur oleh pemrogram.
·         Pada mode akses dinamik (dynamic access mode) record diakses dilakukan dengan terurut dan acak.

B.      Program Menu (Input Data)

Setelah mengetahui apa itu File Relatif. Kita akan membuat program pada bahasa pemrograman COBOL yaitu program menu untuk menginput data. Berikut listing programnya :

       IDENTIFICATION DIVISION.
       PROGRAM-ID. FileRelative.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT MHS
       ASSIGN TO DISK
       ORGANIZATION IS RELATIVE
       ACCESS MODE IS DYNAMIC
       RELATIVE KEY IS NO-REL
       FILE STATUS IS STATUS-SALAH.
       DATA DIVISION.
       FILE SECTION
       FD MHS
       LABEL RECORD IS STANDARD
       VALUE OF FILE-ID IS 'DATA.DAT'
       DATA RECORD IS RECMHS.
       01 RECMHS.
           02 NPM PIC 9(8).
           02 NAMA PIC X(20).
           02 KELAS PIC X(5).
       WORKING-STORAGE SECTION.
       01 JUDUL.
           02 WS-NAMA PIC X(25).
           02 WS-NPM PIC 9(8).
           02 WS-KELAS PIC X(8).
           02 NPM-CARI PIC 9(8).
       01 TAMBAH-DATA PIC X.
       88 LAGI VALUE 'Y', 'y'.
       88 TDK VALUE 'T', 't'.
       01 X PIC 9 VALUE 0.
       77 STATUS-SALAH PIC XX.
       77 NO-REL PIC 9(8).
       77 PIL PIC X.
       77 PIL2 PIC X. 77 PIL3 PIC X.
       77 CR-NPMX PIC X VALUE 'Y'.
       SCREEN SECTION.
       01 HAPUS.
           02 BLANK SCREEN.
       01 MASUKAN.
           02 LINE 5 COLUMN 24 VALUE 'NPM : '.
           02 COLUMN PLUS 2 PIC X(8) TO NPM.
           02 LINE 7 COLUMN 24 VALUE 'NAMA : '.
           02 COLUMN PLUS 2 PIC X(20) TO NAMA.
           02 LINE 9 COLUMN 24 VALUE 'KELAS : '.
           02 COLUMN PLUS 2 PIC X(5) TO KELAS.
       01 MENU.
           02 LINE 5 COLUMN 27 '<< MENU >>'.
           02 LINE PLUS 2 COLUMN 21 '[1] BUAT / INPUT FILE'.
           02 LINE PLUS 1 COLUMN 21 '[2] TAMPIL FILE'.
           02 LINE PLUS 1 COLUMN 21 '[3] CARI DATA '.
           02 LINE PLUS 1 COLUMN 21 '[4] EXIT '.
           02 LINE PLUS 2 COLUMN 21 'PILIH : '.
           02 COLUMN PLUS 1 PIC X TO PIL.
       01 CARI-X.
           02 BLANK SCREEN.
           02 LINE 5 COLUMN 25 'NPM YANG DICARI : '.
           02 COLUMN PLUS 1 PIC X(8) TO NPM-CARI.
       PROCEDURE DIVISION.
       PROGRAM-UTAMA.
           COMPUTE X = 0.
           DISPLAY HAPUS.
           DISPLAY MENU.
           ACCEPT MENU.
           IF PIL = '1' GO TO BUKA.
           IF PIL = '2' GO TO TAMPIL.
           IF PIL = '3' GO TO CARI.
           IF PIL = '4' GO TO SELESAI.
       BUKA.
           OPEN OUTPUT MHS.
           GO TO BUKA2.
       BUKA2.
           DISPLAY HAPUS.
           DISPLAY MASUKAN.
           ACCEPT MASUKAN.
           COMPUTE NO-REL = NPM - 50498000.
           WRITE RECMHS.
           DISPLAY (15, 23) 'MASIH ADA DATA [Y/T] ? '
           ACCEPT TAMBAH-DATA.
           IF LAGI GO TO BUKA2.
           CLOSE MHS.
           GO TO PROGRAM-UTAMA.
       TAMPIL.
           DISPLAY HAPUS.
           DISPLAY (1, 1) 'NAMA'.
           DISPLAY (1, 22) 'NPM'.
           DISPLAY (1, 32) 'KELAS'.
           OPEN INPUT MHS.
           COMPUTE X = 1.
           GO TO TAMPIL2.
       TAMPIL2.
           IF PIL = 'Y' GO TO TAMPIL3.
       TAMPIL3.
           COMPUTE X = X + 1.
           MOVE X TO LIN.
           READ MHS NEXT RECORD AT END GO TO TAMPIL4.
           MOVE NAMA TO WS-NAMA.
           MOVE NPM TO WS-NPM.
           MOVE KELAS TO WS-KELAS.
           DISPLAY (LIN, 1) WS-NAMA.
           DISPLAY (LIN, 22) WS-NPM.
           DISPLAY (LIN, 32) WS-KELAS.
           GO TO TAMPIL2.
       TAMPIL4.
           ACCEPT PIL.
           CLOSE MHS.
           GO TO PROGRAM-UTAMA.
       CARI.
           MOVE 'N' TO CR-NPMX.
           DISPLAY CARI-X.
           ACCEPT CARI-X.
           OPEN INPUT MHS.
           GO TO CARI2.
       CARI2.
           READ MHS NEXT AT END GO TO CARI3.
           MOVE NAMA TO WS-NAMA.
           MOVE NPM TO WS-NPM.
           MOVE KELAS TO WS-KELAS.
           IF NPM-CARI = WS-NPM GO TO KETEMU.
           GO TO CARI2.
       KETEMU.
           DISPLAY HAPUS.
           DISPLAY (7, 23) 'DATA NPM : ' WS-NPM.
           DISPLAY (9, 23) 'NAMA : ' WS-NAMA.
           DISPLAY (11, 23) 'KELAS : ' WS-KELAS.
           DISPLAY (15, 23) 'CARI DATA LAGI ? '.
           ACCEPT ( , ) PIL2.
           CLOSE MHS.
           IF PIL2 = 'Y' OR PIL2 = 'y' GO TO CARI.
           GO TO PROGRAM-UTAMA.
       CARI3.
           DISPLAY HAPUS.
           DISPLAY 'DATA TIDAK ADA...'.
           DISPLAY 'Press Escape / Enter Untuk Cari Lagi..'.
           DISPLAY 'X Untuk Ke Menu Utama, Lalu Tekan Enter..'.
           ACCEPT ( , ) PIL3.
           CLOSE MHS
           IF PIL3 = 'X' OR PIL3 = 'x' GO TO PROGRAM-UTAMA.
           GO TO CARI.
       SELESAI.
           DISPLAY HAPUS.
           DISPLAY (2, 2) 'Good Bye......'.
           CLOSE MHS.
           STOP RUN.

C.      Output

Compile terlebih dahulu program tersebut (gambar 1.1). Jika tidak terjadi kesalahan atau tidak ada error, kemudian run program (gambar 1.2) :

Gambar 1.1

Gambar 1.2

Setelah program dijalankan, anda pilih terlebih dahulu angka 1 dengan menekan angka 1 dan kemudian menekan enter karena menu pertama adalah untuk menginput data. Jika anda memilih menu lainnya terlebih dahulu, maka tampilan akan kosong atau blank screen. 



File Index (COBOL)

A.      Apa itu File Indeks?

Pada kesempatan kali ini sebelum membuat program, saya ingin menjelaskan sedikit tentang File Indeks. Berikut penjelasan mengenai File Indeks :

·         Merupakan file yang mempunyai indeks atau tabel yang berisi daftar alamat-alamat (addresses) dari record di disk yang biasa disebut dengan Control Index.
·         Control Index memiliki fungsi sebagai penunjuk/pointer dari posisi record tertentu yang berisi data, sehingga memungkinkan untuk menuju ke suatu lokasi record tertentu dengan cepat.
·         Bentuk pada DATA DIVISION dan PROCEDURE DIVISION sama seperti Organisasi file sequential.

B.      Program Input Data

Setelah mengetahui apa itu File Indeks. Kita akan membuat program pada bahasa pemrograman COBOL yaitu program untuk menginput data. Berikut listing programnya :

       IDENTIFICATION DIVISION.
       PROGRAM-ID. FileIndex.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT MHS ASSIGN TO DISK
       ORGANIZATION IS RELATIVE
       ACCESS MODE IS DYNAMIC
       RECORD KEY IS NO-REL
       FILE STATUS IS STATUS-SALAH.
       DATA DIVISION.
       FILE SECTION.
       FD MHS
       LABEL RECORD IS STANDARD
       VALUE OF FILE-ID IS 'DATA.DAT'
       DATA RECORD IS RECMHS.
       01 RECMHS.
           02 NPM PIC 9(8).
           02 NAMA PIC X(28).
           02 KELAS PIC X(5).
       WORKING-STORAGE SECTION.
       01 TAMBAH-DATA PIC X.
       88 LAGI VALUE 'Y', 'y'.
       88 TDK VALUE 'T', 't'.
       77 STATUS-SALAH PIC XX.
       77 NO-REL PIC 9(8).
       SCREEN SECTION.
       01 HAPUS.
           02 BLANK SCREEN.
       01 MASUKAN.
           02 LINE 10 COLUMN 20 VALUE 'NAMA : '.
           02 COLUMN PLUS 2 PIC X(28) TO NAMA.
           02 LINE 12 COLUMN 20 VALUE 'NPM   : '.
           02 COLUMN PLUS 2 PIC X(8) TO NPM.
           02 LINE 14 COLUMN 20 VALUE 'KELAS : '.
           02 COLUMN PLUS 2 PIC X(5) TO KELAS.
       PROCEDURE DIVISION.
       BUKA.
           OPEN OUTPUT MHS.
       MULAI.
           DISPLAY HAPUS.
           DISPLAY MASUKAN.
           ACCEPT MASUKAN.
           COMPUTE NO-REL = NPM - 50498000.
           WRITE RECMHS.
           DISPLAY (18, 25) ' MASIH ADA DATA [Y/T] '.
           ACCEPT TAMBAH-DATA.
           IF LAGI GO TO MULAI.
       SELESAI.
           CLOSE MHS.
           STOP RUN.

C.      Output

Compile terlebih dahulu program tersebut (gambar 1.1). Jika tidak terjadi kesalahan atau tidak ada error, kemudian run program (gambar 1.2 & 1.3) :

Gambar 1.1

Gambar 1.2

Gambar 1.3

Pada gambar 1.3 terdapat statement, MASIH ADA DATA [Y/T], jika anda memasukkan huruf Y kemudian menekan enter, maka akan muncul kembali tampilan seperti pada gambar 1.2. Tapi jika anda memasukkan huruf T, maka program akan langsung berhenti.



Array (Pascal)

A.      List Program

Kali ini kita akan membuat program Array atau Perulangan pada Turbo Pascal. Caranya sangat mudah, yang pertama tuliskan atau copy paste listing program dibawah ini :

uses crt;
var
i,j : integer;
nm,npm,kelas : array [1..100] of string [25];
nilai1,nilai2,rata : array [1..100] of real ;
begin
for i := 1 to 2 do
begin
write ('Masukan Nama ='); readln(nm[i]);
write ('Masukan NPM ='); readln(npm[i]);
write ('Masukan Kelas ='); readln(kelas[i]);
write ('Nilai 1    ='); readln(nilai1[i]);
write ('Nilai 2    ='); readln(nilai2[i]);
rata[i] := (nilai1[i] + nilai2[i])/2;
end;
for j := 1 to 2 do
begin
writeln('Nama =',nm[j]);
writeln('Npm =',npm[j]);
writeln('Kelas =',kelas[j]);
writeln('Nilai 1 =',nilai1[j]);
writeln('Nilai 2 =',nilai2[j]);
writeln('Rata rata =',rata[j]);
end;
readln;
end.

B.      Output

Compile terlebih dahulu program diatas dengan menekan alt + f9 (gambar 1.1). Jika tidak terjadi kesalahan, kemudian run program dengan menekan alt +f9, akan muncul output seperti pada gambar 1.2 :

Gambar 1.1

Gambar 1.2



Copyright © Muhammad Ahsan Fuady | Powered by Blogger