//Filename: modify.c //Developer: Jay Suttiruttana #include "btree.h" /******************************************** getRecord: Prompts user for remaining arguments ********************************************/ void getRecord(Record_type *record) { int field, j, n,ha, i; char ch; char newfield[15]={0}; printf ("\nPlease specify the field to modify (Enter 1 - 6)"); printf ("\n[1]Ryom"); printf ("\n[2]Fanna"); printf ("\n[3]Pincherle"); printf ("\n[4]Type"); printf ("\n[5]Key"); printf ("\n[6]Opus Number\n"); scanf ("%d", &field); printf ("\nEnter the new data: "); getchar(); if (field==1) n= 6; else if (field==2) n = 9; else if (field==3) n = 12; else if (field==4) n = 11; else if (field==5) n = 14; else if (field==6) n = 12; for( j = 0; (j < n) && ((ch = getchar()) != EOF) && (ch != '\n'); j++ ) newfield[j] = ch; for ( ha=j; haRYOM, newfield); break; } case 2: { for (i =0; i <9; i++) record->FANNA[i+1] = newfield[i]; record->FANNA[9] = '\0'; break; } case 3: { for (i =0; i <12; i++) record->PINCHERLE[i+2] = newfield[i]; record->PINCHERLE[12] = '\0'; break; } case 4: { for (i =0; i <11; i++) record->TYPE[i+3] = newfield[i]; record->TYPE[11] = '\0'; break; } case 5: { for (i =0; i <11; i++) record->MUS_KEY[i+4] = newfield[i]; record->MUS_KEY[11] = '\0'; break; } case 6: { for (i =0; i <13; i++) record->OPUS_NUMBER[i+4] = newfield[i]; record->OPUS_NUMBER[13] = '\0'; break; } } return; } void main(int argc, char *argv[]) { page_type page; Record_type record; int found_pos, found_rrn; int root, rec_rrn,key; if (argc !=2) Error("You must enter a RICORDI Number."); btopen(); dta_open(); root = getroot(); key = atoi (argv[1]); if( !btsearch(root, key, &found_rrn, &found_pos) ) Error("KEY not found."); /* Search B-Tree for key number */ btread(found_rrn, &page); /* Read in page containing key number */ rec_rrn = page.item[found_pos].rec_rrn; /* Retrieve record from datafile using */ record = RetrievRec(rec_rrn); /* the record RRN stored with the key */ getRecord(&record); /* Give price quote to user */ save_record(rec_rrn, record); /* Write record to datafile */ dta_close(); btclose(); }