Question about 'Interface mismatch in dummy procedure 'f' at (1): 'fun' is not a function'

The source files are a bit too long to include here. All the errors were in crsmumu.f file. They are of two kinds:

  1. The three functions used as first argument in calls to DGAUSS function, namely FUN, FUNM and FUNT, were originally declared as EXTERNAL but not as proper TYPE (REAL*8) which is required by IMPLICIT NONE statement.
  2. Three DO loops were ended on a labelled statement which was not ENDDO or CONTINUE as required by F2018.

Below I include the output diff crsmumu.f crsmumu_fixed.f

5a6
>               REAL*8 FUN
35a37
>               REAL*8 FUNM
539a542
>               REAL*8 FUNT
647c650
<               DO 3 I = 1,4
---
>               DO I = 1,4
649c652,653
<  3            S8=S8+W(I)*(F(C1+U)+F(C1-U))
---
>               S8=S8+W(I)*(F(C1+U)+F(C1-U))
>               ENDDO
651c655
<               DO 4 I = 5,12
---
>               DO I = 5,12
653c657,658
<  4            S16=S16+W(I)*(F(C1+U)+F(C1-U))
---
>               S16=S16+W(I)*(F(C1+U)+F(C1-U))
>               ENDDO
820c825
<               DO 1 K = KA,KZ,2
---
>               DO K = KA,KZ,2
823c828,829
<  1            Q=-Q
---
>               Q=-Q
>               ENDDO