📄 libi77
字号:
- }- else x=T;- s=gt_num(s+1,&n);- s--;- (void) op_gen(x,n,0,0);- break;- case 'X':- case 'x': (void) op_gen(X,1,0,0); break;- case 'P':- case 'p': (void) op_gen(P,1,0,0); break;- }- s++;- *p=s;- return(1);-}-#ifdef KR_headers-e_d(s,p) char *s,**p;-#else-e_d(char *s, char **p)-#endif-{ int i,im,n,w,d,e,found=0,x=0;- char *sv=s;- s=gt_num(s,&n);- (void) op_gen(STACK,n,0,0);- switch(*s++)- {- default: break;- case 'E':- case 'e': x=1;- case 'G':- case 'g':- found=1;- s=gt_num(s,&w);- if(w==0) break;- if(*s=='.')- { s++;- s=gt_num(s,&d);- }- else d=0;- if(*s!='E' && *s != 'e')- (void) op_gen(x==1?E:G,w,d,0); /* default is Ew.dE2 */- else- { s++;- s=gt_num(s,&e);- (void) op_gen(x==1?EE:GE,w,d,e);- }- break;- case 'O':- case 'o':- i = O;- im = OM;- goto finish_I;- case 'Z':- case 'z':- i = Z;- im = ZM;- goto finish_I;- case 'L':- case 'l':- found=1;- s=gt_num(s,&w);- if(w==0) break;- (void) op_gen(L,w,0,0);- break;- case 'A':- case 'a':- found=1;- skip(s);- if(*s>='0' && *s<='9')- { s=gt_num(s,&w);- if(w==0) break;- (void) op_gen(AW,w,0,0);- break;- }- (void) op_gen(A,0,0,0);- break;- case 'F':- case 'f':- found=1;- s=gt_num(s,&w);- if(w==0) break;- if(*s=='.')- { s++;- s=gt_num(s,&d);- }- else d=0;- (void) op_gen(F,w,d,0);- break;- case 'D':- case 'd':- found=1;- s=gt_num(s,&w);- if(w==0) break;- if(*s=='.')- { s++;- s=gt_num(s,&d);- }- else d=0;- (void) op_gen(D,w,d,0);- break;- case 'I':- case 'i':- i = I;- im = IM;- finish_I:- found=1;- s=gt_num(s,&w);- if(w==0) break;- if(*s!='.')- { (void) op_gen(i,w,0,0);- break;- }- s++;- s=gt_num(s,&d);- (void) op_gen(im,w,d,0);- break;- }- if(found==0)- { f__pc--; /*unSTACK*/- *p=sv;- return(0);- }- *p=s;- return(1);-}-#ifdef KR_headers-char *i_tem(s) char *s;-#else-char *i_tem(char *s)-#endif-{ char *t;- int n,curloc;- if(*s==')') return(s);- if(ne_d(s,&t)) return(t);- if(e_d(s,&t)) return(t);- s=gt_num(s,&n);- if((curloc=op_gen(STACK,n,0,0))<0) return(NULL);- return(f_s(s,curloc));-}-#ifdef KR_headers-char *f_list(s) char *s;-#else-char *f_list(char *s)-#endif-{- for(;*s!=0;)- { skip(s);- if((s=i_tem(s))==NULL) return(NULL);- skip(s);- if(*s==',') s++;- else if(*s==')')- { if(--f__parenlvl==0)- {- (void) op_gen(REVERT,f__revloc,0,0);- return(++s);- }- (void) op_gen(GOTO,0,0,0);- return(++s);- }- }- return(NULL);-}--#ifdef KR_headers-pars_f(s) char *s;-#else-pars_f(char *s)-#endif-{- f__parenlvl=f__revloc=f__pc=0;- if(f_s(s,0) == NULL)- {- return(-1);- }- return(0);-}-#define STKSZ 10-int f__cnt[STKSZ],f__ret[STKSZ],f__cp,f__rp;-flag f__workdone, f__nonl;--#ifdef KR_headers-type_f(n)-#else-type_f(int n)-#endif-{- switch(n)- {- default:- return(n);- case RET1:- return(RET1);- case REVERT: return(REVERT);- case GOTO: return(GOTO);- case STACK: return(STACK);- case X:- case SLASH:- case APOS: case H:- case T: case TL: case TR:- return(NED);- case F:- case I:- case IM:- case A: case AW:- case O: case OM:- case L:- case E: case EE: case D:- case G: case GE:- case Z: case ZM:- return(ED);- }-}-#ifdef KR_headers-integer do_fio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;-#else-integer do_fio(ftnint *number, char *ptr, ftnlen len)-#endif-{ struct syl *p;- int n,i;- for(i=0;i<*number;i++,ptr+=len)- {-loop: switch(type_f((p= &f__syl[f__pc])->op))- {- default:- fprintf(stderr,"unknown code in do_fio: %d\n%s\n",- p->op,f__fmtbuf);- err(f__elist->cierr,100,"do_fio");- case NED:- if((*f__doned)(p))- { f__pc++;- goto loop;- }- f__pc++;- continue;- case ED:- if(f__cnt[f__cp]<=0)- { f__cp--;- f__pc++;- goto loop;- }- if(ptr==NULL)- return((*f__doend)());- f__cnt[f__cp]--;- f__workdone=1;- if((n=(*f__doed)(p,ptr,len))>0)- errfl(f__elist->cierr,errno,"fmt");- if(n<0)- err(f__elist->ciend,(EOF),"fmt");- continue;- case STACK:- f__cnt[++f__cp]=p->p1;- f__pc++;- goto loop;- case RET1:- f__ret[++f__rp]=p->p1;- f__pc++;- goto loop;- case GOTO:- if(--f__cnt[f__cp]<=0)- { f__cp--;- f__rp--;- f__pc++;- goto loop;- }- f__pc=1+f__ret[f__rp--];- goto loop;- case REVERT:- f__rp=f__cp=0;- f__pc = p->p1;- if(ptr==NULL)- return((*f__doend)());- if(!f__workdone) return(0);- if((n=(*f__dorevert)()) != 0) return(n);- goto loop;- case COLON:- if(ptr==NULL)- return((*f__doend)());- f__pc++;- goto loop;- case NONL:- f__nonl = 1;- f__pc++;- goto loop;- case S:- case SS:- f__cplus=0;- f__pc++;- goto loop;- case SP:- f__cplus = 1;- f__pc++;- goto loop;- case P: f__scale=p->p1;- f__pc++;- goto loop;- case BN:- f__cblank=0;- f__pc++;- goto loop;- case BZ:- f__cblank=1;- f__pc++;- goto loop;- }- }- return(0);-}-en_fio(Void)-{ ftnint one=1;- return(do_fio(&one,(char *)NULL,(ftnint)0));-}- VOID-fmt_bg(Void)-{- f__workdone=f__cp=f__rp=f__pc=f__cursor=0;- f__cnt[0]=f__ret[0]=0;-}//GO.SYSIN DD libI77/fmt.cecho libI77/fmt.h 1>&2sed >libI77/fmt.h <<'//GO.SYSIN DD libI77/fmt.h' 's/^-//'-struct syl-{ int op,p1,p2,p3;-};-#define RET1 1-#define REVERT 2-#define GOTO 3-#define X 4-#define SLASH 5-#define STACK 6-#define I 7-#define ED 8-#define NED 9-#define IM 10-#define APOS 11-#define H 12-#define TL 13-#define TR 14-#define T 15-#define COLON 16-#define S 17-#define SP 18-#define SS 19-#define P 20-#define BN 21-#define BZ 22-#define F 23-#define E 24-#define EE 25-#define D 26-#define G 27-#define GE 28-#define L 29-#define A 30-#define AW 31-#define O 32-#define NONL 33-#define OM 34-#define Z 35-#define ZM 36-extern struct syl f__syl[];-extern int f__pc,f__parenlvl,f__revloc;-typedef union-{ real pf;- doublereal pd;-} ufloat;-typedef union-{ short is;- char ic;- integer il;-#ifdef Allow_TYQUAD- longint ili;-#endif-} Uint;-#ifdef KR_headers-extern int (*f__doed)(),(*f__doned)();-extern int (*f__dorevert)();-extern int rd_ed(),rd_ned();-extern int w_ed(),w_ned();-#else-#ifdef __cplusplus-extern "C" {-#endif-extern int (*f__doed)(struct syl*, char*, ftnlen),(*f__doned)(struct syl*);-extern int (*f__dorevert)(void);-extern void fmt_bg(void);-extern int pars_f(char*);-extern int rd_ed(struct syl*, char*, ftnlen),rd_ned(struct syl*);-extern int w_ed(struct syl*, char*, ftnlen),w_ned(struct syl*);-extern int wrt_E(ufloat*, int, int, int, ftnlen);-extern int wrt_F(ufloat*, int, int, ftnlen);-extern int wrt_L(Uint*, int, ftnlen);-#ifdef __cplusplus- }-#endif-#endif-extern flag f__cblank,f__cplus,f__workdone, f__nonl;-extern char *f__fmtbuf;-extern int f__scale;-#define GET(x) if((x=(*f__getn)())<0) return(x)-#define VAL(x) (x!='\n'?x:' ')-#define PUT(x) (*f__putn)(x)-extern int f__cursor;//GO.SYSIN DD libI77/fmt.hecho libI77/fmtlib.c 1>&2sed >libI77/fmtlib.c <<'//GO.SYSIN DD libI77/fmtlib.c' 's/^-//'-/* @(#)fmtlib.c 1.2 */-#define MAXINTLENGTH 23-#ifdef KR_headers-char *f__icvt(value,ndigit,sign, base) long value; int *ndigit,*sign;- register int base;-#else-char *f__icvt(long value, int *ndigit, int *sign, int base)-#endif-{ static char buf[MAXINTLENGTH+1];- register int i;- if(value>0) *sign=0;- else if(value<0)- { value = -value;- *sign= 1;- }- else- { *sign=0;- *ndigit=1;- buf[MAXINTLENGTH]='0';- return(&buf[MAXINTLENGTH]);- }- for(i=MAXINTLENGTH-1;value>0;i--)- { *(buf+i)=(int)(value%base)+'0';- value /= base;- }- *ndigit=MAXINTLENGTH-1-i;- return(&buf[i+1]);-}//GO.SYSIN DD libI77/fmtlib.cecho libI77/fp.h 1>&2sed >libI77/fp.h <<'//GO.SYSIN DD libI77/fp.h' 's/^-//'-#define FMAX 40-#define EXPMAXDIGS 8-#define EXPMAX 99999999-/* FMAX = max number of nonzero digits passed to atof() */-/* EXPMAX = 10^EXPMAXDIGS - 1 = largest allowed exponent absolute value */--#ifdef V10 /* Research Tenth-Edition Unix */-#include "local.h"-#endif--/* MAXFRACDIGS and MAXINTDIGS are for wrt_F -- bounds (not necessarily- tight) on the maximum number of digits to the right and left of- * the decimal point.- */--#ifdef VAX-#define MAXFRACDIGS 56-#define MAXINTDIGS 38-#else-#ifdef CRAY-#define MAXFRACDIGS 9880-#define MAXINTDIGS 9864-#else-/* values that suffice for IEEE double */-#define MAXFRACDIGS 344-#define MAXINTDIGS 308-#endif-#endif//GO.SYSIN DD libI77/fp.hecho libI77/iio.c 1>&2sed >libI77/iio.c <<'//GO.SYSIN DD libI77/iio.c' 's/^-//'-#include "f2c.h"-#include "fio.h"-#include "fmt.h"-extern char *f__icptr;-char *f__icend;-extern icilist *f__svic;-int f__icnum;-extern int f__hiwater;-z_getc(Void)-{- if(f__recpos++ < f__svic->icirlen) {- if(f__icptr >= f__icend) err(f__svic->iciend,(EOF),"endfile");- return(*f__icptr++);- }- return '\n';-}-#ifdef KR_headers-z_putc(c)-#else-z_putc(int c)-#endif-{- if(f__icptr >= f__icend) err(f__svic->icierr,110,"inwrite");- if(f__recpos++ < f__svic->icirlen)- *f__icptr++ = c;- else err(f__svic->icierr,110,"recend");- return 0;-}-z_rnew(Void)-{- f__icptr = f__svic->iciunit + (++f__icnum)*f__svic->icirlen;- f__recpos = 0;- f__cursor = 0;- f__hiwater = 0;- return 1;-}-- static int-z_endp(Void)-{- (*f__donewrec)();- return 0;- }--#ifdef KR_headers-c_si(a) icilist *a;-#else-c_si(icilist *a)-#endif-{- f__elist = (cilist *)a;- f__fmtbuf=a->icifmt;- if(pars_f(f__fmtbuf)<0)- err(a->icierr,100,"startint");- fmt_bg();- f__sequential=f__formatted=1;- f__external=0;- f__cblank=f__cplus=f__scale=0;- f__svic=a;- f__icnum=f__recpos=0;- f__cursor = 0;- f__hiwater = 0;- f__icptr = a->iciunit;- f__icend = f__icptr + a->icirlen*a->icirnum;- f__curunit = 0;- f__cf = 0;- return(0);-}-- int-iw_rev(Void)-{- if(f__workdone)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -