|
|
1.1 root 1: #include "fio.h"
2: #include "fmt.h"
3: #include "lio.h"
4: extern int l_write();
5: int t_putc();
6: s_wsle(a) cilist *a;
7: {
8: int n;
9: if(!init) f_init();
10: if(n=c_le(a)) return(n);
11: reading=0;
12: external=1;
13: formatted=1;
14: putn = t_putc;
15: lioproc = l_write;
16: if(!curunit->uwrt)
17: return(nowwriting(curunit));
18: else return(0);
19: }
20: e_wsle()
21: {
22: t_putc('\n');
23: recpos=0;
24: return(0);
25: }
26: t_putc(c)
27: {
28: recpos++;
29: putc(c,cf);
30: }
31: lwrt_I(n) ftnint n;
32: {
33: char buf[LINTW],*p;
34: (void) sprintf(buf," %ld",(long)n);
35: if(recpos+strlen(buf)>=LINE)
36: { t_putc('\n');
37: recpos=0;
38: }
39: for(p=buf;*p;t_putc(*p++));
40: }
41: lwrt_L(n, len) ftnint n; ftnlen len;
42: {
43: if(recpos+LLOGW>=LINE)
44: { t_putc('\n');
45: recpos=0;
46: }
47: (void) wrt_L((uint *)&n,LLOGW, len);
48: }
49: lwrt_A(p,len) char *p; ftnlen len;
50: {
51: int i;
52: if(recpos+len>=LINE)
53: {
54: t_putc('\n');
55: recpos=0;
56: }
57: t_putc(' ');
58: for(i=0;i<len;i++) t_putc(*p++);
59: }
60: lwrt_F(n) double n;
61: {
62: if(LLOW<=n && n<LHIGH)
63: {
64: if(recpos+LFW>=LINE)
65: {
66: t_putc('\n');
67: recpos=0;
68: }
69: scale=0;
70: (void) wrt_F((ufloat *)&n,LFW,LFD,(ftnlen)sizeof(n));
71: }
72: else
73: {
74: if(recpos+LEW>=LINE)
75: { t_putc('\n');
76: recpos=0;
77: }
78: (void) wrt_E((ufloat *)&n,LEW,LED,LEE,(ftnlen)sizeof(n));
79: }
80: }
81: lwrt_C(a,b) double a,b;
82: {
83: if(recpos+2*LFW+3>=LINE)
84: { t_putc('\n');
85: recpos=0;
86: }
87: t_putc(' ');
88: t_putc('(');
89: lwrt_F(a);
90: t_putc(',');
91: lwrt_F(b);
92: t_putc(')');
93: }
94: l_write(number,ptr,len,type) ftnint *number,type; flex *ptr; ftnlen len;
95: {
96: int i;
97: ftnint x;
98: double y,z;
99: float *xx;
100: double *yy;
101: for(i=0;i< *number; i++)
102: {
103: switch((int)type)
104: {
105: default: fatal(204,"unknown type in lio");
106: case TYSHORT: x=ptr->flshort;
107: goto xint;
108: case TYLONG: x=ptr->flint;
109: xint: lwrt_I(x);
110: break;
111: case TYREAL: y=ptr->flreal;
112: goto xfloat;
113: case TYDREAL: y=ptr->fldouble;
114: xfloat: lwrt_F(y);
115: break;
116: case TYCOMPLEX: xx= &(ptr->flreal);
117: y = *xx++;
118: z = *xx;
119: goto xcomplex;
120: case TYDCOMPLEX: yy = &(ptr->fldouble);
121: y= *yy++;
122: z = *yy;
123: xcomplex: lwrt_C(y,z);
124: break;
125: case TYLOGICAL: lwrt_L(ptr->flint, len);
126: break;
127: case TYCHAR: lwrt_A((char *)ptr,len);
128: break;
129: }
130: ptr = (flex *)((char *)ptr + len);
131: }
132: return(0);
133: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.