Using KSAM/XL and KSAM 64 (32650-90886)

Appendix C 267
HP C/iX Example Program
HPCICOMMAND("PURGE " FILENAME "\r", &cmderror, , 2);
assert(!cmderror || cmderror==-383);
/* Create new KSAM XL file, output access, 44-byte
ASCII records, limit = 100, save disposition */
HPFOPEN(&filenum, &status,
2, "-" FILENAME "-",
10, &ksamxl,
11, &out,
19, &recsize,
35, &filesize,
50, &save,
53, &ascii,
54, &ksamparam);
assert(!status);
/* Write test data to file */
for (i=0; i<test_items; ++i)
write_record(test_data[i]);
printf("\n");
/* Close file */
FCLOSE(filenum, 0, 0);
assert(ccode()==CCE);
}
static void delete_records(void)
{
/* Delete records for several employees */
const char delete_data[][5] = {"33678", "03452"};
const int delete_items =
sizeof delete_data / sizeof delete_data[0];
int i;
record_t buffer;
for (i=0; i<delete_items; ++i)
{
printf("Deleting employee %.5s: ", delete_data[i]);
lock_file();
FREADBYKEY(filenum, buffer, - sizeof buffer,
delete_data[i], 0);
assert(ccode()==CCE);
printf("%.20s\n", buffer+5);
FREMOVE(filenum);
assert(ccode()==CCE);
unlock_file();
}
printf("\n");
}
static void dump_file(void)
{
/* List the file several different ways */
list_sequential_primary();
list_sequential_secondary(6);
list_sequential_secondary(35);
}
static void list_sequential(void)
{
/* List the file, looping on FREAD until end-of-data */
int save_ccode;
record_t buffer;
for (;;)
{