![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
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)
|