PNAME#REVISION#(1) PNAME#REVISION#(1) NAME pname−spreadsheetcalculator SYNOPSIS pname[-c][-m][-n][-r][-x][file] DESCRIPTION Thespreadsheetcalculatorpnameisbasedonrectangulartablesmuchlikeafinancialspreadsheet. Wheninvokeditpresentsyouwithatableorganizedasrowsandcolumnsofcells.Ifinvoked withoutafileargument,thetableisinitiallyempty.Otherwisefileisreadin(seetheGetcommandbelow).Eachcellmayhaveassociatedwithitanumericvalue,alabelstring,and/oran expression(formula)whichevaluatestoanumericvalueorlabelstring,oftenbasedonothercell values. Foraon-linetutorial,typethecommand: pname#LIBDIR#/tutorial.pname Toprintaquickreferencecard,typethecommand: pnameqref|[yourprintercommmand] OPTIONS −cStarttheprogramwiththerecalculationbeingdoneincolumnorder. −mStarttheprogramwithautomaticrecalculationdisabled.Thespreadsheetwillberecalculatedonlywhenthe‘‘@’’commandisused. −nStarttheprograminquicknumericentrymode(seebelow). −rStarttheprogramwiththerecalculationbeingdoneinroworder(defaultoption). −xCausetheGetandPutcommands(seebelow)toencryptanddecryptdatafiles. −RStarttheprogramwithautomaticnewlineactionsettoincrementtherow(seebelow). −CStarttheprogramwithautomaticnewlineactionsettoincrementthecolumn(seebelow). Alloftheseoptionscanbechangedwiththeˆ TandScommands(seebelow)whilepnameisrunning.Optionsspecifiedwhenpnameisinvokedoverrideoptionssavedinthedatafile. GeneralInformation Thescreenisdividedintofourregions.Thetoplineisforenteringcommandsanddisplayingcell values.Thesecondlineisformessagesfrompname.Thethirdlineandthefirstfourcolumns showthecolumnandrownumbers,fromwhicharederivedcelladdresses,e.g.A0forthecellin columnA,row0.Notethatcolumnnamesarecase-insensitive:youcanenterA0ora0. Therestofthescreenformsawindowlookingataportionofthetable.Thetotalnumberofdisplayrowsandcolumnsavailable,hencethenumberoftablerowsandcolumnsdisplayed,issetby curses(3)andmaybeoverriddenbysettingtheLINESandCOLUMNSenvironmentvariables, respectively. Thescreenhastwocursors:acellcursor,indicatedbyahighlightedcellanda‘‘<’’onthescreen, andacharactercursor,indicatedbytheterminal’shardwarecursor.Thecellandcharactercursorsareoftenthesame.Theydifferwhenyoutypeacommandonthetopline. Ifacell’snumericvalueiswiderthanthecolumnwidth(seethefcommand),thecellisfilledwith asterisks.Ifacell’slabelstringiswiderthanthecolumnwidth,itistruncatedatthestartofthe nextnon-blankcellintherow,ifany. Cursorcontrolcommandsandrowandcolumncommandscanbeprefixedbyanumericargument whichindicateshowmanytimesthecommandistobeexecuted.Youcantypeˆ Ubeforea repeatcountifquicknumericentrymodeisenabledorifthenumberistobeenteredwhilethe charactercursorisonthetopline. Commandswhichusetheterminal’scontrolkey,suchasˆ N,workbothwhenacommandisbeing typedandwheninnormalmode. 1 PNAME#REVISION#(1) PNAME#REVISION#(1) ChangingOptions ˆ ToToggleoptions.Thiscommandallowsyoutoswitchthestateofoneoptionselectedbyo. Asmallmenuliststhechoicesforowhenyoutypeˆ T.Theoptionsselectedaresaved whenthedataandformulasaresavedsothatyouwillhavethesamesetupnexttimeyou enterthespreadsheet. aAutomaticRecalculation.Whenset,eachchangeinthespreadsheetcausesthe entirespreadsheetberecalculated.Normallythisisnotnoticeable,butforvery largespreadsheets,itmaybefastertoclearautomaticrecalculationmodeand updatethespreadsheetviaexplicit‘‘@’’commands.Defaultisautomaticrecalculationon. cCurrentcellhighlighting.Ifenabled,thecurrentcellishighlighted(usingtheterminal’sstandoutmode,ifavailable)inadditiontobeingmarkedbythecellcursor. eExternalfunctionexecution.Whendisabled,externalfunctions(see@ext() below)arenotcalled.Thissavesalotoftimeateachscreenupdate.External functionsaredisabledbydefault.Ifdisabled,andexternalfunctionsareused anywhere,awarningisprintedeachtimethescreenisupdated,andtheresultof @ext()isthevaluefromthepreviouscall,ifany,oranullstring. lAutolabeling.Ifenabled,usingthedefinecommand(/d)causesalabeltobe automaticallygeneratedinthecelltotheleftofthedefinedcell.Thisisonly doneifthecelltotheleftisempty.Defaultisenabled. nQuicknumericentry.Ifenabled,atypeddigitisassumedtobethestartofa numericvalueforthecurrentcell,notarepeatcount,unlessprecededbyˆ U. Thecursorcontrols(ˆ P,ˆ N,ˆ B,ˆ F)inthismodewillendanumericentry. tToplinedisplay.Ifenabled,thenameandvalueofthecurrentcellisdisplayed onthetopline.Ifthereisanassociatedlabelstring,thefirstcharacterofthe stringvalueis‘‘|’’foracenteredstring,‘‘<’’foraleftstringor‘‘>’’forarightstring(seebelow),followedby"string"foraconstantstringor{expr}forastring expression.Aconstantstringmaybepreceededwithabackslash(‘\’).Inthis casetheconstantstringwillbeusedasa‘‘wheel’’tofillacolumn,e.g."\-"fora lineinacolumn,and"\Yeh"for"YehYehYe".Ifthecellhasanumericvalue, itfollowsas[value],whichmaybeaconstantorexpression. xEncryption.Seethe−xoption. $Dollarprescale.Ifenabled,allnumericconstants(notexpressions)whichyou enteraremultipledby0.01soyoudon’thavetokeeptypingthedecimalpointif youenterlotsofdollarfigures. rNewlineaction.Thisoptiontogglesbetweenthreecases.Thedefaultisno action.Ifthisoptionisusedonce,aftereachcommandwhichisterminatedbya newlinecharacteriscompleted,thecurrentcellwillbemoveddownonerow.If thisoptionisusedagain,aftereachcommandwhichisterminatedbyanewline characteriscompleted,thecurrentcellwillbemovedrightonecolumn.Another useofthisoptionwillrestorethedefaultaction. zSetnewlineactionlimits.Thisoptionsetslimitstothenewlineactionoption above.Whenthisoptionisinvoked,therowandcolumnofthecurrentcellare remembered.Ifalaternewlineactionwouldtakethecurrentcelltotherightof therememberedcolumn,thenthecurrentcellisinsteadmovedtothefirstcolumnofthenextrow.Ifanewlineactionwouldtakethecurrentcellbelowthe rememberedrow,thenthecurrentcellisinsteadmovedtothetoprowofthe nextcolumn. 2 PNAME#REVISION#(1) PNAME#REVISION#(1) Thequicknumericentry,newlineactionandsetnewlineactionlimitsoptionscanbecombinedtoallowveryquickentryoflargeamountsofdata.Ifallthedatatobeenteredis inasingleroworcolumnthensettingthequicknumericentryandtheappropriatenewlineactionwillallowthenumberstobeenteredwithoutanyexplicitcommandstopositionthecurrentcellorenteranumber. Ifthedataentryinvolvesseveralentriesineachrowformanyrows,thensettingthequick numericentryoption,settingthenewlineactiontomoverightaftereachentryandsettingthenewlineactionlimitsonthelastcolumnonwhichdatashouldbeenteredwill allowthedatatoenteredquickly.Ifnecessary,columnswhichdonotneeddatatobe enteredcanbehiddenwiththezcommand.Similararrangementscanbemadeforenteringseveralrowsofdataineachcolumn. SSetoptions.Thiscommandallowsyoutosetvariousoptions.Asmallmenuliststhe optionsthatcannotbechangedthroughˆ Tabove. byrows/bycols Specifytheordercellevaluationwhenupdating.Theseoptionsalsoaffectthe orderinwhichcellsarefilled(see/f)andwhetheraroworcolumnisclearedby anxcommand. iterations=n Setthemaximumnumberofrecalculationsbeforethescreenisdisplayedagain. Iterationsissetto10bydefault. tblstyle=s ControltheoutputoftheTcommand.scanbe:0(default)togivecolondelimitedfields,withnotblcontrollines;tbltogivecolondelimitedfields,withtbl(1) controllines;latextogiveaLaTeXtabularenvironment;slatextogiveaSLa-TeX(ScandinavianLaTeX)tabularenvironment;textogiveaTeXsimple tabbedalignmentwithampersandsasdelimiters;andframetogiveatblstyle outputforFrameMaker. OtherSetoptionsarenormallyusedonlyinpnamedatafilessincetheyareavailable throughˆ T.Youcanalsousetheminteractively autocalc/!autocalc Set/clearautorecalculationmode. numeric/!numeric Set/clearnumericmode. prescale/!prescale Set/clearnumericprescalemode. extfun/!extfun Enable/disableexternalfunctions. cellcur/!cellcur Set/clearcurrentcellhighlightingmode. toprow/!toprow Set/cleartoprowdisplaymode. rndinfinity/!rndinfinity default:round-to-even(banker’sround),*.5willroundtotheclosestevennum-ber;doinga’setrndinfinity’willround*.5uptothenextinteger(roundingto infinity). craction=n Setthenewlineaction.ncanbe:0(default)togivenoaction;1tomovedown aftereachentry;or2tomoverightaftereachentry. 3 PNAME#REVISION#(1) PNAME#REVISION#(1) rowlimit=n Settherememberedlimitforthemaximumrowbelowwhichthecurrentcellwill bemovedtothetopofthenextcolumnifthenewlineactionissettomovethe currentcelldown.ncanbe-1(default)todisablethisfacility. collimit=n Settherememberedlimitforthemaximumcolumntotherightofwhichthecurrentcellwillbemovedtotheleftofthenextrowifthenewlineactionissetto movethecurrentcellright.ncanbe-1(default)todisablethisfacility. CursorControlCommands ˆ PMovethecellcursoruptothepreviousrow. ˆ NMovethecellcursordowntothenextrow. ˆ BMovethecellcursorbackwardonecolumn. ˆ FMovethecellcursorforwardonecolumn. h,j,k,l Ifthecharactercursorisnotonthetopline,thesearealternate,vi-compatiblecellcursor controls(left,down,up,right).Spaceisjustlikel(right). H,J,K,L Ifthecharactercursorisnotonthetopline,thesemovethecursorbyhalfpages(left, down,up,right). ˆ HIfthecharactercursorisnotonthetopline,ˆ Histhesameasˆ B. SPACE Ifthecharactercursorisnotonthetopline,thespacebaristhesameasˆ F. TABIfthecharactercursorisonthetopline,TABstartsarange(seebelow).Otherwise,itis thesameasˆ F. ArrowKeys Theterminal’sarrowkeysprovideanotheralternatesetofcellcursorcontrolsiftheyexist andaresupportedintheappropriatetermcapentry.Someterminalshavearrowkeys whichconflictwithothercontrolkeycodes.Forexample,aterminalmightsendˆ Hwhen thebackarrowkeyispressed.Inthesecases,theconflictingarrowkeyperformsthesame functionasthekeycombinationitmimics. ˆ Movethecellcursoruptorow0ofthecurrentcolumn. #Movethecellcursordowntothelastvalidrowofthecurrentcolumn. 0MovethecellcursorbackwardtocolumnAofthecurrentrow.Thiscommandmustbe prefixedwithˆ Uifquicknumericentrymodeisenabled. $Movethecellcursorforwardtothelastvalidcolumnofthecurrentrow. bScanthecursorbackward(leftandup)tothepreviousvalidcell. wScanthecursorforward(rightanddown)tothenextvalidcell. ˆ EdGotoendofrange.Followˆ Ebyadirectionindicatorsuchasˆ Porj.Ifthecellcursor startsonanon-blankcell,itgoesintheindicateddirectionuntilthelastnon-blankadja-centcell.Ifthecellcursorstartsonablankcell,itgoesintheindicateddirectionuntil thefirstnon-blankcell.Thiscommandisusefulwhenspecifyingrangesofadjacentcells (seebelow),especiallywhentherangeisbiggerthanthevisiblewindow. gGotoacell.pnamepromptsforacell’sname,aregularexpressionsurroundedby quotes,oranumber.Ifacell’snamesuchasae122orathenameofadefinedrangeis given,thecellcursorgoesdirectlytothatcell.Ifaquotedregularexpressionsuchas" TaxTable"or"ˆ Jan[0-9]*$"isgiven,pnamesearchesforacellcontainingastring 4 PNAME#REVISION#(1) PNAME#REVISION#(1) matchingtheregularexpression.Seeregex(3)ored(1)formoredetailsontheformof regularexpressions.Ifanumberisgiven,pnamewillsearchforacellcontainingthat number.Searchesforeitherstringsornumbersproceedforwardfromthecurrentcell, wrappingbacktoa0attheendofthetable,andterminateatthecurrentcellifthestring ornumberisnotfound.YoumayalsogotoacellwithanERROR(dividebyzero,etcin thiscell)orINVALID(referencesacellcontaininganERROR).gerrorwilltakeyouto thenextERROR,whileginvalidtakeyoutothenextinvalid.Thelastgcommandis saved,andcanbere-issuedbyenteringg<return>. CellEntryandEditingCommands Cellscancontainbothanumericvalueandastringvalue.Eithervaluecanbetheresultofan expression,butnotbothatonce,i.e.eachcellcanhaveonlyoneexpressionassociatedwithit. Enteringavalidnumericexpressionaltersthecell’spreviousnumericvalue,ifany,andreplaces thecell’spreviousstringexpression,ifany,leavingonlythepreviouslycomputedconstantlabel string.Likewise,enteringavalidstringexpressionaltersthecell’sthepreviouslabelstring,ifany, andreplacesthecell’spreviousnumericexpression,ifany,leavingonlythepreviouslycomputed constantnumericvalue. =Enteranumericconstantorexpressionintothecurrentcell.pnamepromptsforthe expressiononthetopline.Theusualwaytoenteranumberintoacellistotype‘‘=’’, thenenterthenumberinresponsetothepromptonthetopline.Thequicknumeric entryoption,enabledthroughthe−noptionorˆ Tcommand,showsthepromptwhen youenterthefirstdigitofanumber(youcanskiptyping‘‘=’’). <Enteralabelstringintothecurrentcelltobeflushedleftagainsttheleftedgeofthecell. "Enteralabelstringintothecurrentcelltobecenteredinthecolumn. >Enteralabelstringintothecurrentcelltobeflushedrightagainsttherightedgeofthe cell. FEnteraformatstringintothecurrentcell.Thisformatstringoverridestheprecision specifiedwiththe‘‘f’’command.Theformatonlyappliestonumericvalues.Thefollowingcharacterscanbeusedtobuildaformatstring: #Digitplaceholder.Ifthenumberhasfewerdigitsoneithersideofthedecimal pointthanthereare‘#’charactersintheformat,theextra‘#’charactersare ignored.Thenumberisroundedtothenumberofdigitplaceholdersasthereare totherightofthedecimalpoint.Iftherearemoredigitsinthenumberthan therearedigitplaceholdersontheleftsideofthedecimalpoint,thenthosedigits aredisplayed. 0Digitplaceholder.Sameasfor‘#’exceptthatthenumberispaddedwithzeroes oneithersideofthedecimalpoint.Thenumberofzeroesusedinpaddingis determinedbythenumberofdigitplaceholdersafterthe‘0’fordigitsontheleft sideofthedecimalpointandbythenumberofdigitplaceholdersbeforethe‘0’ fordigitsontherightsideofthedecimalpoint. .Decimalpoint.Determineshowmanydigitsareplacedontherightandleftsides ofthedecimalpointinthenumber.Notethatnumberssmallerthan1willbegin withadecimalpointiftheleftsideofthedecimalpointcontainsonlya‘#’digit placeholder.Usea‘0’placeholdertogetaleadingzeroindecimalformats. %Percentage.Foreach‘%’characterintheformat,theactualnumbergetsmultipliedby100(onlyforpurposesofformatting--theoriginalnumberisleft unmodified)andthe‘%’characterisplacedinthesamepositionasitisinthe format. ,Thousandsseparator.Thepresenceofa‘,’intheformat(multiplecommasare treatedasone)willcausethenumbertobeformattedwitha‘,’separatingeach setofthreedigitsintheintegerpartofthenumberwithnumberingbeginning 5 PNAME#REVISION#(1) PNAME#REVISION#(1) fromtherightendoftheinteger. \Quote.Thischaractercausesthenextcharactertobeinsertedintotheformatted stringdirectlywithnospecialinterpretation. E-E+e-e+ Scientificformat.Causesthenumbertoformattedinscientificnotation.The caseofthe‘E’or‘e’givenispreserved.Iftheformatusesa‘+’,thenthesignis alwaysgivenfortheexponentvalue.Iftheformatusesa‘-’,thenthesignisonly givenwhentheexponentvalueisnegative.Notethatifthereisnodigitplaceholderfollowingthe‘+’or‘-’,thenthatpartoftheformattednumberisleftout. Ingeneral,thereshouldbeoneormoredigitplaceholdersafterthe‘+’or‘-’. ;Formatselector.Usethischaractertoseparatetheformatintotwodistinctformats.Theformattotheleftofthe‘;’characterwillbeusedifthenumbergiven iszeroorpositive.Theformattotherightofthe‘;’characterisusedifthe numbergivenisnegative. Someexampleformatsareinteger(‘‘0’’or‘‘#’’),fixed(‘‘0.00’’),percentage(‘‘0%’’or ‘‘0.00%’’),scientific(‘‘0.00E+00’’),andcurrency(‘‘$#,0.00;($#,0.00)’’). Stringsyouentermuststartwith".Youcanleaveoffthetrailing"andpnamewilladditfor you.Youcanalsoenterastringexpressionbybackspacingovertheopening"intheprompt. eEditthevalueassociatedwiththecurrentcell.Thisisidenticalto‘‘=’’exceptthatthe commandlinestartsoutcontainingtheoldnumericvalueorexpressionassociatedwith thecell.Theeditinginthismodeisvi-like. ˆ hMovebackacharacter +Forwardthroughhistory(neat)(sameasj) -Backwardthroughhistory(neat)(sameask) ESCDoneediting TABMark&&appendarange(ex:A0:A0) TAB,movearoundwithinarange;TAB,appendrangestring. CRSave $Gotolastcolumn .Insertcurrentdotbuffer /Searchforastringinthehistory ESCeditthestringyoutyped CRsearch ˆ hbackspace 0Gotocolumn0 DDeletetosend IInsertatcolumn0;ESCrevertbacktoeditmode RReplacemode;ESCrevertbacktoeditmode XDeletethechartotheleft aAppendaftercursor;ESCrevertbacktoeditmode bMovebackaword cChangemode;ESCrevertbacktoeditmode dDelete... bbackword fforward(right) 6 PNAME#REVISION#(1) PNAME#REVISION#(1) hbackchar lforward tdeleteforwarduptoagivenchar(nextchartyped) wdeletenextwordforward fFindthenextchartyped hMoveleftachar iInsertbeforecursor;ESCrevertbacktoeditmode jForwardthroughhistory(neat)(sameas+) kBackwardthroughhistory(neat)(sameas-) lMoverightachar nContinuesearch qStopediting rReplacechar tGotoachar uUndo wForwardaword xDeletethecurrentchar(movingtotheright) EEditthestringassociatedwiththecurrentcell.Thisisidenticalto‘‘<’’,‘‘"’’,or‘‘>’’ exceptthatthecommandlinestartsoutcontainingtheoldstringvalueorexpression associatedwiththecell.SEEeABOVE. Toenterandeditacell’snumberpart,usethe‘‘=’’andecommands.Toenterandeditacell’s stringpart,usethe‘‘<’’,‘‘"’’,‘‘>’’,andEcommands.Seethesectionsbelowonnumericand stringexpressionsformoreinformation. xClearthecurrentcell.Deletesthenumericvalue,labelstring,and/ornumericorstring expression.Youcanprefixthiscommandwithacountofthenumberofcellsonthecurrentrowtoclear.Thecurrentcolumnisusedifcolumnrecalculationorderisset.Cells clearedwiththiscommandmayberecalledwithanyofthepullcommands(seebelow). mMarkacelltobeusedasthesourceforthecopycommand. cCopythelastmarkedcelltothecurrentcell,updatingrowandcolumnreferencesinits numericorstringexpression,ifany. +Ifnotinnumericmode,addthecurrentnumericargument(default1)tothevalueofthe currentcell.Innumericmode,‘‘+’’introducesanewnumericexpressionorvalue,the sameas‘‘=’’. -Ifnotinnumericmode,subtractthecurrentnumericargument(default1)fromthevalue ofthecurrentcell.Innumericmode,‘‘-’’introducesanew,negative,numericexpression orvalue,like‘‘=’’. RETURN Ifyouarenoteditingacell(toplineisempty),pressingRETURNwillmakepnameenter insertmode.AtthispointyoumaytypeanyvalidcommandorpressESConcetoedit. FileCommands GGetanewdatabasefromafile.Ifencryptionisenabled,thefileisdecryptedbeforeitis loadedintothespreadsheet. PPutthecurrentdatabaseintoafile.Ifencryptionisenabled,thefileisencryptedbefore itissaved. 7 PNAME#REVISION#(1) PNAME#REVISION#(1) WWritealistingofthecurrentdatabaseintoafileinaformthatmatchesitsappearanceon thescreen.ThisdiffersfromthePutcommandinthatitsfilesareintendedtobe reloadedwithGet,whileWriteproducesafileforpeopletolookat.Hiddenrowsor columnsarenotshownwhenthedataisprinted. TWritealistingofthecurrentdatabasetoafile,butincludedelimiterssuitableforprocessingbythetbl,LaTeX,orTeXtableprocessors.Thedelimitersarecontrolledbythe tblstyleoption.SeeSetabove.Thedelimitersareareacolon(:)forstyle0ortblandan ampersand(&)forstylelatexortex. WiththePut,Write,andTablecommands,theoptionalrangeargumentwritesasubsetofthe spreadsheettotheoutputfile. WiththeWriteandTablecommands,ifyoutrytowritetothelastfileusedwiththeGetorPut commands,orthefilespecifiedonthecommandlinewhenpnamewasinvoked,youareaskedto confirmthatthe(potentially)dangerousoperationisreallywhatyouwant. Thethreeoutputcommands,Put,Write,andTable,canpipetheir(unencryptedonly)outputto aprogram.Tousethisfeature,enter‘‘|program’’tothepromptaskingforafilename.Forexample,toredirecttheoutputoftheWritecommandtotheprinter,youmightenter‘‘|lpr-p’’. MMergethedatabasefromthenamedfileintothecurrentdatabase.Valuesandexpressionsdefinedinthenamedfilearereadintothecurrentspreadsheetoverwritingtheexistingentriesatmatchingcelllocations. RRunmacros.SincepnamefilesaresavedasASCIIfiles,itispossibletousethemas primitivemacrodefinitionfiles.TheRuncommandmakesthiseasier.It’sliketheMerge command,butprintsasavedpathnameasthestartofthefilenametomergein.The stringtouseissetwiththeDefinecommand.Towritemacros,youmustbefamiliar withthefileformatwrittenbythePutcommand.Thisfacilityisstillprimitiveandcould bemuchimproved. DDefineapathfortheRuncommandtouse. Allfileoperationstakeafilenameasthefirstargumenttothepromptonthetopline.The promptsuppliesa"toaidintypinginthefilename.Thefilenamecanalsobeobtainedfroma cell’slabelstringorstringexpression.Inthiscase,deletetheleading"withthebackspacekey andenteracellnamesuchasa22instead.Iftheresultingstringstartswith‘‘|’’,therestofthe stringisinterpretedasaUNIXcommand,asabove. RowandColumnCommands Thesecommandscanbeusedoneitherrowsorcolumns.Thesecondletterofthecommandis eitherarowdesignator(oneofthecharactersr,ˆ B,ˆ F,h,l)oracolumndesignator(oneofc, ˆ P,ˆ N,k,j).Asmallmenuliststhechoicesforthesecondletterwhenyoutypethefirstletter ofoneofthesecommands.Commandswhichmoveorcopycellsalsomodifytherowandcolumn referencesinaffectedcellexpressions.Thereferencesmaybefrozenbyusingthefixedoperatoror usingthe$characterinthereferencetothecell(seebelow). ir,icInsertanewrow(column)bymovingtherow(column)containingthecellcursor,andall followingrows(columns),down(right)onerow(column).Thenewrow(column)is empty. ar,acAppendanewrow(column)immediatelyfollowingthecurrentrow(column).Itisinitializedasacopyofthecurrentone. dr,dcDeletethecurrentrow(column). pr,pc,pm Pulldeletedrows(columns)backintothespreadsheet.Thelastdeletedsetofcellsisput backintothespreadsheetatthecurrentlocation.prinsertsenoughrowstoholdthe data.pcinsertsenoughcolumnstoholdthedata.pm(merge)doesnotinsertrowsor columns;itoverwritesthecellsbeginningatthecurrentcellcursorlocation. 8 PNAME#REVISION#(1) PNAME#REVISION#(1) vr,vcRemoveexpressionsfromtheaffectedrows(columns),leavingonlythevalueswhichwere inthecellsbeforethecommandwasexecuted. zr,zcHide(‘‘zap’’)thecurrentrow(column).Thiskeepsarow(column)frombeingdisplayed butkeepsitinthedatabase.Thestatusoftherowsandcolumnsissavedwiththedata basesohiddenrowsandcolumnswillbestillbehiddenwhenyoureloadthespreadsheet. HiddenrowsorcolumnsarenotprintedbytheWcommand. sr,scShowhiddenrows(columns).Enterarangeofrows(columns)toberevealed.The defaultisthefirstrangeofrows(columns)currentlyhidden.Thiscommandignoresthe repeatcount,ifany. fSettheoutputformattobeusedforprintingthenumericvaluesineachcellinthecurrentcolumn.Enterthreenumbers:thetotalwidthincharactersofthecolumn,the numberofdigitstofollowdecimalpoints,andtheformattype.Formattypesare0for fixedpoint,1forscientificnotation,2forengineeringnotation,and3fordates.Values areroundedofftotheleastsignificantdigitdisplayed.Thetotalcolumnwidthaffects displaysofstringsaswellasnumbers.Aprecedingcountcanbeusedtoaffectmorethan onecolumn.Thiscommandhasonlyacolumnversion(nosecondletter). @myrow,@mycol Arefunctionsthatreturntheroworcolumnofthecurrentcellrespectively.ex:Thecell directlyaboveacellintheDcolumncouldthenbeaccessedby@nval("d",@myrow-1). NOTE:@myrowand@mycolcan’tbeusedinspecifyingranges. RangeCommands Rangeoperationsaffectarectangularregiononthescreendefinedbytheupperleftandlower rightcellsintheregion.Allofthecommandsinthisclassstartwithaslash;thesecondletterof thecommandindicateswhichcommand.Asmallmenuliststhechoicesforthesecondletter whenyoutype‘‘/’’.pnamepromptsforneededparametersforeachcommand.Phrasessurroundedbysquarebracketsinthepromptareinformationalonlyandmaybeerasedwiththe backspacekey. Promptsrequestingvariablenamesmaybesatisfiedwitheitheranexplicitvariablename,suchas A10,orwithavariablenamepreviouslydefinedina/dcommand(seebelow).Rangename promptsrequireeitheranexplicitrangesuchasA10:B20,orarangenamepreviouslydefined witha/dcommand.Adefaultrangeshowninthesecondlineisusedifyouomittherangefrom thecommandorpresstheTABkey(seebelow).Thedefaultrangecanbechangedbymovingthe cellcursorviathecontrolcommands(ˆ P,ˆ N,ˆ B,ˆ F)orthearrowkeys.Thecellsinthe defaultrangearehighlighted(usingtheterminal’sstandoutmode,ifavailable). /xCleararange.Cellsclearedwiththiscommandmayberecalledwithanyofthepull commands. /vValuesonly.Thiscommandremovestheexpressionsfromarangeofcells,leavingjust thevaluesoftheexpressions. /cCopyasourcerangetoadestinationrange.Thesourceanddestinationmaybedifferent sizes.Theresultisalwaysoneormorefullcopiesofthesource.Copyingarowtoarow yieldsarow.Copyingacolumntoacolumnyieldsacolumn.Copyingarangetoanythingyieldsarange.Copyingarowtoacolumnoracolumntoarowyieldsarangewith asmanycopiesofthesourceastherearecellsinthedestination.Thiscommandcanbe usedtoduplicateacellthroughanarbitraryrangebymakingthesourceasinglecell rangesuchasb20:b20. /fFillarangewithconstantvaluesstartingwithagivenvalueandincreasingbyagiven increment.Eachrowisfilledbeforemovingontothenextrowifroworderrecalculation isset.Columnorderfillseachcolumnintherangebeforemovingontothenextcolumn. Thestartandincrementnumbersmaybepositiveornegative.Tofillallcellswiththe samevalue,giveanincrementofzero. 9 PNAME#REVISION#(1) PNAME#REVISION#(1) /dUsethiscommandtoassignasymbolicnametoasinglecellorarectangularrangeof cellsonthescreen.Theparametersarethename,surroundedby"",andeitherasingle cellnamesuchasA10orarangesuchasa1:b20.Namesdefinedinthisfashionareused bytheprograminfutureprompts,maybeenteredinresponsetopromptsrequestinga cellorrangename,andaresavedwhenthespreadsheetissavedwiththePutcommand. Namesdefinedmustbemorethantwoalphacharacterslongtodifferentiatethemfroma columnnames,andmustnothaveembeddedspecialcharacters.Namesmayincludethe character‘‘’’ornumeralsaslongastheyoccurafterthefirstthreealphacharacters. /lUsethiscommandtolockthecurrentcellorarangeofcells,i.emakethemimmuneto anytypeofediting.Alockedcellcan’tbechangedinanywayuntilitisunlocked. /UThiscommandistheoppositeofthe/lcommandandthusunlocksalockedcelland makesiteditable. /sThiscommandlists(shows)thecurrentlydefinedrangenames.Iftherearenodefined rangenames,thenamessageisgiven,otherwiseitpipesoutputtosort,thentoless.If theenvironmentvariablePAGERisset,itsvalueisusedinplaceofless. /uUsethiscommandtoundefineapreviouslydefinedrangename. /FUsethiscommandtoassignavalueformatstring(seethe‘‘F’’cellentrycommand)toa rangeofcells. MiscellaneousCommands Q q ˆ CExitfrompname.IfyoumadeanychangessincethelastGetorPut,pnameasksabout savingyourdatabeforeexiting. ˆ G ESCAbortentryofthecurrentcommand. ?Enteraninteractivehelpfacility.Letsyoulookupbriefsummariesofthemainfeatures oftheprogram.Thehelpfacilityisstructuredlikethismanualpagesoitiseasytofind moreinformationonaparticulartopic. !Shellescape.pnamepromptsforashellcommandtorun.Endthecommandlinewith theRETURNkey.IftheenvironmentvariableSHELLisdefined,thatshellisrun.Ifnot, /bin/shisused.Givinganullcommandlinestartstheshellininteractivemode.Asecond‘‘!’’repeatsthepreviouscommand. ˆ LRedrawthescreen. ˆ RRedrawthescreenwithspecialhighlightingofcellstobefilledin.Thisisusefulforfindingvaluesyouneedtoprovideorupdateinaformwithwhichyouaren’tfamiliarorof whichyouhaveforgottenthedetails. It’salsousefulforcheckingaformyouarecreating.Allcellswhichcontainconstant numericvalues(nottheresultofanumericexpression)arehighlightedtemporarily,until thenextscreenchange,howeverminor.Toavoidambiguity,thecurrentrange(ifany) andcurrentcellarenothighlighted. ˆ XThiscommandissimilartoˆ R,buthighlightscellswhichhaveexpressions.Italsodisplaystheexpressionsinthehighlightedcellsasleft-flushedstrings,insteadofthenumeric valuesand/orlabelstringsofthosecells.Thiscommandmakesiteasiertocheckexpressions,atleastwhentheyfitintheircellsorthefollowingcell(s)areblanksotheexpressionscanslopover(likelabelstrings).Inthelattercase,theslopoverisnotclearedon thenextscreenupdate,soyoumaywanttotypeˆ Laftertheˆ Xinordertocleanupthe screen. 10 PNAME#REVISION#(1) PNAME#REVISION#(1) @Recalculatesthespreadsheet. ˆ VType,inthecommandline,thenameofthecurrentcell(theoneatthecellcursor).This isusefulwhenenteringexpressionswhichrefertoothercellsinthetable. ˆ WType,inthecommandline,theexpressionattachedtothecurrentcell.Ifthereisnone, theresultis‘‘?’’. ˆ AType,inthecommandline,thenumericvalueofthecurrentcell,ifany. Theˆ V,ˆ W,andˆ Acommandsonlyworkwhenthecharactercursorisonthecommandline andbeyondthefirstcharacter. TABWhenthecharactercursorisonthetopline,definesarangeofcellsviathecursorcontrol commandsorthearrowkeys.Therangeishighlighted,startsatthecellwhereyoutyped TAB,andcontinuesthroughthecurrentcellcursor.PressingTABagaincausesthehighlightedrangetobeenteredintothecommandlineandthehighlightingtobeturnedoff. Thisismostusefulfordefiningrangestofunctionssuchas@sum().Pressing‘‘)’’actsjust liketypingtheTABkeythesecondtimeandaddstheclosing‘‘)’’.Notethatwhenyou givearangecommand,youdon’tneedtopressthefirstTABtobegindefiningarange startingwiththecurrentcell. VariableNames Normally,avariablenameisjustthenameofacell,suchasK20.Thevalueisthenumericor stringvalueofthecell,accordingtocontext. Whenacell’sexpression(formula)iscopiedtoanotherlocationviacopyorrange-copy,variable referencesarebydefaultoffsetbytheamounttheformulamoved.Thisallowsthenewformulato workonnewdata.Ifcellreferencesarenottochange,youcaneitherusethefixedoperator(see below),oroneofthefollowingvariationsonthecellname. K20ReferencescellK20;thereferencechangeswhentheformulaiscopied. $K$20AlwaysreferstocellK20;thereferencestaysfixedwhentheformulaiscopied. $K20KeepsthecolumnfixedatcolumnK;therowisfreetovary. K$20Similarly,thisfixestherowandallowsthecolumntovary. Theseconventionsalsoholdondefinedranges.Rangereferencesvarywhenformulascontaining themarecopied.Iftherangeisdefinedwithfixedvariablereferences,thereferencesdonot change. fixedTomakeavariablenotchangeautomaticallywhenacellmoves,putthewordfixedin frontofthereference,forexample:B1∗fixedC3. NumericExpressions Numericexpressionsusedwiththe‘‘=’’andecommandshaveafairlyconventionalsyntax.Terms maybeconstants,variablenames,parenthesizedexpressions,andnegatedterms.Rangesmaybe operateduponwithrangefunctionssuchassum(@sum())andaverage(@avg()).Termsmaybe combinedusingbinaryoperators. −eNegation. e+eAddition. e−eSubtraction. e∗eMultiplication. e/eDivision. e1%e2e1mode2. eˆ eExponentiation. e<e 11 PNAME#REVISION#(1) PNAME#REVISION#(1) e<=e e=e e!=e e>=e e>eRelationals:true(1)ifandonlyiftheindicatedrelationholds,elsefalse(0).Notethat ‘‘<=’’,‘‘!=’’,and‘‘>=’’areconvertedtotheir‘‘˜ ()’’equivalents. ˜ eBooleanoperatorNOT. e&eBooleanoperatorAND. e|eBooleanoperatorOR. @if(e,e,e) e?e:eConditional:Ifthefirstexpressionistruethenthevalueofthesecondisreturned,otherwisethevalueofthethird. Operatorprecedencefromhighesttolowestis: −,˜ ˆ ∗,/ +,− <,<=,=,!=,>=,> & | ?: Built-inRangeFunctions Thesefunctionsreturnnumericvalues. @sum(r)Sumallvalid(nonblank)entriesintheregionwhosetwocornersaredefined bythetwovariablenames(e.g.c5:e14)ortherangenamespecified. @prod(r)Multiplytogetherallvalid(nonblank)entriesinthespecifiedregion. @avg(r)Averageallvalid(nonblank)entriesinthespecifiedregion. @count(r)Countallvalid(nonblank)entriesinthespecifiedregion. @max(r)Returnthemaximumvalueinthespecifiedregion.Seealsothemultiargumentversionof@maxbelow. @min(r)Returntheminimumvalueinthespecifiedregion.Seealsothemultiargumentversionof@minbelow. @stddev(r)Returnthesamplestandarddeviationofthecellsinthespecifiedregion. @lookup(e,r) @lookup(se,r)Evaluatestheexpressionthensearchesthroughtherangerforamatching value.Therangeshouldbeeitherasingleroworasinglecolumn.The expressioncanbeeitherastringexpressionoranumericexpression.Ifitisa numericexpression,therangeissearchedforthethelastvaluelessthanor equaltoe.Iftheexpressionisastringexpression,thestringportionsofthe cellsintherangearesearchedforanexactstringmatch.Thevaluereturned isthenumericvaluefromthenextrowandthesamecolumnasthematch,if therangewasasinglerow,orthevaluefromthenextcolumnandthesame rowasthematchiftherangewasasinglecolumn. @hlookup(e,r,n) @hlookup(se,r,n)Evaluatestheexpressionthensearchesthroughthefirstrowintheranger foramatchingvalue.Theexpressioncanbeeitherastringexpressionora numericexpression.Ifitisanumericexpression,therowissearchedforthe thelastvaluelessthanorequaltoe.Iftheexpressionisastringexpression, thestringportionsofthecellsintherowaresearchedforanexactstring match.Thevaluereturnedisthenumericvaluefromthesamecolumnn rowsbelowthematch. 12 PNAME#REVISION#(1) PNAME#REVISION#(1) @vlookup(e,r,n) @vlookup(se,r,n)Evaluatestheexpressionthensearchesthroughthefirstcolumnintherange rforamatchingvalue.Theexpressioncanbeeitherastringexpressionora numericexpression.Ifitisanumericexpression,thecolumnissearchedfor thethelastvaluelessthanorequaltoe.Iftheexpressionisastringexpression,thestringportionsofthecellsinthecolumnaresearchedforanexact stringmatch.Thevaluereturnedisthenumericvaluefromthesamerown columnstotherightofthematch. @index(e,r)Usethevalueoftheexpressionetoindexintotheranger.Thenumeric valueatthatpositionisreturned.Thevalue1selectsthefirstiteminthe range,2selectstheseconditem,etc.Rshouldbeeitherasingleroworasinglecolumn. @stindex(e,r)Usethevalueofetoindexintotheranger.Thestringvalueatthatpositionisreturned.Thevalue1selectsthefirstitemintherange,2selectsthe seconditem,etc.Therangeshouldbeeitherasingleroworasinglecolumn. Built-inNumericFunctions Allofthesefunctionsoperateonfloatingpointnumbers(doubles)andreturnnumericvalues. Mostofthemarestandardsystemfunctionsmorefullydescribedinmath(3).Thetrigfunctions operatewithanglesinradians. @sqrt(e)Returnthesquarerootofe. @exp(e)Returntheexponentialfunctionofe. @ln(e)Returnthenaturallogarithmofe. @log(e)Returnthebase10logarithmofe. @floor(e)Returnthelargestintegernotgreaterthane. @ceil(e)Returnthesmallestintegernotlessthane. @rnd(e)Roundetothenearestinteger.default:round-to-even(banker’sround),*.5 willroundtotheclosestevennumber;’setrndinfinity’willround*.5upto thenextinteger. @round(e,n)Roundetondecimalplaces.nmaybepositivetoroundofftherightsideof thedecimal,andnegativetoroundofftheleftside.See@rnd(e)abovefor roundingtypes. @abs(e) @fabs(e)Returntheabsolutevalueofe. @pow(e1,e2)Returne1raisedtothepowerofe2. @hypot(e1,e2)Returnsqrt(e1∗e1+e2∗e2),takingprecautionsagainstunwarrantedoverflows. pi@piAconstantquiteclosetopi. @dtr(e)Converteindegreestoradians. @rtd(e)Converteinradianstodegrees. @sin(e) @cos(e) @tan(e)Returntrigonometricfunctionsofradianarguments.Themagnitudeofthe argumentsarenotcheckedtoassuremeaningfulresults. @asin(e)Returnthearcsineofeintherange-pi/2topi/2. @acos(e)Returnthearccosineofeintherange0topi. @atan(e)Returnthearctangentofeintherange-pi/2topi/2. @atan2(e1,e2)Returnsthearctangentofe1/e2intherange-pitopi. @max(e1,e2,...)Returnthemaximumofthevaluesoftheexpressions.Twoormoreexpressionsmaybespecified.Seealsotherangeversionof@maxabove. 13 PNAME#REVISION#(1) PNAME#REVISION#(1) @min(e1,e2,...)Returntheminimumofthevaluesoftheexpressions.Twoormoreexpressionsmaybespecified.Seealsotherangeversionof@minabove. @ston(se)Convertstringexpressionsetoanumericvalue. @eqs(se1,se2)Return1ifstringexpressionse1hasthesamevalueasstringexpressionse2, 0otherwise. @nval(se,e)Returnthenumericvalueofacellselectedbyname.Stringexpressionse mustevaluatetoacolumnname(‘‘A’’-‘‘AE’’)andemustevaluatetoarow number(0-199).Ifseoreisoutofbounds,orthecellhasnonumericvalue, theresultis0.Youcanusethisforsimpletablelookups.Besurethetable doesn’tmoveunexpectedly!Seealso@sval()below. StringExpressions Stringexpressionsaremadeupofconstantstrings(characterssurroundedbydoublequotation marks),variables(cellnames,whichrefertothecells’slabelstringsorexpressions),andstring functions.Notethatstringexpressionsareonlyallowedwhenenteringacell’slabelstring,notits numericpart.Alsonotethatstringexpressionresultsmaybeleftorrightflushedorcentered, accordingtothetypeofthecell’sstringlabel. #Concatenatestrings.Forexample,thestringexpression A0#"zydog" displaysthestring‘‘thelazydog’’inthecellifthevalueofA0’sstringis‘‘thela’’. Built-inStringFunctions @substr(se,e1,e2)Extractandreturnfromstringexpressionsethesubstringindexedbycharacternumbere1throughcharacternumbere2(defaultstothesizeofseif beyondtheendofit).Ife1islessthan1orgreaterthane2,theresultisthe nullstring.Forexample, @substr("Nicejacket",4,7) returnsthestring‘‘ejac’’. @fmt(se,e)Convertanumbertoastring.Theargumentsemustbeavalidprintf(3) formatstring.eisconvertedaccordingtothestandardrules.Forexample, theexpression @fmt("∗∗%6.3f∗∗",10.5) yieldsthestring‘‘∗∗10.500∗∗’’.eisadouble,soapplicableformatsaree,E, f,g,andG.Try‘‘%g’’asastartingpoint. @sval(se,e)Returnthestringvalueofacellselectedbyname.Stringexpressionsemust evaluatetoacolumnname(‘‘A’’-‘‘AE’’)andemustevaluatetoarownumber (0-199).Ifseoreisoutofbounds,orthecellhasnostringvalue,theresult isthenullstring.Youcanusethisforsimpletablelookups.Besurethe tabledoesn’tmoveunexpectedly! @upper(e)and@lower(e)willcasethestringexpressiontoupperorlower. @capital(e)willconvertthefirstletterofwordsinastringintouppercaseandotherletterstolowercase(thelatterifalllettersofthestringareuppercase). @upper(e)and@lower(e)willcasethestringexpressiontoupperorlower. @capital(e)willconvertthefirstletterofwordsinastringintouppercase. @ext(se,e)Callanexternalfunction(programorscript).Thepurposeistoallowarbitraryfunctionsonvalues,e.g.tablelookupsandinterpolations.String expressionseisacommandorcommandlinetocallwithpopen(3).The valueofeisconvertedtoastringandappendedtothecommandlineasan 14 PNAME#REVISION#(1) PNAME#REVISION#(1) argument.Theresultof@ext()isastring:thefirstlineprintedtostandard outputbythecommand.Thecommandshouldemitexactlyoneoutputline. Additionaloutput,oroutputtostandarderror,messesupthescreen.@ext() returnsanullstringandprintsanappropriatewarningifexternalfunctions aredisabled,seisnull,ortheattempttorunthecommandfails. Externalfunctionscanbeslowtorun,andifenabledarecalledateachscreen update,sotheyaredisabledbydefault.Youcanenablethemwithˆ Twhen youreallywantthemcalled. Asimpleexample: @ext("echo",a1) Youcanuse@ston()toconvertthe@ext()resultbacktoanumber.For example: @ston(@ext("form.sc.ext",a9+b9)) Notethatyoucanbuiltacommandline(includingmoreargumentvalues) fromastringexpressionwithconcatenation.Youcanalso"hide"thesecond argumentbyendingthecommandline(firstargument)with‘‘#’’(shellcomment). @coltoa(e)Returnsastringnameforacolumnfromthenumericargument.Forexample: @coltoa(@mycol-1)@nval(coltoa(@mycol-1),@myrow+1) Built-inFinancialFunctions Financialfunctionscomputethemortgage(orloan)payment,futurevalue,andthepresentvalue functions.Eachacceptsthreearguments,anamount,arateofinterest(perperiod),andthe numberofperiods.Thesefunctionsarethesameasthosecommonlyfoundinotherspreadsheets andfinancialcalculators @pmt(e1,e2,e3)@pmt(60000,.01,360)computesthemonthlypaymentsfora$60000mortgage at12%annualinterest(.01permonth)for30years(360months). @fv(e1,e2,e3)@fv(100,.005,36)computesthefuturevalueforof36monthlypaymentsof $100at6%interest(.005permonth).Itanswersthequestion:"Howmuch willIhavein36monthsifIdeposit$100permonthinasavingsaccountpaying6%interestcompoundedmonthly?" @pv(e1,e2,e3)@pv(1000,.015,36)computesthepresentvalueofanaordinaryannuityof36 monthlypaymentsof$1000at18%annualinterest.Itanswersthequestion: "HowmuchcanIborrowat18%for30yearsifIpay$1000permonth?" Built-inDateandTimeFunctions Timeforpnamefollowsthesystemstandard:thenumberofsecondssince1970.Alldateand timefunctionsexcept@date()returnnumbers,notstrings. @nowReturnthecurrenttimeencodedasthenumberofsecondssincethebeginningoftheepoch(December31,1969,midnight,GMT.) @dts(e1,e2,e3)@dts(9,14,1988)convertsthedateSeptember14,1988tothenumberofsecondsfromtheepochtothefirstsecondof9/14/88,localtime.Forexample, @date(@dts(12,14,1976))yields TueDec1400:00:001976 Themonthshouldberangefrom1to12,thedayshouldrangefrom1tothe numberofdaysinthespecifiedmonth,andtheyearshouldrangefrom1970 to1999. 15 PNAME#REVISION#(1) PNAME#REVISION#(1) @tts(e1,e2,e3)@tts(8,20,45)convertsthetime8:40:45tothenumberofsecondssincemidnight,thenightbefore.Thehourshouldrangefrom0to23;theminutesand secondsshouldrangefrom0to59. Thefollowingfunctionstakethetimeinseconds(e.g.from@now)asanargumentandreturnthe specifiedvalue.ThefunctionsallconvertfromGMTtolocaltime. @date(e)Convertthetimeinsecondstoadatestring24characterslonginthefollowingform: SunSep1601:03:521973 Notethatyoucanextractpartsofthisfixed-formatstringwith@substr(). @year(e)Returntheyear.Validyearsbeginwith1970.Thelastlegalyearissystem dependent. @month(e)Returnthemonth,encodedas1(January)to12(December). @day(e)Returnthedayofthemonth,encodedas1to31. @hour(e)Returnthenumberofhourssincemidnight,encodedas0to23. @minute(e)Returnthenumberofminutessincethelastfullhour,encodedas0to59. @second(e)Returnthenumberofsecondssincethelastfullminute,encodedas0to59. SpreadsheetUpdate Re-evaluationofspreadsheetexpressionsisdonebyroworbycolumndependingontheselected calculationorder.Evaluationisrepeateduptoiterationstimesforeachupdateifnecessary,so forwardreferencesusuallyworkasexpected.Seesetabove.Ifstabilityisnotreachedafterten iterations,awarningisprinted.Thisisusuallyduetoalongseriesofforwardreferences,orto unstablecyclicreferences(forexample,setA0’sexpressionto‘‘A0+1’’). @numiterReturnsthenumberofiterationsperformedsofar. FILES #LIBDIR#/tutorial.pname tutorialspreadsheet SEEALSO bc(1),dc(1),crypt(1),ppname(1) BUGS Top-to-bottom,left-to-rightevaluationofexpressionsissilly.Aproperfollowingofthedepen-dencygraphwith(perhaps)recoursetorelaxationshouldbeimplemented. Onlyonepreviousvalueissavedfromanycallof@ext().Ifitisusedmorethanonceinaspreadsheetandexternalfunctionsareenabledandlaterdisabled,thelastreturnedvaluepopsupin severalplaces. Onsomesystems,ifthecellcursorisincolumn0withtoplineenabled(sothecurrentcellishighlighted),orifanycellincolumn0ishighlighted,thecorrespondingrownumbergetsdisplayed andthenblankedduringascreenrefresh.Thislookslikeabugincurses. Manycommandsgivenoindication(amessageorbeep)iftheyhavenulleffect.Someshouldgive confirmationoftheiraction,buttheydon’t. AUTHORS ThisisamuchmodifiedversionofapublicdomainspreadsheetoriginallyauthoredbyJames Gosling,andsubsequentlymodifiedandpostedtoUSENETbyMarkWeiserunderthenamevc. Theprogramwassubsequentlyrenamedsc,andfurthermodifiedbynumerouscontributors,Jeff BuhrtofProslink,Inc.({sequent,uunet}!sawmill!prslnk!buhrt)andRobertBondofSequent, prominentamongthem.Othercontributorsinclude:TomAnderson,GlennT.Barry,Gregory Bond,Stephen(Steve)M.Brooks,PeterBrower,JohnCampbell,LawrenceCipriani,JimClausing,DaveClose,ChrisCole,JonathanCrompron,DavidI.Dalva,GlenDitchfield,SamDrake, JamesP.Dugal,PaulEggert,AndyFyfe,JackGoral,Piercarlo"Peter"Grandi,HenkHesselink, 16 PNAME#REVISION#(1) PNAME#REVISION#(1) JeffreyCHonig,KurtHorton,JonathanI.Kamens,PeterKing,TomKloos,CaseyLeedom,Jay Lepreau,DaveLewis,RickLinck,SorenLundsgaard,TadMannes,RobMcMahon,ChrisMetcalf, MarkNagel,UlfNoren,MariusOlafsson,GeneH.Olson,HenkP.Penning,RickPerry,Larry Philps,EricPutz,JimRichardson,MichaelRichardson,R.P.C.Rodgers,KimSanders,Mike Schwartz,AlanSilverstein,LowellSkoog,HerrSoeryantono,TimTheisen,TomTkacik,Andy Valencia,AdriVerhoef,RickWalker,PetriWessman,andTimWilson.