Minggu, 23 November 2014

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. 



0 komentar:

Posting Komentar

Copyright © Muhammad Ahsan Fuady | Powered by Blogger