HP OpenVMS Systems

ask the wizard
Content starts here

Porting VAX Macro32 code to Alpha?

» close window

The Question is:

 
We have a VAX MACRO program that we'd like to port over to
an Alpha.  Unfortunately, we don't know anything about this
program, besides the fact that we need to be able to compile
it on the Alpha.  The program references a file named
SYS$SYSTEM:SYS.STB in the directive
.link 'sys$system:sys.stb'/se
which does not appear to exist on the
Alpha, and we think this is why our program will not compile.
The compiler spits out messages such as %AMAC-E-DATINCODE and
%AMAC-E-STORCODLAB when the program is compiled on the Alpha,
but compiles fine on the VAX.
 
 


The Answer is :

 
  Prior to porting this code, first determine if there are system
  services or library routines that provide equivilent capabilities.
  More than a few similar routines were implemented before similar
  OpenVMS routines were available, or were implemented for various
  (effectively unnecessary) reasons.
 
  SYS.STB indicates the code is linked against the OpenVMS VAX kernel,
  and is likely version-dependent code.  Code linked against SYS.STB
  often accesses various internal data structures or routines within
  OpenVMS, and these may require changes when moving to OpenVMS Alpha.
 
  Documentation on porting Macro32 code is available in the OpenVMS
  manual set -- there is a manual on this topic.
 
  From HELP/MESSAGE:
 
 DATINCODE,  data in code stream
 
  Facility:     AMAC, MACRO-32 Compiler for OpenVMS Alpha
 
  Explanation:  Data was found in the code stream. This condition is not
                allowed on OpenVMS Alpha systems.
 
  User Action:  For implicit JSB parameters, pass the parameter value in a
                register. If any values are larger than a longword, put them
                in another program section (psect) and explicitly pass its
                address.
 
                For data contiguous with code in the code stream, rewrite the
                code so that the data is in a data program section.
 
 
 STORCODLAB,  stored code labels must be declared entry points in
              routine 'routine-descriptor'
 
  Facility:     AMAC, MACRO-32 Compiler for OpenVMS Alpha
 
  Explanation:  An instruction such as MOVAx or PUSHAx that is used to store
                the address of a code label is not declared as an entry
                point.
 
  User Action:  Add the appropriate entry declaration, either .JSB_ENTRY, or
                .JSB32_ENTRY, or .CALL_ENTRY.
 

answer written or last revised on ( 4-MAR-1999 )

» close window