Nama : Sinta Novianka
NPM : 58413503
Kelas : 2IA14
Organisasi file secara
relatif (relative file) adalah file yang recordnya dibedakan dengan dasar
suatu nomor record relative. Nomor relative dapat berkisar dari nomor
record 1 sampai dengan nomor record 327667. Nomor record relative ini tidak
turut direkamkan dalam file, sehingga panjang recordnya adalah sepanjang
record yang ditentukan tanpa nomor record relatifnya. Panjang record untuk file
relative adalah mempunyai panjang yang tetap.
II. IDENTIFICATION DIVISION PADA FILE RELATIF
Isi dan bentuk dari
identification division untuk organisasi file secara relatif sama dan tidak
berbeda dengan identification division pada organisasi file secara sequential, maupun
organisasi file secara indeks.
III. ENVIRONMENT DIVISION
Pada divisi ini entri
pada select case har disebut organitionis relative. Bentuk entri pada SELECT
clause adalah sebagai berikut :
File-Control.
Select nama-file ASSIGN TO DISK
;ORGANIZATION IS RELATIVE
SEQUENTIAL [,RELATIVE KEY IS nama-data]
[;ACCESS MODE IS RANDOM
DYNAMIC ,
RELATIVE KEY IS nama-data-1
[;FILE STATUS IS nama-data-2]
Organisasi file secara
relative, dapat diakses baik secara urut, acak maupun dinamik, sama dengan
pengaksesan pada organisasi file secara indek. Pada mode akses urut
(sequential access mode), record diakses dengan urutan nomor record relative dari
kecil ke besar. Pada mode access secara urut (random access mode),
urutan dari record di file tidak urut berdasarkan nomor record relative tetapi
pengaksesan record diatur oleh programmer. Masing masing record yang diinginkan
adapat dilakukan dengan meletakan suatu nilai nomor record relative tertentu
pada kunci relative sebelum perintah- perintah pengaksesan file dikerjakan.
Dengan cara demikian, maka posisi record yanga akan diinginkan akan langsung di
tuju. Pada mode akses dinamik (dynamic access mode), access dapat
merupakan gabungan antara access secara urut maupun access secara acak.
RELATIVE
KEY clause menunjukkan nama – data yang dipergunakna sebagai kunci realatif,
yag sudah harus disebutkan terlebih pada record description entri dalam
DATA DIVISION. Nama-data ini dapat berupa grup data item atau elementeri data
item yang berbentuk numeric. RELATIVE KEY clause harus
disebutkan untuk mode access acak atau mode access dinamik, sedang pada mode
access urut, dapat disebutkan bila akan dipergunakan statement START untuk
menempatkan posisi record pada nomor relative tertentu.
FILE
STATUS clause digunakan untuk menunnjukan jenis
kesalahan yang terjadi dari suatu hasil proses operasi file. Jenis kesalahan
ini ditunjukkan oleh suatu nilai sepanjang dua karakter yang disimpan pada nama
- data yang disebutkan pada clause ini dan sudah disebutkan terlebih
dahulu pada WORKING - STORAGE SECTION atau pada LINKAGE SECTION.
Nilai
|
Jenis
|
00
|
Tidak
terjadi kesalahan
|
10
|
Akhir
dari file ( END OF FILE )
|
21
|
Tidak
bisa merekam pola sequential akses mode, kunci relatif tidak urut
|
22
|
Nilai
kunci relative tidak unik
|
23
|
Record
tidak ketemu ( no record found )
|
24
|
Disk
penuh ( Disk Space Full )
|
30
|
File
tidak ada ( File Not Found )
|
91
|
Struktur
file rusak
|
IV. DATA DIVISION PADA FILE RELATIF
DATA DIVISION pada file
relatif sama dengan DATA DIVISION pada organisasi file secara
sequential. Maupun pada organisasi file secara indeks, yaitu mengandung
file description entry. Contoh sebagai berikut :
;LABEL RECORD IS
STANDARD
;VALUE OF FILE-ID IS
nama-file di label
Contoh :
IDENTIFICATION DIVISION.
PROGRAM-ID. RE:ATIP.
AUTHOR. KELAS 2IA.
ENVIRONMENT DIVISON.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FILE-BRG ASSIGN
TO DISK
ORGANIZATION IS DYNAMIC
RELATIVE KEY IS KODE-BRG
FILE STATUS IS
STATUS-SALAH.
DATA DIVISON.
FILE SECTION.
FD FILE-BRG
LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS
‘BARANG.DAT’.
DATA RECORD IS
DATA-BARANG.
01 DATA-BARANG.
02 NAMA-BARANG PIC
X(25).
02 UNIT-BARANG PIC 9(5).
02 HARGA-BARANGPIC 9(6).
WORKING-STORAGE SECTION.
77 KODE-BRG PIC 9(5).
77 STATUS-SALAH PIC XX.
V. PROCEDURE DIVISION PADA FILE RELATIF
Statement khusus yang
dipergunakan pada file relatif di dalam PROCEDURE DIVISION sama dengan yang ada
di file indeks,yaitu dapat dibentuk dari verb OPEN, CLOSE, READ, WRITE,
REWRITE, START dan DELETE.
a) OPEN VERB
Digunakan untuk
membentuk statement OPEN yang digunakan untukmembuka file yang akan diakses.
Bentuk dari statement OPEN pada file indeks adalah sebagai berikut :
-
OPEN INPUT menunjukkan
file dibuka sebagai file input, yaitu file yang dibuka untuk tujuan sebagai
input atau data akan dibaca (READ) dari file ini.
-
OPEN OUTPUT menunjukan
file dibuka sebagai file output,yaitu file yang dibuka untuk tujuan sebagai output
atau data yang akan direkamkan (WRITE) pada file ini.
-
OPEN I-O menunjukan file
dibuka baik sebagai file input ataupun output,yaitu file yang dibuka untuk
tujuan sebagai input dan output sekaligus dapat dibaca (READ),di modifikasi
atau dibetulkan terlebih dahulu jika salah.Kemudian memungkinkan untuk
direkamkan kembali (REWRITE atau WRITE) pada posisi yang sama.Pada mode akses
secara urut (sequential access mode).Statement WRITE pada OPEN I-O tidak boleh
dipergunakan harus menggunakan REWRITE.
Bentuk umum statement
OPEN :
INPUT nama-file-1
[, nama-file-2] …
OPEN OUTPUT nama-file-3 [, nama-file-4] …
I-O nama-file-5 [, nama-file-6] …
Contoh :
OPEN INPUT
REKAMAN → Menunjukkan file REKAMAN dibuka sebagai file input, data akan
dibaca dari file ini
OPEN OUTPUT BARANG →
File BARANG dibuka sebagai file output, data akan direkamkan pada file
ini
OPEN I-O HUTANG →
Menunjukkan file HUTANG dibuka sebagai file input dan file output
sekaligus pada mode akses urut, statement WRITE pada OPEN I-O tidak
boleh digunakan, harus menggunakan statement REWRITE.
b) CLOSE VERB
Setelah operasi file
selesai, maka semua file yang masih terbuka harus ditutup. Untuk menutup file
dipergunakan statement CLOSE.
Bentuk umum dari statement CLOSE:
CLOSE nama-file-1 [WITH LOCK]
[,nama-file-2 [WITH LOCK]
Contoh :
CLOSE REKAMAN, CETAKAN.
Bentuk dan penggunaan
statement CLOSE ini sama persis dengan organisasi file secara sequentional atau
pada organisasi file secara indeks.
c) WRITE VERB
Write verb digunakan
untuk membentuk statement WRITE yang berguna untuk merekamkan data pada record
tertentu di file yang telah dibuka dengan statement OPEN. Untuk mode akses
secara urut (sequentional access mode).Statement WRITE digunakan untuk file
yang dibuka sebagai file output (OPEN OUTPUT), sedang pada mode akses secara
acak (random access mode) dan mode akses secara dinamik (dynamic access mode), statement
WRITE dapat digunakan untuk file yang dibuka sebagai file output (OPEN OUTPUT) atau
sebagai file input dan output sekaligus (OPEN I-O).
Bentuk dari statement
WRITE :
WRITE nama-record [FROM nama-data]
[:INVALID
KEY,statement-imperatip]
Contoh :
File-description mempunyai deskripsi sbb :
DATA DIVISON.
FILE SECTION.
FD FILE-BRG
LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS
‘BARANG.DAT’
DATA RECORD IS
DATA-BARANG.
01 DATA_BARANG.
02 NAMA-BARANG PIC X(25).
02 UNIT-BARANG PIC 9(5).
02 HARGA-BARANG PIC 9(6).
Record-description entry mempunyai deskripsi sbb
: WORKING-STORAGE SECTION.
77 KODE-BRG PIC
9(5).
77 STATUS-SALAH PIC
XX.
01 DATA-BARANG-REKAM.
02 NAMA-BARANG PIC
X(25).
02 UNIT-BARANG PIC 9(5).
02 HARGA-BARANGPIC 9(6).
Statement WRITE pada PROCEDURE DIVISION sbb :
REKAMKAN.
MOVE 128 TO KODE-BRG
WRITE DATA-BARANG FROM DATA-BARANG-REKAM
INVALID KEY DISPLAY ‘SUDAH PERNAH ADA’.
Data pada DATA-BARANG-REKAM akan direkamkan pada
record di file pada posisi record nomor
relative 128, jika nomor itu sudah pernah ada datanya maka terjadi
INVALID KEY.
Dengan statement WRITE
ini,data yang ada di storage nama-record atau diambil dari (FROM) storage
nama-data akan direkamkan data pada record,nilai dari field kunci harus
unik,kalau tidak,maka data tidak akan terekam dan statement-imperatip pada
INVALID KEY akan dikerjakan bila disebutkan. Nilai dari nama-data pada RELATIVE
KEY clause yang menunjukan posisi nomor record relatif di file harus merupakan
nomor record relatif yang record tersebut belum terisi dengan data.Bila pada
record tersebut sudah terisi dengan data,maka ini berati nomor record relatif
tersebut tidak unik.
d) READ VERB
Statement READ digunakan
untuk membaca record yang ada di file. Ada 2 bentuk statement READ yang
tersedia untuk ini :
Bentuk statement READ
yang ke-1 :
READ nama-file [NEXT] RECORD [INTO nama-data]
[; AT END
statement-imperatif]
Bentuk statement READ yang ke-2 :
READ nama-file RECORD [INTO nama-data]
[; INVALID KEY
statement-imperatif]
Contoh :
MOVE 8598 TO NO-MHS
READ FILE-MHS-RECORD INTO DATA-NILAI
INVALID KEY DISPLAY
‘TIDAK ADA MAHASISWA INI !!’.
Bentuk ke-1 yang tanpa
menggunakan NEXT option digunakan pada sequential access mode. Sedangkan
yang menggunakan NEXT option digunakan pada dynamic access mode untuk membaca
record secara urut. INVALID KEY clause pada statement READ ini
akan terjadi bila pembacaan record sudaah mencapai akhir dari file ( End Of
File) dan statement imperative akan dikerjakan bila dituliskan. Bila INVALID
KEY clause tidak disebutkan, tetapi menggunakn DEKLARATIF regition, maka control
terhadap akhir file tersebut akan dilakuakn pada region tersebut.Pada bentuk
kesatu ini, bila pembacaan record sukses, maka nilai kunci relative yang
disebutka dengan suatu nama – data yang disebutkan pada RELATIF KEY clause akan
diiisi dengan suatu nilai yang menunjukan nilai record relative posisi record
yang dibaca tersebut.
Bentuk ke dua ada random
access mode atau pada dinamik access code untuk record yanga kan dibaca secara
acak, yaitu pembacaan yang dapat langsung pada record tertentu sesuai dengan
kunci relative tertentu. INVALID KEY clause pada statement read bentuk kedua
ini akan terjadi bila pembacaan tidak menentukan record yang sesuai dengan
kunci nomor record relative yang diinginkan dan statement imperative akan
dikerjakan bila dituliskan . Bila INVALID KEY clause tidak disebutkan tetapi
menggunakan DECLARATIVE region maka control
terhadap hal ini akan dilakukan pada region tersebut. Baik pada bentuk kesatu
maupun bentuk ke dua , INTO phrase digunakan untuk memindahkan
hasil record yang di baca ke lokasi storage yang lain yaitu dimana data yang
disebutkan.
e) START VERB
Statement START
digunakan untuk menempatkan pembacaan record pada posisi record sesuai dengan
nilai nomor relatif tertentu yang diinginkan. Statement ini hanya boleh
dipergunakan untuk file yang diakses secara sequential access mode atau secara
dynamic access mode yang dibuka sebagai file input atau file I-O. Bentuk
dari statement START pada file relative sama dengan
bentuk file indeks :
IS EQUAL TO
IS =
START nama-file KEY IS GREATER THAN nama-data
IS >
IS NOT LESS THAN
IS NOT <
[;INVALID KEY statement-imperatif]
Contoh :
MOVE 8598 TO NO-MHS
START FILE-MHS KE`Y IS GREATER NO-MHS
INVALID KEY
DISPLAY ‘TIDAK ADA MAHASISWA INI !!’.
Bila digunakan IS EDUAL
TO atau IS = maka penempatan posisi akan berada posisi nomor record relative
yang sesuai dengan nilai nama data yang disebutkan. Bila digunakan IS
GREATER THEN atau IS > atau IS NOT LESS THAN atau IS NOT <. Maka
penempatan posisi akan berada pada record yang nomor record relatifnya lebih
besar dari nilai nama data yang disebutkan. Bila KEY phrase tidak
disebutkan maka penempatan posisi akan berada pada record yang nilai nomor
recordnya relative sama dengan nilai nama data pada RELATIF KEY terakhir yang
ada di storage. INVALID KEY clause pada statement START ini akan terjadi bila
posisi record yang dicari tidak ketemu dan statement imperative akan dikerjakan
bila dituliskan bila IN VALID KEY clause tidak disebutkan tetapi
menggunnakan DECLARATIF region. Maka control terhadap keadaan ini
akan dilakukan pada region tersebut.
f) REWRITE VERB
Statement REWRITE
digunakan untuk merekam ulang record yang sudah pernah direkam. Statement ini
biasanya digunakan untuk meremajakan (up-date) atau mengoreksi nilai record
tertentu yang sudah terekam, yaitu dengan jalan merekamkan ulang (REWRITE)
dengan nilai data yang baru.
Bentuk dari statement
REWRITE :
REWRITE nama-record [FROM nama-data]
[;INVALID KEY statement
–imperatif]
Contoh :
MOVE 8600 TO NO-MHS
REWRITE FILE-MHS FROM DATA-NILAI
INVALID KEY PERFORM
TIDAK ADA.
Untuk file sequential
access mode, statement READ sebelum statement REWRITE harus dikerjakan dengan
sukses,kalau tidak maka pelaksanaan statement REWRITE menjadi tidak sah
(INVALID). Juga pada file sequential access mode,nilai nomor record relatif
tidak boleh dirubah,kalau berubah maka akan terjadi INVALID KEY dan
statement-imperatip akan dikerjakan. Untuk file random acces mode atau dynamic
access mode record yang akan dirubah ditentuka langsung dari
nomor record relatifnya, tidak perlu digunakan statement READ terlebih dahulu
untuk membaca record tersebut.Kondisi INVALID KEY terjadi bila nomor record
relative tidak ada di disk.
g) DELETE VERB
Statement DELETE
digunakan untuk menghapus record tertentu dari file. Bentuk dari statement
DELETE :
DELETE nama-file RECORD
[;INVALID KEY
statement-imperatif]
Contoh program :
MOVE 8470 TO NO-MHS
DELETE FILE-MHS RECORD
INVALID KEY DISPLAY
‘TIDAK ADA NOMOR ITU’.
Untuk file sequential
access mode,sebelum record dihapus,record tersebut harus dibaca terlebih dahulu
dengan statement READ yang harus dikerjakan dengan sukses.Untuk file random
access mode atau dynamic access mode,record yang akan dihapus ditentukan
langsung dari nomor record relatifnya,tidak perlu digunakan statement READ
terlebih dahulu untuk membaca record tersebut.Kondisi INVALID KEY terjadi bila
nomor record relatif tidak ada di disk.
VI. CONTOH PENGGUNAAN FILE RELATIF
Contoh penggunaan file relatif :
- - Merekamkan Data
- - Menambah Data
- - Mencetak Semua Data
- - Mencetak Data Tertentu
- - Koreksi Data
- - Menghapus Data
Akan diberikan contoh
program penggunaan file relative dengan mode access dynamic yang persoalannya
seperti pengaksesan data mahasiswa. Pengambilan persoalan contoh yanga
sama ini dimaksudkan supaya akan dapat terlihat jelas bagaimana perbedaan penggunaan
file indeks dan file relative.
Pada file relative ini
nomor record relative ini dapat diwakili dengan nomor mahasiswa masing masing,
karena nomor mahsiswa merupakan adata yang unik yaitu tidak akan sama satu
dengan yang lain dan yang lebih tepat lagi untuk file relative adalah nomor
mahasiswa ini biasanya urut. Struktur record untuk file relative akan
mengalami sedikit perubahan, yaitu nomor mahasiswa sebagai nomor record file
relative tidak turut direkamkan.
Bentuk struktur
recordnya menjadi sebagai berikut :
Field
ke
|
Nama
- Data - Item
|
Jenis
|
Panjang
|
Picture
|
1
|
NAMA
- MAHASISWA
|
Alphabetik
|
25
byte
|
A
(25)
|
2
|
ALAMAT - MHS
JALAN
KOTA
|
Alphanumerik
Alphabetik
|
20 byte
15 byte
|
X(20)
A(15)
|
3
|
TGL - DAFTAR
TANGGAL
BULAN
TAHUN
|
Numerik
Numerik
Numerik
|
2 byte
2 byte
2
byte
|
99
99
99
|
4
|
IP
- MHS
|
Numerik
|
5
byte
|
99V99
|
Walaupun
nomor mahasiswa tidak terekam di record, bukan berarti terus akan kehilangan
jejak untuk mengakses data mahasiswa tertentu karena nomor record relatifnya
menunjukkan nomor mahsiswanya misalnya akan diakses nomor mahasiswanya 8501,
maka data mahasiswa ini ada pada nomor record relative ke 8501.
Kelemahan dari file
relatif terletak apada borosnya simpanan di disk untuk memori cord relative
yang tidak digunakan . Misalnya pada persoalana ini akan diakses data mahasiswa
yang digunakan nomor mahasiswa terkecil adalah nomor mahasiswa urutan 8100,
sedang nomor mahasiswa lebih kecil dari 8100 tidak diakses karena sudah tidak
aktif atau sudah lulus. Jika dalam hal ini digunakan nomor record
relative yang sama dengan nomor.
Sumber :
- http://lunamaria23.wordpress.com/2011/04/03/file-relatif-dalam-cobol/
- http://ariesandrianto.blogspot.com/2012/11/contoh-program-file-relative-pada-cobol.html
- http://ilhamposts.blogspot.com/2012/12/contoh-program-file-relatif-pada-cobol.html
- http://namiranamira.blogspot.com/2012/04/file-relatif.html
- http://juliandigesdi.blogspot.com/2012/11/organisasi-file-pada-cobol.html
Tidak ada komentar:
Posting Komentar