2009-07-14 32 views
5

Trước khi tôi bắt đầu, tôi phải bắt đầu bằng cách nói rằng tôi là người mới khi nói đến FORTRAN. Tôi đang duy trì một đoạn mã kế thừa từ năm 1978. Mục đích của nó là đọc một số giá trị dữ liệu từ một tệp, xử lý các giá trị và sau đó xuất các giá trị đã xử lý sang một tệp văn bản khác.FORTRAN WRITE()

Với mã FORTRAN sau:

 INTEGER NM,STUBS,I,J,K 
     PARAMETER (NM=67,STUBS=43) 
     INTEGER*4 MDS(STUBS,NM) 

     CALL OPEN$A(A$RDWR,'/home/test/data.txt', MAXPATHLEN,1) 
     CALL OPEN$A(A$WRIT,'out',11,2) 

     DO 90 I=1,2 
      READ(1,82) STUB  
      !-- data processing --!  
      WRITE(2,80) STUB,(MDS(I,J),J=1,24) 
90 CONTINUE 

80 FORMAT(/1X,A24,25I5) 
82 FORMAT(1X,A24,25F5,1) 

Câu hỏi của tôi là liên quan đến báo cáo kết quả WRITE().

Tôi hiểu rằng (2,80) đề cập đến các dòng sản lượng tập tin mở và trỏ đến file 'out' và tham chiếu bởi chữ số 2. Tôi hiểu rằng 80 đề cập đến báo cáo kết quả định dạng tham chiếu bởi nhãn 80.

STUB được sử dụng để lưu trữ các giá trị đọc từ đầu vào tệp 1. Các giá trị này là những gì được xử lý và được lưu vào MDS(I,J) trong phần !-- data processing --! mà tôi đã bỏ qua.

Tôi có đúng là giả định rằng (MDS(I,J),J=1,24) sẽ ghi 24 giá trị số nguyên vào tệp đầu ra không? Nói cách khác, lặp lại từ 1 đến 24?

+0

@Fortranner Khi thêm các thẻ, bạn cũng nên xóa các vấn đề về tạo hình hoặc các vấn đề khác trong câu hỏi. –

Trả lời

10

Có, bạn đã chính xác. Cú pháp (MDS(I,J), J=1,24) là "implied DO-loop" và thường được sử dụng trong các tình huống như thế này.

+0

Bạn được chào đón. Tôi đã thêm một liên kết đến một số tài liệu về điều này nếu bạn quan tâm. –

+0

Cảm ơn bạn! Tôi đã perused trang web đó và nó chắc chắn là một trợ giúp với sửa đổi này! Nhiều đánh giá cao. – karlgrz

Các vấn đề liên quan