GHS Version 10.00 Update

New features, changes, and bug fixes since version 09.50

=========== MAJOR NEW FEATURES =========

New SCREEN COMMAND Parameter For Split Screen

SCREEN [NORM|MAX] COMmand [n|OFF|ON|ONLY] parameter was added to reformat the screen into a white display area and a black command area. The display area receives all screen output that would otherwise have gone to the command area, with the exception of commands themselves and command-related messages (such as errors that fit in the command area, "End of Run File", and Report Generator informational text).

The number of lines n for the command area (default=5) cannot be so large that the white display area is less than 10 lines (including the divider line) and is adjusted downwards (to a minimum of 1 command line) if given larger. If the display area would be less than 10 lines because of user resizing, it disappears altogether and the black command area uses all available lines, but it reappears whenever possible with the old command area size n restored.

SCREEN COMMAND OFF (same as SCREEN COMMAND 0) causes the command area to disappear completely and all available lines to be taken by the display area. If command line input is needed, a one-line command area reappears temporarily and disappears as soon as Enter is pressed. SCREEN COMMAND [ON] reverts to the former number of command lines. SCREEN COMMAND ONLY causes the display area to disappear completely and all available lines to be taken by the command area (restoring the old default GHS mode).

The vessel graph watermark appears in the command area only. A new logo appears in the display area if present and the command area otherwise; an existing logo never switches areas. CLS clears only the display area if it is present. When the display area is present, there is never waiting before text scrolls off the command area.

SCREEN White|Black parameter added to set command area background to white or black (which also applies to non-LEw Load Editor spreadsheet).

SCREEN White|Black [Display] optional parameter was added to set the background color of the display area to white or black.

SCREEN LOGO OFF was added to turn off the logo without clearing the screen.

SCREEN COMMAND clears any logo when switching between command-only and dual view modes (so that the logo may only appear in the display area if present and in the command area otherwise). The display area logo is now being preserved whenever the display area temporarily disappears due to resizing. CLS clears the logo only if appearing in the command not display area.
New SCREEN SCROLL Parameter For Display Area Scrolling

SCREEN COMMAND modes (except for default SCREEN COMMAND ONLY) disables all implicit waits, instead creating a scrollable collection of all screen output written to the display area since it was last cleared. When this collection contains more lines than will fit in the visible display area, a scroll bar appears which can be used to select any part of the collection for viewing. Any report command (such as RA, STATUS, etc.) starts by clearing the display area and ends by scrolling to the top of the report if it's too large to fit in the visible display area.

SCREEN TOP|BOTom scrolls to the top or bottom of the display area collection. SCREEN UP|DOWn [Line] scrolls the display area up or down a page (or up or down a line if LINE is present).

SCREEN SCRoll OFF turns off scrolling the display area, instead implicitly waiting when the display area is full and no output file is open (the same behavior as for SCREEN COMMAND ONLY mode). SCREEN SCRoll [ON] turns on default scrolling of the display area when not in SCREEN COMMAND ONLY mode.

SCREEN SCRoll ALL turns off any implicit clearing of the display area so all screen output since the last explicit CLS or CLEAR is available for scrolling. In this mode report commands (such as RA, STATUS, etc.) do not start by clearing the display area and do not end by scrolling to the report top.

SCREEN SCROLL bar supports keyboard shortcuts PgUp (page up), PgDn (page down), Ctrl-PgUp (top), Ctrl-PgDn (bottom), Ctrl-Up (line up), and Ctrl-Down (line down). These shortcuts are available not only during normal command but also while a standard TEMPLATE dialog box is active or while WAITing with "Press to continue" button visible.

SCREEN SCROLL mode at LOAD EDIT startup also determines scrolling for display output produced by LEw macro buttons. This LEw scroll mode can be changed by SCREEN SCROLL commands issued within LEw macros, but the original scroll mode is restored when Load Editor exits.
New Menu Additions

A new View menu was added to display current GHS screen settings and allow them to be easily changed.

Help menu added a "Web help" section.

Wizard menu added "My wizards" category, which lists any user wizard in the program directory ending with the ".WIZMY" extension.
New Look For HELP and VIEW

HELP and VIEW programs use a new color scheme (black on white with silver border) for a more modern and readable appearance.

Double-clicking on a word in the HELP program searches through the entire on-line documentation for the first occurrence of the word. Subsequent occurrences can be quickly found by pressing the "A" key (for "find Again").
New Command History

GHS keeps a history of the last 50 unique commands entered from the keyboard, which can be accessed by repeatedly pressing Ctrl-E or the up arrow key. Once in this mode, the up and down keys can be used to pick commands back and forth from this history.
New GHSERIAL Module Communicates With Real-Time Gauging Systems

