FILE pada FORTRAN Pertemuan 9 Matakuliah : S0683/Algoritma dan Pemrograman Tahun : 2007 FILE pada FORTRAN Pertemuan 9
FILE Media penyimpanan data yang bersifat permanen. File terdiri dari kumpulan record, record terdiri dari kumpulan field. Field terbentuk dari kumpulan karakter. File dapat diakses secara urut (sequential access) atau secara langsung (direct access). 3 Bina Nusantara
Struktur dari record Ada tiga macam bentuk struktur dari record, yaitu: FORMATTED record: record yang mempunyai format tertentu. Pengaksesan dengan statement WRITE dan READ, maka bentuknya harus ditunjukkan dengan format specifier UNFORMATTED record: file yang berisi kumpulan record yang tidak terformat. Pengaksesan dengan statement WRITE dan READ tidak digunakan suatu bentuk format specifier BINARY record: record yang berbentuk urut-urutan bytes dan yang tidak mempunyai struktur internal Bina Nusantara
Statement OPEN Digunakan untuk membuka file agar data dapat diakses Bentuk umum: OPEN (<unit-spec>, FILE = ‘<fname>’, STATUS = ‘<status>’, ACCESS = ‘<access>’, FORM = ‘<format>’,RECL =‘rec-length’) <unit-spec> menunjukkan spesifikasi alat yang digunakan berupa nilai integer <fname> adalah nama file yang akan digunakan <status> adalah OLD (default) atau NEW. OLD untuk file yang sudah pernah ada. NEW untuk file yang belum pernah ada <access> adalah metode akses, SEQUENTIAL (default) untuk sequential access atau DIRECT untuk direct access 5 Bina Nusantara
Statement OPEN Lanj. <format> adalah bentuk format dari record, FORMATTED, UNFORMATTED, atau BINARY. Bila akses sequential, defaultnya FORMATTED. Bila akses direct, defaultnya UNFORMATTED <rec-length> adalah panjang dari record yang ditunjuk oleh suatu nilai integer. Hanya digunakan jika akses direct Contoh: OPEN (1,FILE=‘Latihan.Txt’,STATUS=‘NEW’) Berarti suatu file baru dengan nama Latihan.Txt, dengan unit specifier 1, dibuka dengan akses sequential dan dengan bentuk record terformat 6 Bina Nusantara
Statement CLOSE Digunakan untuk menutup file karena tidak digunakan lagi Bentuk umum: CLOSE (<unit-spec>, STATUS = ‘<status>’) <unit-spec> adalah unit specifier yang menunjukkan nomor file yang akan ditutup, sama dengan <unit-spec> yang digunakan pada statement OPEN <status> adalah KEEP (default) atau DELETE. KEEP berarti file ditutup dan disimpan. DELETE berarti file ditutup dan dihapus dari disk Contoh: CLOSE (1,STATUS=‘DELETE’) 7 Bina Nusantara
Statement WRITE Digunakan untuk merekam data ke dalam file Bentuk umum: WRITE(<unit-spec>, <format-spec>, ERR = <slabel>, REC = <rec-num>) <iolist> <unit-spec> adalah unit specifier yang menunjukkan nomor file yang akan ditulis, sama dengan <unit-spec> yang digunakan pada statement OPEN <format-spec> adalah format specifier yang menunjukkan bentuk dari tipe, letak, dan panjang data yang akan ditulis 8 Bina Nusantara
Statement WRITE Lanj. <slabel> adalah statement label yang menunjukkan letak dari executable statement yang akan dituju bila proses perekaman mengalami kesalahan <rec-num> adalah record number, yang menunjukkan nomor record file di disk yang akan direkam dengan data secara direct access <iolist> adalah input/output list yang berupa suatu nama variabel menunjukkan data yang akan direkam 9 Bina Nusantara
Statement WRITE Lanj. Contoh: WRITE(1,’(A20,A15,F7.2)’,ERR=100) A,B,C Menunjukkan data A,B,C akan direkam di file yang ditunjuk oleh nomor alat 1 secara akses urut. Bila perekaman data mengalami kesalahan, maka akan menuju ke label statement 100 dan di label statement ini harus berisi suatu executable statement. Misal: Write(*,*) ‘Terjadi kesalahan dalam penulisan file’ 10 Bina Nusantara
Statement READ Digunakan untuk membaca data dari file Bentuk umum: READ(<unit-spec>, <format-spec>, REC = <rec-num>, END = <slabel1> ERR = <slabel2>) <iolist> <unit-spec> adalah unit specifier yang menunjukkan nomor file yang akan dibaca, sama dengan <unit-spec> yang digunakan pada statement OPEN <format-spec> adalah format specifier yang menunjukkan bentuk dari tipe, letak, dan panjang data yang akan dibaca 11 Bina Nusantara
Statement READ Lanj. <rec-num> adalah record number, yang menunjukkan nomor record file di disk yang akan direkam dengan data secara direct access <slabel1> adalah statement label yang menunjukkan letak dari executable statement yang akan dituju bila telah sampai pada record terakhir atau akhir dari file <slabel2> adalah statement label yang menunjukkan letak dari executable statement yang akan dituju bila proses pembacaan mengalami kesalahan 12 Bina Nusantara
Statement READ Lanj. <iolist> adalah input/output list yang berupa suatu nama variabel untuk menerima data yang dibaca Contoh: READ(1,’(A20,A15,F7.2)’,END=999) A,B,C Menunjukkan data A,B,C akan dibaca dari file yang ditunjuk oleh nomor alat 1 secara urut karena tidak dipergunakan argumen REC dan bentuk format recordnya adalah FORMATTED karena menggunakan format specifier. Bila pembacaan record sudah mencapai akhir dari file atau record terakhir, maka proses akan menuju ke label statement 999 yang berisi suatu executable statement. Misal: Write(*,*) ‘Record terakhir’ 13 Bina Nusantara
Contoh Program Membuat FILE Sequential (FORMATTED) Character NoMhs*7,Nama*25 Real*4 Nilai OPEN (1,FILE=‘Nilai.Dat’,STATUS=‘NEW’) 5 WRITE (*,’(24(/))’) WRITE (*,’(1X,A,\)’) ‘Nomor Mahasiswa ? ’ READ (*,’(A7)’) NoMhs WRITE (*,’(1X,A,\)’) ‘Nama Mahasiswa ? ’ READ (*,’(A25)’) Nama’ WRITE (*,’(1X,A,\)’) ‘Nilai ? ’ WRITE (1,’(A7,A25,F6.2)’) NoMhs,Nama,Nilai WRITE (*,*) WRITE (*,’(1X,A,\)’) ‘Ada Data Yang Lain (Y/T) ? ‘ READ (*,’(A)’) Lagi IF (Lagi .EQ. ‘Y’ .OR. Lagi .EQ. ‘y’) GOTO 5 CLOSE (1) END Bina Nusantara