
	pro gr_header,lun,offset,header,	$
	version=version,		$
	write=write, read=read,		$
	comments=comments,		$
	Parameter=Parameter,		$
	Interferometer=Interferometer,	$
	source_file=source_file,	$
	first_record=first_record,	$
	Date=Date,			$
	Reference_time=Reference_time,	$
	Reference_channel=Reference_channel,$
	Start_time=Start_time,		$
	Receiver=Receiver,		$
	Dt=Dt,				$
	Length=Length,			$
	N_channels=N_channels,		$
	Created=Created,		$
	Creator=Creator,		$
	Array_size=Array_size,		$
	Type=Type,			$


	Channel_bounds=Channel_bounds,	$
	i_scan_bounds=i_scan_bounds,	$
	d_scan_bounds=d_scan_bounds,	$
	zero=zero,			$
	factor=factor,			$
	weight=weight


CR='0a'xb

if n_elements(version) le 0 then version='221295'

Markers='gr_header '+['221295','220196']

Format_length=[19,25]


	CASE keyword_set(write) OF

0:	BEGIN


		point_lun,lun,0

F_marker_rd=bytarr(16)

		readu,lun,F_marker_rd

F_marker=string(F_marker_rd)

index=where(F_marker(0) eq Markers)

	if index(0) ge 0 then begin
Format_marker=Markers(index(0))
Format_length=Format_length(index(0))
	endif else begin
print,'Unrecognized format.'
return
	endelse

header=strarr(Format_length)
point_lun,lun,0

tmp=''

	for j=0,Format_length-1 do begin

		readf,lun,tmp
header(j)=tmp

	endfor


Offset=long(((strsplit(header(1)))(1)))
Type=header(2)
Comments=header(3)
Parameter=(strsplit(header(4)))(1)
Interferometer=(strsplit(header(5)))(1)
Source_file=(strsplit(header(6)))(1)
First_record=long(((strsplit(header(7)))(1)))
Date=strmid(header(8),6,8)
Reference_time=(strsplit(header(9)))(1)
Reference_Channel=fix(((strsplit(header(10)))(1)))
Start_time=(strsplit(header(11)))(1)
Receiver=(strsplit(header(12)))(1)
Dt=double(((strsplit(header(13)))(1)))
Length=long(((strsplit(header(14)))(1)))
N_Channels=fix(((strsplit(header(15)))(1)))
Array_size=long((strsplit(header(16)))(1:*))
Created=strmid(header(17),9,100)
Creator=strmid(header(18),9,100)


	IF Format_marker eq Markers(1) THEN BEGIN

Channel_bounds=fix((strsplit(header(19)))(1:*))
i_scan_bounds=long((strsplit(header(20)))(1:*))
d_scan_bounds=long((strsplit(header(21)))(1:*))
zero=float(((strsplit(header(22)))(1)))
factor=float(((strsplit(header(23)))(1)))
weight=float(((strsplit(header(24)))(1)))

	ENDIF


	END

ELSE:	BEGIN

Format_marker='gr_header '+version	;Format_marker




		Case version OF

strmid(Markers(0),10,6):	begin
		AUX=''
Array_size=[2,N_channels,32,2,N_channels*32L]
		end

strmid(Markers(1),10,6):	begin

	AUX=[			$
byte('Channel_bounds: '),	$
	byte(string(Channel_bounds(0))+string(Channel_bounds(1))),	CR,	$

byte('I_scan_bounds: '),	$
	byte(string(i_scan_bounds(0))+string(i_scan_bounds(1))),	CR,	$

byte('D_scan_bounds: '),	$
	byte(string(d_scan_bounds(0))+string(d_scan_bounds(1))),	CR,	$

byte('Zero: '),				byte(string(zero)),		CR,	$
byte('Factor: '),			byte(string(factor)),		CR,	$
byte('Weight: '),			byte(string(weight)),		CR	]

C_Number=Channel_bounds(1)-Channel_bounds(0)+1

Array_size=[2,C_Number,32,2,C_Number*32L]

		end

ELSE:		begin

		AUX=''
C_Number=Channel_bounds(1)-Channel_bounds(0)+1

Array_size=[2,C_Number,32,2,C_Number*32L]

		end

		EndCase


Header=[							$
byte(Type),						CR,	$
byte('Comments: '),		byte(comments),		CR,	$
byte('Parameter: '),		byte(Parameter),	CR,	$
byte('Interferometer: '),	byte(Interferometer),	CR,	$
byte('Source_file: '),		byte(source_file),	CR,	$
byte('First_record: '),		byte(string(first_record)),CR,	$
byte('Date: '),			byte(Date),		CR,	$
byte('Reference_time: '),	byte(Reference_time),	CR,	$
byte('Reference_channel: '),	byte(string(Reference_channel)),CR,	$
byte('Start_time: '),		byte(Start_time),	CR,	$
byte('Receiver: '),		byte(Receiver),		CR,	$
byte('Dt: '),			byte(string(Dt)),	CR,	$
byte('Length: '),		byte(string(Length)),	CR,	$
byte('N_channels: '),		byte(string(N_channels)),CR,	$
byte('Size: '),							$

byte(string(reform(byte(string(Array_size)),			$
	n_elements(byte(string(Array_size)))))), 		$

							CR,	$
byte('Created: '),		byte(systime(0)),	CR,	$
byte('Creator: '),		byte(Creator),		CR,	$
AUX]

Offset=n_elements(Header)+36

s_header_length=strcompress(string(Offset),/rem)


Record=[							$
byte(Format_marker),					CR,	$
byte('Header_length: '),	byte(s_header_length),	CR,	$
Header]

point_lun,lun,0
writeu,lun,Record


	END

	ENDCASE



end