CUSTOM (GHSERIAL) START [configfile] [/Log | /Dump] was added to start serial communication between GHS and external real-time systems. Communication is configured according to the specified configfile (or GHSERIAL.DAT by default). If /LOG parameter is present, then each received serial message is logged in GHSERIAL.LOG for diagnostic purposes (either formatted or as a raw dump if /DUMP was present instead of /LOG).

The GHSERIAL.DAT file is composed of serial parameter lines beginning with the "$" character, followed by an indexed list of data items from the serial stream. Serial parameters are as follows:

$TYPE protocol - the name of a supported serial protocol type (required). $PORT name - serial port name (default=COM1). $BAUD rate - baud rate in bits per second (default varies by $TYPE). $PARITY method - 0=no parity, 1=odd, 2=even (default varies by $TYPE). $DATABITS bits - number of data bits per byte (default varies by $TYPE). $STOPBITS bits - number of stop bits (1, 1.5, or 2; default varies by $TYPE). $IDFIELD field - ID field index in each record (default varies by $TYPE).

Each line in the indexed list of data items is composed of a record ID string (which may be surrounded by quotes), separated by a space or comma, then a data field position index. For example, a line containing "TANK6P 3" indicates data from the 3rd field of the record marked with ID="TANK6P". If the ID string is empty (e.g. ", 3"), then the indexed field is taken from any common or system data not associated with particular records.

CUSTOM (GHSERIAL) READ listindex varname was added to read the current value of the indexed item from the configured data list into the named variable. For example, "CUSTOM (GHSERIAL) READ 5 X" sets the existing X variable equal to the data item indicated by the 5th data line listed in GHSERIAL.DAT.

CUSTOM (GHSERIAL) STOP [/Keep] was added to stop serial communication. If /KEEP is present, subsequent CUSTOM (GHSERIAL) READ commands can still be used to fetch the final values of data items when communication terminated (requires GHSERIAL.DLL with supported protocol type and permissions).
New Model Converter (MC) Importer For Latest HEC .SHP Files

MC supports import of the latest HEC file format with a .SHP extension. As a side-effect, this import creates a condition file to set the lightship weight and center of gravity; it has the same name as the output geometry file but with extension .CND.

MC import of SHCP file format with an .SHC extension recognizes ShipHull 2000 format even without using /SH2000.

MC increased maximum number of points per station from 125 to 255.
New Model Converter (MC) Support For Partial Tank Property Tables

MC, GHS, and SE were made tolerant of partial tank property tables (see MC_TPF). Formerly only complete tables were supported. It is now possible to include only volume information, or volume plus CG information omitting the surface properties. However MC will not supply a geometry from properties unless complete properties are present.
New LIMIT Type

LIMIT type RASR was added to check the ratio between the absolute righting arm and the function:

v * sin ((h-eq0) * 180 / range)


v = limit value
h = heel angle
eq0 = equilibrium without heeling moment
range = angle beyond equ0 at which sine curve goes to zero

The ratio is checked at every angle for which the righting arm is calculated between two given angles. For example,

LIMIT RASR from 5 to 60 range 90 > 0.5

checks the ratio in the interval 5 degrees to 60 degrees. The sine function has a range between zeroes of 90 degrees. The limit is considered to be satisfied when the ratio of the absolute righting arm to the sine function is at least 0.5 at every angle in that range.

This type of limit is particularly useful when the righting arm curve is complex and not well characterized by traditional measures of area, range, maximum arm, etc.

Note that a sine curve with a range of 180 degrees with an amplitude of 1.4 ft (0.43 m) has the following characteristics:

area to 30 = 10.74 ft-deg (0.047 m-rad)
area to 40 = 18.75 ft-deg (0.10 m-rad)
Arm at 30 degrees = 0.7 ft (0.21 m)

These values are roughly equivalent to the limits in the traditional energy criterion. The exception is the GM, which is 1.4 ft (0.43 m) for the sine curve and 0.5 ft (0.152 m) in the energy criterion. The RASR limit provides for a starting angle at which the ratios are to be checked which may be set several degrees beyond equilibrium, thus allowing the initial slope of the RA curve (GM) to be less than would be required if the ratio checking began at equilibrium.

The RASR limit simultaneously checks range, area and maximum RA while guaranteeing that the righting arm curve does not dip below expected values leading to undesirable stability characteristics.

New Styles For Custom Reports

