【发布时间】:2012-07-29 13:42:09
【问题描述】:
我正在尝试使用 FORTRAN 77 遍历文档中的所有行,并将特定行位置与字符串进行比较,然后对其进行编辑。
例如:
|BXK |00640.3A |AWP |1.01|
|BUCKEYE MUNICIPAL AIRPORT |08794|
我想把第二行的08794改成0871994。
这是我目前所拥有的:
PROGRAM CONVERSION
IMPLICIT NONE
CHARACTER(LEN=120) :: ROW
CHARACTER(LEN=2) :: DATE1='19', DATE2='20'
INTEGER :: DATENUMBER
INTEGER :: J
OPEN(UNIT=1, FILE='BXK__96B.TXT', STATUS ='OLD')
OPEN(UNIT=2, FILE='BXK__96B_MODIFIED.TXT', STATUS='UKNOWN')
DO J=1,10000
READ(1,'(A)') ROW
IF (J==2) THEN
DATENUMBER = ICHAR(ROW(76))
IF ((DATENUMBER.LE.9) .AND. (DATENUMBER.GE.2)) THEN
WRITE(2, '(A)' ROW(1:75), DATE1, ROW(76:120))
ELSE
WRITE(2, '(A)' ROW(1:75), DATE2, ROW(76:120))
ENDIF
END IF
END DO
CONTINUE
CLOSE(1)
CLOSE(2)
END
【问题讨论】:
-
您的某些代码丢失了。你已经开始了一个 DO 循环,但没有结束它;而且您没有任何读取或写入权限。
-
你的代码不是Fortran 77,为什么要写F77的代码?
-
如果您需要解析文本,您很可能需要内部函数“index”和/或“scan”,使用它们您可以识别分隔符的位置并将一行拆分为单独的列,修改你需要的,然后把所有的东西都写回去。