Cỏc file nội tại (Internal Files)

Một phần của tài liệu Ngôn ngữ lập trình Fortran và ứng dụng trong khí tượng thủy văn (Trang 95 - 96)

Khi một đơn vị file trong cỏc lệnh nhập hoặc xuất là tờn của một biến ký tự, thỡ lệnh sẽ chuyển dữ liệu từ một vựng lưu giữ nội tại trong bộ nhớ sang một vựng khỏc. Những vựng lưu giữ này được gọi là cỏc file nội tại

(internal file). Thớ dụ, ta cú thể đọc dữ liệu từ một xõu ký tự thay vỡ đọc từ một dũng dữ liệu trong file thụng thường với những lệnh sau đõy:

CHARACTER * 13 DATA1 INTEGER I, J

REAL X

DATA1 = '137 65 42.17' READ (DATA1, *) I, J, X

Những lệnh trờn đõy cú nghĩa rằng chỳng ta khai bỏo một biến cú kiểu văn bản DATA1 với độ dài 13 ký tự. Sau đú gỏn cho biến này dũng văn bản:

‘137 65 42.17 ‘

Đú là việc bỡnh thường, chỳng ta đó biết từ trước đến nay. Nhưng hóy chỳ ý đến lệnh cuối cựng. Đú là lệnh:

95

Trụng lệnh này giống như một lệnh đọc dữ liệu bỡnh thường, chỉ cú khỏc là thay vỡ đơn vị file trong cặp dấu ngoặc đơn ta đó đưa tờn biến DATA1 vào đú. Kết quả là sau lệnh đọc này cỏc đoạn văn bản biểu diễn những chữ số 137, 65 và 42.17 đó được đọc ra như là những số nguyờn, số thực và gỏn vào cỏc biến nguyờn I, J và biến thực X trong danh sỏch cỏc biến cần đọc của lệnh READ một cỏch đỳng đắn. Sau những lệnh này giỏ trị cỏc biến số sẽ như sau:

I sẽ bằng 137, J sẽ bằng 65 và X bằng 42.17.

Đõy là một đặc điểm rất quan trọng của Fortran. Ta sẽ thấy ớch lợi của đặc điểm này của file nội tại qua thớ dụ sau:

INTEGER PTR REAL AMOUNT CHARACTER * 15 TEMP . . . . . . READ (12, 5) TEMP 5 FORMAT (A10)

IF (INDEX (TEMP, '$') .NE. 0) THEN PTR = INDEX (TEMP, '$')

TEMP (PTR: PTR) = ' ' END IF

READ (TEMP, *) AMOUNT

Với đoạn chương trỡnh này dữ liệu từ trong đơn vị file (12) thụng thường (file ngoại) được đọc vào biến ký tự TEMP. Trong trường hợp dữ liệu cú kốm theo dấu $ ở bờn trỏi (cỏch viết dấu đụ la đằng trước và dớnh liền số tiền của những người Mỹ thường làm), thỡ lệnh đọc

READ (12,5) TEMP

vẫn khụng mắc lỗi về kiểu dữ liệu. Sau đú ta xử lý, thay ký tự $ bằng ký tự dấu trống và đọc lấy giỏ trị số thực AMOUNT bằng lệnh đọc file nội tại

READ (TEMP, *) AMOUNT

Nhận thấy rằng lệnh đọc dữ liệu từ file nội tại hoàn toàn tương tự lệnh đọc cỏc file thụng thường. Thay vỡ số hiệu thiết bị hay số hiệu file, ta ghi tờn biến (ở đõy là biến TEMP) vào vị trớ của thiết bị hay số hiệu file.

Bõy giờ ta xột một thớ dụ về sử dụng file nội để chuyển đổi dữ liệu số thành dữ liệu văn bản. Giả sử ta muốn tạo ra 12 tờn file lần lượt là ‘GIO.1’, ‘GIO.2’, ..., ‘GIO.12’. Đoạn chương trỡnh sau đõy cú thể làm được việc đú:

INTEGER J

CHARACTER *6 TENF(12), TAM DO J = 1, 12

IF (J .LT. 10) THEN WRITE (TAM, ‘(I1)’) J ELSE

WRITE (TAM, ‘(I2)’) J

END IF

TENF (J) = ‘GIO’ // ‘.’ // TAM END DO

Một phần của tài liệu Ngôn ngữ lập trình Fortran và ứng dụng trong khí tượng thủy văn (Trang 95 - 96)