#include #include #include #include #include float isasugf_ (float *, float *, float *, float *, float *, float *, int *, int *); float isagmbf_ (float *, float *, float *, float *, float *, float *, float *, int *, int *); static double m0sv=0.0, m1sv=0.0, a0sv=0.0, tbsv=0.0, mtsv=174.3, smsv=0.0, MDsv=0.0; static double gvsv=0.0; static int mdl=0; static void readprm(void) { int blt=0,i; char cbuf[1000]; FILE *f=fopen("slhaInput","r"); if(f==0) { puts("Can not open slhaInput!"); exit(0) ; } while(fgets(cbuf,1000,f)) { int i1,i2; double v; for(i=0;cbuf[i];i++) if(isalpha(cbuf[i]) && isupper(cbuf[i])) cbuf[i]=tolower(cbuf[i]); if(strncmp(cbuf,"block",5)==0) { char blnm[20]; sscanf(cbuf+5,"%s",blnm); if(strcmp(blnm,"modsel")==0) blt=1; else if(strcmp(blnm,"minpar")==0) blt=2; else if(strcmp(blnm,"sminputs")==0) blt=3; else blt=0; continue; } if(cbuf[0]!=' ') continue; if(blt==0) continue; if(blt<10 && sscanf(cbuf,"%d%lf",&i1,&v)!=2) continue; if(blt>10 && sscanf(cbuf,"%d%d%lf",&i1,&i2,&v)!=3) continue; switch(blt) { case 1: if(i1==1) mdl=(int)v; break; case 3: if(i1==6) mtsv=v; break; case 2: if(i1==1) m0sv=v; if(i1==2) m1sv=v; if(i1==3) tbsv=v; if(i1==4) smsv=v; if(i1==5) a0sv=v; if(i1==6) gvsv=v; break; default: break; } } fclose(f); } extern struct {float XISAIN[24], XSUGIN[7], XGMIN[14], XNRIN[4];} sugxin_; int main(void) { float m0, m1, a0, tb, sm, mt, cgv; int p,q,i; FILE *f; if(mdl==1) q=2; else q=1; p=1; if(access("slhaOutput",F_OK)==0) unlink("slhaOutput"); readprm(); m0=m0sv; m1=m1sv; a0=a0sv; tb=tbsv; sm=smsv; cgv=gvsv; mt=mtsv; if(mdl==1) isasugf_ (&m0, &m1, &a0, &tb, &sm, &mt, &q, &p); else if(mdl==2) isagmbf_ (&m0, &m1, &a0, &tb, &sm, &cgv, &mt, &q, &p); else return 0; f=fopen("slhaOutput","w"); fprintf(f,"Block chepxisain\n"); for(i=0;i<24;i++) fprintf(f," %2d %.15E\n",i+1,sugxin_.XISAIN[i]); fclose(f); return 0; }