포트란에서 수학교과서 냄새가 풀풀 나는 재밌는 컨벤션이 있는데, 바로 변수명 i , j , k , l , m , n  을 기본적으로 정수형 데이터로 취급한다는 것이다. 물론, 명시적으로 타입을 선언해주지 않았을때의 이야기이다. 수학시간에 툭하면 써메이션 변수로 i , j, k, l, m, n 을 쓰는 습관이 그대로 녹아있다.

참고로, 변수명이 i,j,k,l,m,n 으로 시작하는 모든 변수는, 명시적으로 타입을 선언하지 않았을 경우, 정수형으로 가정한다.

그밖에 다른 변수는, 타입이 명시되지 않으면, 실수타입으로 가정한다.





결과를 보면, i 와 k 로 시작하는 변수에 실수값 대입했음에도, 결과를 보면 정수로 찍혀있다.
이것은 두 변수를 정수형으로 인식한상태에서, 실수값을 대입해, 소숫점 이하의 데이터가 버려진 결과이다.



위와 같은 컨벤션은 상당히 편리할수 있지만,  예기치 못한 문제를 일으킬 수도 있다.

가령, 코딩중에 미스스펠의 오류를 범했다고 치자. 실제로는 프로그래밍중의 실수이지만, 포트란에서는 그것역시 새로운 변수로 받아들이고 이름에 따라서 정수형이나 실수형으로 처리해버린다. 이는 프로그래머가 의도한바가 아니므로, 에러가 나야하지만, 컴파일러는 에러를 내지 않는다.

에러가 나야하는 부분에서 에러가 나지 않는것 만큼 디버깅에 어려움이 없는것도 없다.


위와 같은 문제를 막기위해, 컨벤션을 금지시킬수 있는데, 바로 IMPLICIT NONE 을 사용하는 것이다.
이 문장은 PROGRAM 과 변수 선언부 사이에 들어가야 한다.

IMPLICIT NONE  이 들어갈 경우, 선언되지 않은 변수의 사용은 모두 에러로 간주한다.
즉, 모든 변수를 explicit 하게 선언해 주어야 한다.