Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
26730 Discussions

Compiling error: Intel Visual Fortran + IMSL 7

xie__hui
Beginner
171 Views

Hello,

I am trying to compile my old Fortran code (working at Intel Visual Fortran 9 and IMSL 5) under the new system Intel® Parallel Studio XE Composer Edition for Fortran Windows* with Rogue Wave* IMSL* (Intel Visual Fortran Compiler 17.0.1.143. and IMSL 7). Please see the code below. The code uses a built-in IMSL matrix operator .tx. to compute xpxa. However, the system does not recognize this .tx. operator and generate an error message saying that " Dotted string is neither a defined operator nor a structure component". However, if I comment out the problematic line, the code can be compiled  that includes the line using IMSL built-in function linds. So it looks that the system can link my code with IMSL but somehow does not recognize the .tx. function. Is there anything that I should/can do to correct the problem?

many thanks.

program test
        INCLUDE 'link_fnl_shared.h'
contains   
 

subroutine breg(y,x,betabar,A,betadraw)
 
    implicit none
    real(8), intent(in) :: y(:),x(:,:),betabar(:),A(:,:)
    real(8), intent(out) :: betadraw(:)
    integer :: k,irank,nobs
    real(8),allocatable :: RA(:,:), W(:,:),z(:), IW(:,:), RIW(:,:),temp(:,:),btilde(:),xpxa(:,:),ixpxa(:,:)
        
    k=size(betabar)
    nobs=size(y)
    allocate(RA(k,k),W(nobs+k,k),z(nobs+k), IW(k,k), RIW(k,k),temp(1,k),btilde(k),xpxa(k,k),ixpxa(k,k))
 
    xpxa= (x .tx. x)+ A
    call linds(xpxa, ixpxa)
    
  end subroutine breg 

Error    1     error #6866: Dotted string is neither a defined operator nor a structure component.   [TX]    D:\package\test\Source1.f90    21   

Error    2    Compilation Aborted (code 1)    D:\package\test\Source1.f90    1   

 

 

0 Kudos
1 Solution
Steve_Lionel
Black Belt Retired Employee
171 Views

You have to USE the IMSL module that declares these operators - I think it is LINEAR_OPERATORS. See the IMSL documentation for details.

View solution in original post

3 Replies
Steve_Lionel
Black Belt Retired Employee
172 Views

You have to USE the IMSL module that declares these operators - I think it is LINEAR_OPERATORS. See the IMSL documentation for details.

View solution in original post

xie__hui
Beginner
171 Views

Thanks Steve! This fixes my issue. The need for this declaration appears to be new for IMSL 7 as the previous version of IMSL does not require this.

Steve_Lionel
Black Belt Retired Employee
171 Views

That's absolutely not the case - you always needed to USE the module. Without a declaration of a "user-defined operator", the compiler would haven't the faintest clue what .TX. meant.

Reply