Lệnh mở file

Một phần của tài liệu Giáo trình Ngôn ngữ lập trình Fortran 90: Phần 2 (Trang 39 - 43)

L 2= EN_TRIM(TEN) 3 = EN_TRIM(ST1)

7.4.1 Lệnh mở file

OPEN ([UNIT=] unit [, ACCESS=access] [, ACTION=action] [, BLANK=blanks] [, BLOCKSIZE=blocksize] [, CARRIAGECONTROL=carriagecontrol] [, DELIM=delim] [, ERR=err] [, FILE=file] [, FORM=form] [, IOFOCUS=iofocus] [, IOSTAT=iostat] [, PAD=pad] [, POSITION=position] [, RECL=recl] [, SHARE=share] [, STATUS=status])

Hình 7.8 Cấu trúc file TEST6.TXT

Trong mô tả trên đây, những từ viết in hoa đ−ợc xem là các từ khoá xác định tham số, chúng phải đ−ợc viết một cách chính xác, những từ viết in th−ờng sau dấu (=) là giá trị các tham số. Nh− đã thấy, cú pháp đầy đủ của câu lệnh khá phức tạp bởi nó chứa rất nhiều tham số. Tuy vậy, hầu hết các tham số này đều là tùy chọn, ta có thể bỏ qua những tùy chọn khơng cần thiết trong q trình sử dụng. Sau đây là ý nghĩa và cách sử dụng các tham số.

UNIT là tham số dùng để khai báo thiết bị lôgic sẽ đ−ợc liên kết với file. Nếu bỏ qua UNIT= thì unit cần phải là tham số đầu tiên. Ng−ợc lại, các tham số có thể xuất hiện theo thứ tự bất kỳ.

unit: Là một số nguyên (INTEGER(4)) lớn hơn hoặc bằng 0, dùng nh− một thiết bị

lơgic để liên kết với file ngồi hoặc thiết bị ngoài.

access: Chỉ ra cách truy cập vào file, có thể nhận một trong các giá trị “APPEND”

(ghi tiếp vào cuối file), “DIRECT” (truy cập trực tiếp), hoặc “SEQUENTIAL” (truy cập tuần tự − ngầm định).

action: Là tham số mơ tả tác động dự định đối với file. Có thể nhận giá trị ‘READ’

(file chỉ đọc), ‘WRITE’ (chỉ để ghi vào file), hoặc 'READWRITE' (cả đọc từ file và ghi vào file). Nếu bỏ qua action, ch−ơng trình sẽ cố gắng mở file với 'READWRITE'. Nếu khơng đ−ợc,

tr−ớc hết ch−ơng trình sẽ mở file với 'READ', sau đó với 'WRITE'. Việc bỏ qua action không giống với ACTION = 'READWRITE'. Nếu ACTION = 'READWRITE', khi mà file không thể truy cập bằng cả đọc và ghi thì việc mở file sẽ khơng thành cơng. Do đó việc bỏ qua

action sẽ mềm dẻo và linh động hơn.

blanks: Có dạng ký tự (Character*(*)), dùng để điều khiển cách biểu diễn các

ký tự trống (dấu cách) đối với vào/ra có định dạng, nhận một trong các giá trị 'NULL' hoặc 'ZERO'. Giá trị 'NULL' (ngầm định) để bỏ qua ký tự trống, giá trị 'ZERO' để xử lý các ký tự trống (các dấu cách ở đầu) nh− là những số 0.

