L 2= EN_TRIM(TEN) 3 = EN_TRIM(ST1)
7.3.2 File truy cập trực tiếp có định dạng
Trong file truy cập trực tiếp có định dạng, tất cả các bản ghi có cùng độ dài và có thể đ−ợc ghi hoặc đọc theo thứ tự bất kỳ. Kích th−ớc bản ghi đ−ợc chỉ ra bởi tùy chọn
RECL= trong câu lệnh OPEN và nên bằng hoặc lớn hơn số byte của bản ghi dài nhất. Các
ký tự RETURN (CR) và xuống dòng (LF) là những ký tự phân cách giữa các bản ghi và khơng tính vào giá trị của RECL. Một khi bản ghi truy cập trực tiếp đã đ−ợc ghi, nó khơng thể bị xóa nh−ng vẫn có thể bị ghi đè.
Khi kết xuất (output) ra file truy cập trực tiếp có định dạng, nếu số liệu khơng lấp đầy hồn tồn bản ghi, trình biên dịch sẽ đệm vào phần còn lại của bản ghi các dấu cách (BLANK SPACES). Các dấu cách bảo đảm rằng file chỉ chứa những bản ghi đã lấp đầy hoàn toàn và tất cả các bản ghi đều có cùng độ dài.
Khi đọc vào (input), trình biên dịch cũng ngầm định là có đệm các dấu cách vào nếu danh sách đọc vào và định dạng đòi hỏi nhiều dữ liệu hơn bản ghi đã chứa. Có thể bỏ qua ngầm định việc đệm vào các dấu cách ở dữ liệu vào bằng cách đặt tùy chọn PAD= “NO” trong câu lệnh OPEN. Khi đặt PAD= “NO”, bản ghi đọc vào cần phải chứa l−ợng dữ liệu đ−ợc chỉ ra bởi danh sách đầu vào và định dạng FORMAT, nếu không sẽ xuất hiện lỗi.
PAD= “NO” khơng có ảnh h−ởng đối với kết xuất.
Ví dụ 7.7. Đọc và ghi file truy cập trực tiếp có định dạng
character st*10 integer n
OPEN (3,FILE='TEST2.TXT',FORM='FORMATTED',& ACCESS='DIRECT',RECL=10)
st = 'RECORD ONE'
WRITE (3, '(A10)', REC=1) st ! Bản ghi thứ nhất n= 30303
WRITE (3, '(I5)', REC=3) n ! Bản ghi thứ ba CLOSE (3)
OPEN (3,FILE='TEST2.TXT', FORM='FORMATTED', & ACCESS='DIRECT',RECL=10)
st = ' ' n=0
read(3,'(I5)', rec=3) n ! Đọc bản ghi thứ ba print*,st
print*,n END
Qua đó thấy rằng, để làm việc với file truy cập trực tiếp có định dạng, câu lệnh
OPEN phải chứa các tham số tuỳ chọn FORM = 'FORMATTED', ACCESS = 'DIRECT' và RECL =
Độ_dài_bản_ghi. Mô tả tổ chức dữ liệu theo ch−ơng trình ở ví dụ 7.7 đ−ợc cho trên hình
7.3. Độ dài của mỗi bản ghi là 10 byte, cộng với với 2 byte chứa ký tự điều khiển, nên những vị trí bản ghi ch−a có dữ liệu sẽ có “khoảng trống” 12 byte khơng xác định. Đối với những bản ghi có dữ liệu chiếm ít hơn 10 byte, số byte cịn lại sẽ đ−ợc lấp đầy (đệm) bằng các dấu cách.
Hình 7.3 Cấu trúc file TEST2.TXT