.. index:: single: G7 New; For 2012 *G7*: New for 2012 =============================== Work in 2012 provided some important new features, improvements to existing features, and a variety of bug fixes. The *G7* documentation was revised heavily, with new Help files, Users' Guide, Reference Manual, Tutorial, and `other documentation `_. Several new routines have been added to the `Software Demonstrations section `_ of the `Inforum web site `_ to display the capabilities of *G7*. The most important new capabilities are these: - Improved Documentation: The Help system for *G7* and related software has been revised. The new system has native support in recent operating systems, including Windows 8, 7, and Vista. `Companion documents `_ also were created in HTML and PDF formats. - Workspace Enhancements: a) Added *wscache * command. When :ref:`caching ` is on, reading and writing to the standard workspace (WS.*) is suspended and data are held in memory. When first turned on, data are read from the WS.* files, and when first turned off data are written to the hard drive in the WS.* files. Capacity in the cache is greater than on disk because of known limitations of the GBanks (WS.*) design, and so pushing data from memory to disk will fail if the WS.* bank capacity is exceeded. In some cases, script processing speed will increase dramatically with use of this routine. The size of the cache typically is limited by the two-gigabyte memory limit for 32-bit programs. b) Added *wsdump* command to :ref:`dump data ` from the cache to a text file. Data may be printed according to specified *tdates*. Otherwise, the routine will strip from the series any leading and trailing zeros, missing values, and garbage, and it only will print data that appear to be valid. The resulting text file may be read later by *G7* or it may be compiled by *Banker* as a compressed bank. - Data Display Improvements: a) Show Command: Restored the ability to store values that were modified in the :ref:`show window `. Added a "Save" button to the show menu, and users now will be prompted to save changes when the window closes. If the *show* window is closed by typing ESC, then upon exit the ESC code will be cleared to prevent the script from being killed since ESC also is used to interupt the processing of a *G7* script. b) Look Command: Improved performance for display of *look* window, where loading of a long stub file was noticably sluggish. The :ref:`look window ` now automatically will adjust the frequency of *gdates* and *tdates* according to the frequency of the selected series. c) Graphs: Improve internal error code returns for *type* and *graph* commands; this improves the user experience, particularly when these commands are employed within loops or subroutines. Improved layout of graph :ref:`legends ` and allow longer series names to be displayed. Partially restored the display of :ref:`line styles `. Allow up to seven series to be shown at once. Allow :ref:`algebraic expressions ` to be graphed. d) Type: Add :ref:`right-click menu item ` in the Editor to type data for a selected series name or algebraic expression. - Improvements to the Excel Interface: a) Added *xl freeze* command to allow a :ref:`spreadsheet to be frozen ` at a specified location. b) Introduced the *xl background * routine to set :ref:`background colors ` of cells. c) Added *xl merge* to allow :ref:`cells to be merged `. d) Added *xl subscript* and *xl superscript* to :ref:`modify the contents of cells `. e) Introduced the :ref:`xl graph ` family of commands to create graph sheets built with data from the current worksheet. f) Modified the :ref:`xl write ` routine to print a series of dates in Excel date format. - Strings, Functions, and Keywords: a) Introduced the :ref:`%formatgiven1 `, :ref:`%formatgiven2 `, :ref:`%formatgiven3 `, :ref:`%format1 `, :ref:`%format2 `, and :ref:`%format3 ` keywords to indicate whether the :ref:`format ` has been set and to recover the current settings. b) Enhancement of the :ref:`%s() routine ` that recovers the contents of named strings. c) Added %if(, , ) :ref:`function ` for general usage within scripts, where specification of is identical to that of the numerical *@if()* command. d) Added "+=" operator to extend string contents with the :ref:`str command `. - Miscellaneous Improvements a) Improved editor :ref:`Find and Replace ` routines. b) The :ref:`Editor F10 (Execute) ` routine now operates in memory and no longer employs temporary text files; this improves speed and eliminates file clutter. c) Added script controls for main menu items that control the :ref:`command box history `: *commandcache *, *commandcache *, and *commandcache *. d) Modified the *@mean()* and *@stdev()* :ref:`functions ` to have the *@ggr()* syntax and fixed problems in all three. e) Add a counter check to the :ref:`chain-weighting routines ` to prevent overflow when reading series names. Increased the maximum number of series in the weighting process to 1500. f) Increase the :ref:`maximum number of variables ` for the *matty* command from 30 to 100. g) Improved the printing of bank contents with the *lis* and *lnc* :ref:`commands `. h) Added *function clear* command to remove :ref:`user-defined functions `. i) Added *timer* command to :ref:`calculate time intervals `. j) Added an optional date to control the :ref:`extent of operations ` in the *ls* command. - An Abridged Listing of Bug Fixes: a) Interface: Enabled the Edit button in the *show* window. Fixed an interface problem with the *Compare* window. Fixed a broken menu item in the Editor (Insert Text From File). b) Strings, Functions, and Keywords: Fixed problems in *%getval()*. Fixed problems with parsing of *%*. Fixed precision problems that caused trouble for the *%ceiling()* and *%floor()* functions. Fix an endless loop condition caused by malformed "%{...(...)...}" scripts. Fixed a problem with the specification of the *%xls* keyword when an empty cell is read. Revised parsing of words within % routines so that text wrapped in "" is treated as one word. Modified treatment of unrecognized '%' in routines for which %-expansion is optional. c) Numerical Routines: Fixed a problem in *@yoy()* that was causing access violations. Fixed a problem in *@Xchwt()* routines that occured when the *fdates* range did not include the chain-weight base year and fixed divide-by-zero and other problems. Improved error detection in the *ls* command. d) Fixed printing problem with *listnames* for compressed banks. .. 2012: (Through 07/26/12) SCALING 05/04/12 Provide rdscale option for ctrl, with same syntax as for the scale command; must wrap group in () for rdscale option to be read. #RH 05/08/12 Add QP extension to proportional scaling that automatically is applied when the standard algorithm fails. Fixed problem affecting try-catch and perhaps # other flow control routines: unchop buffer was not getting cleared. 05/14/12 For now, disable 05/08/12 work on extension to proportional scaling. 05/15/12 Fix problems in syntax checking and improve messages of RAS command. 05/21/12 Continued to improve messaging, error handling, and to fix bugs in RAS and related routines. Fixed problem with alignment of data over time in RAS conditions, where equations were not aligned with workspace. 05/23/12 Rewrote much of the precon() routine. Now allow sc(max/min) <(row group)><(column group)> in addition to original block specification, where row-column groups must have the same number of elements and must form row-column pairs that identify the desired cells. 05/24/12 Rewrote RAS routine and supporting routines to employ double-precision calculations; this fixes some convergence problems. Need to adapt other routines to employ the double-precision versions of the supporting routines; meanwhile, conversion routines are in place to provide support for single-precision routines. 05/29/12 Make RAS routines skip conditions for which the control value is MISSING in a given period. Added fdates command to RAS conditions command set (not yet implemented for gvras routine). 06/15/12 Corrected and adjusted the RAS convergence check. Improved screen output for RAS. http://people.ee.ethz.ch/~creller/web/tricks/reST.html#citations To define a label for any text location, precede it with: . . _‹label›: plus a blank line. There are two ways of referencing a label. To reference ‹label› defined in any document of the project use: :ref:`‹displayed text› <‹label›>` If the ‹label› definition is followed by a section title then ‹displayed text› can be omitted and will be replaced by the title. E.g. this section is preceded with .. _internal:, so we have: :ref:`internal` Internal :ref:`This section ` This section This is the preferred way because it allows linking across files. E.g. subversion repository URL links to my document on subversion. In Sphinx it is possible to reference a document as follows Note that the Visual C++ Redistributable package must be installed in order to use some of the newest features. The VC++ installer should be available at C:\\PDG\\C++Install. Run this installer (run as Administrator if using Vista or Windows 7) before attempting to run the demo routines for strings or the resector tools.