MESSAGE REPSTART starts fancy formatting for an upcoming NOTE-generated user report, with fields separated by two or more spaces. Any first line not containing "---" is treated as a title line. Subsequent parameter lines consist of one or more pairs in the format "Label: value" or "Label = value". Initial header lines not containing "---" may have labels that span multiple table columns. The final header line must contain "---" with each label corresponding to a column in the table following. Each table line consists of field information (blank or "..." fields allowed) lined up in columns, except special summary lines marked by "--->" may have descriptions spanning multiple columns. The first non-summary line containing "---" is a footer following the end of the table. Any additional lines after the footer are treated as appended information.

MESSAGE REPEND ends fancy NOTE formatting for the user report.

MESSAGE REPFONT [Left|Center|Right|OFF] was added to use the font specified by PRINT CONFIGURE /FONT for NOTE output, justified left (default), center, or right. MESSAGE REPFONT OFF restores the original fixed font for NOTEs.

MESSAGE REPFONT justification was established according to the following rules: (1) Tabular text is left or right justified according to the alignment of adjoining lines (following line has precedence over preceding if conflicting); (2) Text without leading spaces is justified according to ME REPFONT L|C|R; (3) Text already centered on the line is kept centered; (4) Other text is justified as a group at its original location according to ME REPFONT L|C|R.
New Custom Plots

MESSAGE PLOTSTART "title" was added to send future MESSAGE text into a report file as tabulated plot information with the given title. Each subsequent MESSAGE command (other than MESSAGE PLOT commands) specifies a row of numeric plot data for each column. The first column is the independent variable (which must monotonically increase or decrease), against which the remaining columns are graphed as curves.

MESSAGE PLOTLABEL [label]... was added to specify a series of column legend labels, which may be enclosed in quotes to preserve case and spacing. This replaces the use of the first MESSAGE line for this purpose. If the "%" character is present in a label, then its plotted curve is scaled independently of other columns, with the "%" replaced by the actual scale factor used when the label appears in the legend. Note that the general scale of the plot is based on the maximum dimensions of the unscaled curves (or of all curves if none are unscaled). If ME PLOTLABEL does not appear, the labels "X", "Y1", "Y2", etc. are used by default.

MESSAGE PLOTSTYLE [style]... was added to specify a series of styles for each curve column (skipping the first column for the independent variable). The style "L" causes straight lines to be drawn between plot points, while the default style "C" causes smooth curves to be plotted between plot points. If ME PLOTSTYLE does not appear, then smooth curves are used for all columns.

MESSAGE PLOTEND was added to finish the plot data commands (which may be interspersed among NOTE commands, with the entire plot gathered together and output when MESSAGE PLOTEND is encountered).
New Printer Support For International Page Sizes

PRINT output and previewing transparently reformats to match printer page size (e.g. A3, ledger, etc.). When targeting to a printer whose width is larger than 8.5 inches, all report plots and Condition Graphics output as well as page headers and footers are automatically expanded to fit; text output designed for 80 characters per line (such as tabular data) is centered on the page.
Improved Print Preview Image Quality

PRINT /PREVIEW displays using much higher quality under Windows 2000 and Windows XP. Higher-quality previewing takes more time; for faster previewing using lower quality, toggle "Speedup" mode on the right-click menu or press the "S" key.

PRINT /PREVIEW now automatically resizes the preview window when zooming in or out using the "+" and "-" keys and corresponding right-click menu options. The "0" key restores the original "Full page" window. Reduced displays smaller than "Full page" size are now available by repeatedly pressing the "-" key.

DEFLECTion deflection[/length] command was added to set the deflection over a length centered at the midship using the existing origin depth, trim, and heel. If the length parameter is omitted, the overall length is used. The updated deflection is reported to the screen and output file. DEFLECT OFF is the same as DEFLECT 0, except that there is no reporting. DEFLECT without parameters displays the current deflection to the screen.

Whenever any command removes deflection implicitly as a result of changing the waterplane, "Deflection removed" is reported to the screen and output file.
New DAMSTAB /MACRO Parameter

DAMSTAB /SDI /MACRO:macname command uses the named macro to calculate probability of survival. This is available with the /SDIC, /SDIHC and /SDIHR versions.

For example,


Variables are used for input to and output from the macro. These variables must be defined by the user and must have names as follows.

Input string variable:

DAMSTAB_TANKS - contains list of tanks flooded

Output real variables:

DAMSTAB_PS - probability of survival
DAMSTAB_MAXRA - maximum RA in current units
DAMSTAB_RANGE - range of stability in degrees

For example,

