home *** CD-ROM | disk | FTP | other *** search
- ; /* you can execute this file to compile it (if you're using lattice/SAS C )
- lc test
- blink from LIB:c.o test.o LIB LIB:lcm.lib LIB:lc.lib LIB:amiga.lib
- quit
- */
-
- #include <MYLIB:ISAMLibPROTO.h>
- #include <stdio.h>
-
- struct Library *ISAMBase = NULL;
-
- /* remove proto parm-names if your compiler can't handle them. */
- /* remove protos entirely, " " " " " " */
-
- void FFlush ( void );
- void FlushScan ( char *fmt, void *ptr );
- void FillOut ( char *str, int strlen, int len );
- void HandlePrefix ( int keyno, void **ppprefix, int *pplen );
- void HandleKey ( int keyno, void **ppkey );
- void HandleRange ( int keyno, int itertype, void **ppfrom, void **ppto );
- int main ( int argc, char *(argv[]) );
-
- struct Employee {
- /* 00 */ char Class;
- /* 01 */ char LastName [15];
- /* 16 */ char FirstName[16];
- /* 32 */ double Salary;
- /* 40 */ ULONG EmpNo;
- /* 44 */ char SSN [9];
- }; /* 53 */
-
- #define MAXKEYNO 3
-
- char str80[81];
- int len, i, select, keyno;
- long ErrorCode;
- ULONG RecNo, CountMax, Count;
-
- char c, from [17], to [17], key [17], prefix [17];
- char KeyReturn [17]; /* enough for largest key, plus 1 */
- void *KeyRet = &KeyReturn[0];
-
- void *pfrom, *pto, *pkey, *pprefix;
- int itertype;
- ULONG ISAMHandle, ulfrom, ulto, ulkey;
- char SpecsFileName [] = "DATA:Employee.specs";
- BOOL Lockk;
- double dfrom, dto, dkey;
- struct Employee Rec, tmpRec;
-
-
- /*--------------------------------- FFlush -----------------------------------*/
- void FFlush ()
- /* if any string output is cut off because it's too long ( Ex: "%16s") */
- /* we don't want the overflow to count for part of the next scanf. */
- {
- char c;
-
- while ( (c=getchar ( )) != '\n' )
- ;
-
- return;
- }
-
-
- /*------------------------------ FlushScan ----------------------------------*/
- void FlushScan ( fmt, ptr )
-
- /* this function preforms a scan, and flushes anything past the first */
- /* whitespace, so we don't start assigning extra input to the next scanf. */
-
- char *fmt;
- void *ptr;
- {
- scanf ( fmt, ptr );
- FFlush ();
- }
-
-
- /*-------------------------------- FillOut ----------------------------------*/
- void FillOut ( str, strlen, len )
- char *str;
- int strlen, len;
- {
- int i;
-
-
- if ( ( str == NULL ) || ( len == 0 ) )
- return;
-
- for ( i=strlen; i<len; i++ )
- str[i] = ' ';
-
- return;
- }
-
-
- /*------------------------------ HandlePrefix -------------------------------*/
- void HandlePrefix ( keyno, ppprefix, plen )
- int keyno, *plen;
- void **ppprefix;
- {
- switch ( keyno )
- {
- case 0 :
- printf ( "\nprefix :" );
- FlushScan ( "%16s", &prefix );
- len = strlen ( prefix );
- *ppprefix = &prefix[0];
- *plen = len;
- printf ( "\n'%s'", prefix );
- printf ( "\n" );
- break;
-
- case 3 :
- printf ( "\nprefix :" );
- FlushScan ( "%9s", &prefix );
- len = strlen ( prefix );
- *ppprefix = &prefix[0];
- *plen = len;
- printf ( "\n'%s'", prefix );
- printf ( "\n" );
- break;
-
- default:
- break;
- }
-
- return;
- }
-
-
- /*------------------------------ HandleKey -------------------------------*/
- void HandleKey ( keyno, ppkey )
- int keyno;
- void **ppkey;
- {
- switch ( keyno )
- {
- case 0 :
- printf ( "\nkey :" );
- FlushScan ( "%16s", &key );
- FillOut ( key, strlen ( key ), 16 );
- *ppkey = &key[0];
- printf ( "\n'%16.16s'", key );
- printf ( "\n" );
- break;
-
- case 1 :
- printf ( "\nkey :" );
- FlushScan ( "%lf", &dkey );
- *ppkey = &dkey;
- printf ( "\n%8.2lf", dkey );
- printf ( "\n" );
- break;
-
- case 2 :
- printf ( "\nkey :" );
- FlushScan ( "%lu", &ulkey );
- *ppkey = &ulkey;
- printf ( "\n%lu", ulkey );
- printf ( "\n" );
- break;
-
- case 3 :
- printf ( "\nkey :" );
- FlushScan ( "%9s", &key );
- FillOut ( key, strlen ( key ), 9 );
- *ppkey = &key[0];
- printf ( "\n'%9.9s'", key );
- printf ( "\n" );
- break;
-
- default:
- break;
- }
-
- return;
- }
-
-
- /*----------------------------- HandleRange ------------------------------*/
- void HandleRange ( keyno, itertype, ppfrom, ppto )
- int keyno, itertype;
- void **ppfrom, **ppto;
- {
- *ppfrom = NULL;
- *ppto = NULL;
-
- switch ( keyno )
- {
- case 0 :
- if ( (itertype == 1) || ((itertype >=4) && (itertype <=9)) )
- {
- printf ( "\nfrom :" );
- FlushScan ( "%16s", &from );
- FillOut ( from, strlen ( from ), 16 );
- *ppfrom = &from[0];
- printf ( "\n'%16.16s'", from );
- printf ( "\n" );
- }
-
- if ( (itertype >=2) && (itertype <=7) )
- {
- printf ( "\nto :" );
- FlushScan ( "%16s", &to );
- FillOut ( to, strlen ( to ), 16 );
- *ppto = &to[0];
- printf ( "\n'%16.16s'", to );
- printf ( "\n" );
- }
- break;
-
-
- case 3 :
- if ( (itertype == 1) || ((itertype >=4) && (itertype <=9)) )
- {
- printf ( "\nfrom :" );
- FlushScan ( "%9s", &from );
- FillOut ( from, strlen ( from ), 9 );
- *ppfrom = &from[0];
- printf ( "\n'%9.9s'", from );
- printf ( "\n" );
- }
-
- if ( (itertype >=2) && (itertype <=7) )
- {
- printf ( "\nto :" );
- FlushScan ( "%9s", &to );
- FillOut ( to, strlen ( to ), 9 );
- *ppto = &to[0];
- printf ( "\n'%9.9s'", to );
- printf ( "\n" );
- }
- break;
-
-
- case 1 :
- if ( (itertype == 1) || ((itertype >=4) && (itertype <=9)) )
- {
- printf ( "\nfrom :" );
- FlushScan ( "%lf", &dfrom );
- *ppfrom = &dfrom;
- printf ( "\n%8.2lf", dfrom );
- printf ( "\n" );
- }
-
- if ( (itertype >=2) && (itertype <=7) )
- {
- printf ( "\nto :" );
- FlushScan ( "%lf", &dto );
- *ppto = &dto;
- printf ( "\n%8.2lf", dto );
- printf ( "\n" );
- }
- break;
-
-
- case 2 :
- if ( (itertype == 1) || ((itertype >=4) && (itertype <=9)) )
- {
- printf ( "\nfrom :" );
- FlushScan ( "%lu", &ulfrom );
- *ppfrom = &ulfrom;
- printf ( "\n%lu", ulfrom );
- printf ( "\n" );
- }
-
- if ( (itertype >=2) && (itertype <=7) )
- {
- printf ( "\nto :" );
- FlushScan ( "%lu", &ulto );
- *ppto = &ulto;
- printf ( "\n%lu", ulto );
- printf ( "\n" );
- }
- break;
-
-
- default:
- break;
- }
-
- return;
- }
-
-
- /*
- ==================================== MAIN =================================
- */
-
- main ( argc, argv )
- int argc;
- char *(argv[]);
- {
- if ( (ISAMBase = OpenLibrary ( "isam.library", 0 )) == NULL )
- {
- printf ( "\nCouldn't open ISAM library.\n\n" );
- exit ( 5 );
- }
-
- for (;;)
- {
- printf ( "\n" );
- printf ( "\n1 : OpenISAMFile 12 : ReadNextISAMKey" );
- printf ( "\n2 : StoreISAMRecord 13 : DeleteISAMRecords" );
- printf ( "\n3 : ModifyISAMRecord 14 : LockISAMFile" );
- printf ( "\n4 : DeleteISAMRecord 15 : UnLockISAMFile" );
- printf ( "\n5 : ReadISAMRecord 16 : LockISAMRecord" );
- printf ( "\n6 : ReadUniqueISAMRecord 17 : UnLockISAMRecord" );
- printf ( "\n7 : SetUpISAMIterationRange 18 : UnLockAllISAMRecords" );
- printf ( "\n8 : SetUpISAMIterationKey 19 : CloseISAMFile" );
- printf ( "\n9 : SetUpISAMIterationPrefix 20 : " );
- printf ( "\n10 : CountISAMRecords 21 : " );
- printf ( "\n11 : ReadNextISAMRecord 22 : " );
- printf ( "\n\n0 : exit\n\nSELECT ?" );
-
- FlushScan ( "%d", &select );
- printf ( "\n" );
-
-
- if ( select == 0 )
- break;
-
-
-
- switch ( select )
- {
- case 1 :
- printf ( "\nLock ( 1: No, 2: Yes ) ?" );
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == 1 )
- Lockk = FALSE;
- else if ( i == 2 )
- {
- Lockk = TRUE;
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", &c );
- c = toupper ( c );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
- }
- else break;
-
- printf ( "\nEnter a number to OpenISAMFile: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = OpenISAMFile ( SpecsFileName, Lockk, c,
- TRUE, &ISAMHandle )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 2 :
- printf ( "\nEmployee Class ?" );
- FlushScan ( "%1s", str80 );
- Rec.Class = str80[0];
-
- printf ( "\nLast Name ?" );
- FlushScan ( "%15s", str80 );
- FillOut ( str80, strlen ( str80 ), 15 );
- strncpy ( Rec.LastName, str80, 15 );
-
- printf ( "\nFirst Name ?" );
- FlushScan ( "%16s", str80 );
- FillOut ( str80, strlen ( str80 ), 16 );
- strncpy ( Rec.FirstName, str80, 16 );
-
- printf ( "\nSalary ?" );
- FlushScan ( "%lf", &Rec.Salary );
-
- printf ( "\nEmployee Number ?" );
- FlushScan ( "%lu", &Rec.EmpNo );
-
- printf ( "\nSocial Security # ?" );
- FlushScan ( "%9s", str80 );
- FillOut ( str80, strlen ( str80 ), 9 );
- strncpy ( Rec.SSN, str80, 9 );
-
- printf ( "\nLock ( 1: No, 2: Yes ) ?" );
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == 1 )
- Lockk = FALSE;
- else if ( i == 2 )
- {
- Lockk = TRUE;
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", &c );
- c = toupper ( c );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
- }
- else break;
-
- printf ( "\nEnter a number to StoreISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- ErrorCode = StoreISAMRecord ( ISAMHandle, &Rec, Lockk, c, &RecNo );
- switch ( ErrorCode )
- {
- case ERROR_RECORD_EXISTS :
- printf ( "\nAn Employee already exists with that EmpNo or SSN#.");
- printf ( "\n(A Record exists with the same Unique key value.)" );
- break;
-
- case OK :
- printf ( "\nRecord# %lu", RecNo );
- break;
-
- default :
- printf ( "\nError %ld.", ErrorCode );
- break;
- }
- break;
-
-
- case 3 :
- printf ( "\nRec# :" );
- FlushScan ( "%lu", &RecNo );
- printf ( "\n" );
-
- ErrorCode = ReadISAMRecord ( ISAMHandle, RecNo, FALSE, ' ', &tmpRec );
- switch ( ErrorCode )
- {
- case ERROR_DELETED_RECORD :
- printf ( "\nThat record has been deleted." );
- break;
-
- case ERROR_RECORD_TOO_HIGH :
- printf ( "\nThat record number is too high." );
- break;
-
- case OK :
- break;
-
- default:
- printf ( "\nError %ld.", ErrorCode );
- }
-
- printf ( "\nEmployee Class ?\n" );
- printf ( "%c\n", tmpRec.Class );
- FlushScan ( "%1s", str80 );
- Rec.Class = str80[0];
- printf ( "\n" );
-
- printf ( "\nLast Name ?\n" );
- printf ( "%15.15s\n", tmpRec.LastName );
- FlushScan ( "%15s", str80 );
- FillOut ( str80, strlen ( str80 ), 15 );
- strncpy ( Rec.LastName, str80, 15 );
-
- printf ( "\n" );
- printf ( "\nFirst Name ?\n" );
- printf ( "%16.16s\n", tmpRec.FirstName );
- FlushScan ( "%16s", str80 );
- FillOut ( str80, strlen ( str80 ), 16 );
- strncpy ( Rec.FirstName, str80, 16 );
-
- printf ( "\n" );
- printf ( "\nSalary ?\n" );
- printf ( "%8.2lf\n", tmpRec.Salary );
- FlushScan ( "%lf", &Rec.Salary );
- printf ( "\n" );
-
- printf ( "\nEmployee Number ?\n" );
- printf ( "%9lu\n", tmpRec.EmpNo );
- FlushScan ( "%lu", &Rec.EmpNo );
- printf ( "\n" );
-
- printf ( "\nSocial Security # ?" );
- printf ( "%9.9s\n", tmpRec.SSN );
- FlushScan ( "%9s", str80 );
- FillOut ( str80, strlen ( str80 ), 9 );
- strncpy ( Rec.SSN, str80, 9 );
-
-
- printf ( "\nEnter a number to ModifyISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- ErrorCode = ModifyISAMRecord ( ISAMHandle, RecNo, &Rec );
- switch ( ErrorCode )
- {
- case ERROR_RECORD_EXISTS :
- printf ( "\nAn Employee already exists with that EmpNo or SSN#.");
- printf ( "\n(A Record exists with the same Unique key value.)" );
- break;
-
- case OK :
- printf ( "\nRecord Modified." );
- break;
-
- default :
- printf ( "\nError %ld.", ErrorCode );
- break;
- }
- break;
-
-
- case 4 :
- printf ( "\nRec# :" );
- FlushScan ( "%lu", &RecNo );
- printf ( "\n" );
-
- printf ( "\nEnter a number to DeleteISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- ErrorCode = DeleteISAMRecord ( ISAMHandle, RecNo );
- switch ( ErrorCode )
- {
- case ERROR_DELETED_RECORD :
- printf ( "\nThat record has been deleted." );
- break;
-
- case ERROR_RECORD_TOO_HIGH :
- printf ( "\nThat record number is too high." );
- break;
-
- case OK :
- printf ( "\nRecord deleted." );
- break;
-
- default:
- printf ( "\nError %ld.", ErrorCode );
- }
- break;
-
-
- case 5 :
- printf ( "\nRec# :" );
- FlushScan ( "%lu", &RecNo );
- printf ( "\n" );
-
- printf ( "\nLock ( 1: No, 2: Yes ) ?" );
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == 1 )
- Lockk = FALSE;
- else if ( i == 2 )
- {
- Lockk = TRUE;
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", &c );
- c = toupper ( c );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
- }
- else break;
-
- printf ( "\nEnter a number to ReadISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- ErrorCode = ReadISAMRecord ( ISAMHandle, RecNo, Lockk, c, &Rec );
- switch ( ErrorCode )
- {
- case ERROR_DELETED_RECORD :
- printf ( "\nThat record has been deleted." );
- break;
-
- case ERROR_RECORD_TOO_HIGH :
- printf ( "\nThat record number is too high." );
- break;
-
- case OK :
- printf ( "\nClass : '%c'", Rec.Class );
- printf ( "\nLast Name : '%15.15s'", Rec.LastName );
- printf ( "\nFirst Name : '%16.16s'", Rec.FirstName );
- printf ( "\nSalary : %8.2lf", Rec.Salary );
- printf ( "\nEmployee # : %9u", Rec.EmpNo );
- printf ( "\nSS # : '%9.9s'", Rec.SSN );
- printf ( "\n" );
- break;
-
- default:
- printf ( "\nError %ld.", ErrorCode );
- }
- break;
-
-
- case 6 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\nkeyno= '%d' ", keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
- if ( keyno < 2 )
- {
- printf ( "\nKey not unique." );
- break;
- }
-
- switch ( keyno )
- {
- case 2 :
- printf ( "\nkey :" );
- FlushScan ( "%lu", &ulkey );
- pkey = &ulkey;
- printf ( "\n%lu", ulkey );
- printf ( "\n" );
- break;
-
- case 3 :
- printf ( "\nkey :" );
- FlushScan ( "%9s", &key );
- FillOut ( key, strlen ( key ), 9 );
- pkey = &key[0];
- printf ( "\n'%9.9s'", key );
- printf ( "\n" );
- break;
-
- default:
- break;
- }
-
- printf ( "\nLock ( 1: No, 2: Yes ) ?" );
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == 1 )
- Lockk = FALSE;
- else if ( i == 2 )
- {
- Lockk = TRUE;
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", str80 );
- c = toupper ( str80[0] );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
- }
- else break;
-
- printf ( "\nEnter a number to ReadUniqueISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- ErrorCode = ReadUniqueISAMRecord ( ISAMHandle, keyno, pkey,
- Lockk, c, &RecNo, &Rec );
- switch ( ErrorCode )
- {
- case ERROR_NO_SUCH_RECORD :
- printf ( "\nNo such record." );
- break;
-
- case OK :
- printf ( "\nClass : '%c'", Rec.Class );
- printf ( "\nLast Name : '%15.15s'", Rec.LastName );
- printf ( "\nFirst Name : '%16.16s'", Rec.FirstName );
- printf ( "\nSalary : %8.2lf", Rec.Salary );
- printf ( "\nEmployee # : %9u", Rec.EmpNo );
- printf ( "\nSS # : '%9.9s'", Rec.SSN );
- printf ( "\n" );
-
- break;
- default :
- printf ( "\nError %ld.", ErrorCode );
- break;
- }
- break;
-
-
- case 7 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\nkeyno= '%d' ", keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
-
- printf ( "\nitertype (0-9) :" );
- FlushScan ( "%d", &itertype );
- printf ( "\n" );
- if ( itertype > 9 )
- break;
-
- HandleRange ( keyno, itertype, &pfrom, &pto );
-
- printf ( "\nEnter a number to SetUpISAMIterationRange: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = SetUpISAMIterationRange ( ISAMHandle, (UWORD) keyno,
- (UBYTE) itertype, pfrom, pto )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 8 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
-
- HandleKey ( keyno, &pkey );
-
- printf ( "\nEnter a number to SetUpISAMIterationKey: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = SetUpISAMIterationKey ( ISAMHandle, (UWORD) keyno,
- pkey )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 9 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
- if ( (keyno == 1 ) || ( keyno == 2 ) )
- break;
-
- HandlePrefix ( keyno, &pprefix, &len );
-
- printf ( "\nEnter a number to SetUpISAMIterationPrefix: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = SetUpISAMIterationPrefix ( ISAMHandle, (UWORD) keyno,
- pprefix, len )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 10 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
-
- printf ( "\nStop Counting at how many records:" );
- FlushScan ( "%lu", &CountMax );
- printf ( "\n" );
-
- printf ( "\nEnter a number to CountISAMRecords: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = CountISAMRecords ( ISAMHandle, (UWORD) keyno,
- CountMax, &Count )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- else
- printf ( "\n%lu Records.", Count );
- break;
-
-
- case 11 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
-
- printf ( "\nLock ( 1: No, 2: Yes ) ?" );
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == 1 )
- Lockk = FALSE;
- else if ( i == 2 )
- {
- Lockk = TRUE;
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", str80 );
- c = toupper ( str80[0] );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
- }
- else break;
-
- printf ( "\nEnter a number to ReadNextISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- printf (
- "\n RecNo C ---Last Name--- ---First Name--- -Salary- Employee# SocSecNum" );
-
- do
- {
- ErrorCode = ReadNextISAMRecord ( ISAMHandle, (UWORD) keyno,
- Lockk, c, &RecNo, &Rec );
- switch ( ErrorCode )
- {
- case OK :
- printf ( "\n %5lu %c %15.15s %16.16s %8.2lf %9lu %9.9s",
- RecNo, Rec.Class, Rec.LastName, Rec.FirstName,
- Rec.Salary, Rec.EmpNo, Rec.SSN );
- break;
-
- case ERROR_NO_MORE_RECORDS :
- break;
-
- default :
- printf ( "\nError %ld.", ErrorCode );
- break;
- }
- }
- while ( ErrorCode == OK );
- break;
-
-
- case 12 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
-
- printf ( "\nEnter a number to ReadNextISAMKey: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- do
- {
- ErrorCode = ReadNextISAMKey ( ISAMHandle, (UWORD) keyno,
- &RecNo, KeyRet );
- switch ( ErrorCode )
- {
- case OK :
- printf ( "\nRecord# %5lu : ", RecNo );
- switch ( keyno )
- {
- case 0 : printf ( "'%16.16s'", (char *) KeyRet ); break;
- case 1 : printf ( "%8.2lf", *((double *) KeyRet) );break;
- case 2 : printf ( "%9lu", *((ULONG *) KeyRet) ); break;
- case 3 : printf ( "'%9.9s'", (char *) KeyRet ); break;
-
- default: break;
- }
- break;
-
- case ERROR_NO_MORE_RECORDS :
- printf ( "\n" );
- break;
-
- default :
- printf ( "\nError %ld.", ErrorCode );
- break;
- }
- }
- while ( ErrorCode == OK );
- break;
-
-
- case 13 :
- printf ( "\nkeyno (0-%d) :", MAXKEYNO );
- FlushScan ( "%d", &keyno );
- printf ( "\n" );
- if ( keyno > MAXKEYNO )
- break;
-
- printf ( "\nEnter a number to DeleteISAMRecords: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = DeleteISAMRecords ( ISAMHandle, (UWORD) keyno,
- &Count )) != OK )
- printf ( "\nError %ld", ErrorCode );
- else
- printf ( "\n%lu Records Deleted.", Count );
- break;
-
-
- case 14 :
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", str80 );
- c = toupper ( str80[0] );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
-
- printf ( "\nEnter a number to LockISAMFile: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = LockISAMFile ( ISAMHandle, c )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 15 :
- printf ( "\nEnter a number to UnLockISAMFile: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = UnLockISAMFile ( ISAMHandle )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 16 :
- printf ( "\nRec# :" );
- FlushScan ( "%lu", &RecNo );
- printf ( "\n" );
-
- printf ( "\nLockType ( W/R ) ?" );
- FlushScan ( "%1s", str80 );
- c = toupper ( str80[0] );
- if ( ( c != 'W' ) && ( c != 'R' ) )
- break;
-
- printf ( "\nEnter a number to LockISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = LockISAMRecord ( ISAMHandle, RecNo, c )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 17 :
- printf ( "\nRec# :" );
- FlushScan ( "%lu", &RecNo );
- printf ( "\n" );
-
- printf ( "\nEnter a number to UnLockISAMRecord: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = UnLockISAMRecord ( ISAMHandle, RecNo )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 18 :
- printf ( "\nEnter a number to UnLockAllISAMRecords: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = UnLockAllISAMRecords ( ISAMHandle )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- case 19 :
- printf ( "\nEnter a number to CloseISAMFile: ");
- FlushScan ( "%d", &i );
- printf ( "\n" );
- if ( i == -1 )
- break;
-
- if (( ErrorCode = CloseISAMFile ( ISAMHandle )) != OK )
- printf ( "\nError %ld.", ErrorCode );
- break;
-
-
- default :
- break;
- }
-
- } /* for */
-
-
- CloseLibrary ( ISAMBase );
-
- printf ( "\n\n" );
-
- return;
- }
-