HP OpenVMS Systems

ask the wizard
Content starts here

Macro32 and STORCODLAB, DATINCODE errors?

» close window

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
 
; ---

answer written or last revised on ( 10-MAR-2004 )

» close window