[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

Shareable Image Transfer Vectors?

» close window

The Question is:

 
I'm trying to bring code from a Vax system to an
Alpha system. I have recompiled all the COBOL programs
that are needed but I'm having trouble Linking the
programs. The link procedure I'm using has a Macro in it
and I'm getting errors like it's not supported. Here's the
link procedure i'm using:
$! link_share.com
$! COMMAND PROCEDURE TO LINK A PROGRAM AS A SHAREABLE IMAGE
$ install:=$sys$system:install/command
$ set noon
$ set message/nofacility/noidentification/noseverity/notext
$ delete 'P1'.map;*
$ delete 'P1'.opt;*
$ delete x'P1'.mar;*
$ define copy_lib basis$data:[picprod.library]
$ define aprog basis$data:[picprod.appl.programs]
$ @aprog:define_exe.com
$ set message/facility/identification/severity/text
$ set on
$ dm_db_picdb  == "picdb"
$ dm_db_xpicdb == "xpicdb"
$ SET NOVERIFY
$ open/write optfile aprog:'p1'.opt
$ write optfile "cluster=X_",P1,",,,-"
$ write optfile "basis$data:[picprod.appl.programs]X",P1,".obj"
$ write optfile "gsmatch=always,0,0"
$ write optfile "dm$:dmuss.exe/shareable"
$ write optfile "dm$:dmrtl.exe/shareable"
$ write optfile "basis$data:[picprod.library]share_library.olb-"
$ write optfile "/library"
$ close optfile
$ open/write optfile x'P1'.mar
$ write optfile ".title X",P1
$ write optfile ".transfer ",P1
$ write optfile ".mask ",P1
$ write optfile "jmp l^",P1,"+2"
$ write optfile ".end"
$ close optfile
$ macro x'P1'
$ delete x'P1'.mar;*
$ library/extract='P1'/output='P1'.obj copy_lib:object_library
$ link/shareable/exec='P1'.exe 'P1',aprog:'P1'.opt/option/map
$ library/shareable/replace copy_lib:share_library.olb 'P1'.exe
$ install replace aprog:'P1'.exe/open/header/shar
$ write sys$output " Replaced program ",P1," on shared library."
$ install:=$sys$system:install
$ delete 'P1'.obj;*
$ delete 'P1'.opt;*
$ delete x'P1'.obj;*
$ deassign copy_lib
$ @aprog:deassign_exe.com
$ SET PROTECTION=(W:RE) 'P1'.EXE
 
 
I have looked at the cookbook but it is not helping.
Can you give me any help. Thanks, Scott Hughes
 


The Answer is :

 
  The DCL command procedure shown generates a LINKER options file and
  then Macro32 program containing a set of shareable image transfer vectors
  -- more specifically, one transfer vector, with the entry point using
  the same name as the image.
 
  OpenVMS VAX Macro32 transfer vectors are not used on OpenVMS Alpha.
 
  The appropriate way to declare the equivilent of OpenVMS VAX shareable
  image transfer vectors is via a LINKER options file.
 
  Omit the generation of the Macro32 module entirely, remove the associated
  Macro32 compilation (OpenVMS Alpha has a Macro32 compiler), remove the
  references to the Macro32 module elsewhere in the procedure, remove the
  CLUSTER directive in the LINKER options file that references the Macro32
  module, and add a line to the options file for something akin to the
  following symbol vector entry:
 
    SYMBOL_VECTOR = ( entry_point_symbol_name = PROCEDURE)
 

answer written or last revised on ( 21-MAY-1999 )

» close window