HP OpenVMS Systemsask the wizard |
The Question is:
Dear Wizard,
I am converting some Macro code from VAX to Alpha. The following compilation
errors are the last that I need to resolve. I've already resolved many other
STORCODLAB and DATINCODE errors but these appear to be different. Can you
please tell me what I need
to do to correct the following code for AXP?
Regards,
Pete Dunkin.
------------------------------------------------
In ENVMISFUN.MAR
$IMGACT_S NAME=NAMDSC,-
DFLNAM=DEFDSC,-
IMGCTL=#<IAC$M_MERGE!IAC$M_EXPREG>,-
HDRBUF=(R6),-
INADR=START_VA,-
RETADR=G^ENV_TRACE_VA
gives the following compilation error:-
RETADR=G^ENV_TRACE_VA
%AMAC-E-STORCODLAB, stored code labels must be declared entry points in routine
DEFDSC at line number 401 in file SPARE2:[A21B.SRC.XBC.WRK]ENVMISFUN.MAR;20
------------------------------------------------
In ENVSCHED.MAR
CMPL R0, #ss$_exquota
BNEQ 25$
$CANEXH
$EXIT ss$_exquota
25$:
gives the following compilation errors:-
$CANEXH
%AMAC-E-DATINCODE, data in code stream
at line number 864 in file SPARE2:[A21B.SRC.XBC.WRK]ENVSCHED.MAR;52
$EXIT ss$_exquota
%AMAC-E-DATINCODE, data in code stream
at line number 865 in file SPARE2:[A21B.SRC.XBC.WRK]ENVSCHED.MAR;52
------------------------------------------------
The Answer is :
; The OpenVMS Wizard would encourage moving to a
; higher-level language as feasible, and to reduce
; the quanity of Macro32 code in use.
; The $imgact and $imgfix image activation system
; services are not documented nor supported; please
; use the supported lib$find_image_symbol interface,
; or C functions such as dlopen() and friends.
; ---
; 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.
; ---
; 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.
; ---
.library 'sys$library:starlet.mlb'
.psect data,noexe,wrt
$ssdef
.psect code,exe,nowrt
.call_entry Label=start,preserve=<>
$CANEXH_S
$EXIT_S code=#ss$_exquota
.end start
; ---
|