2014-03-26 188 views
1

我正面臨循環中循環的問題。我不知道爲什麼循環沒有運行。在循環中循環

Program Console2 
IMPLICIT NONE 

Integer n,LineID,AA,AAA,BBB,CCC,DDD,EEE,FFF,GGG,J 
Real :: A,B,C,D,S,BB,CC,DD 
Character (LEN=10) Line,NodeID 
OPEN(UNIT=2,FILE="Chaq.txt",STATUS='unknown') 
OPEN(UNIT=12,FILE="CoOrd.txt",STATUS='unknown') 
OPEN(UNIT=4,FILE="OUTPUT.txt",STATUS='unknown') 


Do n=1,10 
    Read (2,'(1x,a6,5x,i5,7x,i4,i8,i8,i8,i8)')NodeID,AAA,BBB,CCC,DDD,EEE,FFF 

    write (4,*)NodeID,DDD 

    Do J=1,10 

    READ (12,('(1x,a4,7x,I5,8x,f8.2,f8.2,f8.2)'))Line,AA,BB,CC,DD 

    write (4,*) Line,AA 

    End Do 

End Do 

End program Console2 

問題是第二個循環是不讀從第二個文件中的值:輸出文件:

CQUAD4   5950 
GRID    3860 
GRID    3861 
GRID    3862 
GRID    3863 
GRID    3864 
GRID    3865 
GRID    3866 
GRID    3867 
GRID    3868 
GRID    3869 
CQUAD4   5949 

文件Chaq.text:一些線路

CQUAD4  6817  2 6053 5950 5951 6054     
CQUAD4  6816  2 6052 5949 5950 6053     
CQUAD4  6815  2 6051 5948 5949 6052     
CQUAD4  6814  2 6050 5947 5948 6051    
CQUAD4  6813  2 6192 5946 5947 6050 

CoOrd.txt:我所示的一些線條

GRID  3860  -171.90469.00543-28.5831       
GRID  3861  -186.50872.15994-28.5831       
GRID  3862  -180.23572.08246-28.5831       
GRID  3863  -184.573103.9741-28.5831       
GRID  3864  -171.92971.30236-28.5831       
GRID  3865  -191.05479.44247-28.5831       
GRID  3866  -159.938100.6297-28.5831       
GRID  3867  -169.58477.11039-28.5831       
GRID  3868  -176.62391.22597-28.5831       
GRID  3869  -185.83898.214 -28.5831  
+0

這不是明擺着你是什麼意思「,它不讀值」。你期望的輸出是什麼?從Chaq.txt和CoOrd.txt文件中看到至少幾行文字也是很好的。 – Peter

+0

BB,CC和DD沒有在您的代碼中定義。?它如何與IMPLICIT NONE配合使用? – Peter

+0

對不起,而複製它的錯誤。它的定義 – ABOSs

回答

1

如果你ar Ë想從CoOrd.txt開始通過外循環每次讀,那麼你需要通過每一次循環中倒帶CoOrd.txt

Integer ReadStat 
    ... 

    Do n=1,10 
     Read (2, '(1x,a6,5x,i5,7x,i4,i8,i8,i8,i8)', IOSTAT=ReadStat) NodeID,AAA,BBB,CCC,DDD,EEE,FFF 
     If (ReadStat < 0) exit ! EOF reached 
     If (ReadStat > 0) stop ! An unknown error occurred 

     write (4,*)NodeID,DDD 
     rewind(12) 

     Do J=1,10 
     READ (12, ('(1x,a4,7x,I5,8x,f8.2,f8.2,f8.2)', IOSTAT=ReadStat))Line,AA,BB,CC,DD 

     If (ReadStat < 0) exit ! EOF reached 
     If (ReadStat > 0) stop ! An unknown error occurred 

     write (4,*) Line,AA 

     End Do 

    End Do 
+0

謝謝,它的工作 – ABOSs

+0

一個更小的查詢,如果我有950行CoOrd.txt,對於一般循環如果我做'做J = 1,1000'爲什麼它給運行時錯誤,我應該如何精確修復運行循環。 – ABOSs

+0

@ABOSs如果你希望你的循環計數器大於你正在閱讀的文件,你可以添加一個參數到'read'來檢測文件的結尾並相應地執行。我更新了答案以示例。 – lurker