FSHELP, utility, A full screen help utility with lots of extra's

  FSHELP is a screen-oriented help utility. It makes use of SMG routines to 
  display help on video terminals. It has the following features

  - Full screen display of normal .HLB files (scrolling in both directions).
    Fshelp can also display data from .TLB, .OLB and .MLB files including
    an analyze/object of a module in an .OLB file
    (analyze/object for IA64 .OLBs can only be done on IA64 platform).
  - Selecting subtopics by just typing the name of the subtopic or enter.
  - Allows cross-referencing of help modules via extra info in help file.
  - Allows header lines to remain on screen when scrolling.
  - Allows you to look back at the last 20 topics.
  - Allows you to mark some help topics for easy return to this topic
  - Allows you to toggle 132/80 columns
  - On all screens help can be displayed via the HELP or PF2 key
  - FSHELP checks for all libraries via the hlp$library* logicals
     and lets you select one of them via the TAB key.
  - FSHELP also interfaces to the HELP/MESSAGE databases so you can
     define FSHELP as your normal help utility (HELP:=$'directory'FSHELP)
  - There is a sharable image that can be called from any other application
     to display help (lib$find_image_symbol), so you can display help
     in FSHELP format from any image.
  - FSHELP messages are in English, Nederlands(Dutch) or Frysk (A language
     spoken in the north of Holland). You can easily add you own language
     (see the .MSG file for help). FSHELP does not translate text in helpfiles,
     only the FSHELP messages are in the selected language.
  - You can search text within a help page ((PF1-)PF3), or on this page and all 
    deeper levels ((PF1-)FIND). If you are on the top page of the help library, 
    you can search through the whole library, or even in all loaded 
  Help files and libraries are in the same format as normal VMS help files. 
  The format is described in the 
  with the following additions. All these commands start with an ! so
  VMSHELP will ignore them.

  a. !# Signal the end of header lines in a help text. Th(is)(ese) lines
        (upto 4) will remain on screen, even when the rest of the text
        is scrolled.
  b. ![text on screen]@library topic topic ...
        FSHELP will save this information, and when you type the 
        F12 key, a list of topics will be displayed, from which you 
        can select one. @library is optional. This gives a possibility to
        make see-also entries.
  c. !@[text on screen]DCL command|dcl command...
	FSHELP will save this information, and when you type the
	PF1-E (execute) command, FSHELP will let you select one of the 
        FSHELP will generate a batch-job in the queue FSHELP_QUEUE (default
        SYS$BATCH) containing the above lines (separated by |). In these
        commands you can specify symbols to be asked from you.
        These symbols are separated by '. FSHELP will check if there is
        a symbol with that name. If this symbol exists FSHELP will substitute
        the value of that symbol, otherwise FSHELP will ask you for
        a substitution.
        Example  !@[header]$compute 'test'/out=q.q|$print/delete q.q
        will try to find the symbol test, and if not found will ask you
        to specify a new value for 'test'. Then a batchjob will be 
        submitted in the queue in the symbol FSHELP_QUEUE (default SYS$BATCH)
        containing the lines:
         $compute new_value/out=q.q
         $print/delete q.q
        where new_value is the value found in the symbol TEST or the value
        given by you.

  VMS HELP will ignore all lines starting with ! (as will FSHELP), so these
  lines can be included without interfering with VMS HELP.

  You can enter help topics on the command line, just as VMS HELP.
  The format is

  fshelp [@libraryname] [topic [topic...]]

 FSHELP does not only display help files, it can also display data from
  .TLB, .OLB (object and shareable image files) and .MLB files
  via the qualifier(s) /text, /object, /image and /macro

 For further help look at the FSHELP help file, you can do that by typing
 fshelp=$'directory'fshelp_alpha  (or _vax or _ia64)
  Where 'directory' is the directory where fshelp (and its help file )
  can be found

 When looking at a help page, you can display the deeper topics by
 typing a Return, a /,  or a letter. This will display a menu containing
 the deeper topics. The / or letter will jump to the first topic containing
 that letter (or starting with that letter if you specified /NOSEARCHWILD).
 Typing FIND will jump to the next topic that matches.
 By typing more letters you can make your search more exact.
 PF4 or F10 returns to the previous screen. For more help type PF2 or HELP.


Define fshelp as a foreign command

Start it as normal help

$FSHELP [topic [subtopic...]]]	!give normal help
$FSHELP/OWNHELP			!give help info about FSHELP
$FSHELP/TEXT   [module]   	!Display [the module in] FORSYSDEF.TLB
$FSHELP/IMAGE  [module]		!display [the module in] IMAGELIB.OLB library
$FSHELP/OBJECT [module]         !Display [the module in] STARLET.OLB library
				! in the deeper help you can get analyze/object info
$FSHELP/MACRO  [module]		!display [the module in] LIB.MLB
$FSHELP/LIBR=*.HLB		!Display help about all .HLB files in SYS$HELP
$FSHELP/LIBR=*.HLB/LOAD		!Read all info from all .HLB files to memory for
				! fast access (this takes a while, but if you do
				! not leave FSHELP, access is fast).
				!  select libraries via the TAB key.
$FSHELP/MESSAGE Accvio          !give help/mess about the ACCVIO item

The libraries chosen for the /text, /object, /macro ,/image can be changed.
  See the .MSG file for more info

There are a lot more qualifiers, see the FSHELP/OWNHELP for more info.

Note: Of course you can also define FSHELP as HELP.

Also included is a shareable image that can be called from any application
See the FSHELP_OUTPUT_HELP_EXAMPLE.FOR for more info. 

This package contains the following files 

In the home directory
CREATE_FSHELP.COM	The command file to compile/link FSHELP and 
			the sharable image
