.TITLE GETVER .IDENT /V01/ .SBTTL DESCRIPTION ; ; ; COMPONENT: GETVER ; ; DATE: 09-AUG-79 ; ; AUTHOR: GR JOHNSON ; BATTELLE NORTHWEST ; P O BOX 999 ; RICHLAND WA 99352 ; ; SOURCE: MACRO-11 ; ; CALLER: FORTRAN IV-PLUS ; ; CALLING SEQUENCE: ; ; CALL GETVER(LUN,IVER,[ISW]) ; ; LUN = INTEGER CONTAINING A LOGICAL UNIT NUMBER. ; ; IVER = INTEGER VERSION NUMBER TO BE RETURNED. ; ; ISW = VARIABLE TO RECIEVE THE INTEGER STATUS WORD. ; ; 00 = SUCCESS ; ; -37 = NO FILE ACCESSED ON LUN ; -96 = INVALID LOGICAL UNIT NUMBER ; ; ; DESCRIPTION: ; ; "GETVER" RETURNS THE VERSION NUMBER OF AN OPEN FILE. SINCE A FILE ; OPENED WITHOUT AN EXPLICIT VERSION NUMBER DEFAULTS TO THE HIGHEST (LATEST) ; VERSION CREATED, "GETVER" CAN BE USED TO DETERMINE EXACTLY WHICH VERSION ; WAS ACTUALLY ACCESSED. ; ; .SBTTL ENTRY POINT -- FETCH FILE VERSION NUMBER ; ; .PSECT ; ; .MCALL OTSWA,$AOTS,FBLOCK ; IN [11,40]F4P.MAC OTSWA ; DEFINE OTS OFFSETS FBLOCK ; DEFINE FDB AND FFDB OFFSETS ; GETVER:: ; MOV @2(R5),R2 ; LUN TO R2 BLE IEILU ; LUN.LE.0? $AOTS ; ADDR OF IMPURE OTS SECT INTO R3 CMP W.LUNS(R3),R2 ; COMPARE LUN TO TKB OPTION BLT IEILU ; LUN.GT.MAX LUN SPECIFIED DURING TKB ; JSR PC,$FCHNL ; FETCH ADDR OF LUN'S FFDB IN R0 BIT #DV.OPN,D.STAT(R0) ; OPEN? BEQ IENLN ; NO, ERROR ADD #D.FDB,R0 ; START OF FDB MOV F.FVER(R0),@4(R5) ; RETURN VERSION NUMBER ; SUC: CLR R4 ; SUCCESS BR RTN ; IEILU: MOV #IE.ILU,R4 ; INVALID LUN BR RTN ; IENLN: MOV #IE.NLN,R4 ; LUN NOT OPENED ; ; RTN: CMPB #3,@R5 ; THREE ARGUMENTS? BNE 2$ ; NO, RETURN TO CALLER TST 6(R5) ; NULL ARGUMENT? BLT 2$ ; YES, RETURN TO CALLER MOV R4,@6(R5) ; NO, SET STATUS WORD 2$: RTS PC ; RETURN TO CALLER .END