From: Brian Tillman [Tillman@sparkingwire.com]
Sent: Monday, May 05, 2003 4:22 PM
To: Info-VAX@Mvb.Saic.Com
Subject: Re: [OpenVMS Alpha] How to get image version in DCL ?

>I dare say this won't work on an Alpha.

OK, then, here:

        .TITLE  READ_HEADER - Read Image Header
        .IDENT  /1-001/

; This subroutine returns the image identification and link time.
;
; Format:
;
;   status.wlc.v = READ_HEADER( ident.wt.ds [,time.wt.ds] )
;
; Parameters:
;
;   ident       The image identification text.
;
;   time        The image link time (text format).


;   Date        By              Comments
;  4/10/87      D.E. Greenwood  Originally written by John Miano,
24-June-1986 -
;                               obtained from April 87 DECUS L&T Sig
Newsletter
        .LIBRARY        "SYS$LIBRARY:LIB"

        $DSCDEF
        $EIHDDEF
        $EIHIDEF
        $SSDEF

; Argument pointer offsets

        $OFFSET 4,POSITIVE,<IDENT,TIME>

        .PSECT READ_HEADER, RD, NOWRT, EXE, LONG
        .ENTRY READ_HEADER, ^M< R2, R3, R4, R5, R6, R7, R8, R11 >

        CMPL    (AP),#1                 ; Make sure that there is at least
        BGEQ    ENOUGH_ARGUMENTS        ;  one argument to this routine
        MOVL    #SS$_INSFARG, R0
        RET

ENOUGH_ARGUMENTS:

; Get the identification of the image.

        MOVL    @#CTL$GL_IMGHDRBF, R11  ; R11 - Address of image buffer
        MOVL    (R11), R6               ; R6  - Address of image header

        MOVL    EIHD$L_IMGIDOFF(R6), R7
        MOVAB   (R6)[R7], R7            ; R7 - Address of ID Block

        CVTBL   EIHI$T_IMGID(R7),R0     ; Length of the ID string
        MOVL    IDENT(AP), R8
        MOVC5   R0, <EIHI$T_IMGID+1>(R7), #32, -
                DSC$W_LENGTH(R8), @DSC$A_POINTER(R8)

        CMPL    (AP), #2
        BGEQ    RETURN_TIME
        MOVZBL  #1, R0
        RET

RETURN_TIME:

; Get the time the image was linked and convert it to ASCII

        $ASCTIM_S -
                TIMBUF=@TIME(AP), -
                TIMADR=EIHI$Q_LINKTIME(R7)

        RET

.END