* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)lwrite.c 5.2 7/30/85
LOCAL
char lwrt
[] = "list write";
formatted
= LISTDIRECTED
;
if(n
=c_le(a
,WRITE
)) return(n
);
if(!curunit
->uwrt
&& ! nowwriting(curunit
)) err(errflag
, errno
, lwrt
)
l_write(number
,ptr
,len
,type
) ftnint
*number
,type
; flex
*ptr
; ftnlen len
;
if( formatted
== NAMELIST
&& i
!= 0 ) PUT(',');
ERRCHK(lwrt_F(ptr
->flreal
));
ERRCHK(lwrt_D(ptr
->fldouble
));
ERRCHK(lwrt_A((char *)ptr
,len
));
fatal(F_ERSYS
,"unknown type in lwrite");
ptr
= (flex
*)((char *)ptr
+ len
);
err( n
>0?errflag
:endflag
, n
,
formatted
==LISTDIRECTED
?"list io":"name list io");
sprintf(buf
," %ld",(long)in
);
return(wrt_L(&ln
,LLOGW
));
lwrt_A(p
,len
) char *p
; ftnlen len
;
if(formatted
== LISTDIRECTED
)
for(i
=0;i
<len
;i
++) PUT(*p
++)
for(i
=0;i
<len
;i
++) PUT(*p
++)
{ int d
,n
; float x
; ufloat f
;
if(fn
==0.0) return(lwrt_0());
for(d
=LFD
,x
=abs(fn
);x
>=1.0;x
/=10.0,d
--);
return(wrt_F(&f
,LFW
,d
,(ftnlen
)sizeof(float)));
return(wrt_E(&f
,LEW
,LED
-scale
,LEE
,(ftnlen
)sizeof(float),'e'));
{ int d
,n
; double x
; ufloat f
;
if(dn
==0.0) return(lwrt_0());
for(d
=LDFD
,x
=abs(dn
);x
>=1.0;x
/=10.0,d
--);
return(wrt_F(&f
,LDFW
,d
,(ftnlen
)sizeof(double)));
return(wrt_E(&f
,LDEW
,LDED
-scale
,LDEE
,(ftnlen
)sizeof(double),'d'));
if(n
=lwrt_F(a
)) return(n
);
if(n
=lwrt_F(b
)) return(n
);
if(n
=lwrt_D(a
)) return(n
);
if(n
=lwrt_D(b
)) return(n
);
{ int n
; char *z
= " 0.";