----------------------------------------------------
읽고 쓰는 예제
----------------------------------------------------
program TEST
integer ans
do
read (*,*) ans
if (ans.eq.42) stop
write (*,*) ans
enddo
stop
end
---------
입력 내용
---------
1
2
10
42
11
---------
출력 내용
---------
1
2
10
----------------------------------------------------
5자리 우측에 값을 출력하기
----------------------------------------------------
program TEST
character(len=20) :: str = ' 1234567890.txt'
str = adjustl(str)
str = str(5:);
print *, str
stop
end
---------
출력 내용
---------
567890.txt
----------------------------------------------------
한문자씩 출력하기
----------------------------------------------------
program TEST
! your code goes here
integer i
character(len=20) :: str = ' 1234567890.txt'
do i=1,100
print *, str(i:i)
end do
stop
end
---------
출력 내용
---------
1
2
3
4
5
6
7
8
9
0
.
t
x
t
----------------------------------------------------
한문자씩 늘리며 출력하기
----------------------------------------------------
program TEST
! your code goes here
integer i
character(len=20) :: str = ' 1234567890.txt'
do i=1,100
print *, str(1:i)
end do
stop
end
---------
출력 내용
---------
1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890
1234567890.
1234567890.t
1234567890.tx
1234567890.txt
1234567890.txt
1234567890.txt
1234567890.txt
1234567890.txt
1234567890.txt
----------------------------------------------------
.txt 를 찾아서 출력하기
----------------------------------------------------
program TEST
! your code goes here
integer i
character ch
character(len=21) :: str = ' 1234567890.txt'
integer find
find = 0
do i=1,20
ch = str(i:i)
if (ch .EQ. '.') then
print *, str(i:i)
find = find + 1
continue
endif
if ((ch .EQ. 't') .AND. (find .EQ. 1)) then
print *, str(i:i)
find = find + 1
endif
if ((ch .EQ. 'x') .AND. (find .EQ. 2)) then
print *, str(i:i)
find = find + 1
endif
if ((ch .EQ. 't') .AND. (find .EQ. 3)) then
print *, str(i:i)
find = find + 1
endif
end do
if(find .EQ. 4) then
print *, ".txt를 찾았다."
endif
stop
end
---------
출력 내용
---------
.
t
x
t
.txt를 찾았다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
제가 알기로는 포트란에는 디렉토리의 파일 목록을 가져오는 함수나 서브루틴은 없습니다. 대신 파일 목록을 명령줄 인자로 주면 될 것 같네요.
PROGRAM test
IMPLICIT NONE
INTEGER :: stat, n, i, txtfnamelen
CHARACTER(LEN=1024) :: txtfname
n = COMMAND_ARGUMENT_COUNT()
DO i = 1, n
CALL GET_COMMAND_ARGUMENT(i, txtfname, txtfnamelen, stat)
PRINT*, txtfname
END DO
END
참고해보세요.
----------------------------------------------------
웹 컴파일러
http://ideone.com/
----------------------------------------------------
그냥은 잘 안되네요.
하지만. 떼다 붙이기로 이것저것 해보니. 문자열 출력까지는 됩니다.
책을 한권 보시는게 나을겁니다.
fortran 문자열 분리
https://search.naver.com/search.naver?sm=stb_hty&where=se&ie=utf8&query=fortran+%EB%AC%B8%EC%9E%90%EC%97%B4+%EB%B6%84%EB%A6%AC
스크립트 만들기 [fortran]
http://egloos.zum.com/incredible/v/5008405
call system by 바죠
http://incredible.egloos.com/3474225
2-13 USING STRINGS AND CHARACTER ARRAYS
http://www.ibiblio.org/pub/languages/fortran/ch2-13.html
[참고] 문자열을 문자로 활용 예제 | 포트란
http://cafe.naver.com/toolsinfo/59
Fortran2003 - 유형화 할당-2. 문자열 예
http://blog.naver.com/jujae1/20199379014
Fortran Tutorial
http://seismic.yonsei.ac.kr/fortran/index.html
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
제가 알기로는 포트란에는 디렉토리의 파일 목록을
제가 알기로는 포트란에는 디렉토리의 파일 목록을 가져오는 함수나 서브루틴은 없습니다. 대신 파일 목록을 명령줄 인자로 주면 될 것 같네요.
실행은
이 코드가 포트란90에서는 되는데, 그 이전 버전에서도 되는지는 모르겠네요.
feel the gravity
위 함수는 Fortran2003이상의 표준 프로시저입니다.
COMMAND_ARGUMENT_COUNT, GET_COMMAND_ARGUMENT는 2003이상 표준을 지원하는 컴파일러(요즘에 것들의 거의 대부분)에서 지원합니다.
https://gcc.gnu.org/onlinedocs/gfortran/GET_005fCOMMAND_005fARGUMENT.html
"Standard:
Fortran 2003 and later "
!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.
그럼 90에서는 안되겠네요.. ㅠㅠ
그럼 90에서는 안되겠네요.. ㅠㅠ
문자열을 바꿔가면서 하시면 됩니다.
파일이름의 확장자는 문자열 그 이상 그 이하 아무것도 아닙니다.
님이 예로 드신 상황은 일관적인 파일명을 가지고 있는데..
1, 2, 3..등등 순차적으로 증가하는 이름이 아니라는 것인지..? <- 라고 가정하면
포트란에는 inqiure문이라는 것이 있습니다. 파일의 존재 유무를 체크할 수 있습니다.
open문의 status 속성 또한 도움이 될겁니다. status 의 음의 값을 분기를 하면 될테니까요.
http://www.lahey.com/docs/lfenthelp/F95ARINQUIREStmt.htm
https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vna3/index.html
https://software.intel.com/en-us/node/525317
꽤 여러 컴파일러마다 OS에 따라 약간 다르겠지만..
디렉토리내 파일목록을 얻을 수 있는 함수들을 각자 구축해 놓고 있긴 합니다.
POSIX지원이라든가..
https://software.intel.com/en-us/node/526231
!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.
복잡할 것 같으면
읽어야할 파일의 목록을 가진 파일을 만들고 그 파일에서 리스트대로 오픈하는 것도 방법입니다.
!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.
리스트는 어떻게 해야할까요 ..?
저도 포트란에서 폴더 안에 데이터의 파일이름들을 읽어
하나의 리스트를 만든다음 하나하나 불러오는걸 생각해봤는데요
어떻게 시도해야할지 감이 안잡힙니다 ...
댓글 달기