	.TITLE	CMPOPN - OPEN A FILE TO OBTAIN ID'S
;
; CALL:	STATUS = OPNFIL(FILNAM,FILEID,DIRID)
;
; WHERE:
;
;	STATUS	- ERROR RETURN STATUS
;	FILNAM	- FILE NAME OF THE FILE
;	FILEID	- FILE ID (48 BITS)
;	DIRID	- DIRECTORY IF (48 BITS)
;
	$RMSDEF

	ARG1=	0			;OFFSET FOR ARG 1
	ARG2=	4
	ARG3=	8			;OFFSET FOR ARG 2
	ARG4=	12			;OFFSET FOR ARG 3

	BLKSIZ=	512			;SIZE OF BLOCK IN BYTES

FABBLK:	$FAB	FAC=GET,-		;INPUT ONLY
		MRS=BLKSIZ,-		;BLOCK SIZE
		NAM=NAMBLK		;NAME BLOCK

NAMBLK:	$NAM				;SET UP NAME BLOCK

; ENTRY MASK

	.ENTRY	OPNFIL,^M<R2,R3>

; HERE TO START ROLLING

	TSTL	(AP)+			;POINT TO FIRST ENTRY
	MOVL	(AP),R2			;GET ADDR OF FILE SPEC
	MOVAL	FABBLK,R3		;GET ADDR OF FAB BLOCK
	MOVB	@ARG2(AP),FAB$B_FNS(R3)	;SAVE IT
	TSTL	(R2)+			;POINT TO TEXT ADDR
	MOVL	(R2),FAB$L_FNA(R3)	;SAVE IT

; HERE TO OPEN FILE

	$OPEN	FAB=FABBLK		;OPEN UP FILE
	BLBC	R0,OPNERR		;XFER IF ERROR OPENING FILE
	MOVC3	#6,NAM$W_FID+NAMBLK,@ARG3(AP)	;SAVE FILE ID
	MOVC3	#6,NAM$W_DID+NAMBLK,@ARG4(AP)	;SAVE DIRECTORY ID

; CLOSE UP

	$CLOSE	FAB=FABBLK		;CLOSE UP FILE
	JMP	RETURN			;GO RETURN TO CALLER

; HERE UPON OPEN ERROR

OPNERR:					;LEAVE R0 ALONE UPON ERROR

; THAT'S ALL FOLKS

RETURN:	RET				;RETURN TO MAIN PROGRAM
	.END
