Các file truy nhập tuần tự (Sequential Files)

Một phần của tài liệu Giáo trình Fortran (Trang 127 - 130)

D On in d= ini, li m, inc

11.2.Các file truy nhập tuần tự (Sequential Files)

Những đặc điểm bổ sung về file 11.1 Các file nội tại (Internal Files)

11.2.Các file truy nhập tuần tự (Sequential Files)

Các file được sử dụng trong tất cả các thí dụ từ trước tới nay gọi là file truy nhập tuần tự vì một khi file đã được tạo ra, ta không thể cập nhật một bản ghi đơn lẻ nào trong nó. Muốn thay đổi một bản ghi, ta phải đọc các thơng tin trong bản ghi, sửa đổi nó và sau đó ghi vào một file khác. Bây giờ ta sẽ xét lệnh OPEN phức tạp có thêm

những chỉ định khác so với những thí dụ trước đây:

OPEN (UNIT = Biểu thức nguyên,

* FILE = Biểu thức ký tự,

* ACCESS = Biểu thức ký tự,

* STATUS = Biểu thức ký tự,

* FORM = Biểu thức ký tự,

* IOSTAT = Biến nguyên,

* RECL = Biểu thức nguyên,

* BLANK = Biểu thức ký tự,

* ERR = Nhãn lệnh chuyển điều khiển)

Biểu thức nguyên trong chỉ định UNIT, thường là một hằng, được sử dụng trong các lệnh READ hoặc WRITE để chỉ đơn vị file được dùng. Biểu thức ký tự trong chỉ định FILE là tên của file cần mở. Hai chỉ định vừa rồi chúng ta đã quen dùng trong các chương trước.

Biểu thức ký tự trong chỉ định ACCESS phải có giá trị bằng 'DIRECT'' hoặc ‘SEQUENTIAL' dùng để chỉ file thuộc loại truy cập trực tiếp hay truy cập tuần tự. Nếu

vắng mặt chỉ định này thì ngầm định là 'SEQUENTIAL' như trước đây chúng ta đã dùng.

Biểu thức ký tự của chỉ định STATUS có thể có một trong những giá trị là ‘NEW' (để chỉ file mới sẽ tạo ra bằng lệnh WRITE), hoặc 'OLD' (file đang tồn tại), hoặc ‘UNKNOWN’ (chưa rõ), hoặc 'SCRATCH' (file xuất, sẽ bị xố khi chương trình kết thúc).

Biểu thức ký tự trong chỉ định FORM hoặc có giá trị là 'FORMATTED' hoặc là 'UNFORMATTED' hay ‘BINARY’. Các file FORMATTED có thể dùng với cả lệnh READ và WRITE có định dạng hoặc dùng với các lệnh nhập, xuất đơn giản. Trong file UNFORMATTED dữ liệu được truy cập như là các xâu nhị phân, không phải là các số hay các ký tự. Nếu chỉ định FORM vắng mặt thì ngầm định sẽ là ‘FORMATTED’ đối với các file tuần tự và ‘UNFORMATTED’ đối với các file trực tiếp.

IOSTAT có thể dùng để khơi phục lỗi khi mở file. Nếu khơng có lỗi khi mở file, biến ngun sẽ có giá trị 0. Nếu có lỗi, thí dụ khơng tìm thấy file với tên đã chỉ

định, thì một giá trị khác 0 sẽ được lưu trong biến. Người ta thường kiểm tra giá trị của biến này để quyết định hành động tiếp theo. Thí dụ CHARACTER TEN *12, TEMP *70

PRINT *, ‘GO TEN FILE’ READ (*, ‘(A12)’) TEN

IF (IERR .EQ. 0) THEN . . .

. . . . . . ELSE

PRINT*, ‘LOI MO FILE ‘,IERR END IF

Đặc tả IOSTAT cũng có thể dùng với các lệnh READ và WRITE.

Chỉ định RECL cần cho các file truy cập trực tiếp, không dùng với các file truy cập tuần tự. Biểu thức nguyên nó chỉ định độ dài của một bản ghi.

Biểu thức ký tự của chỉ định BLANK có thể là 'NULL' hoặc 'ZERO'. Nếu đặc tả là 'NULL' các dấu trống trong các trường số bị bỏ qua, nếu là 'ZERO' các dấu trống được xem là các số 0. Ngầm định là 'NULL'.

Chỉ định ERR là tuỳ chọn và có giá trị để xử lý lỗi. Nếu lỗi xảy ra trong khi thực hiện lệnh OPEN hay một lệnh nào đó có chứa chỉ định này thì chương trình sẽ chuyển điều khiển tới lệnh có nhãn ghi trong chỉ định ERR thay vì tạo ra lỗi thực hiện chương trình. Chỉ định ERR cũng dùng với các lệnh READ và WRITE.

• Lệnh CLOSE là một lệnh thực hiện, nó ngắt một file ngoại khỏi chương trình. Dạng tổng quát như sau:

CLOSE (UNIT = Biểu thức nguyên, * STATUS = Biểu thức ký tự,

* IOSTAT = Biến nguyên,

* ERR = Nhãn lệnh chuyển điều khiển)

Lệnh CLOSE và các chỉ định là tuỳ chọn. Chỉ định STATUS trong lệnh CLOSE có giá trị ‘KEEP’ có nghĩa file được giữ lại, ‘DELETE’ có nghĩa file khơng cần nữa và nên xố đi.

• Lệnh REWIND

REWIND (UNIT = Biểu thức nguyên,

* IOSTAT = Biến nguyên,

dùng để chuyển về vị trí bản ghi thứ nhất trong file tuần tự.

• Lệnh BACKSPACE

BACKSPACE (UNIT = Biểu thức nguyên,

* IOSTAT = Biến nguyên,

* ERR = Nhãn lệnh điều khiển)

chuyển vị trí đọc ngược lại về phía trước một bản ghi trong file tuần tự.

Lệnh ENDFILE

ENDFILE (UNIT = Biểu thức nguyên,

* IOSTAT = Biến nguyên,

* ERR = Nhãn lệnh điều khiển)

ghi vào file một bản ghi chỉ sự kết thúc file khi file đã được tạo ra.

Một phần của tài liệu Giáo trình Fortran (Trang 127 - 130)