Accessing VECLIB

SUBROUTINE XERBLA(SRNAME,INFO)

ENTRY XERBLA_SRNAME,INFO)

...

• Use f90 ALIAS directives and provide both xerbla and xerbla_ entry points:

!$HP$ ALIAS xerbla='xerbla' !$HP$ ALIAS xerbla_='xerbla_'

SUBROUTINE XERBLA(SRNAME,INFO) ENTRY XERBLA_(SRNAME,INFO)

...

The ALIAS directives prevent the compiler from postpending the underbar onto the entry points and external references to XERBLA.

Use the following workaround on Itanium if you are compiling your own C version of XERBLA:

Undefine any previous aliasing from include files and provide both xerbla and xerbla_ entry points explicitly:

#undef xerbla #undef xerbla_

void xerbla (char*name, int*iarg, size_t len_name){

...

}

void xerbla_ (char*name, int*iarg, size_t len_name){ xerbla (name, iarg, len_name);

}

This problem is not confined to the XERBLA subroutine. It occurs on

Itanium when the following conditions are met:

Any subprogram with the same name as a user-visible MLIB subprogram is compiled in your program with

+noppu

Another MLIB subprogram used by your program also calls that subprogram

PA-RISC and Itanium processors

Also note that all the workarounds listed for Itanium are more generic and can also be used for PA-RISC. Therefore, if you are coding your own version of a MLIB routine called "mlib_routine" on PA-RISC or Itanium, a Fortran version might be implemented as:

!$HP$ ALIAS mlib_routine='mlib_routine' !$HP$ ALIAS mlib_routine_='mlib_routine_'

16HP MLIB User’s Guide