FSHELP_ALPHA.EXE	The main executable alpha
FSHELP_SHR_ALPHA.EXE    The sharable image alpha
FSHELP_VAX.EXE      	The main executable vax
FSHELP_SHR_VAX.EXE      The sharable image vax
FSHELP_IA64.EXE      	The main executable ia64
FSHELP_SHR_IA64.EXE     The sharable image ia64
FSHELP.HLB		The help library

in the [.src] directory

a. The fortran sources

FSHELP.FOR		The main program
FSHELP_MAIN.FOR         The body for the sharable image
FSHELP_DISP_INFO.FOR	Display info about open libraries/modules
FSHELP_MSGHELP.FOR      The help/message routines
FSHELP_UTIL.FOR         Utility routines
FSHELP_SCR.FOR          SMG routines
FSHELP_FILES.FOR        FIle handling (lbr)
FSHELP_OBJECT.FOR       The module for analyze/object
FSHELP_OBJECT_VAX.FOR   The module for analyze/object of vax object
FSHELP_OBJECT_ALPHA.FOR The module for analyze/object of alpha object
FSHELP_OBJECT_IA64.FOR  The module for analyze/object of IA64 object on IA64
FSHELP_OBJECT_NOT_IA64.FOR The module for analyze/object of IA64 on vax/alpha
FSHELP_OUTPUT_HELP_EXAMPLE.FOR Example how to call the sharable image

b. the include files

ELFDEF.INC		The ELF object definitions (adapted from FORSYSDEF)
FSHELP_DEF.FOR		The definitions for the interface to FSHELP_SHR
FSHELP.INC		Internal definitions to fshelp
FSHELP_MSGHELP.INC	Internal definitions to fshelp for messagehelp files

c. The .cld file


d. The message file (includes all screen messages in all languages)


e. The help file


f. The jump vector (for VAX) for the sharable image


in the [.vax] subdirectory
 All the vax-objects of the sources

in the [.alpha] subdirectory
 All the alpha objects of the sources

in the [.ia64] subdirectory
 All the IA64 objects of the sources


unpack the .BCK file : backup fshelp_vv.BCK/save [...]

The executables are included in the kit, but if you want to rebuild
FSHELP, do the following:
  If you have a fortran compiler you can compile and link

  $@make_fshelp_'architecture'   Vax,Alpha or IA64

  Otherwise, just link

  $@make_fshelp_'architecture' LINK

This will create the FSHELP_'architecture' and the FSHELP_SHR_'architecture'
images and the FSHELP.HLB help file.

I included the objects so you can adapt messsage files even if you do not have
a fortran compiler.

The most recent version can be donwloaded from oooovms.dyndns.org.

Author : Fekko Stubbe

If you have suggestions or questions, plaese mail to te address below
Email  : fshelpdev (at) oooovms.dyndns.org



    010 1-jan-1992
Initial release, long long long ago

020 1-may-2003
Initial distributed releasae

021 1-jun-2003
1. Allow the help page to be scrolled in horizontal direction also.
2. Search actions can be in all selected libraries

0211 23-jul-2003
1. Bugfix. If you wanted to extract a module either to file or to printer
           from a textlibrary, the first record containing a / in the first
           columns would be seen as a terminator (as in a helplibrary). This
           problem is solved.

0212 19-aug-2003
1. The display in show open libs/modules counted the bytes loaded twice.
2. FSHELP now supports the /BINARY qualifier for the display of 
   non-printable data as occurs in printer libraries.

0213 24-dec-2003
1. Better support for the /WHOLE qualifier when searching text in the
   display. The cursor will go to the x,y pos of the found string. Before
   this patch the cursor remained on col 1 of the line where the string was
   found. This was confusing if the string occurred more than once on a line.
2. Include option in display help text to display the data in VMS-dump
   format via the KP6 key, and a /BINARY qualifier.
3. Changed the layout of the select window. If a topic has subtopics starting
   with a slash (as after the most Qualifiers topic), this topic will
   be the only one on a new line. This makes the layout more like
4. Included the KP6 key to toggle display from text to dump format (/BINARY).

0300 2-sep-2004
1. Support for IA64, including the ana/obj for most of the sections.
   Since the LBR$MAP_MODULE in only supported on IA64, the object data from
   ELF(IA64) object libraries can only be viewed on IA64 platforms.
2. The bytecount/linecount if the show open libs/mods was not updated for
   the ana/obj modules. This has been fixed.

0301 28-sep-2004
1. Included index for help messages.
2. Improved token parsing for help/message. Keywords like violation, are now
   found (the , is skipped).
3. Now supports searches in the help/message display (and its index)
0302 8-dec-2004
1. Allow see also's to jump to a specific line/col in the help page.
   Upto now you could only jump to the beginning of the page
2. Added the /CURRENT switch. This allows you to specify a library
   in your current directory i.s.o the SYS$SHARE default
   so HELP/CURRENT/LIBR=test  searches TEST.* in your current directory.
0303 17-oct-2005
1. If the first paramter start with an @, FSHELP will treat this parameter
   as a library name. If the user gave an explicit library with the
   /library, FSHELP will treat the @ first parameter as a help token now.
2. There were some modules missing for the alpha/ia64 build. They are
   added now.

  Since I no longer have access to an IA64 system, the objects/images for
  IA64 are from the 0300 version. To the best of my knowledge the kit
  will compile/build now, but I cannot test it.


Use it at your own risk, because we cannot take responsibility for crashes, dumps or even worse: loosing data.

Here is the fshelp 3.1 package (2.7MB zip file).

Please give your feedback to fshelpdev@oooovms.dyndns.org.