;
READ_HEADER.MAR returns the image identification and link time
.TITLE READ_HEADER - Read Image Header
.IDENT /1-001/
; This subroutine returns the image identification and link time.
;I call it from Fortran as follows:
; CHARACTER*255 IMAGE_IDENT
; CHARACTER*23 LINK_DATE
; CALL READ_HEADER (IMAGE_IDENT, LINK_DATE)
;
;You can add the image ident when you link your code, eg.
;$!
;$ LINK VGRAPH/LIB/INCLUDE=VGRAPH, -
; SYS$SYSTEM:SYS.STB/SEL, -
; SYS$INPUT/OPT
;IDENT="V1.21"
;SYS$SHARE:VAXCRTL/SHARE
;$!
;
; 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
$IHDDEF
$IHIDEF
$SSDEF
; Argument pointer offsets
$OFFSET 4,POSITIVE,
.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
CVTWL IHD$W_IMGIDOFF(R6), R7
MOVAB (R6)[R7], R7 ; R7 - Address of ID Block
CVTBL IHI$T_IMGID(R7),R0 ; Length of the ID string
MOVL IDENT(AP), R8
MOVC5 R0, (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=IHI$Q_LINKTIME(R7)
RET
.END