Annotation of researchv10dc/libI77/lwrite.c, revision 1.1.1.1

1.1       root        1: #include "f2c.h"
                      2: #include "fio.h"
                      3: #include "fmt.h"
                      4: #include "lio.h"
                      5: ftnint L_len;
                      6: 
                      7: #ifdef KR_headers
                      8: t_putc(c)
                      9: #else
                     10: t_putc(int c)
                     11: #endif
                     12: {
                     13:        f__recpos++;
                     14:        putc(c,f__cf);
                     15:        return(0);
                     16: }
                     17:  static VOID
                     18: #ifdef KR_headers
                     19: lwrt_I(n) long n;
                     20: #else
                     21: lwrt_I(long n)
                     22: #endif
                     23: {
                     24:        char buf[LINTW],*p;
                     25: #ifdef USE_STRLEN
                     26:        (void) sprintf(buf," %ld",n);
                     27:        if(f__recpos+strlen(buf)>=L_len)
                     28: #else
                     29:        if(f__recpos + sprintf(buf," %ld",n) >= L_len)
                     30: #endif
                     31:                (*f__donewrec)();
                     32:        for(p=buf;*p;PUT(*p++));
                     33: }
                     34:  static VOID
                     35: #ifdef KR_headers
                     36: lwrt_L(n, len) ftnint n; ftnlen len;
                     37: #else
                     38: lwrt_L(ftnint n, ftnlen len)
                     39: #endif
                     40: {
                     41:        if(f__recpos+LLOGW>=L_len)
                     42:                (*f__donewrec)();
                     43:        wrt_L((Uint *)&n,LLOGW, len);
                     44: }
                     45:  static VOID
                     46: #ifdef KR_headers
                     47: lwrt_A(p,len) char *p; ftnlen len;
                     48: #else
                     49: lwrt_A(char *p, ftnlen len)
                     50: #endif
                     51: {
                     52:        int i;
                     53:        if(f__recpos+len>=L_len)
                     54:                (*f__donewrec)();
                     55:        if (!f__recpos)
                     56:                { PUT(' '); ++f__recpos; }
                     57:        for(i=0;i<len;i++) PUT(*p++);
                     58: }
                     59: 
                     60:  static int
                     61: #ifdef KR_headers
                     62: l_g(buf, n) char *buf; double n;
                     63: #else
                     64: l_g(char *buf, double n)
                     65: #endif
                     66: {
                     67: #ifdef Old_list_output
                     68:        doublereal absn;
                     69:        char *fmt;
                     70: 
                     71:        absn = n;
                     72:        if (absn < 0)
                     73:                absn = -absn;
                     74:        fmt = LLOW <= absn && absn < LHIGH ? LFFMT : LEFMT;
                     75: #ifdef USE_STRLEN
                     76:        sprintf(buf, fmt, n);
                     77:        return strlen(buf);
                     78: #else
                     79:        return sprintf(buf, fmt, n);
                     80: #endif
                     81: 
                     82: #else
                     83:        register char *b, c, c1;
                     84: 
                     85:        b = buf;
                     86:        *b++ = ' ';
                     87:        if (n < 0) {
                     88:                *b++ = '-';
                     89:                n = -n;
                     90:                }
                     91:        else
                     92:                *b++ = ' ';
                     93:        if (n == 0) {
                     94:                *b++ = '0';
                     95:                *b++ = '.';
                     96:                *b = 0;
                     97:                goto f__ret;
                     98:                }
                     99:        sprintf(b, LGFMT, n);
                    100:        if (*b == '0') {
                    101:                while(b[0] = b[1])
                    102:                        b++;
                    103:                }
                    104:        /* Fortran 77 insists on having a decimal point... */
                    105:        else for(;; b++)
                    106:                switch(*b) {
                    107:                        case 0:
                    108:                                *b++ = '.';
                    109:                                *b = 0;
                    110:                                goto f__ret;
                    111:                        case '.':
                    112:                                while(*++b);
                    113:                                goto f__ret;
                    114:                        case 'E':
                    115:                                for(c1 = '.', c = 'E';  *b = c1;
                    116:                                        c1 = c, c = *++b);
                    117:                                goto f__ret;
                    118:                        }
                    119:  f__ret:
                    120:        return b - buf;
                    121: #endif
                    122:        }
                    123: 
                    124:  static VOID
                    125: #ifdef KR_headers
                    126: l_put(s) register char *s;
                    127: #else
                    128: l_put(register char *s)
                    129: #endif
                    130: {
                    131: #ifdef KR_headers
                    132:        register int c, (*pn)() = f__putn;
                    133: #else
                    134:        register int c, (*pn)(int) = f__putn;
                    135: #endif
                    136:        while(c = *s++)
                    137:                (*pn)(c);
                    138:        }
                    139: 
                    140:  static VOID
                    141: #ifdef KR_headers
                    142: lwrt_F(n) double n;
                    143: #else
                    144: lwrt_F(double n)
                    145: #endif
                    146: {
                    147:        char buf[LEFBL];
                    148: 
                    149:        if(f__recpos + l_g(buf,n) >= L_len)
                    150:                (*f__donewrec)();
                    151:        l_put(buf);
                    152: }
                    153:  static VOID
                    154: #ifdef KR_headers
                    155: lwrt_C(a,b) double a,b;
                    156: #else
                    157: lwrt_C(double a, double b)
                    158: #endif
                    159: {
                    160:        char *ba, *bb, bufa[LEFBL], bufb[LEFBL];
                    161:        int al, bl;
                    162: 
                    163:        al = l_g(bufa, a);
                    164:        for(ba = bufa; *ba == ' '; ba++)
                    165:                --al;
                    166:        bl = l_g(bufb, b) + 1;  /* intentionally high by 1 */
                    167:        for(bb = bufb; *bb == ' '; bb++)
                    168:                --bl;
                    169:        if(f__recpos + al + bl + 3 >= L_len && f__recpos)
                    170:                (*f__donewrec)();
                    171:        PUT(' ');
                    172:        PUT('(');
                    173:        l_put(ba);
                    174:        PUT(',');
                    175:        if (f__recpos + bl >= L_len) {
                    176:                (*f__donewrec)();
                    177:                PUT(' ');
                    178:                }
                    179:        l_put(bb);
                    180:        PUT(')');
                    181: }
                    182: #ifdef KR_headers
                    183: l_write(number,ptr,len,type) ftnint *number,type; char *ptr; ftnlen len;
                    184: #else
                    185: l_write(ftnint *number, char *ptr, ftnlen len, ftnint type)
                    186: #endif
                    187: {
                    188: #define Ptr ((flex *)ptr)
                    189:        int i;
                    190:        long x;
                    191:        double y,z;
                    192:        real *xx;
                    193:        doublereal *yy;
                    194:        for(i=0;i< *number; i++)
                    195:        {
                    196:                switch((int)type)
                    197:                {
                    198:                default: f__fatal(204,"unknown type in lio");
                    199:                case TYINT1:
                    200:                        x = Ptr->flchar;
                    201:                        goto xint;
                    202:                case TYSHORT:
                    203:                        x=Ptr->flshort;
                    204:                        goto xint;
                    205: #ifdef TYQUAD
                    206:                case TYQUAD:
                    207:                        x = Ptr->fllongint;
                    208:                        goto xint;
                    209: #endif
                    210:                case TYLONG:
                    211:                        x=Ptr->flint;
                    212:                xint:   lwrt_I(x);
                    213:                        break;
                    214:                case TYREAL:
                    215:                        y=Ptr->flreal;
                    216:                        goto xfloat;
                    217:                case TYDREAL:
                    218:                        y=Ptr->fldouble;
                    219:                xfloat: lwrt_F(y);
                    220:                        break;
                    221:                case TYCOMPLEX:
                    222:                        xx= &Ptr->flreal;
                    223:                        y = *xx++;
                    224:                        z = *xx;
                    225:                        goto xcomplex;
                    226:                case TYDCOMPLEX:
                    227:                        yy = &Ptr->fldouble;
                    228:                        y= *yy++;
                    229:                        z = *yy;
                    230:                xcomplex:
                    231:                        lwrt_C(y,z);
                    232:                        break;
                    233:                case TYLOGICAL1:
                    234:                        x = Ptr->flchar;
                    235:                        goto xlog;
                    236:                case TYLOGICAL2:
                    237:                        x = Ptr->flshort;
                    238:                        goto xlog;
                    239:                case TYLOGICAL:
                    240:                        x = Ptr->flint;
                    241:                xlog:   lwrt_L(Ptr->flint, len);
                    242:                        break;
                    243:                case TYCHAR:
                    244:                        lwrt_A(ptr,len);
                    245:                        break;
                    246:                }
                    247:                ptr += len;
                    248:        }
                    249:        return(0);
                    250: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.