home *** CD-ROM | disk | FTP | other *** search
- /* (c) Marietta Systems, Inc. 1987
- * All rights reserved
- *
- * Test program for filewrit function
- *
- * Note: This uses the file created by the test program 'filetest'
- */
- #include "mtest.h"
- int acptlong(long*, enum _JUST, enum ATTRIB, int);
- /*
- *
- * Function to accept a long int
- *
- */
- int acptlong(kk, just, atb, digits)
- long *kk;
- enum _JUST just;
- enum ATTRIB atb;
- int digits;{
- int z;
- char text[15];
- #ifdef LATTICE
- stcl_d(text, *kk);
- #else
- ltoa(*kk, text, 10);
- #endif
- z = accept(text, just, atb, digits, 0);
- *kk = atol(text);
- return z;
- }
- /*
- *
- * Main program
- *
- */
- void main(){
- long rec_nbr;
- int fh1, fh2, z, x, k;
- clr_scrn("Filewrit access test");
- KEYMATCH[4] = 0X8000; disp_err("",1); /* activate F8 - AMEND key */
- /*
- * open ascii file, and copy it into a relative file with binary
- * length records, stripping the '\n' symbol.
- */
- fh1 = fileopen("testfile.dat", ascii, readonly);
- fh2 = fileopen("testfile.rel", binary, recreate);
- if (fh1 <= 0 || fh2 <= 0) goodbye (106);
- if (fileinit(fh2, 0, 64, 0L)) goodbye(110);
- display ("File opened - records ready to be read", 1, 1, low);
- rec_nbr = 1L;
- for (z = 0 , x = 2 ; ; z++, x++){
- if (!(k = fileread(fh1, nextrec, &rec_nbr))) break; /* EOF */
- if (k < 0) goodbye(107); /* read error */
- FN[fh1].record[strlen(FN[fh1].record) - 1] = 0; /* delete '\n' */
- justify (left, FN[fh2].record, FN[fh1].record, 35, 0);
- rec_nbr -= 1L;
- if (filewrit(fh2, &rec_nbr) < 0) goodbye(108);
- display(FN[fh2].record, x, 1, reverse);
- }
- if (fileclos(fh1) < 1 || fileclos(fh2) < 1) goodbye(109);
- while (!disp_qry(" Ready to random read/write"));
- /*
- * reopen file 2
- */
- fh2 = fileopen("testfile.rel", binary, update);
- if (fileinit(fh2, 0, 64, 20L)) goodbye(110);
- if (fh2 <= 0) goodbye (106);
- display ("File opened - records ready to be read", 1, 40, low);
- display ("Next record number to be actioned", 22, 44, high);
- rec_nbr = 1L;
- for (;;){
- if (INCHAR == AMEND) k = fileread(fh2, nextrec, &rec_nbr);
- else k = fileread(fh2, relative, &rec_nbr);
- if (k < 0) goodbye(107); if (!k) break;
- display(FN[fh2].record, 3, 40, reverse);
- set_crsr(22,40);
- rec_nbr -= 1L;
- z = acptlong(&rec_nbr, code, alt_reverse, 3);
- if (!z) continue;
- if (INCHAR != AMEND) break;
- set_crsr(5, 40);
- if (accept(FN[fh2].record, left, alt_reverse, 35, 0))
- if (INCHAR == QUIT) break; else continue;
- filewrit(fh2, &rec_nbr);
- }
- if (fileclos(fh2) < 1) goodbye(109);
- disp_msg(" Press any key to end", 1);
- read_kb();
- goodbye(0);
- }