fortran 輸入輸出格式


 1         PROGRAM PSSPAP
 2 C       PLAN STRESS/STRAIN PROBLAM ANALYSIS PROGRAM
 3         DIMENSION LND(500,3),X(200),Y(200),JZ(50,3),
 4      &  PJ(50,3),P(500),TL(20),AK(500,100),AKE(6,6)
 5         OPEN (6,FILE='PSSPAP.IN')
 6         OPEN (8,FILE='PSSPAP.OUT')
 7         READ(6,10) TL
 8 10      FORMAT(20A4)
 9         READ(6,*)NJ,NE,NZ,NPJ,IPS
10         WRITE(8,10)TL
11         IF(IPS.EQ.1) WRITE(8,20)
12         IF(IPS.EQ.2) WRITE(8,30)        
13 20      FORMAT(/1X,'PLATE STRESS PROBLEM')
14 30      FORMAT(/1X,'PLATE STRAIN PROBLEM')
  • 1.PROGRAM PSSPAP 表示這個fortran的代碼名稱為PSSPAP.
  • 2. C代表本行為注釋行,后面寫自己想要說明的東西。
  • 3.DIMENSION可以定義數組,后面跟數組名和維數,DIMENSION語句后若不加任何精度說明,則默認的是real(kind=4),即單精度浮點型。如:我要定義兩個雙精度浮點型數組,就有以下兩種定義方法:

      1.用Dimension

      Dimension A(4,4),B(3,3)

        double precision A,B

      2.第二種方法

      REAL(kind=8)::A(4,4),B(3,3)

  • 4.&代表續行符
  • 5.OPEN(6,FILE='PSSPAP.IN')     OPEN是打開文檔函數,6是開通的通道號,做讀取文件用。后續可以采用READ(6,*)的格式從PSSPAP.IN中讀取數據,也可以采用WRITE(6,*)將計算得到的數據寫入文件PSSPAP.IN中。
  • 6.READ(6,*)A,B,C      表示從代號為6的文件中以默認的方式(后面的“*”表示默認的方式/格式)來依次讀取三個值賦給變量A,B,C。      
    READ(6,10) TL意思是讀入6號通道的文檔,用第10行所寫的格式,讀入的東西放入TL變量中。
  • 8. FORMAT(20A4)20個長度為4的字符串。        write(*,*)"string";write(unit=*,FMT=*)"string";write(unit=6,FMT=*)"string"。以上等價,6是默認輸出位置,即屏幕。

7.WRITE(8,10)TL  意思是將TL 的內容按編號為10的行的格式寫入到8通道的文檔中。
8.IF(IPS.EQ.1) WRITE(8,20)  意思是如果括號里面的為真,則將20行的內容寫入到8文檔中。

 

貼一段別人總結好的:
 
格式化輸出的控制字符非常的豐富,但常用的並不多,一般說來:" I 、F、E、A、X "是最常使用的幾個格式,最
 
好把它們都記下來。

Iw[.m] 以w個字符的寬度來輸出整數,至少輸出m個數字。                            

 

如:write(*,"(I5)") 100   輸出:_ _100 ; 前面兩空格 

 

Fw.d 以w個字符文本框來輸出浮點數,小數部分占d個字符寬,輸出文本框的設置不中會出現*號。

 

如:write(*,"(F9.3)") 123.45  輸出:_ _123.450 ; 前面兩空格,后補0

 

Ew.d[Ee] 用科學計數法,以w個字符寬來輸出浮點數,小數部分占d個字符寬,指數部分最少輸出e個數字。

 

如:write(*,"(E15.7)" 123.45 輸出:_ _0.1234500E+03 ; 輸出不中15個字符的部分補上空白,小數部分不足7位的會補0

Dw.d 使用方法同Ew.d,差別在於輸出時用來代表指數的字母由E換成D。 

 

Aw 以w個字符寬來輸出字符串。 write(*,"(A10)") "Hello" 固定用是為10我個字符段來輸出字符串,不足的前面補空格

 

nX 輸出位置向右移動n位。write(*,"(5X,I3)") 100 ; 將先填5個空格,再輸出整數。

 

Lw 以w個字符寬來輸出T或F的真假值。write(*,"(L4)") .true. ;程序會輸出3個空格和一個T

 

換行輸出。write(*,"(I3//3)") 10,10 程序會得出4行,中間兩行空格是從除號"/"得到的。

Tc 把輸出的位置移動到本行的第c個字節。
TLn 輸出位置向左相對移動n個字節。
TRn 輸出位置向左相對移動n個字節。
SP、SS 加了SP后,輸出數字時如數值為正則加上"+",SS則是用來取消SP的功能。                 如 write(*,"(SP , I5 , I5 , SS , I5)") 5 , 5 , 5 輸出:+5   +5   5
BN、BZ  BN定義在輸入時沒有數據的字節代表沒有東西。BZ定義在沒有數據的字節代表0
下面是實例總結:
1、FORMAT(5X,'******',/,5X,'NON E* POSSIBILIE L ESTRAPOLAZIONE DELIA CURVA MOT')
結果:
5個空格******
 

5個空格NON E* POSSIBILIE L ESTRAPOLAZIONE DELIA CURVA MOT

 

2、fortran77中的H用來表示字符算輸出*H……代表輸出H后面的*個字符。

 

3、format(5(10f7.2/)) 格式,用括號擴起來,前面加一個數字,表示括號內的格式重復這么多次。也就是 n(XX) 等同於 XX,XX,XX,XX .... 重復 n 次。
4、換行斜杠(/)編輯符的作用是結束記錄在本行的輸出並從下一行開始輸出下一個記錄。如果有兩個連續的斜杠,相當於增加一個空行輸出。如果在編輯符的最后出現斜杠,也是再輸出一個空行。用n個連續的斜杠,可以達到輸出n-1個空行的效果。

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM