- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am new to Fortran, so I hope this question is not too simple.
I have a fortran dll, being called by vb 6.0, and in the dll, I am having a problem using automatic arrays.
For example, in the following line of code, NoComp=3, NoChain=1, but when I use quickwatch, InitInv is set up as an array with greter than 1000 elements (array expansion limited to 1000 nodes)
REAL(KIND=8), Dimension(NoComp*NoChain)::InitInv
Any help would be appreciated,
Ciara
I have a fortran dll, being called by vb 6.0, and in the dll, I am having a problem using automatic arrays.
For example, in the following line of code, NoComp=3, NoChain=1, but when I use quickwatch, InitInv is set up as an array with greter than 1000 elements (array expansion limited to 1000 nodes)
REAL(KIND=8), Dimension(NoComp*NoChain)::InitInv
Any help would be appreciated,
Ciara
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are NoComp and NoChain arguments passed in? If so, it seems likely that they are not being passed correctly. Without seeing the actual code, and how it is called, it's difficult to say what is wrong.
Steve
Steve
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
NoComp and NoChain are passed in, but by checking with quick watch, the correct values have been passed in. I have included the call statements and declaration statements below,
Ciara
Ciara
SUBROUTINE COMA (NoChain, Decay, Conv, & NoComp,InitTime, NoChgTran, & ChgTranTime,NoChgSou,ChgSouTime, & NoSou, NucSou, CompSou, & InpSou, InitInvFlag,NoChgInv, & ChgInvTime, NoOutTime, OutTime, & OutOption,NoOut, OutComp,Idisc & ,OutVal, Ifail,InpInitInv, & CompFrom,CompTo, & InpTranRate, SetInvToZero & ,NoSetComp,SetToZeroComp, NoOutVal,InpNoTran) !MS$ ATTRIBUTES DLLEXPORT :: COMA !MS$ ATTRIBUTES ALIAS:'_COMA':: COMA !MS$ ATTRIBUTES STDCALL :: COMA !MS$ ATTRIBUTES REFERENCE :: CONV, NoComp !MS$ ATTRIBUTES REFERENCE :: NoChain, Decay !MS$ ATTRIBUTES REFERENCE :: InitTime, NoChgTran, ChgTranTime !MS$ ATTRIBUTES REFERENCE :: NoChgSou,ChgSouTime, NoSou !MS$ ATTRIBUTES REFERENCE :: NucSou, CompSou,InpSou, InitInvFlag !MS$ ATTRIBUTES REFERENCE :: NoChgInv,ChgInvTime, NoOutTime !MS$ ATTRIBUTES REFERENCE :: OutTime !MS$ ATTRIBUTES REFERENCE :: OutOption,NoOut, OutComp,Idisc !MS$ ATTRIBUTES REFERENCE :: OutVal,Ifail !MS$ ATTRIBUTES REFERENCE :: InpInitInv,CompFrom,CompTo !MS$ ATTRIBUTES REFERENCE :: InpTranRate, SetInvToZero !MS$ ATTRIBUTES REFERENCE :: NoSetComp,SetToZeroComp, NoOutVal !MS$ ATTRIBUTES REFERENCE :: InpNoTran IMPLICIT NONE * Declare and initialise variables INTEGER(2):: Iyr, Imon, Iday, Ihr, Imin, Isec, I100th INTEGER(4):: Conv, FirstOutTime, I, Ibx, Ich, Icm, Icomp, Id INTEGER(4):: Idisc, Ifail, Ifind, Ineg, InitInvFlag INTEGER(2):: InpNoTran INTEGER(4):: Inv, Iop, Iot INTEGER(4):: Irn,Iso, Isp, Itm, Itr, Jfind, Jtm, Kfind INTEGER(4):: LastOutTime, LastRunTime,NoBox, NoChgInv, NoChgSou INTEGER(4):: NoChgTran, NoComp, NoOut,NoChain,NoOutTime, NoOutVal INTEGER(4):: NoRank, NoRun, NoRunTime, NoSetComp, NoSou,NoSpace INTEGER(4):: NoTran, OutOption, SetInvToZero Integer, Dimension(4*NoComp*NoChain)::BoxFrom Integer, Dimension(NoChain)::BoxNoInv Integer, Dimension(NoComp*NoChain)::BoxSou Integer, Dimension(4*NoComp*NoChain)::BoxTo Integer, Dimension(NoChgTran+1)::CompFrom Integer, Dimension(NoSou)::CompSou Integer, Dimension(NoChgTran+1)::CompTo Integer, Dimension(3*NoChgTran+1)::FlagInv Integer, Dimension(3*NoChgTran+1)::FlagTran Integer, Dimension(3*NoChgTran+1)::IndInv Integer, Dimension(3*NoChgTran+1)::IndSou Integer, Dimension(3*NoChgTran+1)::IndTime Integer, Dimension(3*NoChgTran+1)::IndOutTime Integer, Dimension(3*NoChgTran+1)::IndTran Integer, Dimension(NoSou)::NucSou Integer, Dimension(2)::OutOpt Integer, Dimension(NoComp*NoChain)::Rank Integer, Dimension(NoChgTran+1*NoSetComp)::SetToZeroComp Integer, Dimension(NoOut)::OutComp REAL(KIND=4), Dimension(NoChgInv+1,NoComp*NoChain)::InpInitInv REAL(KIND=4), Dimension(NoSou,NoChgSou+1)::InpSou REAL(KIND=4), Dimension(InpNoTran,NoChain)::InpTranRate REAL(KIND=8)::InitTime REAL(KIND=8), Dimension(NoChgInv)::ChgInvTime REAL(KIND=8), Dimension(NoChgSou)::ChgSouTime REAL(KIND=8), Dimension(NoChgTran)::ChgTranTime REAL(KIND=8), Dimension(NoChain)::Decay REAL(KIND=8), Dimension(NoComp*NoChain)::InitInt REAL(KIND=8), Dimension(NoCom p*NoChain)::InitInv REAL(KIND=8), Dimension(NoComp*NoChain,NoChgInv+1)::RINV REAL(KIND=8), Dimension(NoComp*NoChain,NoChgInv+1)::RINT REAL(KIND=8), Dimension(4*NoChgInv+1)::RunTime REAL(KIND=8), Dimension(NoComp*NoChain)::Sou REAL(KIND=8), Dimension(4*NoChgInv+1)::Times REAL(KIND=8), Dimension(NoComp*NoChain*NoChain+1)::TranRate REAL(KIND=8), Dimension(NoChain)::OutFac REAL(KIND=8), Dimension(NoOutTime)::OutTime RE
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I suggest you send a reproducible example, including the calling VB code, to us at vf-support@compaq.com.
Steve
Steve

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page