	Subroutine Rec_attr(Header, Attr)
c ...	This routine returns a vector of record attributes for the
c ...    file whose header is in 'header'. The attributes returned
c ...	 are as follows:
c ...	   Attr(1)  Record format (from bits 0-3 of header (21) )
c ...	   Attr(2)  File organization (from bits 4-7 of header 21)
c ...	   Attr(3)  Record attribute from header 22
c ...	   Attr(4)  Record size, header 23,24
c ...	   Attr(5)  Highest VBN allocated , header 25-28
c ...	   Attr(6)  EOF block number, header 29-32
c ...	   Attr(7)  First free byte in EOF block, header 33
C	   ATTR(8)  Bucket size, header 35
c	   ATTR(9)  VFC size, header 36
C	   ATTR(10) Maximum record size, header 37,38
C	   ATTR(11) Default extend size, header 39,40
C
	Byte Header(512)
C
C	LOCAL STORAGE FOR THE ATTRIBUTE ARRAY
C
	BYTE RATT_B(32)
	INTEGER * 2 RATT_W(16)
	INTEGER * 4 RATT_L(8)
	EQUIVALENCE (RATT_B,RATT_W,RATT_L)
C
C	I * 4 MASKS - FORCE UNSIGNED CONVERSION USING .AND.
C
	INTEGER * 4 BMSK
	INTEGER * 4 WMSK
	DATA BMSK , WMSK / 'FF'X , 'FFFF'X /
C
	INTEGER * 2 W_TO_L(2)
	INTEGER * 4 LONG
	EQUIVALENCE (LONG,W_TO_L)
C
	Integer * 2 Temp
	Integer * 4 Attr(11)
C
C	MOVE ATTRIBUTES TO LOCAL - ALLOW EQUIVALENCE
C
	DO 100 I = 1,32
100	RATT_B(I) = HEADER(I+20)
C
	Temp = RATT_B(1)
	Attr(1) = RATT_B(1) .AND. 'F'x		! RECORD FORMAT
C	Attr(2) = Iand(Iishft(Temp, -4) , 'F'x)	! ORGINIZATION
	ATTR(2) = RATT_B(1) .AND. 'F0'X .AND. BMSK ! ORGANIZATION
	ATTR(3) = RATT_B(2) .AND. 'F'X		! RECORD ATTRIBUTES
	ATTR(4) = RATT_W(2) .AND. WMSK		! RECORD SIZE
	W_TO_L(2) = RATT_W(3)
	W_TO_L(1) = RATT_W(4)
	ATTR(5) = LONG 				! HI BLOCK
	W_TO_L(2) = RATT_W(5)
	W_TO_L(1) = RATT_W(6)
	ATTR(6) = LONG 				! EOF BLOCK
	ATTR(7) = RATT_W(7) .AND. WMSK		! FIRST FREE BYTE
	ATTR(8) = RATT_B(15) .AND. BMSK		! BUCKET SIZE
	ATTR(9) = RATT_B(16) .AND. BMSK		! VFC SIZE
	ATTR(10) = RATT_W(9) .AND. WMSK		! MAX RECORD SIZE
	ATTR(11) = RATT_W(10) .AND. WMSK	! DEFAULT EXTENT SIZE
	Return
	End
