갑자기 몇 가지를 받았습니다. 매우 이전의 포트란 코드가 컴파일되어 내 연구 그룹에서 작동합니다. 좀 검색을하고있다아주 오래된 코드를위한 ifort dialect 옵션
...
IF(THRU.GT.0.D0) GO TO 120 00011900
L1=LL 00012000
A1=AA 00012100
DR1=DRR 00012200
RMAX1=RMAXX 00
RMIN1=RMINN 00012400
IF(DR1.EQ.0.D0) DR1=DRP 00012500
KMAX1=(RMAX1-RMIN1)/DR1+1.D-08 00012600
IF(KMAX1.GT.NN .OR. KMAX1.LE.0) KMAX1=NN 00012700
RINT1=RMAX1 00012800
IF(RMAX1.NE.0.D0) 00012900
2RMAX1=DR1*DFLOAT(KMAX1)+RMIN1 00013000
IUP=KMAX1 00013100
R=RMIN1 00013200
DO 120 K1=1,KMAX1 00013300
R=R+DR1 00013400
XX(K1)=R 00013500
120 CONTINUE 00013600
WRITE(IW,940) NAM1,IOPT1,L1,A1,DR1,RMAX1,RMIN1,ANU1,BNU1,CNU1 00013700
121 CONTINUE 00013800
...
는 포트란으로 매우 익숙 것 : 여기 error #6526: A branch to a do-term-shared-stmt has occurred from outside the range of the corresponding inner-shared-do-construct.
잘못 것으로 보인다 코드의 비트입니다 : 나는 다음과 같은 오류가 코드를 컴파일 할 때 ifort를 사용하여 내가 볼 수있는 것은 DO 문을 DO 문으로 분기하는 IF 문을 좋아하지 않는다는 것이다. 또한 일부 오래된 방언이나 컴파일러가이를 지원하는 것으로 보입니다.
내 질문은 다음과 같습니다. ifort가 성공적으로 이것을 컴파일 할 수있게 해주는 옵션이 있습니까? I.E. 이 법을 가능하게 할 ifort에 특정 언어 호환 옵션이 있습니까?
컴파일러에서 허용하는 특정 코드의 부작용은 무엇입니까? 쓰기 문을 제외하고 부작용이 121 행과 동일 할 수 있습니까? 아니면 121 번에 가야 할 루프일까요?
고문 변호사가 먼저 컨설팅을하지 않고 변경해서는 안된다는 사실을 알지 못하면 코드 수정을 고려할 것이므로이 질문을 통해 컨설팅을 요청해야하는지 알 수 있습니다. 만약 내 유일한 옵션이 코드 수정을 제안한다면 환영받을 것입니다. 그래야 조언자에게 갈 때해야 할 일에 대한 아이디어를 얻을 수 있습니다.
Anybode는 이러한 코드를 제공하고 더 나은 코드를 작성하도록 금지해야합니다. 이 코드는 자동 도구를 사용하여 현대적인 자유 형식으로 다시 작성해야합니다. –
나는 그것에 동의하지만 내 고문은 코드 기능의 변경을 두려워한다고 생각합니다. 코딩 스타일은 끔찍하지만 작동합니다. 그것은 정확하게 알파 산란 데이터에 대한 광학 모델 적합 (Optical Model Fit)에서 사용하는 단일 접힌 알파 핵 상호 작용 가능성을 정확하게 계산합니다. 코드에 대한 변경 사항은 광범위하게 유효성을 검사해야하는데 이는 고통스런 일이지만 통증과 시간이 많이 걸리는 싱크대, 도매 재 형식화는 아마도 더 나 빠졌을 것입니다. 또한 고문은 검증을 피하는 숨겨진 부작용을 두려워한다고 생각합니다. 어쨌든, 나는 당신과 동의하지만 양쪽을 볼 수 있습니다. –