char editcell(celltype cell) { int x,y; long z; char ch; char sharestring[12]; int pageint; if (page == PAGEUP || sys.screen == SCREEN2 || cell.row < 8) pageint = 0; else pageint = 15; x = endcell(cell.col)-1; y = cell.row - pageint ; switch (cell.col) {case MONTH : entercell(sys.cell); if (status.data[cell.row-8].month == -1 && cell.row != 8 ) status.data[cell.row-8].month = inputmonth(x-2,y,(status.data[cell.row-9].month)-1); else status.data[cell.row-8].month = inputmonth(x-2,y,status.data[cell.row-8].month); wait(); if (sys.screen == SCREEN3) calcvolrow(cell.row); calcrow(cell.row); showrow(cell.row); if ( cell.row != 22 && cell.row != 37) { cell.row += 1; showcell(cell); cell.row = cell.row -1; } /* show date of line below if it had been hidden by showall suppression */ break; case STRIKE : entercell(sys.cell); if (status.stockprice != 4.0) exit(0); status.data[cell.row-8].strike = inputreal(x,y,status.data[cell.row-8].strike,8,sys.decimal); wait(); if (sys.screen == SCREEN3) calcvolrow(cell.row); calcrow(cell.row); showrow(cell.row); break; case VALUEC : getch();break; case VALUEP : getch();break; case HELDC : entercell(sys.cell); if (status.stockprice != 4.0) exit(0); status.data[cell.row-8].heldc = inputinteger(x,y,status.data[cell.row-8].heldc,4); wait(); showcell(sys.cell); break; case HELDP : entercell(sys.cell); if (status.stockprice != 4.0) exit(0); status.data[cell.row-8].heldp = inputinteger(x,y,status.data[cell.row-8].heldp,4); wait(); showcell(sys.cell); break; case STOCKHELD : entercell(sys.cell); z = status.stockheld; z = inputlint(x,y,&z,8); wait(); break; case SHAREPRICE : entercell(sys.cell); status.stockprice = 4.0; getch(); demo(); getch(); break; case VOLATILITY : entercell(sys.cell); status.volatility = inputreal(x,y,status.volatility,5,2); wait(); calcall(); calcalloverval(); showall(); break; case INTEREST : entercell(sys.cell); status.interest= inputreal(x,y,status.interest,5,2); wait(); initdivmtx(0); calcall(); if (sys.screen == SCREEN3) calcallvol(); else recalcvolvalues = TRUE; showall(); break; case DATE : entercell(sys.cell); inputdate(x,y,sys.date); wait(); initdates(); initsizepay(); calcdays(); initdivmtx(0); calcall(); if (sys.screen == SCREEN3) calcallvol(); else recalcvolvalues = TRUE; showall(); break; case SHARESPER : entercell(sys.cell); status.sizepay[y].sharesper= inputinteger(x,y,status.sizepay[y].sharesper,4); if (status.sizepay[y].sharesper < 1) status.sizepay[y].sharesper = 1; wait(); break; case EXPIRYDAY : entercell(sys.cell); sys.expiry[y].eday =inputinteger(x,y,sys.expiry[y].eday,2); if (sys.expiry[y].eday < 1) sys.expiry[y].eday = 1; else if (sys.expiry[y].eday > 31) sys.expiry[y].eday = 28; wait(); initdates(); calcdays(); initdivmtx(0); calcall(); tosavesys = TRUE; showall(); break; case DIVIDENDDAY : entercell(sys.cell); status.sizepay[y].dday=inputinteger(x,y,status.sizepay[y].dday,2); if (status.sizepay[y].dday < 0) status.sizepay[y].dday = 0; else if (status.sizepay[y].dday > 31) status.sizepay[y].dday = 28; wait(); calcdays(); initdivmtx(0); calcall(); showrow(cell.row); break; case DIVIDENDCENTS : entercell(sys.cell); status.sizepay[y].payout = inputinteger(x,y,status.sizepay[y].payout,3); if (status.sizepay[y].payout < 0) status.sizepay[y].payout = 0; wait(); initdivmtx(0); calcall(); showrow(cell.row); break; case VOLC : getch(); break; case VOLP : getch(); break; case MARKETC : entercell(sys.cell); if (status.stockprice != 4.0) exit(0); status.data[cell.row-8].marketc = inputreal(x,y,status.data[cell.row-8].marketc,8,sys.decimal); if (status.data[cell.row-8].marketc < 0) status.data[cell.row-8].marketc = 0; wait(); status.data[cell.row-8].volc = invertvolc(cell.row); calcoverval(cell.row); showrow(cell.row); break; case MARKETP : entercell(sys.cell); if (status.stockprice != 4.0) exit(0); status.data[cell.row-8].marketp = inputreal(x,y,status.data[cell.row-8].marketp,8,sys.decimal); if (status.data[cell.row-8].marketp < 0) status.data[cell.row-8].marketp = 0; wait(); status.data[cell.row-8].volp = invertvolp(cell.row); calcoverval(cell.row); showrow(cell.row); break; } entercell(cell); totals(); showtotals(); if (status.stockprice != 4.0) exit(0); ready(); ch = getch(); return(ch); }
/* ** Called once for each row of an index column; arg contains ** a list of column classids to show for a row with that instance. */ static void per_row_show( char *classid, char *instance, char *sval, i4 perms, PTR arg ) { SIprintf("\n"); showrow( instance, arg ); }