variable (str) DAMSTAB_TANKS
macro lesser
    TANKS {DAMSTAB_TANKS}     set DAMSTAB_PS=9999     .Sfinal | .lesser     .Sinter | .lesser     .Smom | .lesser     TYPE FLOOD `Restore to flooded type

DAMSTAB /MACRO report includes a note indicating that probability of survival comes via a user-supplied macro.
New PERM FLOOD Parameter

PERM [permeability [FLood] | RESTORE] [/QUiet] parameters were added. The FLOOD parameter restores permeabilities for selected tanks from the geometry file, and institutes a mechanism so that the specified override permeability will be applied whenever these tanks are changed to type FLOOD, but the values from the geometry file are applied when the type is changed to anything else. PERM RESTORE removes this mechanism and restores the original permeabilities from the geometry file for selected tanks. The /QUIET parameter suppresses reporting of permeability changes. Any tank permeability overrides are now indicated by PERM REPORT, STATUS, LOAD STATUS, TC, and the "Load details" available by right-clicking a load value in LEw.
New TANK SHEARCF Parameter

TANK (list) SHearcf:value sets the shear correction factor for the tank list.
DRAFT line and LWL Disengagement

DRAFT "draft line"= b1@l1, b2@l2 command no longer defines the ends of the LWL unless these had previously been undefined.

LWL and LBP commands no longer clear any "draft line" set by the DRAFT command.

LWL and LBP /NOCHECK parameter was added to skip checking whether the specified length is sufficiently close to the length overall.
Improved Heel/Trim Solving

SOLVE default method was further improved to put priority on the appropriate heel or trim backup method directed at the greater solving discrepancy.

SOLVE METHOD:3 is now the default also for ground point and MB solving.

SOLVE noise was reduced or eliminated, particularly for MAXVCG command.

SOLVE was capable of reaching up to 20 degrees in unusual circumstances for the next potential solution, which could miss an intervening solution if a righting arm peak occurred within that 20 degree span; the maximum reach in such circumstances has been reduced to 10 degrees.
Improved GM Calculation

An improvement was made in the calculation of GM particularly with rotated inclination axis when the GM changes rapidly at very small heel perturbations.
MAXVCG Enhancements

MAXVCG /EXTERNAL when reading the external file now considers any VCG or GM number less than -100 to be UNDEFINED, leaving a gap in the curve.

MAXVCG /COMPOSITE:UNGAP parameter was added to allow gaps in either the original curve or the new curve to be filled in by data in the other curve. (Without the :UNGAP subparameter gaps are preserved.)

MAXVCG heel direction uses aft/forward terminology when AXIS exceeds 45 degrees.

MAXVCG process no longer slows unnecessarily when equilibrium angles happen to fall outside the range of the tabulated HMMT curve.

MAXVCG process was made more tolerant of short-range heeling moment variations, thereby avoiding some "Limit Not Verifiable" errors.
RA Enhancements

RA and MAXVCG command limit evaluations are no longer prevented by out-of-bounds trim and zero-crossing detection has been improved.

RA /LIM handling of trim capsize was improved. When trim capsize takes place, the report and Limit evaluation is now completed with the capsized condition showing 90 degrees of trim and zero residual righting arm.

RA /GRAPH:CLEAN parameter was added to omit horizontal and vertical guide hairs on the righting arm graph.

RA /LIM subparameters were added to change the way that the special-case area limit specification (interpolated limit value) is displayed. RA /LIM:COMBINE combines the limit pair into a one-line display rather than showing them separately. If the ATTAINED subparameter is being used, the COMBINE subparameter must follow it. For example, RA /LIM:AT:CO (using accepted abbreviations).

RA command was only showing flooding point heights for angles in the same direction as heel changes (e.g. only for starboard angles if each new RA row increases the heel towards starboard). Now this restriction only applies if the RA /LIM parameter is present; otherwise flooding point heights are shown for all angles.

When capsize in trim occurs during a righting-arm curve generation and limit evaluation (RA /LIM), the flood point height may be discontinuous at the angle of capsize. If the discontinuity brackets zero, that angle is now considered to be the angle of downflooding. Formerly this case yielded an undefined angle of downflooding.
TEMPLATE Enhancements

TEMPLATE /Tip:"text" parameter was added for all non-static fields. The tool tip text appears when the mouse has been stationary within the field for a short time. The text is automatically wrapped to the next line if too long, but explicit line breaks can be marked using the "|" character.

TEMPLATE @"libdir\bitmap" field and SCREEN LOGO libdir\bitmap command work the same regardless of whether libdir is a directory or a GHS library file.

TEMPLATE REMOVE field ignores the rest of the line or until a comma following a field separator ("|,") is encountered, thus allowing conditional loading of individual fields within a line. Commas after field separators are otherwise ignored, so they can be freely used at the end of a template line to take the next line as a continuation. Just as with other continued GHS commands, if the next line is blank, continuation proceeds to the line afterwards.

TEMPLATE field /Grey:varname parameter was added to disable and grey-out the field if the specified "varname" variable exists and is non-zero.

TEMPLATE /ENTER[:n] parameter was added for all non-button variable input fields (i.e. VARIABLE, PART, CHECK, and RADIO). If n is 0 or absent, then the Enter key is disabled when the field is active. Otherwise Enter pushes the nth button following the variable field (or preceding if n<0; if no such button exists, Enter is disabled).

TEMPLATE /ENTER parameter may now be used for button fields to mark it as the default push button when Enter is pressed with the focus on a variable input field (which overrides the default by using the /ENTER[:n] parameter itself).

TEMPLATE /START parameter may be used on any button or variable field to give it startup focus. This parameter is now disassociated from Enter behavior, except that for backwards compatibility if a button has the /START parameter but no button has the /ENTER parameter, then the /START button is also treated as the /ENTER button.

TEMPLATE /POS:position[:margin] subparameter was added to specify an explicit character margin (which may be fractional) to offset the dialog box from the main window (overriding the default margin). For example, /POS:TOPLEFT:2 places the dialog box two character positions below and right of the upperleft corner of the window.

TEMPLATE command uses tighter spacing for adjoining rows composed of paired image fields with explanatory text underneath each image on the next row (regardless of any unpaired fields in either row). Because a text field alone on a row has special treatment, append an empty text field if necessary. If tighter spacing is not wanted in certain cases, empty text lines may be inserted for wider spacing.

TEMPLATE images are centered if shorter than the current row height.
Section Editor (SE) Enhancements

SE "Key Edit" mode supports "+" to multiply by 10 and "-" to divide by 10 the increment moved by arrow keys (which is multiplied again by 10 when the Ctrl key is used). There are different minimum increment factors for each unit, corresponding to the lowest decimal place in the point display for that unit. The lowest minimum is 0.1 mm, available by repeatedly pressing the minus key in MM unit mode.

SE "Key Edit" mode supports diagonal movement of points and stations using the End, Home, PgUp, and PgDn keys, in the directions indicated by their positions on a numeric keypad with NumLock off.

SE and DISPLAY point coordinates have additional precision.
Load Editor for Windows (LEw) Enhancements

LEw display format was improved for the reverse video spreadsheet cursor and report headers produced by clicking macro buttons.

LEw right-clicking vessel graphic view in Tanks mode now selects the clicked tank (same as left click) and pops up information on the tank's description, name, contents details, and load details; in other LEw modes, just the current part name is shown.

LEw right-clicking a tank's Contents field includes a section showing its free surface moment and allowing the tank to be frozen to solid contents or unfrozen to liquid contents.

LEw tank Contents field always ends in "!" if the tank is frozen.

LEw macros execute with heel varying if currently in Auto Solve mode, and with heel fixed otherwise. If such a macro changes the heel fixing state by issuing FIX HEEL or VARY HEEL and does not restore this state before returning to LEw, then the Auto Solve mode is changed accordingly (i.e. Auto Solve on for VARY, off for FIX). This behavior is not effective if LEw started with heel fixed. To actually change LEw's heel fixing state rather than its Auto Solve mode, this can be accomplished by a macro which first fixes or varies heel then restarts LEw using a new LOAD EDIT command with the same parameters as before.

LOAD EDIT /SCR:NORM|MAX parameter was added to start Load Editor in a normal or maximized window; on return, the main screen is restored to its previous state (normal, maximized, or minimized). If the main screen is minimized when the LOAD EDIT command occurs, then /SCR:NORM is assumed by default.

LOAD EDIT /DISPlay: [WHITE|BLACK] parameter added for LEw to force graph view background to white or black (default is the color of the GHS command area). Any /DISPLAY subparameters such as WHITE or TRUE modifies the default graph views (profile and plan including sails) unless PLAN or PROFILE is present.
TCP/IP network USB and parallel security

TCP/IP network security is now available using either USB or parallel port dongles. This new security method does not require NetBios to be enabled. It also provides support for fast access across a large network by specifying the dongle server's IP address or network name during installation.
New System Variables

DRLOC8 real system variable was added to SET a location (default=0) at which draft value is to be returned by the new DRVALU real system variable.

SCRTOP and SCRBOT real system variables were added to return 1 if the display area is at the top or bottom of its scrollable collection, default 0 if not. These variables are useful in conjunction with the TEMPLATE /GREY field.

TLENGTH and TBREADTH real system variables were added to return the length and breadth of the current tank selection.

TFSMMT and TFSMMT1 real system variables were added to return the true and formal free surface moment of all selected tanks.

======= Minor New Features =======

ADD "LIGHT SHIP" *, l, t, v now allows explicitly setting the CG of LIGHT SHIP without knowing or altering the magnitude of its weight (any of l, t, v may be a number or an asterisk; if an asterisk, the existing value is not altered). Formerly this form of the ADD command worked for all items other than LIGHT SHIP; now it works for LIGHT SHIP also.

CLEAR [PROJECT] and PROJECT commands set the ERROR system variable to zero.

COPY file1 file2 command allows file2 to be a directory specification to copy file1 into that directory. Likewise DIR specification may be a directory.

DISPLAY STATUS /SPAWN now adjoins the CG window to the side of the main window similarly to the /SYNC parameter, except that subsequent /SPAWN instances offset a notch from pre-existing CG windows.

DISPLAY STATUS /QUIT closes all active CG windows, not just synchronized ones.

DISPLAY STATUS Condition Graphics window is now invisible if a report file is open.

HMMT REPORT now interprets the sense of heel angles and heeling moments according to the AXIS setting. (Formerly it always showed P and S to indicate negative and positive directions.)

IF [NOT] EOL THEN ... condition was added to test whether end of line or READ DATA mode is not active.

LS /FRA report includes a frame description column unless deflection is shown. (If SMOD stress is shown, then the frame description may be abbreviated.)

LS and TORQUE commands with both /NOPRINT and /FRAME parameters recognize the $LOC suffix. If variables exist whose names begin with a valid frame name (from the .FRA file) and end with the $LOC suffix, these variables receive the frame location in the current units.

MESSAGE (REPORT) "filespec" now uses case-sensitive long file names.

MESSAGE "command always displays command line verbatim, with no capitalization, no splitting into multiple commands after "|", no trimming comments after "`", no continued line input if commandline ends with "," or ";", and no special treatment of the "ELSE" keyword if inside an IF condition statement.

