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

Compiling error: Intel Visual Fortran + IMSL 7

xie__hui
Beginner
419 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
Honored Contributor III
419 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

0 Kudos
3 Replies
Steve_Lionel
Honored Contributor III
420 Views

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

0 Kudos
xie__hui
Beginner
419 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.

0 Kudos
Steve_Lionel
Honored Contributor III
419 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.

0 Kudos
Reply