Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

IFX Error

JohnNichols
Honored Contributor I
1,021 Views
      !---------------------------------------------------------------------------------------------------------------------
      !
      !
      !
      !--------------------------------------------------------------------------------------------------------------------
      
    Subroutine ACAD(NJ,XT,YT)                   
    use base
    implicit none
    
    integer NJ
    
    REAL (KIND=dp)  XT(nj)
    REAL (KIND=dp) YT(nj)
    
    
    write(*,10)
10  Format(//"                  Drawing Output!"

    return
    end subroutine ACAD

The format is missing a closing ).  When I compiled in IFX it just ran and ran, had to stop the program with task manager. 

When I compiled in IFORT is just signaled an error straight away. 

I can send you the whole program if you like. 

0 Kudos
10 Replies
JohnNichols
Honored Contributor I
989 Views
      write(*,502)
501   Format(//,"                    I        Distance")

      do 500 i = 1, nM

            endi = nodi(I)
            endj = nodj(I)
            dist = dsqrt(((XT(endj)-XT(endi))**2) + ((yT(endj)-yT(endi))**2))

            call TextST(A2,B2,I,SIZE, 3)
            call TextST(A2+15,B2,NSFTP(I),SIZE,4)
            CALL TextSR(A2+30,B2,1,SIZE,XT(endi))
            CALL TextSR(A2+45,B2,2,SIZE,YT(endi))
            CALL TextSR(A2+60,B2,1,SIZE,XT(endj))
            CALL TextSR(A2+75,B2,2,SIZE,YT(endj))
            write(*,501)I,dist
501         Format("                    ",I6,F10.3)
            CALL TextSR(A2+90,B2,2,SIZE,dist)
            B2 = B2 - Delta
            if(b2 .le. 102.00001) then
                  B2 = 360
                  A2 = A2+ 150
            endif

500   end do

Does not compile in IFX, note 2 lots of 501, it compiled in ifort and tells me error. 

0 Kudos
JohnNichols
Honored Contributor I
700 Views

I played some more to make a simple example, if I put the ACAD routine into it's own module the problem disappears, it is only when ACAD is not inside a module withe main program unit in a file that the no compile happens. 

Slightly weird.  

0 Kudos
Steve_Lionel
Honored Contributor III
985 Views

First case (I had to comment out the declarations since you couldn't be bothered to provide a compilable example):

D:\Projects>ifx -c t.f90
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.3.0 Build 20251010
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.

t.f90(18): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: ) <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <HOLLERITH_CONSTANT> ...
10  Format(//"                  Drawing Output!"
------------------------------------------------^

The second example is too incomplete to spend any time on. You know how to attach a complete source or a ZIP.

0 Kudos
JohnNichols
Honored Contributor I
980 Views
      write(*,502)
501   Format(//,"                    I        Distance")

      do 500 i = 1, nM

            endi = nodi(I)
            endj = nodj(I)
            dist = dsqrt(((XT(endj)-XT(endi))**2) + ((yT(endj)-yT(endi))**2))

            call TextST(A2,B2,I,SIZE, 3)
            call TextST(A2+15,B2,NSFTP(I),SIZE,4)
            CALL TextSR(A2+30,B2,1,SIZE,XT(endi))
            CALL TextSR(A2+45,B2,2,SIZE,YT(endi))
            CALL TextSR(A2+60,B2,1,SIZE,XT(endj))
            CALL TextSR(A2+75,B2,2,SIZE,YT(endj))
            write(*,501)I,dist
501         Format("                    ",I6,F10.3)
            CALL TextSR(A2+90,B2,2,SIZE,dist)
            B2 = B2 - Delta
            if(b2 .le. 102.00001) then
                  B2 = 360
                  A2 = A2+ 150
            endif

 

IN RA.F90 at line 1332 in the project this will not stop compiling on IFX, it runs for minutes and then I stop it.  

The earlier error occurred in the same file set.  

These are really basic things I am sorry I did not see the need for an example.  But here it is.  

 

0 Kudos
JohnNichols
Honored Contributor I
980 Views

It is the two 501 format's  

and the other one is a format without an)

0 Kudos
Steve_Lionel
Honored Contributor III
900 Views

I hope you know that having two statement labels 501 in the same program unit is an error. One of them evidently should have been 502. You also have GOTO 825 that branches into an IF-THEN block - not allowed. 

If you fix the statement label problem, the source compiles quickly (with appropriate errors). I'll agree that this error should not cause the compile to never finish.

Please - ALWAYS provide a compilable example, as small as you can manage. By not doing so you are making others do your work for you, likely leading to your not getting the help you want. This process also is likely to lead to your figuring out the issue on your own. In this case, you jumped to a wrong conclusion. In addition, your first example with the missing paren does not reflect the actual source, which has the paren.

0 Kudos
JohnNichols
Honored Contributor I
885 Views

The problem is not with the minor errors, I pointed out, but that several things stop IFX from compiling or actually running for a long time.  I struck three of them last night. 

I will admit that making the mistake of two 501 lines is not good, but I could not compile it to get the error. So I move to IFORT and get the error code in a few seconds.   A small example would be nice, I would have had to give you three small examples last night, the first is the 501, the second is if a format statement in the program is missing a ), in the example I gave it does not compile.

If I have a module  A and inside A are subroutines  B C and D, and D calls E which has been omitted then it will not compile.  

When I have time I will do a simple example. 

The jump into the goto statement is tricky to remove, as it works with it included, I have dealt with other more pressing matters.  

 

 

 

0 Kudos
Steve_Lionel
Honored Contributor III
852 Views

If you want any hope of an actual bug being fixed, you MUST provide a complete example, minimal if possible. The larger the code you provide, the lower priority it will be given.

0 Kudos
JohnNichols
Honored Contributor I
763 Views

I have attempted for several hours this morning to develop a simple example.  I cannot. 

I tried with the smallest clean Fortran program and the program works perfectly.

I used the offending program and pulled different sections out of it and then it starts to compile.  

But the attached code is the smallest unit that will replicate the error. 

It is not a problem for me as I have IFORT and I have an old copy of the IFORT installer so it will be a few years before I am stuck. 

But it does happen with this program.  I am sorry I cannot make it smaller, it just runs and gives no compile errors for anything simpler. 

It does the same thing if I pick any of the format statements in the subroutine ACAD, it also is annoying as one has to kill the whole process. 

I cannot subset the program and replicate the error. 

I am reporting it as a courtesy to Intel, if it is not fixed then so be it, they have only so much time as I do and I now know about the error. 

But if you take out any of the ) in the subroutine ACAD, it does not compile.

If I take out ) anywhere else it compiles, it I just to ACAD with a full program it gives me the error. 

It is just this combination.  

I am sorry I tried. 

 

0 Kudos
JohnNichols
Honored Contributor I
762 Views

Some things cannot be fixed, let us chalk it up to learning. 

0 Kudos
Reply