= Fortran =
{{tag>Language Fortran}}
= gFortran에서 행 길이 제한 무시 =
gfortran -ffree-line-length-none xxx.f90
# -ffree-line-length-0
= Command line으로 Arguments를 받고 저장, 출력 =
* 배열의 시작이 0이 아닌 1.
PROGRAM test_getarg
INTEGER :: i
CHARACTER(len=32) :: arg
!CHARACTER(len=32) args(10)
! 동적 배열 선언 및 할당
CHARACTER(len=50), DIMENSION (:), ALLOCATABLE :: args
allocate(args(iargc()))
DO i = 1, iargc()
! CALL getarg(i, arg)
! read(arg,*) args(i)
CALL getarg(i, args(i))
args(i) = TRIM(args(i))
END DO
print *,size(args)
do i = 1, iargc()
print *,args(i)
end do
! 할당 해제
deallocate(args)
END PROGRAM
= String, Integer 상호 변환 =
* https://gcc.gnu.org/onlinedocs/gfortran/ICHAR.html
program read_val
integer value
character(len=10) string, string2
string = '154'
! Convert a string to a numeric value
read (string,'(I10)') value
print *, value
! Convert a value to a formatted string
write (string2,'(I10)') value
print *, string2
end program read_val
== Command Line 응용 ==
PROGRAM test_getarg
INTEGER :: i
CHARACTER(len=8) :: arg
INTEGER, DIMENSION (:), ALLOCATABLE :: args
allocate(args(iargc()))
DO i = 1, iargc()
CALL getarg(i, arg)
read(arg,'(I10)') args(i)
END DO
!print
DO i = 1, SIZE(args)
print *, args(i)
end do
deallocate(args)
END PROGRAM
= 문자열 동적 할당 =
PROGRAM test
CHARACTER(len=128) :: arg
CHARACTER(len=:), ALLOCATABLE :: path
INTEGER date(3)
CALL getarg(1, arg)
path = TRIM(arg)
DO i=1, 3
CALL getarg(i+1, arg)
READ(arg,'(I10)') date(i)
END DO
print *,LEN(path)
print *,"path : ",path," /// ",date(1),date(2),date(3)
END PROGRAM