# J504 Library Changes

# bmp

The script is now loaded into `jbmp`.

Verbs `viewrgb` and `viewbmp` are moved to the `viewmat` script.

# Config

Added command strings for EPS and PDF readers in the External Programs dialog. These can be used for viewing corresponding output from Plot.

Command parameters are supported. For example the following re-uses an existing viewer window:

       c:\program files\ghostgum\gsview\gsview32.exe -e

To experiment, define readers in Config, then run Studio|Demos|Plot and Options|Save EPS or PDF.

New dialog Session lets you define the directory search exclusion list.

Added support for the `DISPLAYLOAD_j_` flag in boot.ijs. Set this to 1 to display scripts as they are loaded, when debugging standalone applications.

Minimal script minijx.ijs now includes a close handler.

# dirbrowse

Extended to support Make New Folder.

# Directory Match

Directory Match is enhanced to support Project Manager snapshots. This can be accessed from Project Manager menu Tools|Compare Snapshots, or within Directory Match from menu File|Source from Snapshots. See also Project Snapshots.

Directory Match also supports the subversion version control system. This keeps a copy of the last checked out source in subdirectories `.svn`.

In Directory Match, select menu File|Source from Subversion to match a directory against the subversion source.

You can assign a function key to compare the current window with subversion. To do so, use Edit|Configure|Fkeys to create a noisy function key with code:

       comparesvn_jijs_''

New button `Compare All` runs a comparison of all source and target files.

Menu selection View|Compare ignores line separators - simplifies comparison of text files created on different platforms.

# Directory Tree

Verbs in script dir that read directory trees now ignore hidden directories, and any directories in the directory exclusion list `DIRTREEX_j_`. These verbs are `dirtree`, `dirpath`, `dirss` and `dirssrplc`.

The directory exclusion list is defined in Edit|Configure|Session. For example, the CVS version control system stores files in subdirectories `cvs`. Since these subdirectories are not hidden, then to avoid searching through such subdirectories, enter `cvs` in the directory exclusion list. You do not need to do this when using subversion or for Project Manager shapshots, since their subdirectories are hidden.

# examples\ole\excel

Made several changes provided by Devon McCormick.

Added Devon's script `xlextract.ijs` to extract all data from an Excel spreadsheet.

To simplify distribution, replaced all Excel spreadsheets with text files containing their macro definitions:

       jdemo.txt
       jmacros.txt
       jsvrdemo.txt

For example, create an excel spreadsheet `jdemo.xls` and copy jdemo.txt into a module in the Visual Basic editor.

# Form Editor

Now supports commands after `rem form end`, and multiple forms in one script.

# gnuplot

gnuplot has been reworked and supports Gnuplot V4.0.

The main definitions are renamed to avoid conflict with Plot.

The data argument is now treated as in Plot.

Under Windows, gnuplot can be configured to display plots automatically.

To access:

       load 'gnuplot'

# J files

J files are updated to support 64 bits. For more information, see

64 bit component files.

# Labs

New labs:

      viewmat

Script `system\extras\labs\labdir.ijs` now uses `jpath` folder names.

Plot, viewmat and graph windows now support Ctrl+J for lab advance.

# main \numeric

Added verb `roundbanker`. Rounds y. to nearest x. with bankers rounding. Also `roundup` and `rounddown`.

Improved `rounddist`. This now spreads adjustments evenly over the values.

# main\colib

`coclass` will not replace an existing definition of `COCLASSPATH`.

# main\dll

Updated for J64. There are new declaration codes of:

       l   long integer (8 byte)
       w   J unicode
       x   J integer (4/8 byte for J32/J64)

For more information, see Calling Procedures in DLLs

# main\map

Added Oleg Kobchenko's map script. To access:

      load 'map'

# main\misc

Updated `boxcols` to use `('';1) <;.1 y.`

Added verb `nounsizes` which returns a list of global nouns and their sizes.

Added verb `showevents`. This writes all windows events to the session.

# main\sysenv

Added `IF64_z_`, which is 1 if a 64-bit J system.

# main\winlib

Added verbs `wdforms` (form information) and `wdishandle` (checks if argument is a form handle).

# packages\math\integer

Added complex integers and complex symmetric integers.

# packages\math\primutil

As suggested by Andrew Nikitin, added optional left argument of the maximum number of tries to `prevprime` and `nextprime`.

Added `smallprimefactors` to calculate small prime factors of an integer.

packages\finance

Added `xirr` to calculate internal rate of return given non-periodic payments.

# Plot

Plot has been rewritten for J504, see Changes to Plot in J504.

# Project Manager

Project Manager now supports snapshots. These are intended as simple way of allowing comparisons between the current state of the project and an earlier state, or recovering from an earlier version. See Project Snapshots.

Projects can now be linked. In a linked project, the source files are those from the linked project. Other files in a project are not linked. See Project Links.

You can now change the Look In directory to a subdirectory. To do so, click the arrow button to the right of the Look In edit box. This can be useful for projects with many subdirectories. By changing to a subdirectory, the Project File list is repopulated with only those files in the subdirectory.

The old folder configuration button has been moved to menu Tools|Look in Folders...

# Regular Expressions

The GNU Regex has been replaced by the Perl-compatible regular expression (PCRE) library with POSIX interface.

Thanks to Oleg Kobchenko for the recommendation and initial implementation.

The system has also been simplified and extended to support J64.

# Session Dialogs

Most session dialogs, such as Edit|Configure and Project Manager, have been expanded, so that they should display better with larger fontsizes.

# Sockets

Script `sockets.ijs` has been simplified and enhanced to support 64 bit systems.

# Task

Added Oleg Kobchenko's task script. To access:

       load 'task'

# viewmat

Viewmat now supports complex arguments to produce a vector field display, as in Oleg Kobchenko's `viewfld`.

New viewmat windows now cascade.

To close all viewmat windows:

       closeall_jviewmat_ ''

A viewmat lab has been added. >> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User