pro ecrdescd,uic,longrec,dfixe,mot_cle,valcle,comment
;+
; NAME
;	ECRDESCD
; PURPOSE:
;	ecriture du descripteur HELIO 
;	ecrit le descripteur fixe de 64 points (*4) 
;	puis le descripteur caractere de longueur variable
;	Les enregistrements sont de longueur fixe determinee par la taille des
;	images ecrites apres le descripteur.
; CALLING SEQUENCE:
;	ecrdescd,uic,longrec,dfixe,mot_cle,valcle,comment
;
; INPUTS:
;	uic	: numero d'unite pour ecrire	INT
;	longrec	: longueur en octets du record	LONG
;	dfixe	: descripteur fixe		STRUCTURE
;	mot_cle : tableau des mot cles		STRARR(200)
;	valcle	: tableau des valeurs des mot cles	STRARR(200)
;	comment	: tableau des commentaires	STRARR(200)
; OUTPUTS:
;
; CALLS:
;
; MODIFICATION HISTORY:
;	ecrit par A.Bouteille (1995)
;	modif juin 1996 motcle  remplace par mot_cle
;-

; descripteur fixe:
; il occupe un record complet ou plus
	if (longrec lt 64) then begin
	   lrest=longrec-(64 MOD longrec)
	   nblfixe=64/longrec
	   if (lrest ne 0)then nblfixe=nblfixe+1
	endif else begin
	   lrest=longrec-64
	   nblfixe=1
	endelse  
;
; concatenation du descripteur caractere
chaine=''
for i=0,199 do begin
    if(mot_cle(i) ne 'END')then $
       chaine=chaine+mot_cle(i)+'='+valcle(i)+'/'+comment(i)+string(13b) $
    else begin
	chaine=chaine+mot_cle(i)+string(13b)
	goto, suite
    endelse
endfor	
suite:
;print,'chaine'
;print,chaine
;print,byte(chaine)
; descripteur caractere:
lg4=longrec*4
lgvar=strlen(chaine)
if(lg4 lt lgvar) then begin
    lrestc=lg4-(lgvar MOD lg4) 
    nblcar=lgvar/lg4
    if (lrestc ne 0)then nblcar=nblcar+1
endif else begin
    lrestc=lg4-lgvar
    nblcar=1
endelse
dfixe.nblocs=nblfixe+nblcar
; ecriture des descripteurs
if(lrest ne 0)then begin
    fill=lonarr(lrest)
    fill(*)=0L
    writeu,uic,dfixe,fill
endif else  writeu,uic,dfixe
if(lrestc ne 0)then begin
    fillc=strarr(lrestc)
    fillc(*)=' '
    writeu,uic,byte(chaine),byte(fillc)
endif else writeu,uic,byte(chaine)

end
