home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / progs / help / helpc.doc < prev    next >
Text File  |  1993-09-27  |  35KB  |  849 lines

  1.  
  2.  ╔══════════════════════════════════════════════════════════════════════════╗
  3.  ║                                                                          ║
  4.  ║                                 ISoft D&M                                ║
  5.  ║                               P.O.Box 5517                               ║
  6.  ║                           Coralville IA 52241                            ║
  7.  ║                                   U.S.A                                  ║
  8.  ║                                                                          ║
  9.  ╚══════════════════════════════════════════════════════════════════════════╝ 
  10.  
  11. *******************************************************************************
  12. * HELPC Help Engine Technical specification and compiler user guide           *
  13. * LAST UPDATE - Sep. 27, 1993. (c) 1992,93 - Loewy Ron.                       *
  14. *******************************************************************************
  15.  
  16. *******************************************************************************
  17. *                              General Overview                               *
  18. *******************************************************************************
  19.  
  20.   The Help Engine database is a combination of text that is read by the user,
  21.  and a Topic and Links database that allows the user to view the topics
  22.  he is interested in, using hyper-text methods.
  23.  
  24.   This document describes the HLPDK language syntax, HELPC compiler operation
  25.  and the native databases structure.
  26.  
  27. *******************************************************************************
  28. *                               Compiler Usage                                *
  29. *******************************************************************************
  30.  
  31.   The helpC help compiler is a DOS command line program that receives a 
  32.  help definition file (.HDF) and produce a help database. 
  33.  
  34.   The helpC command line is :
  35.  
  36.  HELPC source.fil [/NT:topic-table-name] 
  37.                   [/NL:link-table-name] 
  38.                   [/ND:data-file-name] 
  39.                   [/NK:keywords-table-name] 
  40.                   [/D:conditional-define]
  41.                   [/ED=P|C|+]
  42.                   [/EL=x]
  43.                   [/R-] [/ST-] [/CS+] [/EP+] [/WD-][/RM-]
  44.                   [/W+] [/W30] [/W31] [TH+] [/QH+] [/TV+] [/PH+] [/XD+]
  45.                   [/PX+] [/MT+] [/OS2] [/TXT] [/RTF]
  46.  
  47.   The output of the compiler is a set data file called source.SET, that
  48.  includes the names of the other help database components. 
  49.  
  50.   Please Notice - if the /W+ /W30 or /W31 switch is defined, the compiler 
  51.  will generate a .HPJ and .RTF files that can be used with the Microsoft 
  52.  HC (v3.00b) or HC31 help compiler, and output a .HLP windows help file!. 
  53.  
  54.   By default the help compiler produces a help cross reference report on the 
  55.  topics/links used in the database, if the /R- switch is set, no cross-reference
  56.  report will be generated, and no database integrity indicators will be
  57.  given.
  58.  
  59.  
  60.   IMPORTANT - Scan the output cross reference report for links defined, that
  61.  are not defined as topics!
  62.  
  63.   Notice - An additional switch is available that instructs the help compiler
  64.  to indicate it's parse and code generation progress. Use the /EP+ switch to
  65.  see that the helpC compiler is active. Please understand that the compile
  66.  process can take a long time, on complex help databases. This switch does
  67.  nothing more that ensure to you that the help compiler is alive. 
  68.  
  69.   The /ST switch defines if the topic name defined in the .TOPIC command
  70.  can include embedded spaces. By default this switch is set to /ST- (No
  71.  embedded spaces).
  72.  
  73.   The /CS switch turns Topics and Links case sensitivity to ON. Use this
  74.  switch with care - Only if you must have a lower/mixed case index in THELP
  75.  or POPHELP use this switch. Notice that help databases that compile fine
  76.  with case sensitivity set to off, might fail to do so in case sensitivity
  77.  on. By default this switch is set to off (-).
  78.  
  79.   The /XD switch generates code to the MDVXHELP help compiler, available
  80.  free in the file DVXHLP10.ZIP on the Internet. When this switch is given,
  81.  a set of cover and section files is generated, as well as a response
  82.  file that should be used to compile the help database.
  83.  
  84.   The /OS2 switch generates IPF source code. You must compile the generated code 
  85.  with IPFC, from within an OS/2 session (window or full screen).
  86.  
  87.   The /WD switch controls Warning Display. By default Warning Display is On, if
  88.  you do not want to see the Warnings issued by the compiler when a topic name 
  89.  or link are found to be incompatible with the target source, and helpC 
  90.  translate them to be syntax compatible with the target.
  91.  
  92.   Use the /TXT switch to create a text file document from your .HDF source.
  93.  With this feature you can create on-line help and printed documentation
  94.  from the same source!.
  95.  
  96.   Use the /RTF switch to create a word-processor ready RTF file, import this
  97.  file (and update the fields e.g.- F9 in WinWord) to create a professional
  98.  formatted documentation from the same source code!.
  99.  
  100.   The /RM- switch uses disk cross-reference report tables. Usage of this 
  101.  option will allow the creation of cross-reference report for huge databases.
  102.  This options will slow the creation of reports, use it only for databases
  103.  so big that the report can not be generated using memory tables.
  104.  
  105.   The /ED= switch creates the external references (if ant are defined) in one
  106.  of the following formats : /ED=P (Default) creates the external definitions
  107.  in a PASCAL unit, /ED=C creates the external definitions in a C header 
  108.  file, and /ED=+ creates a C++ header file.
  109.  
  110.   The /EL= switch sets the Error Level used. This switch can be overridden
  111.  by the .ERRORLEVEL statement. The acceptable error levels are :
  112.  
  113.       0    No Check  - (Default) - No action is taken.
  114.       1    Trap      - The link is replaced to a special topic named ERROR.
  115.       2    Strip     - The link is replaced by the Text part only.
  116.       3    Delete    - The text and link parts are deleted.
  117.       9    Abort     - helpC will abort with an error message, indicating the 
  118.                        line number.
  119.   Please refer to the Exception Handling section below about helpC error
  120.  processing.
  121.  
  122. *******************************************************************************
  123. *                                Command Line                                 *
  124. *******************************************************************************
  125.  
  126.   The compiler switches are defined on the command line. These switches can
  127.  be placed before and after the source file name. The compiler will look for
  128.  a file named HELPC.CFG in the current directory, and process it before any
  129.  command line switches are processed. 
  130.  
  131.   Switches on the command line will over-ride switches set before them, on the
  132.  command line or in one of the response options file.
  133.  
  134.   Response option files can be specified by prefixing their name with a @ sign.
  135.  
  136.  Examples :
  137.  
  138.  If our HELPC.CFG file, in the current directory is :
  139.  
  140. /W31
  141. /R-
  142.  
  143.  And we compile using HELPC HELPDEMO
  144.  
  145.  The helpdemo.hdf file will be compiled, with the target set to winHelp 3.1
  146.  and no cross-reference report.
  147.  
  148.  Compile using HELPC HELPDEMO /r+
  149.  
  150.  Will create winHelp 3.1 sources, but a report will be generated.
  151.  
  152.  Compile using HELPC /w- HELPDEMO
  153.  
  154.  Will generate native format help database, no report is generated.
  155.  
  156.  If we have a file called MYSWITCH.CFG with the following lines :
  157.  
  158. /TH+
  159. /ST-
  160. /CS+
  161.  
  162.  And we compile using HELPC @MYSWITCH.CFG HELPDEMO
  163.  
  164.  A THELP source, using Long Topic Names, with case sensitivity will be 
  165.  generated, no cross reference report is generated. (HELPC.CFG contains /r-)
  166.  
  167. *******************************************************************************
  168. *                           Help Definition Format                            *
  169. *******************************************************************************
  170.  
  171.   The help definition file format is as follows :
  172.  
  173. remarks ...
  174. remarks ...
  175.  
  176. .ENTRY topic-name
  177. [.TITLE optional title for topic]
  178. [.TITLEATTR paragraph attributes]
  179. [.KEYWORDS optional keywords for topic]
  180. [.GROUPS group1 [group2 ..]]
  181. topic text and link reference .. 
  182. topic text and link reference .. 
  183. topic text and link reference .. 
  184. topic text and link reference .. 
  185. .END-ENTRY 
  186.  
  187. remarks ...
  188.  
  189.  
  190. .ENTRY topic2-name
  191. [.KEYWORDS keyword1 keyword2 ..]
  192. [.GROUPS group3 [group2 ..]]
  193. [.PARAGRAPH [paragraph attributes]]
  194. topic 2 text and link reference .. 
  195. topic 2 text and link reference .. 
  196. topic 2 text and link reference .. 
  197. [.END-PARAGRAPH]
  198. additional topic2 text ...
  199. .END-ENTRY 
  200.  
  201. .POPUP popup-name
  202. [.TITLE optional title for popup]
  203.   definition for some reference
  204.   ...
  205. .END-POPUP
  206.  
  207.  
  208.   As can be seen - lines between the .ENTRY and .END-ENTRY keywords are
  209.  the lines processed by the help compiler, to create the help database, 
  210.  every other line is considered a remark, and is not parsed or evaluated by
  211.  the help compiler.
  212.  
  213.   The topic text and link reference lines are simple text lines, with
  214.  special link marks.
  215.  
  216.   A sample will provide the details :
  217.  
  218. This is a text help line that includes one ~link~link-topic-name~ in it.
  219.  
  220.   This line will be displayed in the help engine program as :
  221.  
  222. This is a text help line that includes one link in it.
  223.  
  224.   The word "link" will be in a different color then the rest of the line, 
  225.  to indicate that this is a link. If the user hi-lights the link, and
  226.  presses Enter (or points the mouse cursor and clicks), the help engine will
  227.  look for a topic called "link-topic-name", and display it.
  228.  
  229.   Browse the HELPDEMO.HDF file for a demo of a help database definition file.
  230.  
  231.  Notes :
  232.  
  233.  1. The keywords .TOPIC and .END-TOPIC can be used instead of .ENTRY and
  234.     .END-ENTRY respectively. 
  235.  
  236.     An equivalent pair of keywords are .TOP and .ENDTOP .
  237.  
  238.     You can use .EXT-TOPIC instead of .TOPIC/.ENTRY etc.. - topics created
  239.     with that statement are the same as regular topics, only - an external
  240.     reference is created for them to be linked to a PASCAL/C/C++ program.
  241.  
  242.  2. Keywords are NOT case sensitive. (.topic = .TOPIC = .eNTry)
  243.  
  244.  3. The .TITLE keyword is optional. If no title is defined, the topic name
  245.     is used as a title. The .TITLEATTR keyword is used to describe the
  246.     title text attributes. The syntax is the same as the .PARAGRAPH text
  247.     attributes. Please refer to the Text Attributes section below for further
  248.     discussion of the optional paragraph attributes.
  249.  
  250.  4. If you want the ~ sign to appear in your help database, use ~~ in your
  251.     help source file. (e.g. "This is a ~~" will be "This is a ~" in the final
  252.     help database.).
  253.  
  254.  5. The Optional .PARAGRAPH and .END-PARAGRAPH commands in the help topic text,
  255.     specify the start and the end of a paragraph. This feature is currently 
  256.     supported only for winHelp, RTF and IPF sources. This feature is important 
  257.     if you want to create long paragraphs that will wrap correctly when a user 
  258.     resizes the help window. Please refer to the Text Attributes section below 
  259.     for further discussion of the optional paragraph attributes.
  260.  
  261.     The .PAR and .ENDPAR keywords can be used instead of the .PARAGRAPH and
  262.     .END-PARAGRAPH keywords.
  263.  
  264.  6. When a .PARAGRAPH is issued, a .END-PARAGRAPH MUST be specified at the
  265.     end of the paragraph. These commands must appear as the first words in
  266.     a line. The text after the .PARAGRAPH command is NOT part of the text 
  267.     of the help topic.
  268.  
  269.  7. The optional .KEYWORDS command can appear after the .TITLE command
  270.     (If there is one), or the .TOPIC header (otherwise), Use this command
  271.     to help the user search for sets of topics that are connected to a 
  272.     specific keyword. The syntax of this command is :
  273.     .KEYWORDS keyword-1 keyword-2 ... 
  274.  
  275.  8. .POPUP and .END-POPUP (or .ENDPOP) are used to define popup topics that 
  276.     are displayed on the same screen as the original topic that includes the
  277.     link to them. Popup entries allow the user to consult a glossary, and 
  278.     not lose the topic he was reading. Popups are supported in the winHelp,
  279.     OS2 IPF, Native PX and Native Mem formats. In the other formats Popups are 
  280.     used as standard topics.
  281.  
  282.  9. In the Text target .POPUP entries will be automatically included in a 
  283.     Glossary file that you can add as an appendix to your documentation.
  284.  
  285. 10. The .GROUPS statement associate a topic with several groups, you can 
  286.     create topics with menus to groups of other topics using the statement
  287.     ".INSERT GROUP group-name" in your topic text. Please refer to the 
  288.     Groups section of this document for additional discussion of this
  289.     function.
  290.  
  291. Additional commands include :
  292.  
  293. .TEXTCOLOR, .LINKCOLOR and .LINKHIGH - VGA colors of text and links in normal 
  294. and high (selected) states in the native help format.
  295.  
  296. The syntax of these commands is :
  297.  
  298. .TEXTCOLOR w 
  299.  
  300. or 
  301.  
  302. .LINKCOLOR x
  303.  
  304. or
  305.  
  306. .LINKHIGH y
  307.  
  308. Where w, x and y are the color of the text/link, which is a combination of the 
  309. color of the foreground with the color of the background multiplied by 16.
  310.  
  311. The colors that can be used for both fore and background are :
  312.  
  313.   Black     = 0
  314.   Blue      = 1
  315.   Green     = 2
  316.   Cyan      = 3
  317.   Red       = 4
  318.   Magenta   = 5
  319.   Brown     = 6
  320.   LightGray = 7
  321.  
  322. The colors that can be used only for the foreground are :
  323.  
  324.   DarkGray     = 8
  325.   LightBlue    = 9
  326.   LightGreen   = 10
  327.   LightCyan    = 11
  328.   LightRed     = 12
  329.   LightMagenta = 13
  330.   Yellow       = 14
  331.   White        = 15
  332.  
  333. For example : to set the normal color of a link to light green on blue, use
  334.  
  335. .LINKCOLOR 26
  336.  
  337. where 26 = 10 + 16 * 1. (10 = light green, 1 = blue).
  338.  
  339. Creating Multiple Source Projects :
  340.  
  341. Use the .INCLUDE commands in the source of your .HDF file, to include an
  342. additional source file. .INCLUDE is not supported in the middle of a topic.
  343.  
  344. For Example :
  345.  
  346.  .. some stuff 
  347.  
  348. .include 2ndfile.hdf
  349.  
  350.  .. additional stuff
  351.  
  352. will process 2NDFILE.HDF in the middle of our source file.
  353.  
  354. Please notice - .INCLUDE commands can be nested in your source file,
  355. it is however not recommended to nest them too deep, helpC does not
  356. close the input file when a .INCLUDEd file is processed, in order to
  357. minimize help generation time - there is however, a limit on the number
  358. of open files that can be used by a program - this is a limit set by DOS.
  359.  
  360. Use the .INSERT CODE statement to insert target code that will not be 
  361. translated by helpC. helpC will send un-translated code to the output target
  362. until a .END-CODE statement is found.
  363.  
  364. For example - creating a small table in winHelp format :
  365. .. normal code
  366. .ifdef windows
  367. .insert code
  368. \pard{\tab column1\tab column2\tab column3}\par
  369. \pard{\par blabla\tab blabli ..}\par
  370. .end-code
  371. .endif
  372.  
  373. GUI Font based targets :
  374.  
  375. The .FIXEDFONT command is used to define a non proportional font as the 
  376. default font of the help database. Currently the only targets affected
  377. by this command are windows winHelp v3.x. If you find that your help 
  378. databases are not aligned after they are converted to winHelp format, use 
  379. this command and re-compile. This command has no effect on targets that are 
  380. different from the targets mentioned before.
  381.  
  382. The .PCFONT command is used to define a font that has the standard PC 
  383. character set (Terminal - in windows). If you convert a text based 
  384. database that uses the PC's special characters, use this command to
  385. set the default font. This command has no effect on targets that are 
  386. different from the targets mentioned before.
  387.  
  388. Text targets :
  389.  
  390. The .PAGELENGTH and .PAGEWIDTH statements set the printed page length in
  391. rows, and width in columns. The syntax is .PAGELENGTH xx or .PAGEWIDTH yy .
  392.  
  393. Use the .SETFONT command to change or add fonts to the font palette, The 
  394. syntax is : .SETFONT font-number 'Font-Name-In-The-Target-Language'. If
  395. for example we would like to change font number 3 in the windows target
  396. to be a font X of family Y we would write : 
  397. .SETFONT 3 'Y X'
  398.  
  399. A good way to find in RTF how to describe the font you are interested in,
  400. is to open a new document in your word processor, write a line in the
  401. font you are interested, save the document as a RTF document, and see the
  402. way the word processor described the font in the RTF font table.
  403.  
  404. Use the .TITLEDEFAULTS statement to set the default text attributes of the
  405. topics titles in the help database. These defaults can be over-ridden with
  406. the .TITLEATTR statement in the topic definition. Please refer to the Text
  407. Attributes section below for discussion of paragraph text attributes.
  408.  
  409. Use the .ATTRDEFAULTS statement to set the default text attributes of 
  410. paragraph text in the database. Please refer to the Text Attributes section 
  411. below.
  412.  
  413. Use the .ERRORLEVEL command to set the error level. The syntax is .ERRORLEVEL x
  414. where x is one of the following :
  415.  
  416.       0    No Check  - (Default) - No action is taken.
  417.       1    Trap      - The link is replaced to a special topic named ERROR.
  418.       2    Strip     - The link is replaced by the Text part only.
  419.       3    Delete    - The text and link parts are deleted.
  420.       9    Abort     - helpC will abort with an error message, indicating the 
  421.                        line number.
  422. Please refer to the Exception Handling section below about helpC error
  423. processing.
  424.  
  425. Use the .ALIAS command to substitute a popup/topic name with another name. The
  426. syntax is .ALIAS newname origname. Whenever a newname link is found, the alias
  427. of origname is used. This can be very useful when you want to give multiple
  428. names to a topic, or when HLPDK source is the target of an incremental 
  429. compiler.
  430.  
  431. *******************************************************************************
  432. *                             Conditional Defines                             *
  433. *******************************************************************************
  434.  
  435. The helpC compiler supports conditional define directives that allow you to
  436. tailor your source according to define symbols that are known to the compiler.
  437.  
  438. You can use the .ifdef, .ifndef, .else and .endif directives to test the
  439. target of your compile and do different things according to this target.
  440.  
  441. If for example you have a Windows bitmap you want to include in your generated
  442. RTF file, when you compile to winHelp format, but, you would like to use a
  443. statement in other targets that do not support graphics, you could do the 
  444. following :
  445.  
  446. .ifdef windows
  447.   some text {\bmc mybmp.bmp} some more text
  448. .else 
  449.   some text AND STATEMENT HERE some more text
  450. .endif
  451.  
  452. When the compiler will generate the code, the RTF command \bmc will be 
  453. inserted in the output of the compiler for windows targets (/W30, /W31), 
  454. and a simple text statement will be inserted otherwise.
  455.  
  456. The conditional directives supported are :
  457.  
  458. .ifdef  SYMBOL - Compile code only if SYMBOL is defined.
  459. .ifndef SYMBOL - Compile code only if SYMBOL is NOT defined.
  460. .endif         - Any .ifdef/.ifndef should be terminated by a .endif .
  461. .else          - Reverse the previous .ifdef/.ifndef
  462.  
  463. The following SYMBOLS are automatically defined by the compiler :
  464.  
  465. Symbol          When Defined
  466. ------          ------------
  467. DEF             /PX+
  468. W31             /W31
  469. W30             /W30
  470. THS             /TH+
  471. QHS             /QH+
  472. TVH             /TV+
  473. PHS             /PH+
  474. DVX             /XD+
  475. MEM             /MT+
  476. OS2             /OS2
  477. TXT             /TXT
  478. WINDOWS         /W30, /W31
  479. THELP           /TH+
  480. QUICKHELP       /QH+
  481. TVHC            /TV+
  482. NATIVEPARADOX   /PX+
  483. POPHELP         /PH+
  484. DESQVIEW/X      /XD+
  485. NATIVEMEMORY    /MT+
  486. VERx.y          When Compiling with helpC Vx.y 
  487. NATIVE          /PX+, /MT+
  488. DOCUMENT        /TXT, /RTF
  489.  
  490. You can define your own conditional defines on the command line using the /D:
  491. switch of helpC.
  492.  
  493. e.g.
  494.  
  495. Source :
  496.  
  497. ... some text ..
  498. .ifdef mydef
  499.   Special Text for mydef situation
  500. .endif
  501. ... more text
  502.  
  503. and you compile using HELPC /D:MYDEF the special text will be included.
  504.  
  505. *******************************************************************************
  506. *                                   Groups                                    *
  507. *******************************************************************************
  508.  
  509. Topics can be associated to groups using the .GROUPS statement in the topic
  510. heading. Menus to these groups can later be created by using the command 
  511. .INSERT GROUP group-name in the topic text.
  512.  
  513. An example will clarify the use of this function :
  514.  
  515. Let us assume that we have a car's collectors database, where the description
  516. of each car is a topic. We would like to present a hierarchy to the user that
  517. looks like that : 
  518.  
  519. Overview Screen
  520.    |
  521.    +--------- Cars by Country
  522.    |               |
  523.    |               +------------ U.S.A ... List of cars manufactured in U.S.A
  524.    |               +------------ U.K.
  525.    |               +------------ Italy
  526.    |
  527.    +--------- Cars by Maker
  528.    |               |
  529.    |               +------------ Alfa-Romeo ... List of Alfa-Romeo models
  530.    |               +------------ GM
  531.    |               +------------ Mazda
  532.    |
  533.    +--------- Cars by type
  534.                    |
  535.                    +------------ 4x4 & Jeeps
  536.                    +------------ Sport Cars
  537.                    +------------ Family Sedans
  538.                         
  539. We will create group references in the topics using the .GROUPS statement,
  540. The Alfa Romeo Spider 2000 topic will look like :
  541.  
  542. .topic alfa_romeo_spider_2000
  543. .title Alfa Romeo Spider 2000
  544. .keywords alfa spider convertible sport classic
  545. .groups Italian alfa sport
  546.  
  547. The Alfa Romeo ... 
  548.  
  549.  
  550. .end-topic
  551.  
  552. The Italian Cars Directory topic will be :
  553.  
  554. .topic Italy_directory
  555. .title Italian Cars Directory
  556. .keywords directory
  557.  
  558. Cars Manufactured in Italy :
  559.  
  560. .insert group Italian
  561.  
  562. .end-topic
  563.  
  564. If our database includes 3 cars that have a reference to the Italian group
  565. this will be the equivalent of writing :
  566.  
  567. .topic Italy_directory
  568. .title Italian Cars Directory
  569. .keywords directory
  570.  
  571. Cars Manufactured in Italy :
  572.  
  573. ~Alfa Romeo Spider 2000~alfa_romeo_spider_2000~
  574. ~Ferrari 308 GTS~Ferrari_308_gts~
  575. ~Fiat Uno 70S~fiat_uno_70s~
  576.  
  577. .end-topic
  578.  
  579. *******************************************************************************
  580. *                               Text Attributes                               *
  581. *******************************************************************************
  582.  
  583. Topic's text can receive visual attributes such as a font, size, bold, 
  584. italic etc.. by using the paragraph attributes on the .PARAGRAPH (.par)
  585. line. Text attributes are currently supported in the winHelp and RTF targets.
  586.  
  587. The attributes that can be applied to text are :
  588.  
  589. Font            - The font the text will be displayed in.
  590. Bold            - The text is displayed in bold characters.
  591. Italic          - The text is displayed in italic characters.
  592. Underline       - The text is displayed in underline characters.
  593. Size            - The size of the font.
  594. Box             - The paragraph can be contained in a box.
  595. Align           - The paragraph can be aligned.
  596. Color           - The text foreground color.
  597.  
  598. The syntax is :
  599.  
  600. .PARAGRAPH [attr1 attr1-parameters [attr2 attr2-parameters [..] ]]
  601.  
  602. The allowed parameters to attributes are :
  603.  
  604. 1. FONT font-number-in-font-palette : The font number in the font palette, there
  605. is a standard font palette for winHelp and RTF targets that include the 
  606. following fonts :
  607.  
  608.  0 : Times Roman        (roman Tms Rmn)
  609.  1 : Symbol             (decor Symbol)
  610.  2 : Helvetica          (swiss Helv)
  611.  3 : LinePrinter        (modern LinePrinter)
  612.  4 : Terminal           (roman Terminal)
  613.  5 : Times New Roman    (roman Times New Roman)
  614.  6 : Arial              (swiss Arial)
  615.  7 : CG Times (WN)      (roman CG Times (WN))
  616.  8 : Courier            (modern Courier)
  617.  9 : Modern             (modern Modern)
  618. 10 : Script             (script Script)
  619. 11 : Univers (WN)       (swiss Univers (WN))
  620. 12 : Wingdings          (nil Wingdings)
  621. 13 : MS Sans Serif      (swiss MS Sans Serif)
  622.  
  623. 2. BOLD ON|OFF - Set bold mode to on/off.
  624.  
  625. 3. ITALIC ON|OFF - Set italic mode to on/off.
  626.  
  627. 4. UNDERLINE ON|OFF - Set underline mode on/off.
  628.  
  629. 5. SIZE font-size - Set the size of the font.
  630.  
  631. 6. BOX NONE|NORMAL|THICK|SHADOW|DOUBLE - Print paragraph in a box which has one
  632. of the described borders : NONE is no border at all.
  633.  
  634. 7. ALIGN LEFT|RIGHT|CENTER|JUSTIFY - Print the text in the paragraph aligned
  635. to one of the sides, the center or justified in the paragraph.
  636.  
  637. 8. COLOR color-number-in-color-palette - The numbers are the same numbers used
  638. for DOS native systems and described in the help definition format section
  639. above, regarding the .LINKCOLOR, .TEXTCOLOR and .LINKHIGH statements.
  640.  
  641. Example :
  642.  
  643. .PAR BOX SHADOW FONT 13 BOLD 
  644.    ... some text here ..
  645. .ENDPAR
  646.  
  647. Will display the paragraph in a shadow bordered box, using font 13 in the 
  648. palette (MS Sans Serif assuming that the original palette is used) with bold
  649. characters.
  650.  
  651. *******************************************************************************
  652. *                             Exception Handling                              *
  653. *******************************************************************************
  654.  
  655. helpC provides mechanism to handle link exceptions. An exception is a link
  656. to an identifier that is not defined as a topic or popup. In order to help
  657. you find these errors helpC contains the cross reference report that can
  658. be produced using the /R+ switch. You can browse the HELPC.LST file generated
  659. by helpC if a cross reference report is generated, and search for the string
  660. ERROR that describes undefined links.
  661.  
  662. helpC provides additional exception handling facilities. When an error is found
  663. during compile helpC can perform on of the following actions :
  664.  
  665. 0: No Check - Default - helpC does not do anything. The link is passed as is to
  666.               the target. The target help engine/compiler will handle the 
  667.               exception as it is implemented.
  668.  
  669. 1: Trap     - helpC will replace the link key with the key ERROR. It is the 
  670.               responsibility of the help database author to provide such a
  671.               topic/popup.
  672.  
  673. 2: Strip    - helpC will pass the text of the link to the target with no link
  674.               support. The text will appear as normal text.
  675.  
  676. 3: Delete   - Both the text and the link will be deleted and will not appear in
  677.               the target.
  678.  
  679. 9: Abort    - helpC will abort, with an error message, and the line the link 
  680.               is defined. This mode is recommended when you are debugging 
  681.               your help database.
  682.  
  683. You can set the error level using the following techniques :
  684.  
  685. - Use the /EL=x switch on the helpC command line.
  686.  
  687. - Use the .ERRORLEVEL x .HDF statement.
  688.  
  689. Important Points :
  690.  
  691. 1. When errorLevel = 0 (default) no topic database is created during pass 1,
  692. if you set .errorlevel somewhere in your source, after some topics/popups
  693. have been defined, these topics will not be in the symbol table created by
  694. helpC and will be considered an exception!.
  695.  
  696. *******************************************************************************
  697. *                         Native Databases Structure                          *
  698. *******************************************************************************
  699.  
  700.   Each help database is built of 5 components : 
  701.  
  702.  1. Help Data File    - this file contains the raw text data.
  703.  2. Topic Index       - a database table that contains the topic names, and
  704.                         the references to the topics in the Data File.
  705.  3. Links Index       - a database table that contains the list of links 
  706.                         defined for each topic, and positional data.
  707.  4. Keywords Index    - a database table that contains the list of keywords,
  708.                         and the topics that have these keywords.
  709.  5. Set Data File     - a database configuration file that contains the
  710.                         names of the 3 components defined above, and some 
  711.                         additional information.
  712.  
  713.   Version 1.x is the bare-bones version that includes only the basic
  714.  operations needed from a hyper-text database, this version is implemented
  715.  using the Paradox Engine V3.0 to manage the Topic and Link index tables.
  716.  
  717.   Version 2.x has a new field in the topic table - the title field, help
  718.  databases that were compiled with V1.x will not be executed by version
  719.  2.x, they will have to be re-compiled!.
  720.  
  721.   Version 3.x fields have different length - the databases have to be 
  722.  re-compiled.
  723.  
  724.   Version 5.0+ has a new entry in the help set file, database have to be
  725.  re-compiled, or the value 128 should be added in the last line of the help
  726.  set file, and the version number should be changed to 5.0.
  727.  
  728.   Version 6.0+ has added the keyword support - a new database table is added,
  729.  and a new set format is defined. Help databases will have to be re-compiled
  730.  for Native targets.
  731.  
  732.   In Version 7.0 the title field has been expanded once more - to 70 
  733.  characters. Help databases will have to be re-compiled.
  734.  
  735.   In Version 8.0 the TTYPE field was added to the Topics database. Old databases
  736.  will have to be re-compiled.
  737.  
  738.   The format of the help database is released to the public domain, if
  739.  you implement a database viewer on this database structure, I would be
  740.  happy to receive a copy ..
  741.  
  742.  
  743. *******************************************************************************
  744. *                             Topic Index Format                              *
  745. *******************************************************************************
  746.  
  747.   The topic index table format is as follows :
  748.  
  749.   TOPIC     - 40 characters string key - this is the topic "name".
  750.   FILENAME  - 38 characters string field - includes the name of the
  751.               help raw data file. (Notice - V1.0 ignores the value of this 
  752.               field, it is here for future expansion).
  753.   START     - longint (long) field that contains the offset from the data file
  754.               start, to the start of the topics text data, in bytes.
  755.   LEN       - longint (long) field that contains the length (in bytes) of the 
  756.               text data of the topic.
  757.   TITLE     - 70 characters string key - the title of the topic.
  758.   TTYPE     - 1 character - topic type. Currently supported types are :
  759.               'T' = Topic.
  760.               'P' = Popup.
  761.  
  762. *******************************************************************************
  763. *                             Links Index Format                              *
  764. *******************************************************************************
  765.  
  766.   The links index table format is as follows :
  767.  
  768.   TOPIC     - 40 characters string key - the name of the topic that 
  769.               has the link.
  770.   SEQ       - integer (int) key - contains the sequential number of 
  771.               the link in the topic. (This way you can assign the links
  772.               order in the topic).
  773.   LINK      - 40 characters string key - the name of the link topic to
  774.               display if the link is chosen.
  775.   LINE      - integer (int) field - the line (from the start of the topic) 
  776.               this link is displayed on.
  777.   COL       - integer (int) field - the column this link is displayed on.
  778.   TXT       - 70 characters string field - the text to display on the line.
  779.  
  780. *******************************************************************************
  781. *                            Keywords Index Table                             *
  782. *******************************************************************************
  783.  
  784.   The keywords index table format is as follows :
  785.  
  786.   KEYWORD   - 40 characters string key - the keyword.
  787.   TOPIC     - 40 characters string key - the topic name that this keyword is 
  788.               assigned to.
  789.  
  790.   Notice - the database will include a row for each keyword, that has the 
  791.   TOPIC field blank. This is used to display the first list of keywords, that
  792.   if chosen, will display the 2nd list of topics that have the chosen keyword
  793.   in their .KEYWORDS definition.
  794.  
  795. *******************************************************************************
  796. *                               Set File Format                               *
  797. *******************************************************************************
  798.  
  799.   The set file is a text file that contains one entry in each line, using
  800.  the following format :
  801.  
  802. help-database-engine
  803. version-of-generating-compiler
  804. topic-index-table name
  805. links-index-table name
  806. keyword-index-table-name
  807. help-raw-data-file name
  808. number-of-topics
  809. length-of-file
  810. link-normal-color
  811. link-high-color
  812. text-normal-color
  813.  
  814. The help-database-engine values available today are DEF=Paradox and 
  815. MEM=memory Tables.
  816.  
  817. *******************************************************************************
  818. *                               Implementation                                *
  819. *******************************************************************************
  820.  
  821.   Notice - The Paradox tables (Topic, Links) include one additional field
  822.  (wtGeneration) for future expansion purpose only.
  823.  
  824. *******************************************************************************
  825. *                                Distribution                                 *
  826. *******************************************************************************
  827.  
  828.   To distribute a database of your creation, compile the help definition
  829.  file, and include the HELPENG.EXE file with the .DB, .PX files, and the
  830.  .HDT file created by the compiler. 
  831.  
  832.   If you use the Native Mem Format, compile using the /MT+ switch, and
  833.  distribute HE.EXE with the .SET, .HDT and .HDX files created.
  834.  
  835.   If you generated the Windows (/W30, /W31) help file, you can compile the 
  836.  .HPJ and .RTF generated file, and distribute the resulting .HLP .
  837.  
  838.   If you generate QH, THELP, POPHELP or TVHC use these packages compilers to
  839.  compile you sources into native binary codes. (helpMake, HL, makeHelp and TVHC)
  840.  
  841.   To Generate Help databases for DESQview/X, use the MDVXHELP compiler
  842.  that can be found on the Internet in the file DVXHLP10.ZIP.
  843.  
  844.   Distribute the .INF files that IPFC creates from the .IPF sources generated,
  845.  if you compile to OS/2.
  846.  
  847.   For examples on these compiler's command lines please refer to the quick
  848.  start section of HLPDK.DOC, or to your compiler's documentation.
  849.