Monday, November 08, 2010 at 12:02 AM.
system.verbs.apps.uBASE.examples.reportStates
<<build a list of states and their capitals from the database <<JWB Apr 93. Under Frontier Runtime™, the list goes into a TeachText document <<but first, into a table at scratchpad.stateCapitals, so we can sort it easily if Frontier.isRuntime () { <<create the table new (tableType, @scratchpad.stateCapitals)} else { <<create the outline, open it in a window new (outlineType, @scratchpad.stateCapitals); target.set (@scratchpad.stateCapitals); editMenu.setFont ("Geneva"); editMenu.setFontSize (9); Frontier.bringToFront (); <<so you can watch the outline being built edit (@scratchpad.stateCapitals)}; local (fnum); bundle { <<start up uBASE, open the file local (ubasefolder); ubase.launch (); ubasefolder = file.folderFromPath (ubase.appinfo.path); fnum = ubase.openFile (ubasefolder + "States Database")}; bundle { <<visit all the records in the database local (recordCount, dir, key, i, x); recordCount = ubase.CountRecords (fnum); if not Frontier.isRuntime () { op.setLineText ("There are " + recordCount + " state capitals in the database. They are:"); dir = right}; <<first headline is inserted to the right key = ubase.getFirstRecord (fnum); for i = 1 to recordCount { ubase.lookupRecord (fnum, key, @x); if Frontier.isRuntime () { scratchpad.stateCapitals.[key] = key + ", " + x.capi + ", " + x.abbr} else { op.insert (key + ", " + x.capi + ", " + x.abbr, dir); dir = down}; <<subsequent headlines inserted down key = ubase.getNextRecord (fnum, key)}}; if Frontier.isRuntime () { << create and launch the report file, delete the temporary table local (path, ix); bundle { << Prepare up file path = file.folderFromPath (uBASE.appInfo.path) + "State Capitals Test"; file.new (path); file.setCreator (path, 'ttxt'); file.setType (path, 'TEXT')}; file.writeLine (path, "There are " + sizeof (scratchpad.stateCapitals) + " state capitals in the database. They are:"); for ix = 1 to sizeof (scratchpad.stateCapitals) { file.writeLine (path, scratchpad.stateCapitals[ix])}; file.close (path); try { launch.anything (path)} else { dialog.alert ("Sorry...could not open your new file " + path)}; delete (@scratchpad.stateCapitals)} else { << clean up and sort the outline op.sort (); op.firstSummit (); window.zoom (@scratchpad.stateCapitals); target.clear ()}; ubase.closeFile (fnum)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.