home *** CD-ROM | disk | FTP | other *** search
- /*-------------------------------------------------------------------------
- File: actions4.c
- actions taken place on the files
-
- Copyright (C) 1994 John Gambini
- ------------------------------------------------------------------------*/
- #include <stdarg.h>
- #include <screen.h>
- #include <ism.h>
- #include <fields.h>
- #include "compudex.h"
-
- SCREEN help[] = {
- { 2, 2, "S = Search the file for matching records." },
- { 3, 2, "A = Add a record to the file." },
- { 4, 2, "U = Update the current record." },
- { 5, 2, "F = Move forward in the current list." },
- { 6, 2, "B = Move backwards in the current list." },
- { 7, 2, "D = Delete the current record." },
- { 8, 2, "P = Print mailing labels for the current list." },
- { 9, 2, "E = Exit the data entry screen." },
- { 11,2, "Press Any Key" },
- {-1, -1, "" }
- };
-
- static char buff1[11];
- static char buff2[31];
- static char buff3[31];
- static char buff4[31];
- static char buff5[26];
- static char buff6[3];
- static char buff7[11];
- static char buff8[13];
- static char buff9[13];
- static char buff10[4];
-
- static MAIL_REC q_mail_rec, mail_rec, sav_mail_rec;
-
- FIELD maillst_act[] = {
- { 3, 16, ISM_LONG_TYPE, buff1, 10, LEFTJUST, &mail_rec.num },
- { 4, 16, ISM_CHAR_TYPE, buff2, 30, DEFAULT, mail_rec.name },
- { 5, 16, ISM_CHAR_TYPE, buff3, 30, DEFAULT, mail_rec.addr1 },
- { 6, 16, ISM_CHAR_TYPE, buff4, 30, DEFAULT, mail_rec.addr2 },
- { 7, 16, ISM_CHAR_TYPE, buff5, 25, DEFAULT, mail_rec.city },
- { 8, 16, ISM_CHAR_TYPE, buff6, 2, DEFAULT, mail_rec.state },
- { 9, 16, ISM_CHAR_TYPE, buff7, 10, DEFAULT, mail_rec.zip },
- { 10, 16, ISM_CHAR_TYPE, buff8, 12, DEFAULT, mail_rec.phone },
- { 11, 16, ISM_CHAR_TYPE, buff9, 12, DEFAULT, mail_rec.fax },
- { 12, 16, ISM_CHAR_TYPE, buff10, 3, DEFAULT, mail_rec.type },
- { -1,-1 },
- };
-
- void cdecl update_stat( int wStat, char *msg, ... );
- void ShowHelp( void );
-
- /*---------------------------------------------------------------------
- Function Actions
- ---------------------------------------------------------------------*/
- void Actions( int wHandle, int wStat, int fhdl )
- {
- int y,x,a,rc,chr;
- long rec_num;
- long recs_found;
- int wPrint;
- union
- {
- char scan[2];
- int ch;
- }ch;
-
- FldNullRec( maillst_act );
-
- while(( ch.ch = toupper(getch())) != 'E' )
- {
- if( !ch.ch )
- ch.scan[1] = getch();
- /* Clear the stat line every time */
- update_stat( wStat, "" );
-
- switch( ch.ch )
- {
- case FN1:
- ShowHelp();
- break;
-
- case 'S':
- Screen( &wHandle, PUT_STRING, 1, 2,
- "<enter> = Execute Search <esc> = Cancel Search ", 0X16 );
- Screen( &wHandle, REFRESH_WINDOW, 1, 2, 54, 1 );
-
- memcpy( (void *)&sav_mail_rec, (void *)&mail_rec, sizeof(MAIL_REC));
- FldNullRec( maillst_act );
- FldData2Pictures( maillst_act );
- FldShowFields( &wHandle, maillst_act );
-
- switch( FldGoFields( &wHandle, maillst_act, 0x70 ))
- {
- case ESC:
- update_stat( wStat, "Operation Canceled" );
- memcpy( (void *)&mail_rec, (void *)&sav_mail_rec, sizeof(MAIL_REC));
- break;
- case RETURN:
- recs_found = FldQueryFile( fhdl, maillst_act, &q_mail_rec );
- ISMFetchRec( fhdl, &mail_rec, FldFetchFirst() );
- update_stat( wStat, "%ld Records Found",recs_found );
- break;
- }
- break;
-
- case 'A':
- Screen( &wHandle, PUT_STRING, 1, 2,
- "<enter> = Execute Add <esc> = Cancel Add ", 0X16 );
- Screen( &wHandle, REFRESH_WINDOW, 1, 2, 54, 1 );
-
- memcpy( (void *)&sav_mail_rec, (void *)&mail_rec, sizeof(MAIL_REC));
- FldNullRec( maillst_act );
- FldData2Pictures( maillst_act );
- FldShowFields( &wHandle, maillst_act );
-
- switch( FldGoFields( &wHandle, maillst_act, 0x70 ))
- {
- case ESC:
- update_stat( wStat, "Operation Canceled" );
- memcpy( (void *)&mail_rec, (void *)&sav_mail_rec, sizeof(MAIL_REC));
- break;
-
- case RETURN:
- rc = ISMAddRec( fhdl, &mail_rec, &rec_num );
- if( rc == ERROR )
- update_stat( wStat,"Error: Could not Add Record" );
- else
- {
- FldAddNode( rec_num );
- update_stat( wStat,"Record Added" );
- }
- }
- break;
-
- case 'U':
- Screen( &wHandle, PUT_STRING, 1, 2,
- "<enter> = Execute Update <esc> = Cancel Update ", 0X16 );
- Screen( &wHandle, REFRESH_WINDOW, 1, 2, 54, 1 );
-
- memcpy( (void *)&sav_mail_rec, (void *)&mail_rec, sizeof(MAIL_REC));
- FldData2Pictures( maillst_act );
- FldShowFields( &wHandle, maillst_act );
- rec_num = FldCurrNode();
- if( rec_num == -1L )
- update_stat( wStat, "No Current Record" );
- else
-
- switch( FldGoFields( &wHandle, maillst_act, 0x70 ) )
- {
- case ESC:
- update_stat( wStat, "Operation Canceled" );
- memcpy( (void *)&mail_rec, (void *)&sav_mail_rec,
- sizeof(MAIL_REC));
- break;
- case RETURN:
- rc = ISMWriteRec( fhdl, &mail_rec, rec_num );
- if( rc == ERROR )
- update_stat( wStat,"Error: Could Not Update Record" );
- else
- update_stat( wStat,"Record Updated" );
- break;
- }
- break;
-
- case 'F':
- rec_num = FldFetchNext();
- if( rec_num != -1L )
- ISMFetchRec( fhdl, &mail_rec, rec_num );
- else
- update_stat( wStat,"No More Rows This in Direction" );
- break;
-
- case 'B':
- rec_num = FldFetchPrev();
- if( rec_num != -1L )
- ISMFetchRec( fhdl, &mail_rec, rec_num );
- else
- update_stat( wStat,"No More Rows This in Direction" );
- break;
-
- case 'D':
- rec_num = FldCurrNode();
- if( rec_num == -1L )
- update_stat( wStat,"No Current Record" );
- else
- {
- Screen( &wHandle, GET_CURSOR_ABS, &x, &y, &a );
- Screen( &wHandle, PUT_STRING, 1, 2,
- "Delete Current Record ? (Y/N) ", 0X16 );
- Screen( &wHandle, SET_CURSOR, 1, 26 );
- Screen( &wHandle, REFRESH_WINDOW, 1, 2, 54, 1 );
-
- if( toupper(getch()) == 'Y')
- {
- rc = ISMDelRec( fhdl, rec_num );
- if( rc == ERROR )
- update_stat( wStat,"Error during ISMDelRec" );
- else
- {
- FldDelCurrNode();
- FldNullRec( maillst_act );
- update_stat( wStat,"Record Deleted" );
- }
- }
- Screen( &wHandle, SET_CURSOR_ABS, x, y, a );
- }
- break;
-
- case 'P':
- rec_num = FldCurrNode();
- if( rec_num != -1L )
- {
- memcpy( (void *)&sav_mail_rec, (void *)&mail_rec, sizeof(MAIL_REC));
- Screen( &wPrint, CREATE_WINDOW, 8, 29, 22, 4, 0x74, 2 );
- Screen( &wPrint, PUT_STRING, 0, 7, " Print ", 0 );
- Screen( &wPrint, PUT_STRING, 1, 3, "(O)ne Up Labels", 0x70 );
- Screen( &wPrint, PUT_STRING, 2, 5, "(E)nvelope", 0x70 );
- Screen( &wPrint, OPEN_WINDOW, 1 );
- chr = toupper(getch());
- Screen( &wPrint, CLOSE_WINDOW );
- Screen( &wPrint, DESTROY_WINDOW );
- if( chr == 'E' )
- {
- ISMFetchRec( fhdl, &mail_rec, rec_num );
- rc = Envelope( &mail_rec );
- }
- else if( chr == 'O' )
- {
- rec_num = FldFetchFirst();
- while( ISMFetchRec( fhdl, &mail_rec, rec_num ) != ERROR )
- {
- rc = OneUp( &mail_rec );
- if( rc == ERROR )
- break;
-
- rec_num = FldFetchNext();
- }
- }
- }
- else
- update_stat( wStat,"No Records in Current List" );
- break;
- }
-
- FldData2Pictures( maillst_act );
- FldShowFields( &wHandle, maillst_act );
- Screen( &wHandle, PUT_STRING, 1, 2,
- "(S)earch (A)dd (U)pdate (D)elete (P)rint (E)xit", 0X17 );
- Screen( &wHandle, REFRESH_WINDOW, 1, 2, 54, 1 );
- }
-
- }
-
- void cdecl update_stat( int wStat, char *msg, ... )
- {
- va_list argp;
- char buff[80];
- char buff2[80];
-
- va_start(argp, msg);
-
- vsprintf( buff2, msg, argp );
-
- sprintf( buff, "Help = FN1 %*.*s", 47, 47, buff2 );
-
- Screen( &wStat, PUT_STRING, 0, 1, buff, 0x70 );
- Screen( &wStat, REFRESH_WINDOW, 0,0,60,1 );
- }
-
- /*------------------------------------------------------------------------
- Function: ShowHelp()
- -----------------------------------------------------------------------*/
- void ShowHelp()
- {
- int wHelp,x,y,a;
- int top = 6, left = 15, width = 50, depth = 13;
-
- Screen( &wHelp, GET_CURSOR_ABS, &y, &x, &a);
-
- Screen( &wHelp, CREATE_WINDOW, top, left, width, depth, 0x74, 0 );
-
- Screen( &wHelp, PUT_STRING, 0, (width-6)/2," Help ", 0x74 );
-
- WriteStrings( &wHelp, help, 0x70 );
-
- Screen( &wHelp, SET_CURSOR, 11, 17 );
-
- Screen( &wHelp, OPEN_WINDOW, 1 );
-
- getch();
-
- Screen( &wHelp, CLOSE_WINDOW );
-
- Screen( &wHelp, DESTROY_WINDOW );
-
- Screen( &wHelp, SET_CURSOR_ABS, y, x, a );
- }
-
- /*------------------------------------------------------------------------
- Function: OneUp()
- ------------------------------------------------------------------------*/
- int OneUp( MAIL_REC *mail_rec )
- {
- char wbuff[80];
- char buff38[80];
- char buff39[80];
- char buff40[80];
- int add_lines = 0;
-
- fflush( stdprn );
-
- ISMGetField( &mail_rec->num, ISM_LONG_TYPE, buff38, 5 );
- sprintf( wbuff, " %s\n", buff38 );
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->name, ISM_CHAR_TYPE, buff38, 30 );
- sprintf( wbuff, "%s\n", buff38 );
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->addr1, ISM_CHAR_TYPE, buff38, 30 );
- sprintf( wbuff, "%s\n", buff38 );
- if( strlen( wbuff ) > 1 )
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- else
- add_lines++;
-
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->addr2, ISM_CHAR_TYPE, buff38, 30 );
- sprintf( wbuff, "%s\n", buff38 );
- if( strlen( wbuff ) > 1 )
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- else
- add_lines++;
-
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->city, ISM_CHAR_TYPE, buff38, 25 );
- ISMGetField( mail_rec->state, ISM_CHAR_TYPE, buff39, 2 );
- ISMGetField( mail_rec->zip, ISM_CHAR_TYPE, buff40, 10 );
- sprintf( wbuff, "%s %s %s\n\n\n\n\n", buff38, buff39, buff40 );
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- fwrite( "\n\n", sizeof(char), add_lines, stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- fflush( stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- return OK;
- }
-
- /*------------------------------------------------------------------------
- Function: Envelope()
- ------------------------------------------------------------------------*/
- int Envelope( MAIL_REC *mail_rec )
- {
- char wbuff[256];
- char buff38[80];
- char buff39[80];
- char buff40[80];
- int add_lines = 0;
-
- fflush( stdprn );
-
- sprintf( wbuff, "NyTower Software\nP.O Box 206\nExton Pa 19341-1614\n\n\n\n\n\n\n");
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->name, ISM_CHAR_TYPE, buff38, 30 );
- sprintf( wbuff, " %s\n\n", buff38 );
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->addr1, ISM_CHAR_TYPE, buff38, 30 );
- sprintf( wbuff, " %s\n\n", buff38 );
- if( strlen( wbuff ) > 36 )
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- else
- add_lines++;
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->addr2, ISM_CHAR_TYPE, buff38, 30 );
- sprintf( wbuff, " %s\n\n", buff38 );
- if( strlen( wbuff ) > 36 )
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- else
- add_lines++;
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- ISMGetField( mail_rec->city, ISM_CHAR_TYPE, buff38, 25 );
- ISMGetField( mail_rec->state,ISM_CHAR_TYPE, buff39, 2 );
- ISMGetField( mail_rec->zip, ISM_CHAR_TYPE, buff40, 10 );
- sprintf( wbuff, " %s %s %s\n",
- buff38, buff39, buff40 );
- fwrite( wbuff, sizeof(char), strlen(wbuff), stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- /*
- fwrite( "\n\n", sizeof(char), add_lines, stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
- */
-
- fflush( stdprn );
- if( CriticalError ) { CriticalError = FALSE; return ERROR; }
-
- return OK;
- }
-