blocksize: Ngầm định là một số nguyên ((INTEGER(4)), dùng để biểu diễn kích

th−ớc vùng đệm (tính bằng byte).

carriagecontrol: Có dạng ký tự (Character*(*)), dùng để chỉ việc hiểu ký tự

đầu tiên của bản ghi trong file có định dạng nh− thế nào; nhận một trong các giá trị 'FORTRAN' hoặc 'LIST'. Ngầm định đối với các UNIT kết nối với thiết bị ngoài nh− máy in hoặc màn hình là 'FORTRAN'; ngầm định đối với các UNIT kết nối với các file là 'LIST'.

carriagecontrol bị bỏ qua khi sử dụng tùy chọn FORM= 'UNFORMATTED' hoặc

FORM='BINARY'.

delim: Có dạng ký tự (Character*(*)), dùng để chỉ cách định ranh giới các bản

ghi trong list-directed hoặc namelist-formatted; nhận một trong các giá trị 'APOSTROPHE', 'QUOTE', hoặc 'NONE' (ngầm định).

err: Là nhãn của câu lệnh thực hiện trong ch−ơng trình. Khi gặp lỗi mở file ch−ơng

trình sẽ chuyển điều khiển đến câu lệnh có nhãn err. Nếu bỏ qua, hiệu ứng lỗi vào/ra sẽ đ−ợc xác định bởi iostat.

file: Có dạng ký tự (Character*(*)), dùng để chỉ ra tên file cần mở; có thể là

dấu cách, tên file hợp lệ, tên thiết bị hoặc tên biến xác định file trong. Đối với Windows

NT và Windows 9x trở lên, tên file cho phép dài hơn 8 ký tự, phần mở rộng dài hơn 3 ký

tự. Nếu file bị bỏ qua, trình biên dịch sẽ tạo một file tạp nham (file nháp) nào đó chỉ có tên (khơng có phần mở rộng) và file này sẽ bị xóa khi gặp lệnh đóng file hoặc khi ch−ơng trình kết thúc.

form: Xác định kiểu file sẽ đ−ợc mở, nhận một trong các giá trị 'FORMATTED' (file có

định dạng), 'UNFORMATTED' (file không định dạng), hoặc 'BINARY' (file nhị phân). Đối với file truy cập tuần tự, giá trị ngầm định là 'FORMATTED'; đối với file truy cập trực tiếp giá trị ngầm định là 'UNFORMATTED'.

iofocus: Tham số lơgic, dùng để chỉ việc có đặt cửa sổ con (child window) là cửa sổ

hoạt động hay không. Giá trị .TRUE. (ngầm định) tạo ra lời gọi SETFOCUSQQ ngay lập tức tr−ớc khi thực hiện các lệnh READ, WRITE, hoặc PRINT.

iostat: Là tham số kết xuất, ngầm định là một số nguyên (INTEGER(4)); cho giá

trị bằng 0 nếu không xuất hiện lỗi mở file, giá trị âm nếu gặp lỗi kết thúc bản ghi, hoặc một số xác định mã lỗi.

pad: Có dạng ký tự (Character*(*)), dùng để chỉ ra việc có đệm các dấu cách vào

bản ghi khi đọc hay không nếu định dạng bản ghi có độ dài lớn hơn độ dài dữ liệu. pad nhận giá trị bằng 'YES' (ngầm định) hoặc 'NO'. Tham số này chỉ tác động khi đọc dữ liệu.

position: Có dạng ký tự (Character*(*)), chỉ ra vị trí con trỏ file truy cập tuần

tự, nhận một trong các giá trị 'ASIS' (ngầm định), 'REWIND', hoặc 'APPEND'. Nếu

position nhận giá trị 'REWIND’, con trỏ file sẽ định vị tại đầu file; nếu nhận giá trị

'APPEND', con trỏ file sẽ định vị tại cuối file; nếu nhận giá trị 'ASIS', con trỏ file không thay đổi vị trí (tức giữ nguyên vị trí hiện thời trong file). Vị trí con trỏ file đối với file mới luôn luôn ở đầu file.

recl: Ngầm định là số nguyên, để chỉ độ dài tính bằng byte của một bản ghi trong

file truy cập trực tiếp, hoặc độ dài bản ghi cực đại đối với file tuần tự. Đối với file truy cập trực tiếp đây là tham số địi hỏi phải có.

share: Có dạng ký tự (Character*(*)), chỉ ra quyền truy cập đối với file đ−ợc mở.

Các giá trị của share có ý nghĩa nh− sau:

share ='DENYRW': Cấm đọc/ghi share ='DENYWR': Cấm ghi share ='DENYRD': Cấm đọc

share ='DENYNONE': Cho phép cả đọc và ghi (ngầm định)

status: Có dạng ký tự (Character*(*)), dùng để mô tả trạng thái của file đ−ợc

mở. Sau đây là các giá trị có thể của tham số này.

status = 'OLD': File đang tồn tại. Mở thành công nếu file tồn tại, ng−ợc lại sẽ

xuất hiện lỗi;

status='NEW': File mới. Nếu file không tồn tại nó sẽ đ−ợc tạo mới. Nếu file đang

tồn tại sẽ xuất hiện lỗi;

status='SCRATCH': Nếu bỏ qua tham số file thì giá trị của status ngầm định

là 'SCRATCH'. File SCRATCH là file tạm thời, nó sẽ bị xóa khi đóng file hoặc khi ch−ơng trình kết thúc;

status='REPLACE': File đ−ợc mở thay thế file có cùng tên. Nếu file cùng tên

khơng tồn tại thì một file mới đ−ợc tạo ra.

status='UNKNOWN' (ngầm định): Trong lúc ch−ơng trình chạy hệ thống sẽ cố gắng

mở file với status = 'OLD', và sau đó với status = 'NEW'. Nếu file tồn tại thì nó đ−ợc mở, nếu khơng tồn tại thì nó đ−ợc tạo mới. Sử dụng status = 'UNKNOWN' để tránh các lỗi xảy ra trong lúc chạy ch−ơng trình liên quan đến việc mở một file đang tồn tại với status ='NEW' hoặc mở một file không tồn tại với status = 'OLD'.

Các giá trị của status chỉ ảnh h−ởng tới các file trên đĩa, và đ−ợc bỏ qua đối với các thiết bị nh− bàn phím và màn hình hoặc máy in.

Một phần của tài liệu Giáo trình Ngôn ngữ lập trình Fortran 90: Phần 2 (Trang 39 - 43)

Tải bản đầy đủ (PDF)

(122 trang)