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 상호 변환

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

language/fortran.txt · Last modified: 2021/02/07 03:15 by 127.0.0.1