home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / SCIENCE / STAGES12.ZIP / INPUTS1.C < prev    next >
Text File  |  1991-04-21  |  23KB  |  893 lines

  1. #include "header.h"
  2. #if PC
  3.   #include <bios.h>
  4. #endif
  5. #include "file.h"
  6.  
  7. unsigned long coreleft(void);
  8.  
  9. /* functions included:
  10.            getipfile
  11.         getstgdat
  12.                 getCyclelen
  13.         getseqdat
  14.         getmcldat
  15.         getusrstr
  16. */
  17.  
  18. /********************************/
  19. /*     function: getipfile    */
  20. /********************************/
  21. /* there are 2 times when getipfile is called:
  22.     1/  to open a batch i/p file
  23.     2/  to open animal data files.
  24.    in case 1/, if file can't be found, do prompt for another file,
  25.    but it isn't mandatory to have one (if none given, then interactive
  26.    use assumed).
  27.    in case 2/, don't ask user for new filename:  just exit w/error msg.
  28.    the user doesn't know anything about which files are correct to use.
  29.  
  30.    returns 0 if good file opened,
  31.    else returns 1. */
  32. getipfile (ipfil, pfp, iptype, ftype)
  33.   char *ipfil;        /* the name of the file finally opened    */
  34.   FILE **pfp;
  35.   char iptype;        /* filename supplied (F) or entered    */
  36.               /* interactively (I)            */
  37.   char ftype;        /* C=cycle stage dat
  38.                I=input file (batch mode)
  39.                S=cell sequence dat            */
  40. {
  41.   int go, help, mandatory;
  42.   char fname[2*FILELEN];
  43. #if PC
  44.   int val;
  45. #endif
  46.  
  47.   switch (ftype) {
  48.   case 'I':
  49.     mandatory = 0;
  50.     break;
  51.   case 'S':
  52.   case 'C':
  53.     mandatory = 1;
  54.     break;
  55.   default: /* shouldn't */
  56. #if PC
  57.     clrscr1(1);
  58.     gotoxy(1, 5);
  59.     cprintf("%sgetipfile:  Illegal ftype=<%c>", tab, ftype);
  60.     gotoxy(1, 7);
  61.     cprintf("%s            Sorry, aborting.", tab);
  62.     printexit(329);
  63. #else
  64.     printf("\tgetipfile:  Illegal ftype=<%c>\n", ftype);
  65.     printf("\t            Sorry, aborting.\n");
  66. #endif
  67.   } /* switch */
  68.  
  69. #if (DEBUG > 4)
  70. #if PC
  71.   clrscr1(1);
  72.   gotoxy(1, 5);
  73.   cprintf("%sin getipfile:", tab);
  74.   gotoxy(1, 7);
  75.   cprintf("%sipfil=<%s>", tab2, ipfil);
  76.   gotoxy(1, 8);
  77.   cprintf("%siptype=<%c>", tab2, iptype);
  78.   gotoxy(1, 9);
  79.   cprintf("%sftype=<%c>", tab2, ftype);
  80.   hitreturn(1);
  81. #endif
  82. #endif
  83.   if (iptype == 'F')
  84.     /* filename supplied in var ipfile */
  85.     strcpy(fname, ipfil);
  86.   else {
  87.     /* get a filename interactively;
  88.        user-friendly asking-message printed by calling function    */
  89. #if PC
  90.     val = getusrstr(fname);
  91.     if (HARDCOPY)
  92.       fprintf(stdprn, "%s\n", fname);
  93.     if (val) return(val);
  94. #else
  95.     getusrstr(fname);
  96. #endif
  97.     if (FILEq && FILECOPY)
  98.       fprintf(fpout, "%s\n", fname);
  99.   }
  100.  
  101.   /* strip input string of leading/trailing whitespace */
  102.   stripwhitesp(&fname[0]);
  103.  
  104.   go = 1;
  105.   while (go && ((*pfp = fopen(fname, "r"))==NULL)) {
  106.     if ((ftype=='C') || (ftype=='S')) {
  107. #if (DEBUG > 4)
  108. #if PC
  109.       clrscr1(1);
  110.       gotoxy(1, 5);
  111.       cprintf("%sfile <%s> not opened", tab, fname);
  112.       hitreturn(1);
  113. #else
  114.       printf("\tfile <%s> not opened\n", fname);
  115. #endif
  116. #endif
  117.       helpipfil(ftype);
  118.       printexit(330);
  119.     } else {
  120.       if (fname[0]=='?') {
  121.     help = 1;
  122.     helpipfil1(ipfil);
  123.       } else {
  124.     help = 0;
  125.       }
  126.     }
  127.  
  128.     if (! mandatory) {
  129. #if PC
  130.       clrscr1(3);
  131.       gotoxy(1, 1);
  132.       if (! help) {
  133.     printf("%s%s: File ", tab, ERRSTR);
  134.     printf("<%s> cannot be opened.", fname);
  135.     gotoxy(1, 2);
  136.       }
  137.       cprintf("%sPlease enter a new filename, or", tab);
  138.       gotoxy(1, 3);
  139.       cprintf("%s  type <Enter> if no file is desired.", tab);
  140.       clrscr1(2);
  141.       cprintf("%sNew filename:", tab);
  142.       gotoxy(1, 2);
  143.       highvideo();
  144.       cprintf("%s%c%c%c ", tab2, HBAR, HBAR, RTRI);
  145.       normvideo();
  146.       val = getusrstr(fname);
  147.       stripwhitesp(&fname[0]);
  148.       if (HARDCOPY) {
  149.     if (! help) {
  150.       fprintf(stdprn, "\n\t%s: File ", ERRSTR);
  151.       fprintf(stdprn, "<%s> cannot be opened.\n", fname);
  152.     }
  153.     fprintf(stdprn, "\tPlease enter a new filename, or\n");
  154.     fprintf(stdprn, "\t  type <Enter> if no file is desired.\n");
  155.     fprintf(stdprn, "\t\t==> ");
  156.     fprintf(stdprn, "%s\n", fname);
  157.       }
  158.       if (val) return(val);
  159. #else
  160.       if (! help) {
  161.     printf("\n\t%s: File ", ERRSTR);
  162.     printf("<%s> cannot be opened.\n", fname);
  163.       }
  164.       printf("\tPlease enter a new filename, or\n");
  165.       printf("\t  type <Enter> if no file is desired.\n");
  166.       printf("\t\t==> ");
  167.       getusrstr(fname);
  168.       stripwhitesp(&fname[0]);
  169. #endif
  170.       if (FILEq && FILECOPY) {
  171.     if (! help) {
  172.       fprintf(fpout, "\n\t%s: File ", ERRSTR);
  173.       fprintf(fpout, "<%s> cannot be opened.\n", fname);
  174.     }
  175.     fprintf(fpout, "\tPlease enter a new filename, or");
  176.     fprintf(fpout, "\t  type <Enter> if no file is desired.\n");
  177.     fprintf(fpout, "\t\t==> ");
  178.     fprintf(fpout, "%s\n", fname);
  179.       }
  180.       /* not mandatory:  can enter no filename */
  181.       if (strlen(fname)==0)
  182.     go = 0;
  183.  
  184.     } else {         /* mandatory: animal file: fail! */
  185. #if PC
  186.       clrscr1(1);
  187.       gotoxy(1, 5);
  188.       cprintf("%sgetipfile:  Internal error: File <%s> ", tab, fname);
  189.       cprintf("cannot be opened.");
  190.       gotoxy(1, 7);
  191.       cprintf("%s            Sorry, aborting.", tab);
  192.       if (HARDCOPY) {
  193.     fprintf(stdprn, "\t%s:  Internal error: File <%s> ", ERRSTR, fname);
  194.     fprintf(stdprn, "cannot be opened.\n\tSorry, aborting.\n\n");
  195.       }
  196. #else
  197.       printf("\t%s:  Internal error: File <%s> ", ERRSTR, fname);
  198.       printf("cannot be opened.\n\tSorry, aborting.\n\n");
  199. #endif
  200.       if (FILEq && FILECOPY) {
  201.     fprintf(fpout, "\t%s:  Internal error: File <%s> ", ERRSTR, fname);
  202.     fprintf(fpout, "cannot be opened.\n\tSorry, aborting.\n\n");
  203.       }
  204.       printexit(331);
  205.     } /* if mandatory */
  206.   } /* while */
  207.  
  208. #if (DEBUG > 4)
  209. #if PC
  210.   clrscr1(1);
  211.   gotoxy(1, 5);
  212.   cprintf("%sgetipfile: done with while loop", tab);
  213.   hitreturn(1);
  214. #else
  215.   printf("\tgetipfile: done with while loop\n");
  216. #endif
  217. #endif
  218.  
  219.   if (go==0) {
  220.     /* no file necessary */
  221. #if PC
  222.     clrscr1(3);
  223.     cprintf("%sNo batch file opened; input must be entered interactively.", tab);
  224.     if (HARDCOPY)
  225.       fprintf(stdprn, "\n\tNo batch file opened; input must be entered interactively.\n");
  226.     hitreturn(1);
  227. #else
  228.     printf("\n\tNo batch file opened; input must be entered interactively.\n");
  229. #endif
  230.     if (FILEq && FILECOPY)
  231.       fprintf(fpout, "\n\tNo batch file opened; input must be entered interactively.\n");
  232.  
  233. #if (DEBUG > 4)
  234. #if PC
  235.     clrscr1(1);
  236.     gotoxy(1, 5);
  237.     cprintf("%sfile <%s> not opened", tab, fname);
  238.     hitreturn(1);
  239. #else
  240.     printf("\tfile <%s> not opened\n", fname);
  241. #endif
  242. #endif
  243.     return(1);
  244.   } else {
  245. #if (DEBUG > 4)
  246. #if PC
  247.     clrscr1(1);
  248.     gotoxy(1, 5);
  249.     cprintf("%sfile <%s> opened", tab, fname);
  250.     hitreturn(1);
  251. #else
  252.     printf("\tfile <%s> opened\n", fname);
  253. #endif
  254. #endif
  255.     return(0);        /* good file opened */
  256.   } /* *pfp != NULL */
  257. } /* getipfile */
  258.  
  259. /********************************/
  260. /*     function: getstgdat    */
  261. /********************************/
  262. /* reads from the file xxx.stg to get the cycle stage data */
  263. getstgdat (stgfil, fpstg)
  264.   char *stgfil;
  265.   FILE *fpstg;
  266. {
  267.   int i;
  268.   static int once=0;    /* =1 if malloc'd once already        */
  269. #if (DEBUG > 4)
  270.   long int j;
  271. #endif
  272.  
  273.   /* if gotstgdat at least once already, free up allo'c space */
  274.   if (once) {
  275.     free1((char *) stage);
  276. #if (DEBUG > 4)
  277. #if PC
  278.     clrscr1(1);
  279.     gotoxy(1, 3);
  280.     cprintf("%sgetstgdat:  free(stage)", tab);
  281.     hitreturn(1);
  282. #else
  283.     printf("\tgetstgdat:  free(stage)\n");
  284. #endif
  285.   } else {
  286. #if PC
  287.     clrscr1(1);
  288. #else
  289.     printf("\tgetstgdat:  stage not freed\n");
  290. #endif
  291. #endif
  292.   } /* else */
  293.  
  294.   /* read cycle time - this is in days */
  295.   fscanf(fpstg, "%lf", &CycleTime);
  296.   /* DefaultCycleTime is always that value read from the *.stg file */
  297.   DefaultCycleTime = CycleTime;
  298. #if PC
  299.   printCycleTime();        /* turn on Cycle Length annunciator */
  300. #endif
  301.   OldCycleTime = CycleTime;        /* initialize OldCycleTime */
  302.   fscanf(fpstg, "%d", &NumStages);
  303.   MaxStage = NumStages - 1;
  304.  
  305. #if (PC && (DEBUG > 4))
  306.   makeactivewin(1);
  307.   gotoxy(1, 5);
  308.   cprintf("%sgetstgdat:  getting data from file <%s>", tab, stgfil);
  309.   gotoxy(1, 6);
  310.   cprintf("%s            CycleTime = <%lf>", tab, CycleTime);
  311.   gotoxy(1, 7);
  312.   cprintf("%s            NumStages = <