REPORT fancy formatting cell errors pop up a message box for the first error encountered, but are otherwise non-fatal.

RUN /QUIET parameter is assumed for wizard run files with ".WIZ*" extension.

RUN /DIR includes "*.WIZ*" files in its run file listing.

SET STR operator was added to take everything remaining on the line as a string, cleaning up anything that would be incompatible with commands where a string parameter is used. In particular, quote marks (") are translated to apostrophes (').

SET QUOTE operator was added to take everything remaining on the line quoted verbatim, including quote marks ("). This function is useful for storing an entire command including quotes into a string variable for later execution.

SET LEFT, RIGHT, and SLICE operators can now be combined in the same command (e.g. SET CHAR=RIGHT 1 LEFT 3 "ABCDEFG" to set variable CHAR to "C").

SET command no longer truncates strings longer than 256 characters.

GHS32 starts minimized if driven by a run file whose first command is SCREEN (allowing startup in SCR MIN or SCR MAX mode without a screen flash).

GHS32 now omits the key menu footer by default (to see these key assignment labels, enter KEY SHOW or toggle the View -> Key footer menu selection).

The main screen is automatically revealed if minimized when reporting an error without a pop-up dialog box or if waiting for user input with no visual clue.

Pressing the Esc key (or any "Exit" button) is now equivalent to pressing the spacebar whenever waiting with the "Press to continue" button message, except when the Esc key is pressed twice within a half-second or the screen has been filled with lines of text with more to come, in which case remaining command output is aborted (this exception covers multi-section TC, COMP/FORM, and COMP/SECT screen output).

GHS32 border appearance was improved for Windows XP themed color schemes.

Retrieval of string variables containing quote marks (") is now handled transparently even when the variable in braces is itself enclosed in quotes (e.g. "{var1}"). Literal quote marks may be stored in a variable either by surrounding everything in quotes and doubling each internal quote mark (e.g. SET X="""text""") or by using the QUOTE function (e.g. SET X=QUOTE "text").

The backwards apostrophe character (`) can now be handled by enclosing it in quotes or by using the SET STR and QUOTE operators.

======= Bug Fixes =======

CONTENTS description density was ignoring any API[60] or DEN[15] suffix in the density parameter if API or DEN appeared in the description parameter.

DISPLAY STATUS Condition Graphics window was not releasing all its process resources if terminated by clicking the title bar close button.

DISPLAY STATUS was failing when run from the 10th or higher instance of GHS.

DISPLAY STATUS in a boxed report misformatted the timestamp on the title line by including an apostrophe.

DISPLAY STATUS synchronization was being terminated by READ /APPEND.

DISPLAY STATUS Condition Graphics header was not showing the draft correctly if the DRAFT command had defined a draft line.

DISPLAY STATUS body views with flooded tanks was sometimes bleeding across tank boundaries.

Error possibilities for "Invalid location" were fixed in several places.

Frozen tanks were not working reliably when any damaged, bubble, spilling or WDF tanks were present (since 7.54 only).

GHS and TC fancy reports were trapping "Not enough cells on line" for multi-page tables that included drafts in foot and inches format.

GHSCOM module was running slowly for certain commands such as reports that produce screen output in GHS (since 9.30 only).

HELP was not including the MC command among the command list.

Help menu was not listing new topics GHSCOM, LEWOP, and LOADLEW (though they were available from the right-click menu within GHSHELP.EXE).

IF condition THEN [...ELSE] ME "str1"str2"str3 was capitalizing str2.

IMPORT, EXPORT, and FILL commands were failing for quoted file specifications containing spaces.

LOAD EDIT /BUTTON was at risk for an "Invalid location" run-time error.

LEw Solve button was temporarily disabled after returning from a macro which did a SOLVE with fixed heel (which is the default when Auto solving is off).

LEw was not always redisplaying tool buttons and extra Crane/Hmmt boxes properly when reconfigured by a macro executing a nested LOAD EDIT command.

LEw reports were garbling some special characters, which now appearing with meaningful substitutes (such as "RAH" for "RA" followed by Greek letter "phi").

LEw LIMIT REPORT was misformatting the reverse video on its header line.

LEw reports in WAIT AUTO mode were dropping lines and neglecting the bar header line if certain SCREEN commands (e.g. SCR H) were issued within LEw.

LEw was trapping "Real overflow" run-time error when right-clicking the load for a tank eligible to be damaged because its boundaries contain its reference point (since 8.60 only).

LS and TORQUE /THIN parameter is now effective.

LS and TORQUE commands ignore property table information rather than risk trapping "DISCREPANCY" errors if any tanks are TYPE CALIBRATED.

LOAD STATUS /FORMAT:2 report was improved to prevent overflow on total lines and avoid confusion among fancy report columns.

LOAD STATUS fancy printing was failing for very long tank names.

MAXVCG /BOTHDIR parameter was not reversing the HMMT direction and therefore was not getting a realistic assessment of stability while heeling to port (when heeling moments were present).

MAXVCG added score line after limits, preventing spurious "continued" message when previewing report while still open.

MAXVCG was sometimes incorrectly reporting the GM limit margin as UNDEF.

MAXVCG and RA attained flood height limits were reported in the wrong units.

MB /WTOL and /HTOL tolerances were not being properly observed on secondary vessels, particularly those supported by ground reactions.

MB was not solving correctly for downwardly directed interaction ground forces.

MB fixed a risk to hang in one session when another is aborted.

MESSAGE "string1"string2"string3 was capitalizing string2.

Mouse clicking and selection was not reliable for multi-monitor systems where the primary monitor was not leftmost.

Maximizing the window on multi-monitor systems was not working properly.

PERM REPORT title was only appearing on the screen, not in the report. PERM REPORT was adjusted for "Flooded" column to appear only if needed.

PRINT plot progress lines were triggering spurious "Press to continue" waits.

PRINT no longer traps "Degenerate mapping" for plots where all X values or all Y values are identical, instead formatting a unit margin around them.

PRINT graphic resolution for footer bitmap images on monochrome printers was sometimes fluctuating between pages following Condition Graphics output.

PRINT done simultaneously by multiple GHS instances with the same current directory was not necessarily producing distinct printouts or previews.

PRINT fixed a rare program hang condition for certain Condition Graphics output.

PRINT was trapping "Expression out of bounds" run-time error if the footer text contained more lines than fits on a page. PRINT CONFIGURE /FOOT:txtfile now restricts footer text to a maximum of 12 lines.

RA /LIM was not calculating EQUIL limit margin correctly when an improved equilibrium angle immediately follows a barely acceptable equilibrium angle.

RA was sometimes identifying the EQU "first intercept" location as also being the RA0 "second intercept".

RA was occasionally failing to report its best interpolated EQU location, instead just reporting the listed angles around it.

RA report was made 1/4 inch wider to appear more centered on the page.

RA no longer traps "ANGLES given do not include equilibrium" in rare spurious cases when the righting arm value was extremely close to zero.

READ FILE1, FILE2 was failing to check FILE2.GF for any "Duplicate part name" (since 8.68A only).

READ was not clearing property tables from previous reads (since 8.64 only).

REPORT is no longer delaying to trap "File inaccessible" if already open.

REPORT page completely filled before a plot page no longer causes an unnecessary blank page and "continued next page" notification to appear in between.

REPORT fancy printing was improved in the following areas: narrow tables no longer spread horizontally across the entire print page; much better column colors are used for several reports (RA in particular); RA was ending with spurious "continued next page" message after Critical Points table; several reports were ending with a spurious blank line and missing box bottom; GROUND report was not being properly centered; LS and TORQUE reports were misaligning numbers marked with an asterisk; LS /LIM, LS /PER, and TORQUE /LIM were not spotlighting limit overruns (requires updated RGDEF.DAT and RGSTYLE.DAT).

REPORT fancy printing was sometimes failing after a page ending in a NOTE.

REPORT fancy LS printing was failing for FRAME names over 11 characters or containing numbers.

REPORT fancy printing was failing LOAD STATUS /NOHEAD.

REPORT fancy printing was misformatting lines inserted directly into a report by alternate means such as using the VIEW command with a report open.

REPORT fancy printing was improved for COMPONENT /SECTIONS /DEPTH, STATUS SUMMARY, and DRAFT location report.

REPORT fancy MAXVCG printing was failing for errors such as unverifiable limit.

REPORT fancy printing was failing to center subtitles and trapping "Not enough cells on line" if the subtitle enclosed consecutive spaces.

REPORT fancy formatting was sometimes inappropriately centering NOTEs appearing in lined-up tables and failing to give special treatment to initial tags ending with a colon.

REPORT fancy printing no longer counts omitted separator lines against the page maximum, thereby allowing more lines per page than for regular reports.

REPORT fancy printing was trapping on a continued table footer starting a new page.

REPORT fancy formatting no longer suffers compounded problems if ever errors are detected and output during report generation.

REPORT fancy formatting was improved for MAXVCG quick summary display.

REPORT fancy formatting was always centering SUBTITLE lines, instead of only centering ones ending in "\".

REPORT fancy printing was sometimes trapping "Not enough cells on line" in cases such as long STATUS report part names that end in numbers.

REPORT fancy RA printing was trapping "Not enough cells on line" if no spaces were separating fields in the Min/Max and Attained columns of the Stability Criterion section.

ROLL IMO was using an incorrect WG (height of CG above waterplane) parameter in some cases. With zero trim or when the origin location was near the LCG the error was small. It became more significant at large trim angles and when the origin location was at the end of the vessel.

RUN, DIR, and TEMPLATE commands were not working for file specifications containing multiple periods (which are discouraged in any case).

SE control arrow keys in "Key Edit" mode were failing to move points or stations in larger increments than the corresponding non-control arrow keys (since around version 8.00 only).

SHELL OPEN "document" preserves the case of the document string being opened (which can be useful for URLs and mailto e-mail addresses).

SOLVE was occasionally capsizing due to a bug that sidetracked the search for an improved solution when a weak solution had already been found.

SOLVE default method was not exercising its backup trim solving capability when the heel is fixed (as happens internally in commands like MAXVCG).

SOLVE /METHOD:1 and /METHOD:2 were sometimes ending up capsized due to improper recovery from a temporarily-capsized intermediate result.

TC /SOUND was not showing the appropriate sounding values and units unless the load list was prefixed by "SOUNDING:" or "ULLAGE:".

TEMPLATE @"filespec" DIR and FILE fields were mistakenly displaying "filespec" on a button face in the directory or file selection dialog.

TEMPLATE box fields were not being sized properly if a BREAK appears within the box or if the box's label is wider than its contents.

TEMPLATE check boxes and radio boxes were not being aligned properly if any variables or push buttons appeared on the same row.

TEMPLATE execution using the /PERSIST parameter was not cleaning out the stack of all active macros and templates before executing any ESC macro when the system variable ERROR=0. Now error handling is uniform regardless of whether the /PERSIST parameter is present.

TEMPLATE RADIO button fields appearing at the top of a template were not working properly.

TEMPLATE drop-down list controls were failing to have the correct default item select at startup if the variable was the single character "A", "F", "P", or "S" (i.e. the vessel direction suffixes).

TEMPLATE lines starting with "" as a placeholder but continuing with further fields were displaying in the line's first field area (since 9.20C only).

TORQUE plot was having excessive scale when all table values were zero.

VARIABLE and WRITE commands were failing to properly save and restore variables containing quote marks.

WRITE command was not properly saving REPORT file names containg spaces.

WRITE command was not saving TYPE CALIBRATED information.
Previous Version Update Features

Copyright (C) 2008 Creative Systems, Inc.