I've set up two projects, one for the MAIN's that I'm working with and the second for the supporting functions/subroutines. I've combined these into a SOLUTION. That said, dealing with only a project or the solution makes no difference in the detection of the dependencies.
This is a shortened MAIN program I'm using. The INCLUDEd files are in the same directory:
PROGRAM CMAIN
CHARACTER256 PR,CMPROGNM@
PR = CMPROGNM@()
PRINT ,'PROGRAM NAME=[',TRIM(PR),']'
CALL XMCLOG
CALL CEXIT
END
SUBROUTINE XMCLOG
LOGICAL LDONE,SVONLY,LQUIT,REFILE,HASHLP
INCLUDE <FOREXT.INS>
CHARACTER84 LOGINF,LOGHLD
CHARACTER4 BPROJ,DPROJ,BSTATE,DSTATE
CHARACTER12 BQUAD,DQUAD
CHARACTER16 LSPERS
CHARACTER12 LSDATE
CHARACTER84 LSTTMP
character*80 out_list(20)
INTEGER IBSC,IDSC,BID
REAL BSC,DSC
LOGICAL NEWNAM,PROCHD
INTEGER RECNDX(32001)
INCLUDE <FORDEF.INS>
INCLUDE <FORCOM.INS>
INCLUDE <FOREQU.INS>
COMMON/MAIN1/BPROJ,DPROJ,BQUAD,DQUAD,BSTATE,DSTATE
COMMON/SORTX2/RECNDX
DATA HASHLP/.FALSE./
C
C --- INITIALIZE BLOCK COMMON
C
print *,'Calling BLOCKD'
CALL BLOCKD(.TRUE.)
APROJ = ' '
stop
end
This is an abbreviated function (shortest one with includes, but it won't compile as written). These functions are in a sub-directory to the main one, but the INCLUDEd files are in the next level up (ergo the syntax differences).
SUBROUTINE BREGPR(IOPT,NFLAG)
INCLUDE <..\\FORDEF.INS>
LOGICAL TOKEN,ICOMP,TTHELP
INCLUDE <..\\ROCKDEF.INS>
INCLUDE <..\\FORCOM.INS>
INCLUDE <..\\ROCKCOM.INS>
INCLUDE <..\\FOREQU.INS>
C
C --- PROCESS THE DESIRED OPTION
C
IF(IOPT.LT.0)GO TO 1600
C ENTER UNUSED DISPLAY CLEAR OPT INPUT
GO TO (1000,1000,1300,1400,1500),IOPT
1000 CONTINUE
C --- MAIN ENTRY
WRITE(ITTY,99900)
99900 FORMAT(' 2. BED CODE REGION: ',A)
IF(TTHELP(BUFF,102))GO TO 1000
1100 CONTINUE
NFLAG=0
STOP
END
Hope this helps.